diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm index 55b92bd490..63003d88c9 100644 --- a/code/__defines/misc_vr.dm +++ b/code/__defines/misc_vr.dm @@ -57,6 +57,7 @@ #define PTO_EXPLORATION "Exploration" #define PTO_CARGO "Cargo" #define PTO_CIVILIAN "Civilian" +#define PTO_CYBORG "Cyborg" #define DEPARTMENT_TALON "ITV Talon" diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 31e19b3082..9c3c3571fe 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -1,5 +1,3 @@ -var/list/admins = list() //list of all clients whom are admins - //Since it didn't really belong in any other category, I'm putting this here //This is for procs to replace all the goddamn 'in world's that are chilling around the code diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm index 923b8f450f..d27abcbf7e 100644 --- a/code/_helpers/logging.dm +++ b/code/_helpers/logging.dm @@ -47,7 +47,7 @@ if (config.log_debug) WRITE_LOG(debug_log, "DEBUG: [text]") - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(C.is_preference_enabled(/datum/client_preference/debug/show_debug_logs)) to_chat(C, "DEBUG: [text]") diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm index 254472a2c8..f792d9af02 100644 --- a/code/controllers/failsafe.dm +++ b/code/controllers/failsafe.dm @@ -57,23 +57,23 @@ var/datum/controller/failsafe/Failsafe if(4,5) --defcon if(3) - to_chat(admins, "Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.") + to_chat(GLOB.admins, "Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.") --defcon if(2) - to_chat(admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.") + to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.") --defcon if(1) - to_chat(admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...") + to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...") --defcon var/rtn = Recreate_MC() if(rtn > 0) defcon = 4 master_iteration = 0 - to_chat(admins, "MC restarted successfully") + to_chat(GLOB.admins, "MC restarted successfully") else if(rtn < 0) log_world("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0") - to_chat(admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.") + to_chat(GLOB.admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.") //if the return number was 0, it just means the mc was restarted too recently, and it just needs some time before we try again //no need to handle that specially when defcon 0 can handle it if(0) //DEFCON 0! (mc failed to restart) @@ -81,7 +81,7 @@ var/datum/controller/failsafe/Failsafe if(rtn > 0) defcon = 4 master_iteration = 0 - to_chat(admins, "MC restarted successfully") + to_chat(GLOB.admins, "MC restarted successfully") else defcon = min(defcon + 1,5) master_iteration = Master.iteration diff --git a/code/controllers/subsystems/nightshift.dm b/code/controllers/subsystems/nightshift.dm index 3f0d9bfda8..91b1c6bb35 100644 --- a/code/controllers/subsystems/nightshift.dm +++ b/code/controllers/subsystems/nightshift.dm @@ -64,7 +64,7 @@ SUBSYSTEM_DEF(nightshift) announce("Good evening, crew. To reduce power consumption and stimulate the circadian rhythms of some species, all of the lights aboard the station have been dimmed for the night.") else announce("Good morning, crew. As it is now day time, all of the lights aboard the station have been restored to their former brightness.") - for(var/obj/machinery/power/apc/apc in machines) + for(var/obj/machinery/power/apc/apc in GLOB.apcs) if(apc.z in using_map.station_levels) apc.set_nightshift(active, TRUE) CHECK_TICK diff --git a/code/controllers/subsystems/persist_vr.dm b/code/controllers/subsystems/persist_vr.dm index ca0feb37f6..a00d4f7a3d 100644 --- a/code/controllers/subsystems/persist_vr.dm +++ b/code/controllers/subsystems/persist_vr.dm @@ -45,6 +45,17 @@ SUBSYSTEM_DEF(persist) var/department_earning = J.pto_type clear_unused_pto(M) + // Determine special PTO types and convert properly + if(department_earning == PTO_CYBORG) + if(isrobot(M)) + var/mob/living/silicon/robot/C = M + if(C?.module?.pto_type) + department_earning = C.module.pto_type + if(department_earning == PTO_CYBORG) + if (MC_TICK_CHECK) + return + continue + // Update client whatever var/client/C = M.client var/wait_in_hours = wait / (1 HOUR) @@ -100,4 +111,4 @@ SUBSYSTEM_DEF(persist) LAZYINITLIST(C.department_hours) if(C.department_hours[DEPARTMENT_COMMAND]) C.department_hours[DEPARTMENT_COMMAND] = null - C.department_hours.Remove(DEPARTMENT_COMMAND) \ No newline at end of file + C.department_hours.Remove(DEPARTMENT_COMMAND) diff --git a/code/defines/procs/statistics.dm b/code/defines/procs/statistics.dm index 3d05d5ba9e..9ea9023de4 100644 --- a/code/defines/procs/statistics.dm +++ b/code/defines/procs/statistics.dm @@ -1,7 +1,7 @@ proc/sql_poll_population() if(!sqllogging) return - var/admincount = admins.len + var/admincount = GLOB.admins.len var/playercount = 0 for(var/mob/M in player_list) if(M.client) diff --git a/code/game/gamemodes/cult/hell_universe.dm b/code/game/gamemodes/cult/hell_universe.dm index f67f689288..df05607311 100644 --- a/code/game/gamemodes/cult/hell_universe.dm +++ b/code/game/gamemodes/cult/hell_universe.dm @@ -78,7 +78,7 @@ In short: alm.ex_act(2) /datum/universal_state/hell/proc/APCSet() - for (var/obj/machinery/power/apc/APC in machines) + for (var/obj/machinery/power/apc/APC in GLOB.apcs) if (!(APC.stat & BROKEN) && !APC.is_critical) APC.emagged = 1 APC.queue_icon_update() diff --git a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm index f8a8581075..310a7a9ae7 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm @@ -107,7 +107,7 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked alm.ex_act(2) /datum/universal_state/supermatter_cascade/proc/APCSet() - for (var/obj/machinery/power/apc/APC in machines) + for (var/obj/machinery/power/apc/APC in GLOB.apcs) if (!(APC.stat & BROKEN) && !APC.is_critical) APC.chargemode = 0 if(APC.cell) diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 1cb4e8a2dc..ba737a416a 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -236,7 +236,7 @@ var/hadevent = 0 apc.overload_lighting() else - for(var/obj/machinery/power/apc/apc in machines) + for(var/obj/machinery/power/apc/apc in GLOB.apcs) apc.overload_lighting() return @@ -362,14 +362,14 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is spawn(0) to_world("Started processing APCs") - for (var/obj/machinery/power/apc/APC in machines) + for (var/obj/machinery/power/apc/APC in GLOB.APCs) if(APC.z in station_levels) APC.ion_act() apcnum++ to_world("Finished processing APCs. Processed: [apcnum]") spawn(0) to_world("Started processing SMES") - for (var/obj/machinery/power/smes/SMES in machines) + for (var/obj/machinery/power/smes/SMES in GLOB.smeses) if(SMES.z in station_levels) SMES.ion_act() smesnum++ diff --git a/code/game/gamemodes/events/power_failure.dm b/code/game/gamemodes/events/power_failure.dm index 2cd257e0bb..5ebf1e07bc 100644 --- a/code/game/gamemodes/events/power_failure.dm +++ b/code/game/gamemodes/events/power_failure.dm @@ -5,7 +5,7 @@ var/list/skipped_areas = list(/area/ai) - for(var/obj/machinery/power/smes/S in machines) + for(var/obj/machinery/power/smes/S in GLOB.smeses) var/area/current_area = get_area(S) if(current_area.type in skipped_areas || !(S.z in using_map.station_levels)) continue @@ -19,7 +19,7 @@ S.power_change() - for(var/obj/machinery/power/apc/C in machines) + for(var/obj/machinery/power/apc/C in GLOB.apcs) if(!C.is_critical && C.cell && (C.z in using_map.station_levels)) C.cell.charge = 0 @@ -28,10 +28,10 @@ if(announce) command_announcement.Announce("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal", new_sound = 'sound/AI/poweron.ogg') - for(var/obj/machinery/power/apc/C in machines) + for(var/obj/machinery/power/apc/C in GLOB.apcs) if(C.cell && (C.z in using_map.station_levels)) C.cell.charge = C.cell.maxcharge - for(var/obj/machinery/power/smes/S in machines) + for(var/obj/machinery/power/smes/S in GLOB.smeses) var/area/current_area = get_area(S) if(current_area.type in skipped_areas || isNotStationLevel(S.z)) continue @@ -45,7 +45,7 @@ if(announce) command_announcement.Announce("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", new_sound = 'sound/AI/poweron.ogg') - for(var/obj/machinery/power/smes/S in machines) + for(var/obj/machinery/power/smes/S in GLOB.smeses) if(isNotStationLevel(S.z)) continue S.charge = S.capacity diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm index 18ba0950ac..8c27df2732 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/HELPERS.dm @@ -168,7 +168,7 @@ // Description: Returns a list of all unhacked APCs /proc/get_unhacked_apcs(var/mob/living/silicon/ai/user) var/list/H = list() - for(var/obj/machinery/power/apc/A in machines) + for(var/obj/machinery/power/apc/A in GLOB.apcs) if(A.hacker && A.hacker == user) continue H.Add(A) diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm index ace83463a6..9d9bed799a 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_manipulation.dm @@ -3,7 +3,7 @@ // Abilities in this tree allow the AI to physically manipulate systems around the station. // T1 - Electrical Pulse - Sends out pulse that breaks some lights and sometimes even APCs. This can actually break the AI's APC so be careful! // T2 - Hack Camera - Allows the AI to hack a camera. Deactivated areas may be reactivated, and functional cameras can be upgraded. -// T3 - Emergency Forcefield - Allows the AI to project 1 tile forcefield that blocks movement and air flow. Forcefield´dissipates over time. It is also very susceptible to energetic weaponry. +// T3 - Emergency Forcefield - Allows the AI to project 1 tile forcefield that blocks movement and air flow. Forcefield�dissipates over time. It is also very susceptible to energetic weaponry. // T4 - Machine Overload - Detonates machine of choice in a minor explosion. Two of these are usually enough to kill or K/O someone. @@ -47,7 +47,7 @@ if(!ability_prechecks(user, price) || !ability_pay(user,price)) return to_chat(user, "Sending feedback pulse...") - for(var/obj/machinery/power/apc/AP in machines) + for(var/obj/machinery/power/apc/AP in GLOB.apcs) if(prob(5)) AP.overload_lighting() if(prob(1) && prob(1)) // Very very small chance to actually destroy the APC. diff --git a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm index 3405878bb6..6d9f5a36ff 100644 --- a/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm +++ b/code/game/gamemodes/malfunction/newmalf_ability_trees/tree_networking.dm @@ -147,7 +147,7 @@ to_chat(user, "You already started the system override sequence.") return var/list/remaining_apcs = list() - for(var/obj/machinery/power/apc/A in machines) + for(var/obj/machinery/power/apc/A in GLOB.apcs) if(!(A.z in using_map.station_levels)) // Only station APCs continue if(A.hacker == user || A.aidisabled) // This one is already hacked, or AI control is disabled on it. @@ -193,7 +193,7 @@ to_chat(user, "## REACHABLE APC SYSTEMS OVERTAKEN. BYPASSING PRIMARY FIREWALL.") sleep(300) // Hack all APCs, including those built during hack sequence. - for(var/obj/machinery/power/apc/A in machines) + for(var/obj/machinery/power/apc/A in GLOB.apcs) if((!A.hacker || A.hacker != src) && !A.aidisabled && A.z in using_map.station_levels) A.ai_hack(src) diff --git a/code/game/jobs/job/captain_vr.dm b/code/game/jobs/job/captain_vr.dm index 746d92cf86..4cf8da4183 100644 --- a/code/game/jobs/job/captain_vr.dm +++ b/code/game/jobs/job/captain_vr.dm @@ -1,7 +1,7 @@ /datum/job/captain disallow_jobhop = TRUE pto_type = PTO_CIVILIAN - //dept_time_required = 60 //Pending something more complicated + dept_time_required = 80 //Pending something more complicated /datum/job/hop disallow_jobhop = TRUE diff --git a/code/game/jobs/job/job_vr.dm b/code/game/jobs/job/job_vr.dm index 3ffd0d05f9..a416a3af48 100644 --- a/code/game/jobs/job/job_vr.dm +++ b/code/game/jobs/job/job_vr.dm @@ -25,9 +25,34 @@ return (available_in_playhours(C) == 0) /datum/job/proc/available_in_playhours(client/C) - if(C && config.use_playtime_restriction_for_jobs) + if(C && config.use_playtime_restriction_for_jobs && dept_time_required) if(isnum(C.play_hours[pto_type])) // Has played that department before return max(0, dept_time_required - C.play_hours[pto_type]) else // List doesn't have that entry, maybe never played, maybe invalid PTO type (you should fix that...) return dept_time_required // Could be 0, too, which is fine! They can play that + return 0 + +// Special treatment for some the more complicated heads + +// Captain gets every department combined +/datum/job/captain/available_in_playhours(client/C) + if(C && config.use_playtime_restriction_for_jobs && dept_time_required) + var/remaining_time_needed = dept_time_required + for(var/key in C.play_hours) + if(isnum(C.play_hours[key])) + remaining_time_needed = max(0, remaining_time_needed - C.play_hours[key]) + return remaining_time_needed + return 0 + +// HoP gets civilian, cargo, and exploration combined +/datum/job/hop/available_in_playhours(client/C) + if(C && config.use_playtime_restriction_for_jobs && dept_time_required) + var/remaining_time_needed = dept_time_required + if(isnum(C.play_hours[PTO_CIVILIAN])) + remaining_time_needed = max(0, remaining_time_needed - C.play_hours[PTO_CIVILIAN]) + if(isnum(C.play_hours[PTO_CARGO])) + remaining_time_needed = max(0, remaining_time_needed - C.play_hours[PTO_CARGO]) + if(isnum(C.play_hours[PTO_EXPLORATION])) + remaining_time_needed = max(0, remaining_time_needed - C.play_hours[PTO_EXPLORATION]) + return remaining_time_needed return 0 \ No newline at end of file diff --git a/code/game/jobs/job/silicon_vr.dm b/code/game/jobs/job/silicon_vr.dm index 0f944b9cc6..eb70eb731e 100644 --- a/code/game/jobs/job/silicon_vr.dm +++ b/code/game/jobs/job/silicon_vr.dm @@ -1,4 +1,8 @@ +/datum/job/ai + pto_type = PTO_CIVILIAN + /datum/job/cyborg + pto_type = PTO_CYBORG minimal_player_age = 3 //1 day is a little too little time total_positions = 4 //Along with one able to spawn later in the round. spawn_positions = 3 //Let's have 3 able to spawn in roundstart \ No newline at end of file diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index c69cca31b5..48f899ed0d 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -21,7 +21,7 @@ /obj/machinery/computer/atmoscontrol/laptop name = "Atmospherics Laptop" desc = "A cheap laptop." - icon_screen = "atmoslaptop" + icon_screen = "medlaptop" icon_state = "laptop" icon_keyboard = "laptop_key" density = 0 diff --git a/code/game/machinery/pda_multicaster.dm b/code/game/machinery/pda_multicaster.dm index 29416e828e..20e870d3d0 100644 --- a/code/game/machinery/pda_multicaster.dm +++ b/code/game/machinery/pda_multicaster.dm @@ -1,8 +1,8 @@ /obj/machinery/pda_multicaster name = "\improper PDA multicaster" desc = "This machine mirrors messages sent to it to specific departments." - icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Edit - icon_state = "pdamulti" //VOREStation Edit + icon = 'icons/obj/stationobjs.dmi' + icon_state = "pdamulti" density = 1 anchored = 1 circuit = /obj/item/weapon/circuitboard/telecomms/pda_multicaster @@ -36,7 +36,7 @@ if(on) icon_state = initial(icon_state) else - icon_state = "[initial(icon_state)]_off" //VOREStation Edit + icon_state = "[initial(icon_state)]_off" /obj/machinery/pda_multicaster/attackby(obj/item/I, mob/user) if(I.is_screwdriver()) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 46acbb4fdc..19bc030421 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -132,8 +132,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /obj/machinery/telecomms/allinone name = "Telecommunications Mainframe" - //icon = 'icons/obj/stationobjs.dmi' //VOREStation Removal - use parent icon - icon_state = "allinone" //VOREStation Edit + icon = 'icons/obj/stationobjs.dmi' + icon_state = "allinone" desc = "A compact machine used for portable subspace telecommuniations processing." density = 1 use_power = USE_POWER_IDLE diff --git a/code/game/objects/items/toys_vr.dm b/code/game/objects/items/toys_vr.dm index 1b456393db..e8af3bb828 100644 --- a/code/game/objects/items/toys_vr.dm +++ b/code/game/objects/items/toys_vr.dm @@ -10,6 +10,9 @@ desc = "An adorable stuffed toy that resembles a kobold." icon = 'icons/obj/toy_vr.dmi' icon_state = "kobold" + pokephrase = "Wehhh!" + drop_sound = 'sound/voice/weh.ogg' + attack_verb = list("raided", "kobolded", "weh'd") /obj/item/toy/plushie/slimeplushie name = "slime plushie" diff --git a/code/game/objects/items/weapons/storage/internal.dm b/code/game/objects/items/weapons/storage/internal.dm index 00d6f79402..ddb7e873e6 100644 --- a/code/game/objects/items/weapons/storage/internal.dm +++ b/code/game/objects/items/weapons/storage/internal.dm @@ -1,90 +1,90 @@ -//A storage item intended to be used by other items to provide storage functionality. -//Types that use this should consider overriding emp_act() and hear_talk(), unless they shield their contents somehow. -/obj/item/weapon/storage/internal - preserve_item = 1 - var/obj/item/master_item - -/obj/item/weapon/storage/internal/New(obj/item/MI) - master_item = MI - loc = master_item - //name = master_item.name //VOREStation Removal - verbs -= /obj/item/verb/verb_pickup //make sure this is never picked up. - ..() - -/obj/item/weapon/storage/internal/Destroy() - master_item = null - . = ..() - -/obj/item/weapon/storage/internal/attack_hand() - return //make sure this is never picked up - -/obj/item/weapon/storage/internal/mob_can_equip(M as mob, slot, disable_warning = 0) - return 0 //make sure this is never picked up - -//Helper procs to cleanly implement internal storages - storage items that provide inventory slots for other items. -//These procs are completely optional, it is up to the master item to decide when it's storage get's opened by calling open() -//However they are helpful for allowing the master item to pretend it is a storage item itself. -//If you are using these you will probably want to override attackby() as well. -//See /obj/item/clothing/suit/storage for an example. - -//items that use internal storage have the option of calling this to emulate default storage MouseDrop behaviour. -//returns 1 if the master item's parent's MouseDrop() should be called, 0 otherwise. It's strange, but no other way of -//doing it without the ability to call another proc's parent, really. -/obj/item/weapon/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj) - if (ishuman(user) || issmall(user)) //so monkeys can take off their backpacks -- Urist - - if (istype(user.loc,/obj/mecha)) // stops inventory actions in a mech - return 0 - - if(over_object == user && Adjacent(user)) // this must come before the screen objects only block - src.open(user) - return 0 - - if (!( istype(over_object, /obj/screen) )) - return 1 - - //makes sure master_item is equipped before putting it in hand, so that we can't drag it into our hand from miles away. - //there's got to be a better way of doing this... - if (!(master_item.loc == user) || (master_item.loc && master_item.loc.loc == user)) - return 0 - - if (!( user.restrained() ) && !( user.stat )) - switch(over_object.name) - if("r_hand") - user.unEquip(master_item) - user.put_in_r_hand(master_item) - if("l_hand") - user.unEquip(master_item) - user.put_in_l_hand(master_item) - master_item.add_fingerprint(user) - return 0 - return 0 - -//items that use internal storage have the option of calling this to emulate default storage attack_hand behaviour. -//returns 1 if the master item's parent's attack_hand() should be called, 0 otherwise. -//It's strange, but no other way of doing it without the ability to call another proc's parent, really. -/obj/item/weapon/storage/internal/proc/handle_attack_hand(mob/user as mob) - - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.l_store == master_item && !H.get_active_hand()) //Prevents opening if it's in a pocket. - H.put_in_hands(master_item) - H.l_store = null - return 0 - if(H.r_store == master_item && !H.get_active_hand()) - H.put_in_hands(master_item) - H.r_store = null - return 0 - - src.add_fingerprint(user) - if (master_item.loc == user) - src.open(user) - return 0 - - for(var/mob/M in range(1, master_item.loc)) - if (M.s_active == src) - src.close(M) - return 1 - -/obj/item/weapon/storage/internal/Adjacent(var/atom/neighbor) - return master_item.Adjacent(neighbor) +//A storage item intended to be used by other items to provide storage functionality. +//Types that use this should consider overriding emp_act() and hear_talk(), unless they shield their contents somehow. +/obj/item/weapon/storage/internal + preserve_item = 1 + var/obj/item/master_item + +/obj/item/weapon/storage/internal/New(obj/item/MI) + master_item = MI + loc = master_item + name = master_item.name + verbs -= /obj/item/verb/verb_pickup //make sure this is never picked up. + ..() + +/obj/item/weapon/storage/internal/Destroy() + master_item = null + . = ..() + +/obj/item/weapon/storage/internal/attack_hand() + return //make sure this is never picked up + +/obj/item/weapon/storage/internal/mob_can_equip(M as mob, slot, disable_warning = 0) + return 0 //make sure this is never picked up + +//Helper procs to cleanly implement internal storages - storage items that provide inventory slots for other items. +//These procs are completely optional, it is up to the master item to decide when it's storage get's opened by calling open() +//However they are helpful for allowing the master item to pretend it is a storage item itself. +//If you are using these you will probably want to override attackby() as well. +//See /obj/item/clothing/suit/storage for an example. + +//items that use internal storage have the option of calling this to emulate default storage MouseDrop behaviour. +//returns 1 if the master item's parent's MouseDrop() should be called, 0 otherwise. It's strange, but no other way of +//doing it without the ability to call another proc's parent, really. +/obj/item/weapon/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj) + if (ishuman(user) || issmall(user)) //so monkeys can take off their backpacks -- Urist + + if (istype(user.loc,/obj/mecha)) // stops inventory actions in a mech + return 0 + + if(over_object == user && Adjacent(user)) // this must come before the screen objects only block + src.open(user) + return 0 + + if (!( istype(over_object, /obj/screen) )) + return 1 + + //makes sure master_item is equipped before putting it in hand, so that we can't drag it into our hand from miles away. + //there's got to be a better way of doing this... + if (!(master_item.loc == user) || (master_item.loc && master_item.loc.loc == user)) + return 0 + + if (!( user.restrained() ) && !( user.stat )) + switch(over_object.name) + if("r_hand") + user.unEquip(master_item) + user.put_in_r_hand(master_item) + if("l_hand") + user.unEquip(master_item) + user.put_in_l_hand(master_item) + master_item.add_fingerprint(user) + return 0 + return 0 + +//items that use internal storage have the option of calling this to emulate default storage attack_hand behaviour. +//returns 1 if the master item's parent's attack_hand() should be called, 0 otherwise. +//It's strange, but no other way of doing it without the ability to call another proc's parent, really. +/obj/item/weapon/storage/internal/proc/handle_attack_hand(mob/user as mob) + + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.l_store == master_item && !H.get_active_hand()) //Prevents opening if it's in a pocket. + H.put_in_hands(master_item) + H.l_store = null + return 0 + if(H.r_store == master_item && !H.get_active_hand()) + H.put_in_hands(master_item) + H.r_store = null + return 0 + + src.add_fingerprint(user) + if (master_item.loc == user) + src.open(user) + return 0 + + for(var/mob/M in range(1, master_item.loc)) + if (M.s_active == src) + src.close(M) + return 1 + +/obj/item/weapon/storage/internal/Adjacent(var/atom/neighbor) + return master_item.Adjacent(neighbor) diff --git a/code/game/sound.dm b/code/game/sound.dm index 98e24a1f34..7b16e0fd80 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -10,7 +10,7 @@ // Looping through the player list has the added bonus of working for mobs inside containers var/sound/S = sound(get_sfx(soundin)) - var/maxdistance = (world.view + extrarange) * 3 + var/maxdistance = (world.view + extrarange) * 2 //VOREStation Edit - 3 to 2 var/list/listeners = player_list if(!ignore_walls) //these sounds don't carry through walls listeners = listeners & hearers(maxdistance,turf_source) diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index aa6f3b0e6f..70ea20a378 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -64,6 +64,7 @@ var/list/flooring_types /decl/flooring/grass/sif // Subtype for Sif's grass. name = "growth" desc = "A natural moss that has adapted to the sheer cold climate." + flags = TURF_REMOVE_SHOVEL icon = 'icons/turf/outdoors.dmi' icon_base = "grass_sif" has_base_range = 1 @@ -112,7 +113,7 @@ var/list/flooring_types desc = "Gritty and unpleasant." icon = 'icons/turf/flooring/asteroid.dmi' icon_base = "asteroid" - flags = TURF_HAS_EDGES | TURF_REMOVE_SHOVEL + flags = TURF_REMOVE_SHOVEL build_type = null footstep_sounds = list("human" = list( 'sound/effects/footstep/asteroid1.ogg', diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index af6d681122..89962bb15a 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -41,6 +41,7 @@ floortype = initial_flooring if(floortype) set_flooring(get_flooring_data(floortype), TRUE) + . = INITIALIZE_HINT_LATELOAD // We'll update our icons after everyone is ready else footstep_sounds = base_footstep_sounds if(can_dirty && can_start_dirty) @@ -48,6 +49,10 @@ dirt += rand(50,100) update_dirt() //5% chance to start with dirt on a floor tile- give the janitor something to do +/turf/simulated/floor/LateInitialize() + . = ..() + update_icon(1) + /turf/simulated/floor/proc/swap_decals() var/current_decals = decals decals = old_decals @@ -59,7 +64,8 @@ swap_decals() flooring = newflooring footstep_sounds = newflooring.footstep_sounds - update_icon(1) + if(!initializing) + update_icon(1) levelupdate() //This proc will set floor_type to null and the update_icon() proc will then change the icon_state of the turf diff --git a/code/game/turfs/simulated/floor_icon.dm b/code/game/turfs/simulated/floor_icon.dm index e11ad7e998..5f426857d6 100644 --- a/code/game/turfs/simulated/floor_icon.dm +++ b/code/game/turfs/simulated/floor_icon.dm @@ -1,4 +1,4 @@ -GLOBAL_LIST_EMPTY(flooring_cache) +var/list/flooring_cache = list() var/image/no_ceiling_image = null @@ -36,40 +36,39 @@ var/image/no_ceiling_image = null if(flooring.flags & TURF_HAS_EDGES) for(var/step_dir in cardinal) var/turf/simulated/floor/T = get_step(src, step_dir) - if(!istype(T) || !T.flooring || T.flooring.name != flooring.name) + if(!test_link(T)) has_border |= step_dir add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[step_dir]", "[flooring.icon_base]_edges", step_dir)) - // There has to be a concise numerical way to do this but I am too noob. - if((has_border & NORTH) && (has_border & EAST)) + //Note: Doesn't actually check northeast, this is bitmath to check if we're edge'd (aka not smoothed) to NORTH and EAST + //North = 0001, East = 0100, Northeast = 0101, so (North|East) == Northeast, therefore (North|East)&Northeast == Northeast + if((has_border & NORTHEAST) == NORTHEAST) add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[NORTHEAST]", "[flooring.icon_base]_edges", NORTHEAST)) - if((has_border & NORTH) && (has_border & WEST)) + if((has_border & NORTHWEST) == NORTHWEST) add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[NORTHWEST]", "[flooring.icon_base]_edges", NORTHWEST)) - if((has_border & SOUTH) && (has_border & EAST)) + if((has_border & SOUTHEAST) == SOUTHEAST) add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[SOUTHEAST]", "[flooring.icon_base]_edges", SOUTHEAST)) - if((has_border & SOUTH) && (has_border & WEST)) + if((has_border & SOUTHWEST) == SOUTHWEST) add_overlay(get_flooring_overlay("[flooring.icon_base]-edge-[SOUTHWEST]", "[flooring.icon_base]_edges", SOUTHWEST)) if(flooring.flags & TURF_HAS_CORNERS) - // As above re: concise numerical way to do this. - if(!(has_border & NORTH)) - if(!(has_border & EAST)) - var/turf/simulated/floor/T = get_step(src, NORTHEAST) - if(!(istype(T) && T.flooring && T.flooring.name == flooring.name)) - add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[NORTHEAST]", "[flooring.icon_base]_corners", NORTHEAST)) - if(!(has_border & WEST)) - var/turf/simulated/floor/T = get_step(src, NORTHWEST) - if(!(istype(T) && T.flooring && T.flooring.name == flooring.name)) - add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[NORTHWEST]", "[flooring.icon_base]_corners", NORTHWEST)) - if(!(has_border & SOUTH)) - if(!(has_border & EAST)) - var/turf/simulated/floor/T = get_step(src, SOUTHEAST) - if(!(istype(T) && T.flooring && T.flooring.name == flooring.name)) - add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHEAST]", "[flooring.icon_base]_corners", SOUTHEAST)) - if(!(has_border & WEST)) - var/turf/simulated/floor/T = get_step(src, SOUTHWEST) - if(!(istype(T) && T.flooring && T.flooring.name == flooring.name)) - add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHWEST]", "[flooring.icon_base]_corners", SOUTHWEST)) + //Like above but checking for NO similar bits rather than both similar bits. + if((has_border & NORTHEAST) == 0) //Are connected NORTH and EAST + var/turf/simulated/floor/T = get_step(src, NORTHEAST) + if(!test_link(T)) //But not NORTHEAST + add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[NORTHEAST]", "[flooring.icon_base]_corners", NORTHEAST)) + if((has_border & NORTHWEST) == 0) + var/turf/simulated/floor/T = get_step(src, NORTHWEST) + if(!test_link(T)) + add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[NORTHWEST]", "[flooring.icon_base]_corners", NORTHWEST)) + if((has_border & SOUTHEAST) == 0) + var/turf/simulated/floor/T = get_step(src, SOUTHEAST) + if(!test_link(T)) + add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHEAST]", "[flooring.icon_base]_corners", SOUTHEAST)) + if((has_border & SOUTHWEST) == 0) + var/turf/simulated/floor/T = get_step(src, SOUTHWEST) + if(!test_link(T)) + add_overlay(get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHWEST]", "[flooring.icon_base]_corners", SOUTHWEST)) // Re-apply floor decals if(LAZYLEN(decals)) @@ -79,11 +78,10 @@ var/image/no_ceiling_image = null icon = 'icons/turf/flooring/plating.dmi' icon_state = "dmg[rand(1,4)]" else if(flooring) - var/rand_key = rand(0,2) if(!isnull(broken) && (flooring.flags & TURF_CAN_BREAK)) - add_overlay(get_flooring_overlay("[flooring.icon_base]-broken-[rand_key]","broken[rand_key]")) + add_overlay(get_flooring_overlay("[flooring.icon_base]-broken-[broken]","broken[broken]")) // VOREStation Edit - Eris overlays if(!isnull(burnt) && (flooring.flags & TURF_CAN_BURN)) - add_overlay(get_flooring_overlay("[flooring.icon_base]-burned-[rand_key]","burned[rand_key]")) + add_overlay(get_flooring_overlay("[flooring.icon_base]-burned-[burnt]","burned[burnt]")) // VOREStation Edit - Eris overlays if(update_neighbors) for(var/turf/simulated/floor/F in range(src, 1)) @@ -96,9 +94,49 @@ var/image/no_ceiling_image = null if(above && isopenspace(above) && !istype(src, /turf/simulated/floor/outdoors)) // This won't apply to outdoor turfs since its assumed they don't have a ceiling anyways. add_overlay(no_ceiling_image) + // Update our 'them-to-us' edges, aka edges from external turfs we feel should spill onto us + if(edge_blending_priority && !forbid_turf_edge()) + update_icon_edge() + +// This updates an edge from an adjacent turf onto us, not our own 'internal' edges. +// For e.g. we might be outdoor metal plating, and we want to find sand next to us to have it 'spill onto' our turf with an overlay. +/turf/simulated/proc/update_icon_edge() + for(var/checkdir in cardinal) // Check every direction + var/turf/simulated/T = get_step(src, checkdir) // Get the turf in that direction + // Our conditions: + // Has to be a /turf/simulated + // Has to have it's own edge_blending_priority + // Has to have a higher priority than us + // Their icon_state is not our icon_state + // They don't forbid_turf_edge + if(istype(T) && T.edge_blending_priority && edge_blending_priority < T.edge_blending_priority && icon_state != T.icon_state && !T.forbid_turf_edge()) + var/cache_key = "[T.get_edge_icon_state()]-[checkdir]" // Usually [icon_state]-[dirnum] + if(!turf_edge_cache[cache_key]) + var/image/I = image(icon = 'icons/turf/outdoors_edge.dmi', icon_state = "[T.get_edge_icon_state()]-edge", dir = checkdir, layer = ABOVE_TURF_LAYER) // Icon should be abstracted out + I.plane = TURF_PLANE + turf_edge_cache[cache_key] = I + add_overlay(turf_edge_cache[cache_key]) + +// We will take this state and use it for a cache key, and append '-edge' to it to get the edge overlay (edges *from other turfs*, not our own internal edges) +/turf/simulated/proc/get_edge_icon_state() + return icon_state + +// Tests if we shouldn't apply a turf edge. +// Returns the blocker if one exists. +/turf/simulated/proc/forbid_turf_edge() + for(var/obj/structure/S in contents) + if(S.block_turf_edges) + return S + return null + + +/turf/simulated/floor/proc/test_link(var/turf/simulated/floor/them) + return (istype(them) && them.flooring?.name == src.flooring.name) + /turf/simulated/floor/proc/get_flooring_overlay(var/cache_key, var/icon_base, var/icon_dir = 0) - if(!GLOB.flooring_cache[cache_key]) + if(!flooring_cache[cache_key]) var/image/I = image(icon = flooring.icon, icon_state = icon_base, dir = icon_dir) I.layer = layer - GLOB.flooring_cache[cache_key] = I - return GLOB.flooring_cache[cache_key] + flooring_cache[cache_key] = I + return flooring_cache[cache_key] + diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index 902c38c16a..237a28635c 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -33,11 +33,6 @@ ..() name = "magma" -/turf/simulated/floor/lava/update_icon() - cut_overlays() - ..() - update_icon_edge() - /turf/simulated/floor/lava/Entered(atom/movable/AM) if(burn_stuff(AM)) START_PROCESSING(SSturfs, src) diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm index bbc71d536b..5f438f698f 100644 --- a/code/game/turfs/simulated/outdoors/outdoors.dm +++ b/code/game/turfs/simulated/outdoors/outdoors.dm @@ -20,10 +20,6 @@ var/list/turf_edge_cache = list() // When a turf gets demoted or promoted, this list gets adjusted. The top-most layer is the layer on the bottom of the list, due to how pop() works. var/list/turf_layers = list(/turf/simulated/floor/outdoors/rocks) -/turf/simulated/floor/outdoors/Initialize() - update_icon() - . = ..() - /turf/simulated/floor/Initialize(mapload) if(outdoors) SSplanets.addTurf(src) @@ -50,33 +46,6 @@ var/list/turf_edge_cache = list() else make_indoors() -/turf/simulated/proc/update_icon_edge() - if(edge_blending_priority && !forbid_turf_edge()) - for(var/checkdir in cardinal) - var/turf/simulated/T = get_step(src, checkdir) - if(istype(T) && T.edge_blending_priority && edge_blending_priority < T.edge_blending_priority && icon_state != T.icon_state && !T.forbid_turf_edge()) - var/cache_key = "[T.get_edge_icon_state()]-[checkdir]" - if(!turf_edge_cache[cache_key]) - var/image/I = image(icon = 'icons/turf/outdoors_edge.dmi', icon_state = "[T.get_edge_icon_state()]-edge", dir = checkdir, layer = ABOVE_TURF_LAYER) - I.plane = TURF_PLANE - turf_edge_cache[cache_key] = I - add_overlay(turf_edge_cache[cache_key]) - -/turf/simulated/proc/get_edge_icon_state() - return icon_state - -// Tests if we shouldn't apply a turf edge. -// Returns the blocker if one exists. -/turf/simulated/proc/forbid_turf_edge() - for(var/obj/structure/S in contents) - if(S.block_turf_edges) - return S - return null - -/turf/simulated/floor/outdoors/update_icon() - ..() - update_icon_edge() - /turf/simulated/floor/outdoors/mud name = "mud" icon_state = "mud_dark" diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index 0093f84849..071499c297 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -32,8 +32,6 @@ var/image/water_sprite = image(icon = 'icons/turf/outdoors.dmi', icon_state = water_state, layer = WATER_LAYER) add_overlay(water_sprite) - update_icon_edge() - /turf/simulated/floor/water/get_edge_icon_state() return "water_shallow" diff --git a/code/game/verbs/ignore.dm b/code/game/verbs/ignore.dm index 702d462a0e..dab46f3a60 100644 --- a/code/game/verbs/ignore.dm +++ b/code/game/verbs/ignore.dm @@ -42,7 +42,7 @@ /client/proc/is_key_ignored(var/key_to_check) key_to_check = ckey(key_to_check) if(key_to_check in prefs.ignored_players) - if(GLOB.directory[key_to_check] in admins) // This is here so this is only evaluated if someone is actually being blocked. + if(GLOB.directory[key_to_check] in GLOB.admins) // This is here so this is only evaluated if someone is actually being blocked. return 0 return 1 return 0 \ No newline at end of file diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index a6e2625257..b494e844f4 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -151,7 +151,7 @@ receivers |= E.owner.client // Admins with RLOOC displayed who weren't already in - for(var/client/admin in admins) + for(var/client/admin in GLOB.admins) if(!(admin in receivers) && admin.is_preference_enabled(/datum/client_preference/holder/show_rlooc)) r_receivers |= admin @@ -159,7 +159,7 @@ for(var/client/target in receivers) var/admin_stuff = "" - if(target in admins) + if(target in GLOB.admins) admin_stuff += "/([key])" to_chat(target, "" + create_text_tag("looc", "LOOC:", target) + " [display_name][admin_stuff]: [msg]") diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 4b03bcb4ce..342ded7a8e 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -67,6 +67,46 @@ set category = "Admin" set name = "Staffwho" + var/message = get_staffwho_message(holder) + to_chat(src, message) + +/proc/get_staffwho_numbers() + var/admin_count = 0 + var/mod_count = 0 + var/dev_count = 0 + var/other_count = 0 + var/list/keys = list() + + for(var/client/C in GLOB.admins) + var/keymsg = "[C.key]" + if(C.is_afk()) + keymsg += " *(AFK)*" + else if(C.holder.fakekey) + keymsg += " *(Stealth)*" + else if(isobserver(C.mob)) + keymsg += " *(Ghost)*" + else if(isnewplayer(C.mob)) + keymsg += " *(Lobby)*" + else + keymsg += " *(Ingame)*" + keys += keymsg + + if(R_ADMIN & C.holder.rights && R_BAN & C.holder.rights) // R_ADMIN and R_BAN apparently an admin makes + admin_count++ + + else if(R_ADMIN & C.holder.rights && !(R_SERVER & C.holder.rights)) // R_ADMIN but not R_SERVER makes a moderator + mod_count++ + + else if(R_SERVER & C.holder.rights) // R_SERVER makes a dev + dev_count++ + + else // No R_ADMIN&&R_BAN, R_ADMIN!R_BAN, R_SERVER, must be a GM or something + other_count++ + + return list("Admins" = admin_count, "Mods" = mod_count, "Devs" = dev_count, "Other" = other_count, "keys" = keys) + +// VOREStation Edit - This whole proc has various vorestation edits throughout. Practically every other line. +/proc/get_staffwho_message(datum/admins/holder) var/msg = "" var/modmsg = "" var/devmsg = "" @@ -75,9 +115,10 @@ var/num_admins_online = 0 var/num_devs_online = 0 var/num_event_managers_online = 0 + if(holder) - for(var/client/C in admins) - if(R_ADMIN & C.holder.rights && R_BAN & C.holder.rights) //VOREStation Edit + for(var/client/C in GLOB.admins) + if(R_ADMIN & C.holder.rights && R_BAN & C.holder.rights) if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) //Event Managerss can't see stealthmins continue @@ -102,15 +143,13 @@ msg += "\n" num_admins_online++ - else if(R_ADMIN & C.holder.rights && !(R_SERVER & C.holder.rights)) //VOREStation Edit + else if(R_ADMIN & C.holder.rights && !(R_SERVER & C.holder.rights)) modmsg += "\t[C] is a [C.holder.rank]" - //VOREStation Addition Start if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) continue if(C.holder.fakekey) msg += " (as [C.holder.fakekey])" - //VOREStation Addition End if(isobserver(C.mob)) modmsg += " - Observing" @@ -127,14 +166,12 @@ modmsg += "\n" num_mods_online++ - else if(R_SERVER & C.holder.rights) //VOREStation Edit - //VOREStation Edit Start - Adds Stealthmin support + else if(R_SERVER & C.holder.rights) if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) continue devmsg += "\t[C] is a [C.holder.rank]" if(C.holder.fakekey) devmsg += " (as [C.holder.fakekey])" - //VOREStation Edit End if(isobserver(C.mob)) devmsg += " - Observing" else if(istype(C.mob,/mob/new_player)) @@ -150,14 +187,12 @@ devmsg += "\n" num_devs_online++ - else //VOREStation Edit - //VOREStation Edit Start - Adds Stealthmin support + else if(C.holder.fakekey && (!R_ADMIN & holder.rights && !R_MOD & holder.rights)) continue eventMmsg += "\t[C] is a [C.holder.rank]" if(C.holder.fakekey) eventMmsg += " (as [C.holder.fakekey])" - //VOREStation Edit End if(isobserver(C.mob)) eventMmsg += " - Observing" else if(istype(C.mob,/mob/new_player)) @@ -174,12 +209,11 @@ num_event_managers_online++ else - for(var/client/C in admins) - if(R_ADMIN & C.holder.rights && R_BAN & C.holder.rights) //VOREStation Edit + for(var/client/C in GLOB.admins) + if(R_ADMIN & C.holder.rights && R_BAN & C.holder.rights) if(!C.holder.fakekey) msg += "\t[C] is a [C.holder.rank]\n" num_admins_online++ - //VOREStation Block Edit Start else if(R_ADMIN & C.holder.rights && !(R_SERVER & C.holder.rights)) if(!C.holder.fakekey) modmsg += "\t[C] is a [C.holder.rank]\n" @@ -192,19 +226,18 @@ if(!C.holder.fakekey) eventMmsg += "\t[C] is a [C.holder.rank]\n" num_event_managers_online++ - //VOREStation Block Edit End - if(config.admin_irc) - to_chat(src, "Adminhelps are also sent to IRC. If no admins are available in game try anyway and an admin on IRC may see it and respond.") msg = "Current Admins ([num_admins_online]):\n" + msg if(config.show_mods) - msg += "\n Current Game Masters ([num_mods_online]):\n" + modmsg //VOREStation Edit + msg += "\n Current Game Masters ([num_mods_online]):\n" + modmsg if(config.show_devs) msg += "\n Current Developers ([num_devs_online]):\n" + devmsg if(config.show_event_managers) - msg += "\n Current Miscellaneous ([num_event_managers_online]):\n" + eventMmsg //VOREStation Edit + msg += "\n Current Miscellaneous ([num_event_managers_online]):\n" + eventMmsg - to_chat(src,msg) + msg += "\nAdminhelps are also sent to Discord. If no admins are available in game try anyway and an admin on Discord may see it and respond." + + return msg diff --git a/code/game/world.dm b/code/game/world.dm index 6e76ab93a1..52627a90dc 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -344,7 +344,7 @@ var/world_topic_spam_protect_time = world.timeofday to_chat(C,message) - for(var/client/A in admins) + for(var/client/A in GLOB.admins) if(A != C) to_chat(A,amessage) diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index 48eb275a9e..9edad6c4d0 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -72,7 +72,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = who += ", [C]" var/adminwho - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(!adminwho) adminwho = "[C]" else diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index ccf0b4ef94..cf6ea072f0 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -8,13 +8,13 @@ var/global/floorIsLava = 0 msg = "ADMIN LOG: [msg]" //log_adminwarn(msg) //log_and_message_admins is for this - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if((R_ADMIN|R_MOD) & C.holder.rights) to_chat(C,msg) /proc/msg_admin_attack(var/text) //Toggleable Attack Messages var/rendered = "ATTACK: [text]" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if((R_ADMIN|R_MOD) & C.holder.rights) if(C.is_preference_enabled(/datum/client_preference/mod/show_attack_logs)) var/msg = rendered @@ -1568,12 +1568,12 @@ datum/admins/var/obj/item/weapon/paper/admin/faxreply // var to hold fax replies to_chat(src.owner, "Message reply to transmitted successfully.") if(P.sender) // sent as a reply log_admin("[key_name(src.owner)] replied to a fax message from [key_name(P.sender)]") - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if((R_ADMIN | R_MOD | R_EVENT) & C.holder.rights) to_chat(C, "FAX LOG:[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(P.sender)] (VIEW)") else log_admin("[key_name(src.owner)] has sent a fax message to [destination.department]") - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if((R_ADMIN | R_MOD | R_EVENT) & C.holder.rights) to_chat(C, "FAX LOG:[key_name_admin(src.owner)] has sent a fax message to [destination.department] (VIEW)") diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index e03dda1dc8..d1696839bc 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -64,10 +64,10 @@ var/list/admin_ranks = list() //list of all ranks with associated rights /proc/load_admins() //clear the datums references admin_datums.Cut() - for(var/client/C in admins) + for(var/client/C in GLOB.admins) C.remove_admin_verbs() C.holder = null - admins.Cut() + GLOB.admins.Cut() if(config.admin_legacy_system) load_admin_ranks() diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 51d50218ec..33ca558e80 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -31,18 +31,18 @@ var/list/admin_datums = list() owner = C owner.holder = src owner.add_admin_verbs() //TODO - admins |= C + GLOB.admins |= C /datum/admins/proc/disassociate() if(owner) - admins -= owner + GLOB.admins -= owner owner.remove_admin_verbs() owner.deadmin_holder = owner.holder owner.holder = null /datum/admins/proc/reassociate() if(owner) - admins += owner + GLOB.admins += owner owner.holder = src owner.deadmin_holder = null owner.add_admin_verbs() diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index f44c52ffc6..025096daea 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1300,7 +1300,7 @@ var/mob/M = locate(href_list["take_question"]) if(ismob(M)) var/take_msg = "ADMINHELP: [key_name(usr.client)] is attending to [key_name(M)]'s adminhelp, please don't dogpile them." - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if((R_ADMIN|R_MOD|R_SERVER) & X.holder.rights) //VOREStation Edit to_chat(X, take_msg) to_chat(M, "Your adminhelp is being attended to by [usr.client]. Thanks for your patience!") diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 9cac0a5f34..83b6c6c877 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -241,7 +241,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) AddInteraction("[LinkedReplyName(ref_src)]: [msg]") //send this msg to all admins - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(X.is_preference_enabled(/datum/client_preference/holder/play_adminhelp_ping)) X << 'sound/effects/adminhelp.ogg' window_flash(X) @@ -556,7 +556,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /proc/get_admin_counts(requiredflags = R_BAN) . = list("total" = list(), "noflags" = list(), "afk" = list(), "stealth" = list(), "present" = list()) - for(var/client/X in admins) + for(var/client/X in GLOB.admins) .["total"] += X if(requiredflags != 0 && !check_rights(rights_required = requiredflags, show_msg = FALSE, C = X)) .["noflags"] += X @@ -586,7 +586,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /proc/ircadminwho() var/list/message = list("Admins: ") var/list/admin_keys = list() - for(var/adm in admins) + for(var/adm in GLOB.admins) var/client/C = adm admin_keys += "[C][C.holder.fakekey ? "(Stealth)" : ""][C.is_afk() ? "(AFK)" : ""]" diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 2bd7326b3b..7f7ecff2ac 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -200,12 +200,12 @@ if(irc) log_admin("PM: [key_name(src)]->IRC: [rawmsg]") - for(var/client/X in admins) + for(var/client/X in GLOB.admins) to_chat(X, "PM: [key_name(src, X, 0)]->IRC: [keywordparsedmsg]") else log_admin("PM: [key_name(src)]->[key_name(recipient)]: [rawmsg]") //we don't use message_admins here because the sender/receiver might get it too - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(X.key!=key && X.key!=recipient.key) //check client/X is an admin and isn't the sender or recipient to_chat(X, "PM: [key_name(src, X, 0)]->[key_name(recipient, X, 0)]: [keywordparsedmsg]" ) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index cdd825f0b3..ba75d45317 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -12,7 +12,7 @@ log_adminsay(msg,src) //VOREStation Edit Start - Adds R_EVENT - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(check_rights(R_ADMIN|R_EVENT)) to_chat(C, "" + create_text_tag("admin", "ADMIN:", C) + " [key_name(usr, 1)]([admin_jump_link(mob, src)]): [msg]") //VOREStation Edit End @@ -36,7 +36,7 @@ var/sender_name = key_name(usr, 1) if(check_rights(R_ADMIN, 0)) sender_name = "[sender_name]" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(check_rights(R_ADMIN|R_MOD|R_SERVER|R_STEALTH)) //VOREStation Edit to_chat(C, "" + create_text_tag("mod", "MOD:", C) + " [sender_name]([admin_jump_link(mob, C.holder)]): [msg]") @@ -59,7 +59,7 @@ var/sender_name = key_name(usr, 1) if(check_rights(R_ADMIN, 0)) sender_name = "[sender_name]" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) to_chat(C, "" + create_text_tag("event", "EVENT:", C) + " [sender_name]([admin_jump_link(mob, C.holder)]): [msg]") feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! \ No newline at end of file diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index cc94db2f1d..99146571f7 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -345,7 +345,7 @@ if(!(A.type in areas_all)) areas_all.Add(A.type) - for(var/obj/machinery/power/apc/APC in machines) + for(var/obj/machinery/power/apc/APC in GLOB.apcs) var/area/A = get_area(APC) if(A && !(A.type in areas_with_APC)) areas_with_APC.Add(A.type) @@ -584,7 +584,7 @@ if("Players") to_chat(usr, span("filter_debuglogs", jointext(player_list,","))) if("Admins") - to_chat(usr, span("filter_debuglogs", jointext(admins,","))) + to_chat(usr, span("filter_debuglogs", jointext(GLOB.admins,","))) if("Mobs") to_chat(usr, span("filter_debuglogs", jointext(mob_list,","))) if("Living Mobs") diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index aec9db7e81..a7a8993694 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -19,7 +19,7 @@ var/image/cross = image('icons/obj/storage.dmi',"bible") msg = "[bicon(cross)] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src, src)]) (CA) (SC) (SMITE): [msg]" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(R_ADMIN|R_EVENT & C.holder.rights) if(C.is_preference_enabled(/datum/client_preference/admin/show_chat_prayers)) to_chat(C,msg) @@ -31,14 +31,14 @@ /proc/CentCom_announce(var/msg, var/mob/Sender, var/iamessage) msg = "[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, src)]) (CA) (BSA) (RPLY): [msg]" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(R_ADMIN|R_EVENT & C.holder.rights) to_chat(C,msg) C << 'sound/machines/signal.ogg' /proc/Syndicate_announce(var/msg, var/mob/Sender) msg = "ILLEGAL:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, src)]) (CA) (BSA) (RPLY): [msg]" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(R_ADMIN|R_EVENT & C.holder.rights) to_chat(C,msg) C << 'sound/machines/signal.ogg' \ No newline at end of file diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 7425c5b72e..f5610b68b2 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -131,7 +131,7 @@ //Admin Authorisation holder = admin_datums[ckey] if(holder) - admins += src + GLOB.admins += src holder.owner = src //preferences datum - also holds some persistant data for the client (because we may as well keep these datums to a minimum) @@ -192,7 +192,7 @@ log_and_message_admins("PARANOIA: [key_name(src)] has a very new BYOND account ([account_age] days).") alert = TRUE if(alert) - for(var/client/X in admins) + for(var/client/X in GLOB.admins) if(X.is_preference_enabled(/datum/client_preference/holder/play_adminhelp_ping)) X << 'sound/voice/bcriminal.ogg' window_flash(X) @@ -204,7 +204,7 @@ /client/Del() if(holder) holder.owner = null - admins -= src + GLOB.admins -= src GLOB.ahelp_tickets.ClientLogout(src) GLOB.directory -= ckey GLOB.clients -= src diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm b/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm index 42c87335f6..276554554f 100644 --- a/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_eyes_vr.dm @@ -43,5 +43,9 @@ path = /obj/item/clothing/glasses/fluff/science_proper /datum/gear/eyes/security/secpatch - display_name = "security hudpatch" - path = /obj/item/clothing/glasses/hud/security/eyepatch \ No newline at end of file + display_name = "Security HUDpatch" + path = /obj/item/clothing/glasses/hud/security/eyepatch + +/datum/gear/eyes/medical/medpatch + display_name = "Health HUDpatch" + path = /obj/item/clothing/glasses/hud/health/eyepatch \ No newline at end of file diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm index aa7715c81a..01990ed031 100644 --- a/code/modules/clothing/glasses/hud_vr.dm +++ b/code/modules/clothing/glasses/hud_vr.dm @@ -183,3 +183,28 @@ else icon_state = initial(icon_state) update_clothing_icon() + + +/obj/item/clothing/glasses/hud/health/eyepatch + name = "Medical Hudpatch" + desc = "An eyepatch with built in scanners, that analyzes those in view and provides accurate data about their health status." + icon_state = "eyepatch" + item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold") + body_parts_covered = 0 + enables_planes = list(VIS_CH_STATUS,VIS_CH_HEALTH) + var/eye = null + +/obj/item/clothing/glasses/hud/health/eyepatch/verb/switcheye() + set name = "Switch Eyepatch" + set category = "Object" + set src in usr + if(!istype(usr, /mob/living)) return + if(usr.stat) return + + eye = !eye + if(eye) + icon_state = "[icon_state]_1" + else + icon_state = initial(icon_state) + update_clothing_icon() + diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 8c48b1fbcb..6008c2f377 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -416,15 +416,15 @@ obj/item/clothing/suit/kamishimo flags_inv = HIDEHOLSTER /obj/item/clothing/suit/storage/miljacket/alt - name = "alternate military jacket" - desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable. This one is in the standard olive drab, and has a badge on the right breast." + name = "military jacket, alternate" + desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable. This one has some extra badges on it." icon_state = "militaryjacket_badge" item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive") flags_inv = HIDEHOLSTER /obj/item/clothing/suit/storage/miljacket/green - name = "dark green military jacket" - desc = "A dark green canvas jacket. Feels sturdy, yet comfortable. This one is a rather saturated green tone. Weird." + name = "green military jacket" + desc = "A dark but rather high-saturation green canvas jacket. Feels sturdy, yet comfortable." icon_state = "militaryjacket_green" item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive") flags_inv = HIDEHOLSTER @@ -435,6 +435,7 @@ obj/item/clothing/suit/kamishimo icon_state = "militaryjacket_tan" item_state_slots = list(slot_r_hand_str = "suit_orange", slot_l_hand_str = "suit_orange") flags_inv = HIDEHOLSTER + index = 1 /obj/item/clothing/suit/storage/miljacket/grey name = "grey military jacket" @@ -442,6 +443,7 @@ obj/item/clothing/suit/kamishimo icon_state = "militaryjacket_grey" item_state_slots = list(slot_r_hand_str = "suit_grey", slot_l_hand_str = "suit_grey") flags_inv = HIDEHOLSTER + index = 1 /obj/item/clothing/suit/storage/miljacket/navy name = "navy military jacket" @@ -449,6 +451,7 @@ obj/item/clothing/suit/kamishimo icon_state = "militaryjacket_navy" item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy") flags_inv = HIDEHOLSTER + index = 1 /obj/item/clothing/suit/storage/miljacket/black name = "black military jacket" @@ -456,6 +459,7 @@ obj/item/clothing/suit/kamishimo icon_state = "militaryjacket_black" item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") flags_inv = HIDEHOLSTER + index = 1 /obj/item/clothing/suit/storage/miljacket/white name = "white military jacket" @@ -463,7 +467,7 @@ obj/item/clothing/suit/kamishimo icon_state = "militaryjacket_white" item_state_slots = list(slot_r_hand_str = "med_dep_jacket", slot_l_hand_str = "med_dep_jacket") flags_inv = HIDEHOLSTER -//YW EDIT ENDS + index = 1 /obj/item/clothing/suit/storage/toggle/bomber name = "bomber jacket" diff --git a/code/modules/clothing/under/solgov_vr.dm b/code/modules/clothing/under/solgov_vr.dm index 891439d2d3..e4c4e84eb2 100644 --- a/code/modules/clothing/under/solgov_vr.dm +++ b/code/modules/clothing/under/solgov_vr.dm @@ -76,11 +76,11 @@ name = "marine command service uniform" desc = "The service uniform of the TCG Marine Corps. Slimming and stylish." -/obj/item/clothing/under/solgov/mildress/expeditionary +/obj/item/clothing/under/solgov/mildress/sifguard name = "\improper NDF dress uniform" desc = "The dress uniform of the Nanotrasen Defense Force in silver trim." -/obj/item/clothing/under/solgov/mildress/expeditionary/command +/obj/item/clothing/under/solgov/mildress/sifguard/officer name = "\improper NDF command dress uniform" desc = "The dress uniform of the Nanotrasen Defense Force in gold trim." diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index c8ecbad8d4..6b2998c2b3 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -28,7 +28,7 @@ /datum/event/electrical_storm/start() ..() valid_apcs = list() - for(var/obj/machinery/power/apc/A in global.machines) + for(var/obj/machinery/power/apc/A in GLOB.apcs) if(A.z in affecting_z) valid_apcs.Add(A) endWhen = (severity * 60) + startWhen diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index 5ac9dfda17..3003654078 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -199,14 +199,14 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is spawn(0) to_world("Started processing APCs") - for (var/obj/machinery/power/apc/APC in machines) + for (var/obj/machinery/power/apc/APC in GLOB.apcs) if(APC.z in station_levels) APC.ion_act() apcnum++ to_world("Finished processing APCs. Processed: [apcnum]") spawn(0) to_world("Started processing SMES") - for (var/obj/machinery/power/smes/SMES in machines) + for (var/obj/machinery/power/smes/SMES in GLOB.smeses) if(SMES.z in station_levels) SMES.ion_act() smesnum++ diff --git a/code/modules/food/food/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm index 0d768ad240..d5633dee75 100644 --- a/code/modules/food/food/snacks_vr.dm +++ b/code/modules/food/food/snacks_vr.dm @@ -765,6 +765,7 @@ /obj/item/weapon/reagent_containers/food/snacks/honeybun name = "Honeybun" desc = "A delicious and sweet treat made with honey instead of sugar. On the sticky side." + icon = 'icons/obj/food_vr.dmi' icon_state = "honeybun" bitesize = 2 nutriment_amt = 4 diff --git a/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm b/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm index 6467646f1b..0645d2cfe3 100644 --- a/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm +++ b/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm @@ -38,7 +38,7 @@ valid_z_levels -= using_map.sealed_levels // Space levels only please! valid_apcs = list() - for(var/obj/machinery/power/apc/A in global.machines) + for(var/obj/machinery/power/apc/A in GLOB.apcs) if(A.z in valid_z_levels) valid_apcs += A diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 1fc468b85a..1856fad689 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1214,12 +1214,13 @@ healths.appearance = healths_ma if(nutrition_icon) + var/prefix = isSynthetic() ? "c" : null switch(nutrition) - if(450 to INFINITY) nutrition_icon.icon_state = "nutrition0" - if(350 to 450) nutrition_icon.icon_state = "nutrition1" - if(250 to 350) nutrition_icon.icon_state = "nutrition2" - if(150 to 250) nutrition_icon.icon_state = "nutrition3" - else nutrition_icon.icon_state = "nutrition4" + if(450 to INFINITY) nutrition_icon.icon_state = "[prefix]nutrition0" + if(350 to 450) nutrition_icon.icon_state = "[prefix]nutrition1" + if(250 to 350) nutrition_icon.icon_state = "[prefix]nutrition2" + if(150 to 250) nutrition_icon.icon_state = "[prefix]nutrition3" + else nutrition_icon.icon_state = "[prefix]nutrition4" if(pressure) pressure.icon_state = "pressure[pressure_alert]" diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index 01f3279e6e..40fa93c6fa 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -118,6 +118,9 @@ /datum/trait/bloodsucker/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) H.verbs |= /mob/living/carbon/human/proc/bloodsuck + spawn(10 SECONDS) // Ugh! + if(H?.nutrition_icon) + H.nutrition_icon.icon = 'icons/mob/screen/vamp_hunger_vr.dmi' /datum/trait/succubus_drain name = "Succubus Drain" diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm index 3597cd8f90..b5246ef38d 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm @@ -15,6 +15,7 @@ LANGUAGE_ENOCHIAN = 0 ) var/vr_sprites = list() + var/pto_type = null /obj/item/weapon/robot_module/robot/clerical languages = list( @@ -64,14 +65,16 @@ src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people. . = ..() //Any Global vore modules will come from here -/obj/item/weapon/robot_module/robot/medical/surgeon //VOREStation sprites +/obj/item/weapon/robot_module/robot/medical/surgeon + pto_type = PTO_MEDICAL vr_sprites = list( "Acheron" = "mechoid-Medical", "Shellguard Noble" = "Noble-MED", "ZOOM-BA" = "zoomba-medical" ) -/obj/item/weapon/robot_module/robot/medical/crisis //VOREStation sprites +/obj/item/weapon/robot_module/robot/medical/crisis + pto_type = PTO_MEDICAL vr_sprites = list( "Handy" = "handy-med", "Acheron" = "mechoid-Medical", @@ -79,7 +82,8 @@ "ZOOM-BA" = "zoomba-crisis" ) -/obj/item/weapon/robot_module/robot/clerical/butler //VOREStation sprites +/obj/item/weapon/robot_module/robot/clerical/butler + pto_type = PTO_CIVILIAN vr_sprites = list( "Handy - Service" = "handy-service", "Handy - Hydro" = "handy-hydro", @@ -88,7 +92,8 @@ "ZOOM-BA" = "zoomba-service" ) -/obj/item/weapon/robot_module/robot/clerical/general //VOREStation sprites +/obj/item/weapon/robot_module/robot/clerical/general + pto_type = PTO_CIVILIAN vr_sprites = list( "Handy" = "handy-clerk", "Acheron" = "mechoid-Service", @@ -96,7 +101,8 @@ "ZOOM-BA" = "zoomba-clerical" ) -/obj/item/weapon/robot_module/robot/janitor //VOREStation sprites +/obj/item/weapon/robot_module/robot/janitor + pto_type = PTO_CIVILIAN vr_sprites = list( "Handy" = "handy-janitor", "Acheron" = "mechoid-Janitor", @@ -104,7 +110,8 @@ "ZOOM-BA" = "zoomba-janitor" ) -/obj/item/weapon/robot_module/robot/security/general //VOREStation sprites +/obj/item/weapon/robot_module/robot/security/general + pto_type = PTO_SECURITY vr_sprites = list( "Handy" = "handy-sec", "Acheron" = "mechoid-Security", @@ -112,7 +119,8 @@ "ZOOM-BA" = "zoomba-security" ) -/obj/item/weapon/robot_module/robot/miner //VOREStation sprites +/obj/item/weapon/robot_module/robot/miner + pto_type = PTO_CARGO vr_sprites = list( "Handy" = "handy-miner", "Acheron" = "mechoid-Miner", @@ -120,28 +128,31 @@ "ZOOM-BA" = "zoomba-miner" ) -/obj/item/weapon/robot_module/robot/standard //VOREStation sprites +/obj/item/weapon/robot_module/robot/standard + pto_type = PTO_CIVILIAN vr_sprites = list( "Handy" = "handy-standard", "Acheron" = "mechoid-Standard", "Shellguard Noble" = "Noble-STD", "ZOOM-BA" = "zoomba-standard" ) - -/obj/item/weapon/robot_module/robot/engineering/general //VOREStation sprites +/obj/item/weapon/robot_module/robot/engineering/general + pto_type = PTO_ENGINEERING vr_sprites = list( "Acheron" = "mechoid-Engineering", "Shellguard Noble" = "Noble-ENG", "ZOOM-BA" = "zoomba-engineering" ) -/obj/item/weapon/robot_module/robot/research //VOREStation sprites +/obj/item/weapon/robot_module/robot/research + pto_type = PTO_SCIENCE vr_sprites = list( "Acheron" = "mechoid-Science", "ZOOM-BA" = "zoomba-research" ) -/obj/item/weapon/robot_module/robot/security/combat //VOREStation sprites +/obj/item/weapon/robot_module/robot/security/combat + pto_type = PTO_SECURITY vr_sprites = list( "Acheron" = "mechoid-Combat", "ZOOM-BA" = "zoomba-combat" @@ -157,6 +168,7 @@ ) channels = list("Security" = 1) networks = list(NETWORK_SECURITY) + pto_type = PTO_SECURITY can_be_pushed = 0 /obj/item/weapon/robot_module/robot/knine/New(var/mob/living/silicon/robot/R) @@ -223,7 +235,8 @@ name = "MediHound module" channels = list("Medical" = 1) networks = list(NETWORK_MEDICAL) - subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) //Crew monitor anywhere! + subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) + pto_type = PTO_MEDICAL can_be_pushed = 0 sprites = list( "Medical Hound" = "medihound", @@ -306,6 +319,7 @@ name = "Emergency Responce module" channels = list("Security" = 1) networks = list(NETWORK_SECURITY) + pto_type = PTO_SECURITY can_be_pushed = 0 sprites = list( "Standard" = "ert", @@ -360,6 +374,7 @@ "Borgi" = "borgi-jani" ) channels = list("Service" = 1) + pto_type = PTO_CIVILIAN can_be_pushed = 0 /obj/item/weapon/robot_module/robot/scrubpup/New(var/mob/living/silicon/robot/R) @@ -444,6 +459,7 @@ "SciHoundDark" = "scihounddark" ) channels = list("Science" = 1) + pto_type = PTO_SCIENCE can_be_pushed = 0 /obj/item/weapon/robot_module/robot/science/New(var/mob/living/silicon/robot/R) @@ -519,6 +535,7 @@ ) channels = list("Engineering" = 1) networks = list(NETWORK_ENGINEERING) + pto_type = PTO_ENGINEERING subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor) can_be_pushed = 0 @@ -737,6 +754,7 @@ "ServicehoundV2 Darkmode" = "servedark", ) channels = list("Service" = 1) + pto_type = PTO_CIVILIAN can_be_pushed = 0 @@ -808,6 +826,7 @@ "CargoHoundDark" = "cargohounddark" ) channels = list("Supply" = 1) + pto_type = PTO_CARGO can_be_pushed = 0 /obj/item/weapon/robot_module/robot/kmine/New(var/mob/living/silicon/robot/R) diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index aa42ab461d..9759e0a061 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -6,7 +6,7 @@ log_access_out(src) if(admin_datums[src.ckey]) if (ticker && ticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing. - var/admins_number = admins.len + var/admins_number = GLOB.admins.len message_admins("Admin logout: [key_name(src)]") if(admins_number == 0) //Apparently the admin logging out is no longer an admin at this point, so we have to check this towards 0 and not towards 1. Awell. diff --git a/code/modules/mob/new_player/new_player_vr.dm b/code/modules/mob/new_player/new_player_vr.dm index 1c56e278f8..a317e9a0d9 100644 --- a/code/modules/mob/new_player/new_player_vr.dm +++ b/code/modules/mob/new_player/new_player_vr.dm @@ -12,8 +12,8 @@ pass = FALSE //No OOC notes - if (config.allow_Metadata && !(client?.prefs?.metadata || length(client.prefs.metadata) < 15)) - to_chat(src,"Please set informative OOC notes related to ERP preferences. Set them using the 'OOC Notes' button on the 'General' tab in character setup.") + if (config.allow_Metadata && (!client?.prefs?.metadata || length(client.prefs.metadata) < 15)) + to_chat(src,"Please set informative OOC notes related to RP/ERP preferences. Set them using the 'OOC Notes' button on the 'General' tab in character setup.") pass = FALSE //Are they on the VERBOTEN LIST? diff --git a/code/modules/modular_computers/NTNet/NTNet_relay.dm b/code/modules/modular_computers/NTNet/NTNet_relay.dm index 3af78db247..85daf5d03d 100644 --- a/code/modules/modular_computers/NTNet/NTNet_relay.dm +++ b/code/modules/modular_computers/NTNet/NTNet_relay.dm @@ -5,8 +5,7 @@ use_power = USE_POWER_ACTIVE active_power_usage = 20000 //20kW, apropriate for machine that keeps massive cross-Zlevel wireless network operational. idle_power_usage = 100 - icon = 'icons/obj/stationobjs_vr.dmi' //VOREStation Add - icon_state = "ntnet" //VOREStation Edit + icon_state = "ntnet" anchored = 1 density = 1 circuit = /obj/item/weapon/circuitboard/ntnet_relay @@ -32,12 +31,10 @@ return 1 /obj/machinery/ntnet_relay/update_icon() - //VOREStation Edit if(operable()) icon_state = initial(icon_state) else icon_state = "[initial(icon_state)]_off" - //VOREStation Edit End /obj/machinery/ntnet_relay/process() if(operable()) diff --git a/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm b/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm index 7603b1115e..03f69cd949 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm +++ b/code/modules/modular_computers/file_system/programs/engineering/rcon_console.dm @@ -126,7 +126,7 @@ var/z = get_z(nano_host()) var/list/map_levels = using_map.get_map_levels(z) - for(var/obj/machinery/power/smes/buildable/SMES in machines) + for(var/obj/machinery/power/smes/buildable/SMES in GLOB.smeses) if(!(SMES.z in map_levels)) continue if(SMES.RCon_tag && (SMES.RCon_tag != "NO_TAG") && SMES.RCon) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 5353b2cf18..15b597275f 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -235,7 +235,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins msg += "(REPLY): " msg += "Receiving '[sent.name]' via secure connection ... view message" - for(var/client/C in admins) + for(var/client/C in GLOB.admins) if(check_rights((R_ADMIN|R_MOD|R_EVENT),0,C)) to_chat(C,msg) C << 'sound/effects/printer.ogg' diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 91e73c4451..26bc4c9168 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1,3 +1,5 @@ +GLOBAL_LIST_EMPTY(apcs) + #define CRITICAL_APC_EMP_PROTECTION 10 // EMP effect duration is divided by this number if the APC has "critical" flag //update_state #define UPDATE_CELL_IN 1 @@ -169,6 +171,7 @@ /obj/machinery/power/apc/New(turf/loc, var/ndir, var/building=0) ..() wires = new(src) + GLOB.apcs += src // offset 24 pixels in direction of dir // this allows the APC to be embedded in a wall, yet still inside an area @@ -189,6 +192,7 @@ src.update_icon() /obj/machinery/power/apc/Destroy() + GLOB.apcs -= src src.update() area.apc = null area.power_light = 0 diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 10424cee18..e79474b3a0 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -1,6 +1,8 @@ // the SMES // stores power +GLOBAL_LIST_EMPTY(smeses) + #define SMESMAXCHARGELEVEL 250000 #define SMESMAXOUTPUT 250000 @@ -65,6 +67,7 @@ /obj/machinery/power/smes/Initialize() . = ..() + GLOB.smeses += src for(var/d in GLOB.cardinal) var/turf/T = get_step(src, d) for(var/obj/machinery/power/terminal/term in T) @@ -85,6 +88,7 @@ for(var/obj/machinery/power/terminal/T in terminals) T.master = null terminals = null + GLOB.smeses -= src return ..() /obj/machinery/power/smes/add_avail(var/amount) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 621cdcba0b..3d651a2a0f 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -183,7 +183,7 @@ to_chat(mob, "An invisible force slams you against the ground!") // Effect 2: Z-level wide electrical pulse - for(var/obj/machinery/power/apc/A in machines) + for(var/obj/machinery/power/apc/A in GLOB.apcs) if(!(A.z in affected_z)) continue diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 181514ef0c..e13dcbdb69 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -238,7 +238,7 @@ count = input("Select the number of pills to make.", "Max [max_pill_count]", pillamount) as null|num if(!count) //Covers 0 and cancel return - count = CLAMP(count, 1, max_pill_count) + count = CLAMP(round(count), 1, max_pill_count) // Fix decimals input and clamp to reasonable amounts if(reagents.total_volume/count < 1) //Sanity checking. return @@ -260,7 +260,7 @@ if(reagents.total_volume/count < 1) //Sanity checking. return - while (count--) + while(count-- > 0) // Will definitely eventually stop. var/obj/item/weapon/reagent_containers/pill/P = new/obj/item/weapon/reagent_containers/pill(src.loc) if(!name) name = reagents.get_master_reagent_name() P.name = "[name] pill" diff --git a/code/modules/tgs/v5/chat_commands.dm b/code/modules/tgs/v5/chat_commands.dm index bc73602861..ff91a39271 100644 --- a/code/modules/tgs/v5/chat_commands.dm +++ b/code/modules/tgs/v5/chat_commands.dm @@ -4,7 +4,7 @@ admin_only = FALSE /datum/tgs_chat_command/status/Run(datum/tgs_chat_user/sender, params) - return "```Players logged in: [GLOB.clients.len] - Round Duration: [roundduration2text()]```" + return "Current server status:\n**Web Manifest:** \n**Players:** [TGS_CLIENT_COUNT]\n**Round Duration:** [roundduration2text()]" /datum/tgs_chat_command/parsetest name = "parsetest" @@ -13,3 +13,18 @@ /datum/tgs_chat_command/parsetest/Run(datum/tgs_chat_user/sender, params) return "```You passed:[params]```" + +/datum/tgs_chat_command/staffwho + name = "staffwho" + help_text = "Shows the current online staff count" + admin_only = TRUE + +/datum/tgs_chat_command/staffwho/Run(datum/tgs_chat_user/sender, params) + var/message = "Current online staff:\n" + var/list/counts = get_staffwho_numbers() + var/list/keys = counts["keys"] + counts -= "keys" // Remove the 'keys' list as we don't want to iterate onto it here. We can hold the list. + for(var/key in counts) + message += "**[key]:** [counts[key]]\n" + message += "**Online:** [english_list(keys, "***!!Nobody!!***")]" + return message diff --git a/code/modules/vchat/js/vchat.js b/code/modules/vchat/js/vchat.js index 90a0b97284..fa017f9f7a 100644 --- a/code/modules/vchat/js/vchat.js +++ b/code/modules/vchat/js/vchat.js @@ -589,7 +589,7 @@ function start_vue() { } newmessage.content = newmessage.content.replace( - /(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z09+&@#\/%=~_|])/img, //Honestly good luck with this regex ~Gear + /(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/img, //Honestly good luck with this regex ~Gear '$1'); //Unread indicator and insertion into current tab shown messages if sensible diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index ebde3b5eae..9cc0dd7224 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -397,7 +397,7 @@ // Default implementation calls M.death() and removes from internal contents. // Indigestable items are removed, and M is deleted. /obj/belly/proc/digestion_death(mob/living/M) - message_admins("[key_name(owner)] has digested [key_name(M)] in their [lowertext(name)] ([owner ? ADMIN_JMP(owner) : "null"])") + add_attack_logs(owner, M, "Digested in [lowertext(name)]") // If digested prey is also a pred... anyone inside their bellies gets moved up. if(is_vore_predator(M)) @@ -439,6 +439,7 @@ //Incase they have the loop going, let's double check to stop it. M.stop_sound_channel(CHANNEL_PREYLOOP) // Delete the digested mob + M.ghostize() // Make sure they're out, so we can copy attack logs and such. qdel(M) // Handle a mob being absorbed diff --git a/code/modules/xenoarcheaology/effects/cellcharge.dm b/code/modules/xenoarcheaology/effects/cellcharge.dm index 2a819bcadd..b5c8e6224b 100644 --- a/code/modules/xenoarcheaology/effects/cellcharge.dm +++ b/code/modules/xenoarcheaology/effects/cellcharge.dm @@ -6,7 +6,7 @@ /datum/artifact_effect/cellcharge/DoEffectTouch(var/mob/user) if(user) - if(istype(user, /mob/living/silicon/robot)) + if(isrobot(user)) var/mob/living/silicon/robot/R = user for (var/obj/item/weapon/cell/D in R.contents) D.charge += rand() * 100 + 50 @@ -16,12 +16,24 @@ /datum/artifact_effect/cellcharge/DoEffectAura() if(holder) var/turf/T = get_turf(holder) - for (var/obj/machinery/power/apc/C in range(200, T)) + for (var/obj/machinery/power/apc/C in GLOB.apcs) + if(T.z != C.z) + continue + if(get_dist(T, C) > 200) + continue for (var/obj/item/weapon/cell/B in C.contents) B.charge += 25 - for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) + for (var/obj/machinery/power/smes/S in GLOB.smeses) + if(T.z != S.z) + continue + if(get_dist(T, S) > src.effectrange) + continue S.charge += 25 - for (var/mob/living/silicon/robot/M in range(50, T)) + for (var/mob/living/silicon/robot/M in silicon_mob_list) + if(T.z != M.z) + continue + if(get_dist(T, M) > 50) + continue for (var/obj/item/weapon/cell/D in M.contents) D.charge += 25 if(world.time - last_message > 200) @@ -32,12 +44,24 @@ /datum/artifact_effect/cellcharge/DoEffectPulse() if(holder) var/turf/T = get_turf(holder) - for (var/obj/machinery/power/apc/C in range(200, T)) + for (var/obj/machinery/power/apc/C in GLOB.apcs) + if(T.z != C.z) + continue + if(get_dist(T, C) > 200) + continue for (var/obj/item/weapon/cell/B in C.contents) B.charge += rand() * 100 - for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) + for (var/obj/machinery/power/smes/S in GLOB.smeses) + if(T.z != S.z) + continue + if(get_dist(T, S) > src.effectrange) + continue S.charge += 250 - for (var/mob/living/silicon/robot/M in range(100, T)) + for (var/mob/living/silicon/robot/M in silicon_mob_list) + if(T.z != M.z) + continue + if(get_dist(T, M) > 100) + continue for (var/obj/item/weapon/cell/D in M.contents) D.charge += rand() * 100 if(world.time - last_message > 200) diff --git a/code/modules/xenoarcheaology/effects/celldrain.dm b/code/modules/xenoarcheaology/effects/celldrain.dm index 20d707d9de..ee279032ec 100644 --- a/code/modules/xenoarcheaology/effects/celldrain.dm +++ b/code/modules/xenoarcheaology/effects/celldrain.dm @@ -18,12 +18,24 @@ /datum/artifact_effect/celldrain/DoEffectAura() if(holder) var/turf/T = get_turf(holder) - for (var/obj/machinery/power/apc/C in range(200, T)) + for (var/obj/machinery/power/apc/C in GLOB.apcs) + if(T.z != C.z) + continue + if(get_dist(T, C) > 200) + continue for (var/obj/item/weapon/cell/B in C.contents) B.charge = max(B.charge - 50,0) - for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) + for (var/obj/machinery/power/smes/S in GLOB.smeses) + if(T.z != S.z) + continue + if(get_dist(T, S) > src.effectrange) + continue S.charge = max(S.charge - 100,0) - for (var/mob/living/silicon/robot/M in range(50, T)) + for (var/mob/living/silicon/robot/M in silicon_mob_list) + if(T.z != M.z) + continue + if(get_dist(T, M) > 50) + continue for (var/obj/item/weapon/cell/D in M.contents) D.charge = max(D.charge - 50,0) if(world.time - last_message > 200) @@ -34,12 +46,24 @@ /datum/artifact_effect/celldrain/DoEffectPulse() if(holder) var/turf/T = get_turf(holder) - for (var/obj/machinery/power/apc/C in range(200, T)) + for (var/obj/machinery/power/apc/C in GLOB.apcs) + if(T.z != C.z) + continue + if(get_dist(T, C) > 200) + continue for (var/obj/item/weapon/cell/B in C.contents) B.charge = max(B.charge - rand() * 150,0) - for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) + for (var/obj/machinery/power/smes/S in GLOB.smeses) + if(T.z != S.z) + continue + if(get_dist(T, S) > src.effectrange) + continue S.charge = max(S.charge - 250,0) - for (var/mob/living/silicon/robot/M in range(100, T)) + for (var/mob/living/silicon/robot/M in silicon_mob_list) + if(T.z != M.z) + continue + if(get_dist(T, M) > 100) + continue for (var/obj/item/weapon/cell/D in M.contents) D.charge = max(D.charge - rand() * 150,0) if(world.time - last_message > 200) diff --git a/icons/mob/screen/holo.dmi b/icons/mob/screen/holo.dmi index 4fb14b0eca..e7a0d01a1b 100644 Binary files a/icons/mob/screen/holo.dmi and b/icons/mob/screen/holo.dmi differ diff --git a/icons/mob/screen/midnight.dmi b/icons/mob/screen/midnight.dmi index 1b6775124e..a2519bf1d5 100644 Binary files a/icons/mob/screen/midnight.dmi and b/icons/mob/screen/midnight.dmi differ diff --git a/icons/mob/screen/minimalist.dmi b/icons/mob/screen/minimalist.dmi index 68536c8c28..f53374f86f 100644 Binary files a/icons/mob/screen/minimalist.dmi and b/icons/mob/screen/minimalist.dmi differ diff --git a/icons/mob/screen/old-noborder.dmi b/icons/mob/screen/old-noborder.dmi index fef88b9460..7998ec1ae1 100644 Binary files a/icons/mob/screen/old-noborder.dmi and b/icons/mob/screen/old-noborder.dmi differ diff --git a/icons/mob/screen/old.dmi b/icons/mob/screen/old.dmi index 44f9147b67..54465c4831 100644 Binary files a/icons/mob/screen/old.dmi and b/icons/mob/screen/old.dmi differ diff --git a/icons/mob/screen/orange.dmi b/icons/mob/screen/orange.dmi index 3c7a2eb443..22f806952e 100644 Binary files a/icons/mob/screen/orange.dmi and b/icons/mob/screen/orange.dmi differ diff --git a/icons/mob/screen/vamp_hunger_vr.dmi b/icons/mob/screen/vamp_hunger_vr.dmi new file mode 100644 index 0000000000..dedf5e1d83 Binary files /dev/null and b/icons/mob/screen/vamp_hunger_vr.dmi differ diff --git a/icons/mob/screen/white.dmi b/icons/mob/screen/white.dmi index 8b241bfa65..12ec85588e 100644 Binary files a/icons/mob/screen/white.dmi and b/icons/mob/screen/white.dmi differ diff --git a/icons/mob/suit_1.dmi b/icons/mob/suit_1.dmi index 7c2c53f8ff..7d52018483 100644 Binary files a/icons/mob/suit_1.dmi and b/icons/mob/suit_1.dmi differ diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index a83c32053a..8f887eeb92 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/icons/obj/clothing/suits_1.dmi b/icons/obj/clothing/suits_1.dmi index f734907c89..7a75bbba5b 100644 Binary files a/icons/obj/clothing/suits_1.dmi and b/icons/obj/clothing/suits_1.dmi differ diff --git a/icons/obj/hydroponics_machines_vr.dmi b/icons/obj/hydroponics_machines_vr.dmi index af15e80c3b..005954ebe0 100644 Binary files a/icons/obj/hydroponics_machines_vr.dmi and b/icons/obj/hydroponics_machines_vr.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 51c8493a3e..944b4e85e4 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/icons/turf/outdoors.dmi b/icons/turf/outdoors.dmi index 8bcc4308f6..6409a23e1f 100644 Binary files a/icons/turf/outdoors.dmi and b/icons/turf/outdoors.dmi differ diff --git a/icons/turf/outdoors_edge.dmi b/icons/turf/outdoors_edge.dmi index fb0b04168e..5357755973 100644 Binary files a/icons/turf/outdoors_edge.dmi and b/icons/turf/outdoors_edge.dmi differ diff --git a/maps/tether/submaps/_tether_submaps.dm b/maps/tether/submaps/_tether_submaps.dm index edff735d99..e3105e7e28 100644 --- a/maps/tether/submaps/_tether_submaps.dm +++ b/maps/tether/submaps/_tether_submaps.dm @@ -163,6 +163,7 @@ /datum/map_z_level/tether_lateload/away_beach name = "Away Mission - Desert Beach" z = Z_LEVEL_BEACH + base_turf = /turf/simulated/floor/outdoors/rocks/caves /datum/map_template/tether_lateload/away_beach_cave name = "Desert Planet - Z2 Cave" @@ -182,6 +183,7 @@ /datum/map_z_level/tether_lateload/away_beach_cave name = "Away Mission - Desert Cave" z = Z_LEVEL_BEACH_CAVE + base_turf = /turf/simulated/floor/outdoors/rocks/caves /obj/effect/step_trigger/zlevel_fall/beach var/static/target_z @@ -208,6 +210,7 @@ /datum/map_z_level/tether_lateload/away_aerostat name = "Away Mission - Aerostat" z = Z_LEVEL_AEROSTAT + base_turf = /turf/unsimulated/floor/sky/virgo2_sky /datum/map_template/tether_lateload/away_aerostat_surface name = "Remmi Aerostat - Z2 Surface" @@ -224,6 +227,7 @@ /datum/map_z_level/tether_lateload/away_aerostat_surface name = "Away Mission - Aerostat Surface" z = Z_LEVEL_AEROSTAT_SURFACE + base_turf = /turf/simulated/mineral/floor/ignore_mapgen/virgo2 #include "space/_debrisfield.dm" diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index d4c6452678..42a5f8c33e 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -146,8 +146,8 @@ dir = 8 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 + dir = 4; + icon_state = "warning" }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/triage) @@ -400,8 +400,8 @@ /area/tether/surfacebase/security/upperhall) "aaW" = ( /obj/structure/railing{ - icon_state = "railing0"; - dir = 4 + dir = 4; + icon_state = "railing0" }, /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -479,8 +479,8 @@ /area/tether/surfacebase/shuttle_pad) "abh" = ( /obj/machinery/camera/network/medbay{ - icon_state = "camera"; - dir = 10 + dir = 10; + icon_state = "camera" }, /turf/simulated/open, /area/tether/surfacebase/medical/triage) @@ -590,8 +590,8 @@ dir = 10 }, /obj/effect/floor_decal/corner/pink/bordercorner2{ - icon_state = "bordercolorcorner2"; - dir = 10 + dir = 10; + icon_state = "bordercolorcorner2" }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/patient_a) @@ -697,8 +697,8 @@ dir = 8 }, /obj/machinery/camera/network/medbay{ - icon_state = "camera"; - dir = 4 + dir = 4; + icon_state = "camera" }, /obj/structure/table/glass, /obj/machinery/recharger, @@ -827,8 +827,8 @@ /area/tether/surfacebase/security/upperhall) "abH" = ( /obj/structure/railing{ - icon_state = "railing0"; - dir = 4 + dir = 4; + icon_state = "railing0" }, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -1001,8 +1001,8 @@ /area/tether/surfacebase/security/upperhall) "abZ" = ( /obj/structure/railing{ - icon_state = "railing0"; - dir = 1 + dir = 1; + icon_state = "railing0" }, /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -1202,8 +1202,8 @@ /area/tether/surfacebase/surface_three_hall) "aco" = ( /obj/structure/railing{ - icon_state = "railing0"; - dir = 1 + dir = 1; + icon_state = "railing0" }, /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -1658,8 +1658,8 @@ /area/vacant/vacant_site/gateway) "acX" = ( /obj/structure/cable/green{ - icon_state = "0-1"; - dir = 1 + dir = 1; + icon_state = "0-1" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/cap/visible/supply, @@ -1780,8 +1780,8 @@ /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, /obj/machinery/camera/network/security{ - icon_state = "camera"; - dir = 10 + dir = 10; + icon_state = "camera" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/breakroom) @@ -2239,8 +2239,8 @@ "aea" = ( /obj/structure/table/glass, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -2282,8 +2282,8 @@ pixel_y = 0 }, /obj/machinery/camera/network/medbay{ - icon_state = "camera"; - dir = 10 + dir = 10; + icon_state = "camera" }, /obj/item/bodybag/cryobag, /obj/item/bodybag/cryobag, @@ -2367,12 +2367,12 @@ /area/tether/surfacebase/reading_room) "aej" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 + dir = 5; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 + dir = 5; + icon_state = "intact-supply" }, /turf/simulated/floor/wood, /area/tether/surfacebase/reading_room) @@ -2600,8 +2600,8 @@ dir = 4 }, /obj/machinery/camera/network/security{ - icon_state = "camera"; - dir = 8 + dir = 8; + icon_state = "camera" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/common) @@ -3228,8 +3228,8 @@ dir = 10 }, /obj/effect/floor_decal/corner/pink/bordercorner2{ - icon_state = "bordercolorcorner2"; - dir = 10 + dir = 10; + icon_state = "bordercolorcorner2" }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/patient_b) @@ -3310,8 +3310,8 @@ pixel_y = 30 }, /obj/machinery/camera/network/medbay{ - icon_state = "camera"; - dir = 4 + dir = 4; + icon_state = "camera" }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/lobby) @@ -3604,8 +3604,8 @@ dir = 8 }, /obj/machinery/camera/network/security{ - icon_state = "camera"; - dir = 5 + dir = 5; + icon_state = "camera" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/common) @@ -3870,8 +3870,8 @@ dir = 4 }, /obj/machinery/camera/network/security{ - icon_state = "camera"; - dir = 10 + dir = 10; + icon_state = "camera" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lobby) @@ -3921,8 +3921,8 @@ dir = 5 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, @@ -4118,8 +4118,8 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -4131,8 +4131,8 @@ /area/tether/surfacebase/medical/lobby) "agY" = ( /obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 2 + dir = 2; + icon_state = "pipe-j2" }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/lobby) @@ -4365,8 +4365,8 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -4418,8 +4418,8 @@ }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -4868,8 +4868,8 @@ dir = 5 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 + dir = 5; + icon_state = "intact-supply" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/frontdesk) @@ -5216,8 +5216,8 @@ /area/tether/surfacebase/medical/lobby) "aiC" = ( /obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 4 + dir = 4; + icon_state = "pipe-j2" }, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, @@ -5422,8 +5422,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -5454,8 +5454,8 @@ icon_state = "pipe-c" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -5754,8 +5754,8 @@ icon_state = "0-2" }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 + dir = 4; + icon_state = "warning" }, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/panic_shelter) @@ -5835,8 +5835,8 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 + dir = 4; + icon_state = "map-scrubbers" }, /obj/structure/cable/green{ d1 = 1; @@ -6225,8 +6225,8 @@ dir = 4 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/panic_shelter) @@ -6274,8 +6274,8 @@ dir = 4 }, /obj/effect/floor_decal/corner/lime/bordercorner{ - icon_state = "bordercolorcorner"; - dir = 4 + dir = 4; + icon_state = "bordercolorcorner" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) @@ -6408,8 +6408,8 @@ dir = 6 }, /obj/machinery/camera/network/security{ - icon_state = "camera"; - dir = 8 + dir = 8; + icon_state = "camera" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/frontdesk) @@ -7867,8 +7867,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/item/device/radio/intercom{ pixel_y = -24 @@ -8069,8 +8069,8 @@ dir = 8 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 4 + dir = 4; + icon_state = "warning" }, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/panic_shelter) @@ -8432,8 +8432,8 @@ pixel_x = 24 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/panic_shelter) @@ -8518,8 +8518,8 @@ /area/tether/surfacebase/north_stairs_three) "aoi" = ( /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -9364,8 +9364,8 @@ /area/tether/surfacebase/surface_three_hall) "apF" = ( /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /turf/simulated/floor/tiled/freezer, /area/crew_quarters/freezer) @@ -9914,8 +9914,8 @@ }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/camera/network/research{ - icon_state = "camera"; - dir = 5 + dir = 5; + icon_state = "camera" }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_north_airlock) @@ -10172,8 +10172,8 @@ /area/tether/surfacebase/surface_three_hall) "aqS" = ( /obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 + dir = 8; + icon_state = "warningcorner" }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) @@ -10895,8 +10895,8 @@ dir = 9 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 4 + dir = 4; + icon_state = "tube1" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) @@ -11102,8 +11102,8 @@ dir = 10 }, /obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 1 + dir = 1; + icon_state = "warningcorner" }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 @@ -11556,8 +11556,8 @@ dir = 6 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) @@ -11903,8 +11903,8 @@ dir = 4 }, /obj/machinery/camera/network/research{ - icon_state = "camera"; - dir = 8 + dir = 8; + icon_state = "camera" }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) @@ -12038,8 +12038,8 @@ dir = 10 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 4 + dir = 4; + icon_state = "tube1" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) @@ -12181,10 +12181,10 @@ }, /obj/structure/cable, /obj/machinery/power/smes/buildable{ + RCon_tag = "Substation - Surface Civilian"; charge = 0; output_attempt = 0; - outputting = 0; - RCon_tag = "Substation - Surface Civilian" + outputting = 0 }, /obj/machinery/camera/network/engineering{ dir = 4 @@ -12219,8 +12219,8 @@ pixel_y = 26 }, /obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 + dir = 8; + icon_state = "warningcorner" }, /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -12427,8 +12427,8 @@ /area/tether/surfacebase/surface_three_hall) "auN" = ( /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -12787,8 +12787,8 @@ /area/rnd/research) "avx" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) @@ -13038,8 +13038,8 @@ dir = 4 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) @@ -13170,8 +13170,8 @@ /area/crew_quarters/captain) "awj" = ( /obj/structure/sink{ - icon_state = "sink"; dir = 8; + icon_state = "sink"; pixel_x = -12; pixel_y = 2 }, @@ -13813,8 +13813,8 @@ /area/library) "axh" = ( /obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 2 + dir = 2; + icon_state = "pipe-j2" }, /turf/simulated/floor/plating, /area/rnd/research_storage) @@ -13848,8 +13848,8 @@ dir = 10 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) @@ -14027,8 +14027,8 @@ dir = 10 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/rnd/research) @@ -14215,8 +14215,8 @@ dir = 5 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 4 + dir = 4; + icon_state = "tube1" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) @@ -14287,8 +14287,8 @@ dir = 8 }, /obj/machinery/camera/network/research{ - icon_state = "camera"; - dir = 5 + dir = 5; + icon_state = "camera" }, /turf/simulated/floor/tiled, /area/rnd/outpost/xenobiology/outpost_hallway) @@ -14720,8 +14720,8 @@ /area/rnd/staircase/thirdfloor) "ayC" = ( /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -16179,8 +16179,8 @@ /area/hydroponics) "aAL" = ( /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -16960,8 +16960,8 @@ "aBM" = ( /obj/machinery/hologram/holopad, /obj/machinery/camera/network/research{ - icon_state = "camera"; - dir = 8 + dir = 8; + icon_state = "camera" }, /turf/simulated/floor/tiled/white, /area/rnd/outpost/xenobiology/outpost_first_aid) @@ -17187,8 +17187,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/effect/floor_decal/borderfloorblack, /obj/structure/cable/green{ @@ -18005,8 +18005,8 @@ dir = 4 }, /obj/effect/floor_decal/corner/lime/bordercorner{ - icon_state = "bordercolorcorner"; - dir = 4 + dir = 4; + icon_state = "bordercolorcorner" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) @@ -18428,8 +18428,8 @@ /area/bridge) "aEf" = ( /obj/machinery/camera/network/research{ - icon_state = "camera"; - dir = 5 + dir = 5; + icon_state = "camera" }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_main) @@ -18479,8 +18479,8 @@ icon_state = "pipe-c" }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /obj/structure/cable/green{ d1 = 4; @@ -18623,8 +18623,8 @@ dir = 4 }, /obj/machinery/camera/network/research{ - icon_state = "camera"; - dir = 8 + dir = 8; + icon_state = "camera" }, /turf/simulated/floor/tiled, /area/rnd/outpost/xenobiology/outpost_hallway) @@ -18904,8 +18904,8 @@ pixel_x = -30 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /turf/simulated/floor/wood, /area/crew_quarters/bar) @@ -19172,8 +19172,8 @@ /obj/item/target, /obj/structure/window/reinforced, /obj/machinery/camera/network/research{ - icon_state = "camera"; - dir = 5 + dir = 5; + icon_state = "camera" }, /turf/simulated/floor/tiled/dark, /area/rnd/research/testingrange) @@ -19362,8 +19362,8 @@ /area/crew_quarters/bar) "aFJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/light, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -19562,8 +19562,8 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /turf/simulated/floor/plating, /area/maintenance/substation/bar{ @@ -19700,8 +19700,8 @@ /area/hallway/lower/third_south) "aGg" = ( /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /obj/structure/disposalpipe/segment{ dir = 4; @@ -19766,8 +19766,8 @@ /obj/item/clothing/glasses/goggles, /obj/structure/window/reinforced, /obj/machinery/camera/network/research{ - icon_state = "camera"; - dir = 8 + dir = 8; + icon_state = "camera" }, /turf/simulated/floor/tiled/dark, /area/rnd/research/testingrange) @@ -19794,8 +19794,8 @@ /area/tether/surfacebase/medical/patient_b) "aGn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/light, /obj/effect/floor_decal/borderfloorblack, @@ -19862,8 +19862,8 @@ /area/rnd/research/researchdivision) "aGr" = ( /obj/machinery/door/firedoor/glass/hidden{ - icon_state = "door_open"; - dir = 2 + dir = 2; + icon_state = "door_open" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -19898,8 +19898,8 @@ /area/rnd/outpost/xenobiology/outpost_south_airlock) "aGt" = ( /obj/machinery/door/firedoor/glass/hidden{ - icon_state = "door_open"; - dir = 2 + dir = 2; + icon_state = "door_open" }, /obj/effect/floor_decal/borderfloorblack{ dir = 8 @@ -20120,8 +20120,8 @@ /area/rnd/outpost/xenobiology/outpost_hallway) "aGM" = ( /obj/machinery/door/firedoor/glass/hidden{ - icon_state = "door_open"; - dir = 2 + dir = 2; + icon_state = "door_open" }, /obj/effect/floor_decal/borderfloorblack{ dir = 4 @@ -20432,8 +20432,8 @@ dir = 6 }, /obj/machinery/camera/network/research{ - icon_state = "camera"; - dir = 5 + dir = 5; + icon_state = "camera" }, /turf/simulated/floor/tiled, /area/rnd/research/researchdivision) @@ -20885,8 +20885,8 @@ dir = 1 }, /obj/machinery/door/window/westright{ - icon_state = "right"; - dir = 2 + dir = 2; + icon_state = "right" }, /obj/machinery/door/firedoor/glass, /obj/structure/disposalpipe/segment, @@ -21302,8 +21302,8 @@ icon_state = "4-8" }, /obj/machinery/camera/network/security{ - icon_state = "camera"; - dir = 10 + dir = 10; + icon_state = "camera" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/common) @@ -21445,8 +21445,8 @@ /obj/structure/closet/secure_closet/security, /obj/item/device/holowarrant, /obj/machinery/camera/network/security{ - icon_state = "camera"; - dir = 5 + dir = 5; + icon_state = "camera" }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/armory) @@ -21482,8 +21482,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) @@ -21561,8 +21561,8 @@ dir = 4 }, /obj/machinery/camera/network/medbay{ - icon_state = "camera"; - dir = 9 + dir = 9; + icon_state = "camera" }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/chemistry) @@ -21593,8 +21593,8 @@ /area/crew_quarters/bar) "aIU" = ( /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -21864,8 +21864,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) @@ -21964,8 +21964,8 @@ /area/rnd/outpost/xenobiology/outpost_main) "aJA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -22068,8 +22068,8 @@ /area/rnd/research/testingrange) "aJL" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 + dir = 4; + icon_state = "map-scrubbers" }, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled, @@ -22211,8 +22211,8 @@ icon_state = "tube1" }, /obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 + dir = 8; + icon_state = "warningcorner" }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/chargebay) @@ -22228,8 +22228,8 @@ /area/crew_quarters/bar) "aJW" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /obj/machinery/button/remote/blast_door{ id = "mechbay"; @@ -22241,8 +22241,8 @@ /area/assembly/chargebay) "aJX" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /turf/simulated/floor/bluegrid, /area/assembly/chargebay) @@ -22253,8 +22253,8 @@ pixel_x = 24 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /turf/simulated/floor/bluegrid, /area/assembly/chargebay) @@ -22284,12 +22284,12 @@ /area/crew_quarters/freezer) "aKd" = ( /obj/effect/floor_decal/borderfloorblack/corner{ - icon_state = "borderfloorcorner_black"; - dir = 8 + dir = 8; + icon_state = "borderfloorcorner_black" }, /obj/effect/floor_decal/industrial/danger/corner{ - icon_state = "dangercorner"; - dir = 1 + dir = 1; + icon_state = "dangercorner" }, /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 6 @@ -22316,8 +22316,8 @@ /area/tether/surfacebase/shuttle_pad) "aKi" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 + dir = 4; + icon_state = "map-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/green{ @@ -22447,8 +22447,8 @@ dir = 4 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /turf/simulated/floor/wood, /area/crew_quarters/recreation_area) @@ -22637,8 +22637,8 @@ dir = 4 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/chargebay) @@ -22680,8 +22680,8 @@ dir = 8 }, /obj/effect/floor_decal/industrial/danger{ - icon_state = "danger"; - dir = 8 + dir = 8; + icon_state = "danger" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) @@ -22717,16 +22717,16 @@ /area/tether/surfacebase/shuttle_pad) "aKZ" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 + dir = 5; + icon_state = "intact-supply" }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) @@ -22807,8 +22807,8 @@ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 + dir = 5; + icon_state = "intact-supply" }, /turf/simulated/floor/tiled/white, /area/rnd/outpost/xenobiology/outpost_first_aid) @@ -22914,8 +22914,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 + dir = 8; + icon_state = "warningcorner" }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) @@ -22968,8 +22968,8 @@ icon_state = "4-8" }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/chargebay) @@ -23174,8 +23174,8 @@ dir = 8 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) @@ -23226,8 +23226,8 @@ dir = 4 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /obj/machinery/button/remote/blast_door{ id = "mechbay-inner"; @@ -23346,8 +23346,8 @@ /area/rnd/outpost/xenobiology/outpost_hallway) "aMj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_south_airlock) @@ -23409,8 +23409,8 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) @@ -23574,8 +23574,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/item/device/radio/intercom{ dir = 1; @@ -23630,8 +23630,8 @@ dir = 1 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) @@ -23661,8 +23661,8 @@ /area/tether/surfacebase/shuttle_pad) "aMU" = ( /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - icon_state = "steel_decals_central5"; - dir = 8 + dir = 8; + icon_state = "steel_decals_central5" }, /obj/machinery/light{ dir = 4; @@ -23691,8 +23691,8 @@ /area/tether/surfacebase/shuttle_pad) "aMW" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 + dir = 4; + icon_state = "map-scrubbers" }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -23702,8 +23702,8 @@ }, /obj/effect/floor_decal/steeldecal/steel_decals5, /obj/structure/cable/green{ - icon_state = "1-2"; - dir = 1 + dir = 1; + icon_state = "1-2" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) @@ -23732,8 +23732,8 @@ /area/tether/surfacebase/surface_three_hall) "aMY" = ( /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - icon_state = "steel_decals_central5"; - dir = 4 + dir = 4; + icon_state = "steel_decals_central5" }, /obj/machinery/light{ dir = 8 @@ -23790,8 +23790,8 @@ dir = 8 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /turf/simulated/floor/tiled/steel_grid, /area/assembly/robotics) @@ -24022,15 +24022,15 @@ dir = 8 }, /obj/structure/railing{ - icon_state = "railing0"; - dir = 1 + dir = 1; + icon_state = "railing0" }, /turf/simulated/open/virgo3b, /area/tether/surfacebase/outside/outside3) "aNC" = ( /obj/structure/railing{ - icon_state = "railing0"; - dir = 1 + dir = 1; + icon_state = "railing0" }, /turf/simulated/open/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -24039,8 +24039,8 @@ dir = 4 }, /obj/structure/railing{ - icon_state = "railing0"; - dir = 1 + dir = 1; + icon_state = "railing0" }, /turf/simulated/open/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -24078,8 +24078,8 @@ /area/tether/surfacebase/shuttle_pad) "aNI" = ( /obj/machinery/computer/atmos_alert{ - icon_state = "computer"; - dir = 8 + dir = 8; + icon_state = "computer" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) @@ -24119,8 +24119,8 @@ /area/tether/surfacebase/shuttle_pad) "aNO" = ( /obj/machinery/computer/shuttle_control/tether_backup{ - icon_state = "computer"; - dir = 8 + dir = 8; + icon_state = "computer" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) @@ -24141,8 +24141,8 @@ "aNR" = ( /obj/structure/catwalk, /obj/structure/railing{ - icon_state = "railing0"; - dir = 1 + dir = 1; + icon_state = "railing0" }, /turf/simulated/open, /area/rnd/outpost/xenobiology/outpost_stairs) @@ -24262,8 +24262,8 @@ dir = 4 }, /obj/effect/floor_decal/corner/grey/border{ - icon_state = "bordercolor"; - dir = 4 + dir = 4; + icon_state = "bordercolor" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) @@ -24382,8 +24382,8 @@ dir = 1 }, /obj/structure/railing{ - icon_state = "railing0"; - dir = 4 + dir = 4; + icon_state = "railing0" }, /turf/simulated/open/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -24426,8 +24426,8 @@ dir = 4 }, /obj/effect/floor_decal/corner/grey/border{ - icon_state = "bordercolor"; - dir = 4 + dir = 4; + icon_state = "bordercolor" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -24519,15 +24519,15 @@ pixel_y = 0 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 4 + dir = 4; + icon_state = "tube1" }, /turf/simulated/floor/tiled/white, /area/rnd/outpost/xenobiology/outpost_decon) "aOH" = ( /obj/effect/floor_decal/borderfloorblack/corner{ - icon_state = "borderfloorcorner_black"; - dir = 4 + dir = 4; + icon_state = "borderfloorcorner_black" }, /obj/effect/floor_decal/industrial/danger/corner{ dir = 4 @@ -24569,8 +24569,8 @@ /area/tether/surfacebase/shuttle_pad) "aOL" = ( /obj/effect/floor_decal/borderfloorblack/corner{ - icon_state = "borderfloorcorner_black"; - dir = 1 + dir = 1; + icon_state = "borderfloorcorner_black" }, /obj/effect/floor_decal/industrial/danger/corner{ dir = 8 @@ -24719,8 +24719,8 @@ /area/rnd/outpost/xenobiology/outpost_breakroom) "aPa" = ( /obj/machinery/camera/network/command{ - icon_state = "camera"; - dir = 4 + dir = 4; + icon_state = "camera" }, /turf/simulated/floor/carpet, /area/crew_quarters/heads/hop) @@ -24763,8 +24763,8 @@ icon_state = "1-2" }, /obj/machinery/camera/network/command{ - icon_state = "camera"; - dir = 9 + dir = 9; + icon_state = "camera" }, /turf/simulated/floor/tiled/dark, /area/bridge_hallway) @@ -24803,8 +24803,8 @@ pixel_y = 16 }, /obj/machinery/camera/network/command{ - icon_state = "camera"; - dir = 4 + dir = 4; + icon_state = "camera" }, /turf/simulated/floor/wood, /area/crew_quarters/captain) @@ -24988,8 +24988,8 @@ icon_state = "1-2" }, /obj/machinery/camera/network/command{ - icon_state = "camera"; - dir = 10 + dir = 10; + icon_state = "camera" }, /turf/simulated/floor/tiled/dark, /area/bridge) @@ -25115,8 +25115,8 @@ /area/rnd/outpost/xenobiology/outpost_breakroom) "aPV" = ( /obj/machinery/light{ - icon_state = "tube1"; - dir = 4 + dir = 4; + icon_state = "tube1" }, /turf/simulated/floor/tiled/white, /area/rnd/outpost/xenobiology/outpost_first_aid) @@ -25189,8 +25189,8 @@ /area/rnd/outpost/xenobiology/outpost_main) "aQf" = ( /obj/machinery/camera/network/outside{ - icon_state = "camera"; - dir = 6 + dir = 6; + icon_state = "camera" }, /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -25247,8 +25247,8 @@ /area/rnd/outpost/xenobiology/outpost_main) "aQo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25264,8 +25264,8 @@ /area/rnd/outpost/xenobiology/outpost_office) "aQp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25283,8 +25283,8 @@ }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25302,8 +25302,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -25322,8 +25322,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -25338,8 +25338,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -25352,8 +25352,8 @@ "aQu" = ( /obj/structure/bed/chair/wood, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9; @@ -25400,8 +25400,8 @@ /area/rnd/outpost/xenobiology/outpost_office) "aQA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25440,8 +25440,8 @@ "aQD" = ( /obj/structure/catwalk, /obj/machinery/camera/network/outside{ - icon_state = "camera"; - dir = 9 + dir = 9; + icon_state = "camera" }, /turf/simulated/open/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -25481,8 +25481,8 @@ "aQI" = ( /obj/structure/bed/chair/office/dark, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/effect/landmark/start{ name = "Xenobiologist" @@ -25491,8 +25491,8 @@ /area/rnd/outpost/xenobiology/outpost_office) "aQJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /turf/simulated/floor/wood, /area/rnd/outpost/xenobiology/outpost_office) @@ -25582,8 +25582,8 @@ /area/rnd/outpost/xenobiology/outpost_office) "aQU" = ( /obj/machinery/camera/network/outside{ - icon_state = "camera"; - dir = 9 + dir = 9; + icon_state = "camera" }, /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -25600,8 +25600,8 @@ /area/rnd/outpost/xenobiology/outpost_breakroom) "aQW" = ( /obj/machinery/camera/network/outside{ - icon_state = "camera"; - dir = 1 + dir = 1; + icon_state = "camera" }, /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -25611,8 +25611,8 @@ dir = 1 }, /obj/machinery/door/window/westright{ - icon_state = "right"; - dir = 2 + dir = 2; + icon_state = "right" }, /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ @@ -25694,8 +25694,8 @@ "aRg" = ( /obj/machinery/optable, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25705,8 +25705,8 @@ "aRh" = ( /obj/structure/catwalk, /obj/machinery/camera/network/outside{ - icon_state = "camera"; - dir = 5 + dir = 5; + icon_state = "camera" }, /turf/simulated/open/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -25715,8 +25715,8 @@ /area/rnd/outpost/xenobiology/outpost_autopsy) "aRj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25746,8 +25746,8 @@ /area/rnd/outpost/xenobiology/outpost_autopsy) "aRm" = ( /obj/machinery/camera/network/outside{ - icon_state = "camera"; - dir = 5 + dir = 5; + icon_state = "camera" }, /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -25828,8 +25828,8 @@ pixel_y = 0 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 4 + dir = 4; + icon_state = "tube1" }, /turf/simulated/floor/tiled/techmaint, /area/rnd/outpost/xenobiology/outpost_storage) @@ -25838,8 +25838,8 @@ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 + dir = 5; + icon_state = "intact-supply" }, /turf/simulated/floor/tiled/white, /area/rnd/outpost/xenobiology/outpost_autopsy) @@ -25862,8 +25862,8 @@ /area/rnd/outpost/xenobiology/outpost_storage) "aRx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25885,8 +25885,8 @@ }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25901,8 +25901,8 @@ /area/rnd/outpost/xenobiology/outpost_autopsy) "aRz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25931,8 +25931,8 @@ name = "Showers and Decontamination" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -25944,8 +25944,8 @@ /area/rnd/outpost/xenobiology/outpost_decon) "aRC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9; @@ -26018,8 +26018,8 @@ /area/rnd/outpost/xenobiology/outpost_autopsy) "aRJ" = ( /obj/machinery/camera/network/outside{ - icon_state = "camera"; - dir = 1 + dir = 1; + icon_state = "camera" }, /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/outside/outside3) @@ -26034,8 +26034,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/dark, @@ -26090,15 +26090,15 @@ /area/rnd/outpost/xenobiology/outpost_autopsy) "aRR" = ( /obj/machinery/door/firedoor/glass/hidden{ - icon_state = "door_open"; - dir = 2 + dir = 2; + icon_state = "door_open" }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_main) "aRS" = ( /obj/machinery/door/firedoor/glass/hidden{ - icon_state = "door_open"; - dir = 2 + dir = 2; + icon_state = "door_open" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -26173,8 +26173,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/machinery/firealarm{ dir = 2; @@ -26199,8 +26199,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /turf/simulated/floor/tiled, /area/rnd/outpost/xenobiology/outpost_main) @@ -26292,8 +26292,8 @@ /area/rnd/outpost/xenobiology/outpost_main) "aSk" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 1 + dir = 1; + icon_state = "warning" }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 5; @@ -26303,8 +26303,8 @@ /area/tether/surfacebase/medical/triage) "aSl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /turf/simulated/floor/tiled, /area/rnd/outpost/xenobiology/outpost_main) @@ -26317,8 +26317,8 @@ pixel_y = 0 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/effect/floor_decal/techfloor/corner{ dir = 1 @@ -26329,8 +26329,8 @@ "aSn" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/cyan, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/dark, @@ -26782,8 +26782,8 @@ /area/tether/surfacebase/medical/chemistry) "aSW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /turf/simulated/floor/tiled/techmaint, /area/rnd/outpost/xenobiology/outpost_storage) @@ -26792,8 +26792,8 @@ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 + dir = 5; + icon_state = "intact-supply" }, /obj/structure/cable/green{ icon_state = "1-2" @@ -27117,8 +27117,8 @@ /area/bridge) "aTv" = ( /obj/machinery/computer/station_alert/all{ - icon_state = "computer"; - dir = 4 + dir = 4; + icon_state = "computer" }, /turf/simulated/floor/tiled/dark, /area/bridge) @@ -27151,8 +27151,8 @@ id = "hop_office" }, /obj/structure/cable/green{ - icon_state = "0-1"; - dir = 1 + dir = 1; + icon_state = "0-1" }, /turf/simulated/floor/plating, /area/crew_quarters/heads/hop) @@ -27169,8 +27169,8 @@ }, /obj/structure/cable/green, /obj/structure/cable/green{ - icon_state = "0-1"; - dir = 1 + dir = 1; + icon_state = "0-1" }, /turf/simulated/floor/plating, /area/crew_quarters/heads/hop) @@ -27244,8 +27244,8 @@ /area/tether/surfacebase/security/lobby) "aTF" = ( /obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 4 + dir = 4; + icon_state = "pipe-j2" }, /obj/effect/floor_decal/borderfloor{ dir = 1; @@ -27328,8 +27328,8 @@ "aTK" = ( /obj/structure/table/glass, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -27395,12 +27395,12 @@ /area/tether/surfacebase/reading_room) "aTQ" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; - dir = 8 + dir = 8; + icon_state = "warning" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 + dir = 5; + icon_state = "intact-scrubbers" }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) @@ -27596,8 +27596,8 @@ icon_state = "intact" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 4 + dir = 4; + icon_state = "intact-scrubbers" }, /obj/effect/floor_decal/techfloor, /obj/effect/floor_decal/techfloor/hole, @@ -27645,20 +27645,20 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - icon_state = "intact-scrubbers"; - dir = 5 + dir = 5; + icon_state = "intact-scrubbers" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - icon_state = "intact-supply"; - dir = 5 + dir = 5; + icon_state = "intact-supply" }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "aUo" = ( /obj/machinery/door/airlock/multi_tile/glass, /obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; - dir = 8 + dir = 8; + icon_state = "warningcorner" }, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -27767,8 +27767,8 @@ }, /obj/effect/floor_decal/steeldecal/steel_decals4, /obj/structure/disposalpipe/junction{ - icon_state = "pipe-j1"; - dir = 4 + dir = 4; + icon_state = "pipe-j1" }, /obj/structure/cable/green{ icon_state = "4-8" @@ -27892,8 +27892,8 @@ dir = 4 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/chemistry) @@ -28023,8 +28023,8 @@ dir = 4 }, /obj/machinery/computer/crew{ - icon_state = "computer"; - dir = 8 + dir = 8; + icon_state = "computer" }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/lobby) @@ -28280,8 +28280,8 @@ dir = 9 }, /obj/effect/floor_decal/corner/lime/bordercorner2{ - icon_state = "bordercolorcorner2"; - dir = 9 + dir = 9; + icon_state = "bordercolorcorner2" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) @@ -29272,8 +29272,8 @@ dir = 1 }, /obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 2 + dir = 2; + icon_state = "pipe-j2" }, /obj/machinery/hologram/holopad, /obj/effect/landmark{ @@ -29829,8 +29829,8 @@ /area/rnd/outpost/xenobiology/outpost_office) "aXA" = ( /obj/machinery/light{ - icon_state = "tube1"; - dir = 4 + dir = 4; + icon_state = "tube1" }, /obj/machinery/light_switch{ dir = 1; @@ -29998,8 +29998,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 + dir = 4; + icon_state = "map-scrubbers" }, /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, @@ -30292,12 +30292,12 @@ }, /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/zpipe/down/supply{ - icon_state = "down-supply"; - dir = 8 + dir = 8; + icon_state = "down-supply" }, /obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ - icon_state = "down-scrubbers"; - dir = 8 + dir = 8; + icon_state = "down-scrubbers" }, /turf/simulated/open, /area/vacant/vacant_shop) @@ -30444,8 +30444,8 @@ dir = 4 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /turf/simulated/floor/tiled/dark, /area/bridge) @@ -30473,8 +30473,8 @@ /area/bridge) "aYD" = ( /obj/machinery/computer/power_monitor{ - icon_state = "computer"; dir = 8; + icon_state = "computer"; throwpass = 1 }, /obj/machinery/light{ @@ -30493,15 +30493,15 @@ /area/bridge) "aYF" = ( /obj/machinery/computer/med_data{ - icon_state = "computer"; - dir = 1 + dir = 1; + icon_state = "computer" }, /turf/simulated/floor/tiled/dark, /area/bridge) "aYG" = ( /obj/effect/floor_decal/corner/paleblue/full{ - icon_state = "corner_white_full"; - dir = 4 + dir = 4; + icon_state = "corner_white_full" }, /obj/structure/flora/pottedplant{ icon_state = "plant-21" @@ -30526,8 +30526,8 @@ /area/bridge) "aYJ" = ( /obj/effect/floor_decal/corner/blue/full{ - icon_state = "corner_white_full"; - dir = 4 + dir = 4; + icon_state = "corner_white_full" }, /obj/structure/flora/pottedplant{ icon_state = "plant-21" @@ -30543,8 +30543,8 @@ /area/bridge) "aYL" = ( /obj/machinery/computer/rcon{ - icon_state = "computer"; - dir = 1 + dir = 1; + icon_state = "computer" }, /turf/simulated/floor/tiled/dark, /area/bridge) @@ -30717,12 +30717,12 @@ /obj/structure/lattice, /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/zpipe/down/supply{ - icon_state = "down-supply"; - dir = 4 + dir = 4; + icon_state = "down-supply" }, /obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ - icon_state = "down-scrubbers"; - dir = 4 + dir = 4; + icon_state = "down-scrubbers" }, /obj/machinery/light/small{ dir = 8; @@ -30870,8 +30870,8 @@ dir = 4 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) @@ -30940,8 +30940,8 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 + dir = 4; + icon_state = "map-scrubbers" }, /obj/structure/cable/green{ d1 = 1; @@ -31028,8 +31028,8 @@ "aZL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 + dir = 4; + icon_state = "map-scrubbers" }, /turf/simulated/floor/wood, /area/crew_quarters/captain) @@ -31091,8 +31091,8 @@ "aZU" = ( /obj/structure/table/woodentable, /obj/machinery/computer/skills{ - icon_state = "laptop"; - dir = 8 + dir = 8; + icon_state = "laptop" }, /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -31266,8 +31266,8 @@ dir = 10 }, /obj/machinery/light/small{ - icon_state = "bulb1"; - dir = 1 + dir = 1; + icon_state = "bulb1" }, /turf/simulated/floor/wood, /area/crew_quarters/captain) @@ -31481,8 +31481,8 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - icon_state = "map-scrubbers"; - dir = 4 + dir = 4; + icon_state = "map-scrubbers" }, /turf/simulated/floor/wood, /area/crew_quarters/captain) @@ -31619,8 +31619,8 @@ dir = 4 }, /obj/machinery/light{ - icon_state = "tube1"; - dir = 8 + dir = 8; + icon_state = "tube1" }, /turf/simulated/floor/tiled, /area/crew_quarters/heads/hop) @@ -31744,8 +31744,8 @@ dir = 1 }, /obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 1 + dir = 1; + icon_state = "bordercolor" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) @@ -31789,8 +31789,8 @@ dir = 4 }, /obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 1 + dir = 1; + icon_state = "bordercolor" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) @@ -31871,15 +31871,15 @@ /area/shuttle/tourbus/engines) "cZe" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 4 + dir = 4; + icon_state = "bay_chair_preview" }, /obj/effect/floor_decal/borderfloor{ dir = 9 }, /obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 9 + dir = 9; + icon_state = "bordercolor" }, /turf/simulated/floor/tiled/steel_dirty, /area/shuttle/tourbus/general) @@ -31889,19 +31889,19 @@ /area/shuttle/tourbus/cockpit) "dhS" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 8 + dir = 8; + icon_state = "bay_chair_preview" }, /obj/effect/floor_decal/rust/part_rusted1{ - icon_state = "part_rusted1"; - dir = 8 + dir = 8; + icon_state = "part_rusted1" }, /turf/simulated/floor/tiled/steel_dirty, /area/shuttle/tourbus/general) "dGZ" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 4 + dir = 4; + icon_state = "bay_chair_preview" }, /obj/structure/cable{ icon_state = "2-4" @@ -31919,16 +31919,16 @@ /area/shuttle/tourbus/general) "esm" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 8 + dir = 8; + icon_state = "bay_chair_preview" }, /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 1 + dir = 1; + icon_state = "bordercolor" }, /obj/effect/floor_decal/borderfloor/corner2{ dir = 4; @@ -31942,8 +31942,8 @@ /area/shuttle/tourbus/general) "eMW" = ( /obj/machinery/computer/ship/engines{ - icon_state = "computer"; - dir = 8 + dir = 8; + icon_state = "computer" }, /turf/simulated/floor/tiled/white, /area/shuttle/tourbus/cockpit) @@ -31954,8 +31954,8 @@ icon_state = "1-2" }, /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 8 + dir = 8; + icon_state = "bay_chair_preview" }, /obj/structure/cable{ icon_state = "4-8" @@ -31964,15 +31964,15 @@ /area/shuttle/tourbus/general) "eQs" = ( /obj/effect/floor_decal/rust/part_rusted1{ - icon_state = "part_rusted1"; - dir = 4 + dir = 4; + icon_state = "part_rusted1" }, /turf/simulated/floor/tiled/steel_dirty, /area/shuttle/tourbus/general) "fNt" = ( /obj/structure/cable/green{ - icon_state = "0-1"; - dir = 1 + dir = 1; + icon_state = "0-1" }, /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -31983,8 +31983,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/green{ - icon_state = "1-2"; - dir = 1 + dir = 1; + icon_state = "1-2" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) @@ -32002,8 +32002,8 @@ dir = 6 }, /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 8 + dir = 8; + icon_state = "bay_chair_preview" }, /obj/structure/cable{ d1 = 2; @@ -32014,8 +32014,8 @@ /area/shuttle/tourbus/general) "guv" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 4 + dir = 4; + icon_state = "bay_chair_preview" }, /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -32073,12 +32073,12 @@ /area/tether/surfacebase/shuttle_pad) "isR" = ( /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - icon_state = "steel_decals_central5"; - dir = 4 + dir = 4; + icon_state = "steel_decals_central5" }, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - icon_state = "steel_decals_central5"; - dir = 8 + dir = 8; + icon_state = "steel_decals_central5" }, /obj/machinery/door/airlock/glass_external/public{ frequency = 1380; @@ -32124,12 +32124,12 @@ /area/tether/surfacebase/shuttle_pad) "mfi" = ( /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - icon_state = "steel_decals_central5"; - dir = 8 + dir = 8; + icon_state = "steel_decals_central5" }, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - icon_state = "steel_decals_central5"; - dir = 4 + dir = 4; + icon_state = "steel_decals_central5" }, /obj/machinery/door/airlock/glass_external{ icon_state = "door_locked"; @@ -32169,8 +32169,8 @@ /area/shuttle/tourbus/general) "mIX" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 4 + dir = 4; + icon_state = "bay_chair_preview" }, /obj/structure/cable{ d1 = 1; @@ -32182,8 +32182,8 @@ /area/shuttle/tourbus/general) "mJR" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 1 + dir = 1; + icon_state = "bay_chair_preview" }, /turf/simulated/floor/tiled/white, /area/shuttle/tourbus/cockpit) @@ -32201,8 +32201,8 @@ dir = 8 }, /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 4 + dir = 4; + icon_state = "bay_chair_preview" }, /turf/simulated/floor/tiled/steel_dirty, /area/shuttle/tourbus/general) @@ -32231,8 +32231,8 @@ pixel_x = 0 }, /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 4 + dir = 4; + icon_state = "bay_chair_preview" }, /obj/structure/cable{ icon_state = "1-4" @@ -32285,8 +32285,8 @@ dir = 8 }, /obj/effect/floor_decal/industrial/danger{ - icon_state = "danger"; - dir = 8 + dir = 8; + icon_state = "danger" }, /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 5 @@ -32304,8 +32304,8 @@ /obj/machinery/power/terminal, /obj/structure/cable/green, /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 8 + dir = 8; + icon_state = "bay_chair_preview" }, /turf/simulated/floor/tiled/steel_dirty, /area/shuttle/tourbus/general) @@ -32324,8 +32324,8 @@ /area/shuttle/tourbus/engines) "rjV" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 8 + dir = 8; + icon_state = "bay_chair_preview" }, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -32369,12 +32369,12 @@ dir = 4 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + d2 = 4; + icon_state = "0-4" }, /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 4 + dir = 4; + icon_state = "bay_chair_preview" }, /obj/machinery/power/apc{ cell_type = /obj/item/weapon/cell/apc; @@ -32405,30 +32405,30 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/green{ - icon_state = "1-2"; - dir = 1 + dir = 1; + icon_state = "1-2" }, /turf/simulated/floor/tiled/monotile, /area/tether/surfacebase/shuttle_pad) "tdA" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 4 + dir = 4; + icon_state = "bay_chair_preview" }, /obj/effect/floor_decal/borderfloor{ dir = 1; pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ - icon_state = "bordercolor"; - dir = 1 + dir = 1; + icon_state = "bordercolor" }, /obj/effect/floor_decal/borderfloor/corner2{ dir = 1 }, /obj/effect/floor_decal/corner/blue/bordercorner2{ - icon_state = "bordercolorcorner2"; - dir = 1 + dir = 1; + icon_state = "bordercolorcorner2" }, /turf/simulated/floor/tiled/steel_dirty, /area/shuttle/tourbus/general) @@ -32483,8 +32483,8 @@ dir = 4 }, /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 8 + dir = 8; + icon_state = "bay_chair_preview" }, /obj/machinery/power/apc{ dir = 2; @@ -32496,8 +32496,8 @@ /area/shuttle/tourbus/general) "uxT" = ( /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - icon_state = "steel_decals_central5"; - dir = 8 + dir = 8; + icon_state = "steel_decals_central5" }, /obj/machinery/light{ dir = 4; @@ -32517,8 +32517,8 @@ /area/shuttle/tourbus/cockpit) "uDa" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 8 + dir = 8; + icon_state = "bay_chair_preview" }, /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -32565,8 +32565,8 @@ dir = 8 }, /obj/effect/floor_decal/industrial/danger{ - icon_state = "danger"; - dir = 8 + dir = 8; + icon_state = "danger" }, /obj/structure/cable/green{ d1 = 4; @@ -32578,10 +32578,17 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) +"wiX" = ( +/obj/machinery/camera/network/civilian{ + dir = 9 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/wood, +/area/library) "wqP" = ( /obj/structure/bed/chair/bay/chair{ - icon_state = "bay_chair_preview"; - dir = 1 + dir = 1; + icon_state = "bay_chair_preview" }, /obj/machinery/power/apc{ dir = 2; @@ -32589,8 +32596,8 @@ pixel_y = -28 }, /obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 + d2 = 4; + icon_state = "0-4" }, /turf/simulated/floor/tiled/white, /area/shuttle/tourbus/cockpit) @@ -32599,12 +32606,12 @@ dir = 8 }, /obj/effect/floor_decal/industrial/danger{ - icon_state = "danger"; - dir = 8 + dir = 8; + icon_state = "danger" }, /obj/machinery/atmospherics/pipe/manifold/hidden/yellow{ - icon_state = "map"; - dir = 8 + dir = 8; + icon_state = "map" }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) @@ -32632,8 +32639,8 @@ "xdJ" = ( /obj/machinery/computer/shuttle_control/explore/tourbus, /obj/machinery/light/small{ - icon_state = "bulb1"; - dir = 1 + dir = 1; + icon_state = "bulb1" }, /turf/simulated/floor/tiled/white, /area/shuttle/tourbus/cockpit) @@ -44402,7 +44409,7 @@ ajM aoI axk azh -aMk +wiX azT aBt aEu diff --git a/maps/tether/tether_turfs.dm b/maps/tether/tether_turfs.dm index d0b2953e10..0b99a2a8d7 100644 --- a/maps/tether/tether_turfs.dm +++ b/maps/tether/tether_turfs.dm @@ -15,10 +15,16 @@ VIRGO3B_TURF_CREATE(/turf/simulated/floor) return 0 VIRGO3B_TURF_CREATE(/turf/simulated/floor/reinforced) + VIRGO3B_TURF_CREATE(/turf/simulated/floor/tiled/steel_dirty) VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/dirt) +/turf/simulated/floor/outdoors/dirt/virgo3b + icon = 'icons/turf/flooring/asteroid.dmi' + icon_state = "asteroid" + VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/rocks) + VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/grass/sif) /turf/simulated/floor/outdoors/grass/sif turf_layers = list( @@ -26,8 +32,6 @@ VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/grass/sif) /turf/simulated/floor/outdoors/dirt/virgo3b ) - - // Overriding these for the sake of submaps that use them on other planets. // This means that mining on tether base and space is oxygen-generating, but solars and mining should use the virgo3b subtype /turf/simulated/mineral