From 9ea9490332265477f694f08ee16301e5c4ab9a3d Mon Sep 17 00:00:00 2001 From: Karolis2011 Date: Sat, 15 Aug 2015 12:39:07 +0300 Subject: [PATCH 01/40] Added map capture function. --- baystation12.dme | 1 + code/modules/admin/admin_verbs.dm | 1 + code/modules/admin/map_capture.dm | 85 +++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 code/modules/admin/map_capture.dm diff --git a/baystation12.dme b/baystation12.dme index 8400913d054..fb3a1ef5e53 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -841,6 +841,7 @@ #include "code\modules\admin\create_turf.dm" #include "code\modules\admin\holder2.dm" #include "code\modules\admin\IsBanned.dm" +#include "code\modules\admin\map_capture.dm" #include "code\modules\admin\NewBan.dm" #include "code\modules\admin\player_notes.dm" #include "code\modules\admin\player_panel.dm" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 94bbf16415b..58d787ff712 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -130,6 +130,7 @@ var/list/admin_verbs_spawn = list( /client/proc/spawn_chemdisp_cartridge ) var/list/admin_verbs_server = list( + /datum/admins/proc/toggle_capture_mode, /client/proc/Set_Holiday, /client/proc/ToRban, /datum/admins/proc/startnow, diff --git a/code/modules/admin/map_capture.dm b/code/modules/admin/map_capture.dm new file mode 100644 index 00000000000..fdebccaffc3 --- /dev/null +++ b/code/modules/admin/map_capture.dm @@ -0,0 +1,85 @@ +/datum/admins/proc/toggle_capture_mode() + set category = "Server" + set name = "Toggle Map Capture Mode" + if(/datum/admins/proc/capture_map in usr.verbs) + //Remove verbs + usr.verbs -= /datum/admins/proc/capture_map + usr.verbs -= /datum/admins/proc/capture_map_all + else + //Add verbs + usr.verbs += /datum/admins/proc/capture_map + usr.verbs += /datum/admins/proc/capture_map_all + + +/datum/admins/proc/capture_map(tx as num, ty as num, tz as num, range as num) + set category = "Tools" + set name = "Capture Map Part" + + if(!check_rights(R_ADMIN|R_DEBUG|R_SERVER)) + return + + if(range > 32 || range <= 0) + usr << "Capturing range is incorrect, it must be within 1-32." + return + + if(locate(tx,ty,tz)) + var/list/turfstocapture = list() + var/hasasked = 0 + for(var/xoff = 0 to range) + for(var/yoff = 0 to range) + var/turf/T = locate(tx + xoff,ty + yoff,tz) + if(T) + turfstocapture.Add(T) + else + if(!hasasked) + var/answer = alert("Capture includes non existant turf, continue capture?", "Yes", "No") + hasasked = 1 + if(answer == "No") + return + + var/list/atoms = list() + for(var/turf/T in turfstocapture) + atoms.Add(T) + for(var/atom/A in T) + if(A.invisibility) continue + atoms.Add(A) + + atoms = sort_atoms_by_layer(atoms) + var/icon/cap = icon('icons/effects/96x96.dmi', "") + cap.Scale(range*32, range*32) + cap.Blend("#000", ICON_OVERLAY) + for(var/atom/A in atoms) + if(A) + var/icon/img = getFlatIcon(A) + if(istype(img, /icon)) + if(istype(A, /mob/living) && A.lying) + img.BecomeLying() + var/xoff = (A.x - tx) * 32 + var/yoff = (A.y - ty) * 32 + cap.Blend(img, blendMode2iconMode(A.blend_mode), A.pixel_x + xoff, A.pixel_y + yoff) + + for(var/turf/Tu in turfstocapture) + var/xoff = (Tu.x - tx) * 32 + var/yoff = (Tu.y - ty) * 32 + //What this even does? + //cap.Blend(getFlatIcon(Tu.loc), blendMode2iconMode(Tu.blend_mode), xoff, yoff) + + usr << browse_rsc(cap, "map_capture_x[tx]_y[ty]_z[tz]_r[range].png") + + +/datum/admins/proc/capture_map_all(z as num) + set category = "Tools" + set name = "Generate map capturing links" + var/x_tile = 255 / 17 + var/y_tile = 255 / 17 + for(var/xt = 0 to x_tile) + for(var/yt = 0 to y_tile) + var/captileX = xt ? xt * 17 : 1 + var/captileY = yt ? yt * 17 : 1 + + usr << "Capture tile [xt]:[yt]" + + +/datum/admins/map_capture/Topic(href, href_list[]) + if(href_list["action"] == "capture") + capture_map(text2num(href_list["x"]),text2num(href_list["y"]),text2num(href_list["z"]),text2num(href_list["r"])) \ No newline at end of file From 84a9fd29272d459d599575a971a13c2e68a9e61a Mon Sep 17 00:00:00 2001 From: Karolis2011 Date: Sat, 15 Aug 2015 14:04:25 +0300 Subject: [PATCH 02/40] Removed ingame capture link generation and fixed some bugs. --- code/modules/admin/admin_verbs.dm | 2 +- code/modules/admin/map_capture.dm | 44 +++---------------------------- 2 files changed, 5 insertions(+), 41 deletions(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 58d787ff712..98bfcf54f91 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -130,7 +130,7 @@ var/list/admin_verbs_spawn = list( /client/proc/spawn_chemdisp_cartridge ) var/list/admin_verbs_server = list( - /datum/admins/proc/toggle_capture_mode, + /datum/admins/proc/capture_map, /client/proc/Set_Holiday, /client/proc/ToRban, /datum/admins/proc/startnow, diff --git a/code/modules/admin/map_capture.dm b/code/modules/admin/map_capture.dm index fdebccaffc3..b9d564d1925 100644 --- a/code/modules/admin/map_capture.dm +++ b/code/modules/admin/map_capture.dm @@ -1,18 +1,5 @@ -/datum/admins/proc/toggle_capture_mode() - set category = "Server" - set name = "Toggle Map Capture Mode" - if(/datum/admins/proc/capture_map in usr.verbs) - //Remove verbs - usr.verbs -= /datum/admins/proc/capture_map - usr.verbs -= /datum/admins/proc/capture_map_all - else - //Add verbs - usr.verbs += /datum/admins/proc/capture_map - usr.verbs += /datum/admins/proc/capture_map_all - - /datum/admins/proc/capture_map(tx as num, ty as num, tz as num, range as num) - set category = "Tools" + set category = "Server" set name = "Capture Map Part" if(!check_rights(R_ADMIN|R_DEBUG|R_SERVER)) @@ -32,7 +19,7 @@ turfstocapture.Add(T) else if(!hasasked) - var/answer = alert("Capture includes non existant turf, continue capture?", "Yes", "No") + var/answer = alert("Capture includes non existant turf, Continue capture?","Continue capture?", "No", "Yes") hasasked = 1 if(answer == "No") return @@ -52,34 +39,11 @@ if(A) var/icon/img = getFlatIcon(A) if(istype(img, /icon)) - if(istype(A, /mob/living) && A.lying) + if(istype(A, /mob/living) && A:lying) img.BecomeLying() var/xoff = (A.x - tx) * 32 var/yoff = (A.y - ty) * 32 cap.Blend(img, blendMode2iconMode(A.blend_mode), A.pixel_x + xoff, A.pixel_y + yoff) - for(var/turf/Tu in turfstocapture) - var/xoff = (Tu.x - tx) * 32 - var/yoff = (Tu.y - ty) * 32 - //What this even does? - //cap.Blend(getFlatIcon(Tu.loc), blendMode2iconMode(Tu.blend_mode), xoff, yoff) - usr << browse_rsc(cap, "map_capture_x[tx]_y[ty]_z[tz]_r[range].png") - - -/datum/admins/proc/capture_map_all(z as num) - set category = "Tools" - set name = "Generate map capturing links" - var/x_tile = 255 / 17 - var/y_tile = 255 / 17 - for(var/xt = 0 to x_tile) - for(var/yt = 0 to y_tile) - var/captileX = xt ? xt * 17 : 1 - var/captileY = yt ? yt * 17 : 1 - - usr << "Capture tile [xt]:[yt]" - - -/datum/admins/map_capture/Topic(href, href_list[]) - if(href_list["action"] == "capture") - capture_map(text2num(href_list["x"]),text2num(href_list["y"]),text2num(href_list["z"]),text2num(href_list["r"])) \ No newline at end of file + usr << browse_rsc(cap, "map_capture_x[tx]_y[ty]_z[tz]_r[range].png") \ No newline at end of file From 5f98346ab5c9c612ce5030d8dc97eab626654612 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 15 Aug 2015 10:22:07 -0400 Subject: [PATCH 03/40] Fixes overdose not working for ingested reagents --- code/modules/reagents/Chemistry-Reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index e0a00383300..694af132a9b 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -39,7 +39,7 @@ return if(!affects_dead && M.stat == DEAD) return - if(overdose && (dose > overdose) && (location == CHEM_BLOOD)) + if(overdose && (dose > overdose) && (location != CHEM_TOUCH)) overdose(M, alien) var/removed = metabolism if(ingest_met && (location == CHEM_INGEST)) From 1186ec2af6e5b47cd48dc87b9f6e162a134fa556 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 15 Aug 2015 22:05:52 +0200 Subject: [PATCH 04/40] The stat panel now displays station time along with current round duration. --- code/__HELPERS/time.dm | 17 ++++++++++++++++- code/modules/mob/dead/observer/observer.dm | 1 - code/modules/mob/living/silicon/silicon.dm | 7 ------- code/modules/mob/mob.dm | 6 +++++- code/modules/mob/new_player/new_player.dm | 14 ++------------ 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 8d37b47f0af..d111ebb8fcc 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -12,7 +12,7 @@ proc/worldtime2text(time = world.time) proc/worlddate2text() return num2text((text2num(time2text(world.timeofday, "YYYY"))+544)) + "-" + time2text(world.timeofday, "MM-DD") - + proc/time_stamp() return time2text(world.timeofday, "hh:mm:ss") @@ -27,3 +27,18 @@ proc/isDay(var/month, var/day) // Uncomment this out when debugging! //else //return 1 + +var/next_duration_update = 0 +var/last_round_duration = 0 +proc/round_duration() + if(last_round_duration && world.time < next_duration_update) + return last_round_duration + + var/mills = world.time // 1/10 of a second, not real milliseconds but whatever + //var/secs = ((mills % 36000) % 600) / 10 //Not really needed, but I'll leave it here for refrence.. or something + var/mins = (mills % 36000) / 600 + var/hours = mills / 36000 + + last_round_duration = "[round(hours)]h [round(mins)]m" + next_duration_update = world.time + 1 MINUTES + return last_round_duration diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index a3187358da9..25ba18a479f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -189,7 +189,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/Stat() ..() if(statpanel("Status")) - stat(null, "Station Time: [worldtime2text()]") if(emergency_shuttle) var/eta_status = emergency_shuttle.get_status_panel_eta() if(eta_status) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 2f47247e129..d6fc2e4aa92 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -149,12 +149,6 @@ /mob/living/silicon/proc/show_malf_ai() return 0 - -// this function displays the station time in the status panel -/mob/living/silicon/proc/show_station_time() - stat(null, "Station Time: [worldtime2text()]") - - // this function displays the shuttles ETA in the status panel if the shuttle has been called /mob/living/silicon/proc/show_emergency_shuttle_eta() if(emergency_shuttle) @@ -166,7 +160,6 @@ // This adds the basic clock, shuttle recall timer, and malf_ai info to all silicon lifeforms /mob/living/silicon/Stat() if(statpanel("Status")) - show_station_time() show_emergency_shuttle_eta() show_system_integrity() show_malf_ai() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f93b1394300..86211d08fff 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -638,6 +638,10 @@ . = (client && client.inactivity < 1200) if(.) + if(statpanel("Status") && ticker && ticker.current_state != GAME_STATE_PREGAME) + statpanel("Status", "Station Time", worldtime2text()) + statpanel("Status", "Round Duration", round_duration()) + if(client.holder) if(statpanel("Status")) statpanel("Status","Location:","([x], [y], [z])") @@ -1067,4 +1071,4 @@ mob/proc/yank_out_object() /mob/proc/throw_mode_on() src.in_throw_mode = 1 if(src.throw_icon) - src.throw_icon.icon_state = "act_throw_on" + src.throw_icon.icon_state = "act_throw_on" diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 63f111a4f1d..f69af806012 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -67,12 +67,7 @@ Stat() ..() - statpanel("Status") - if (client.statpanel == "Status" && ticker) - if (ticker.current_state != GAME_STATE_PREGAME) - stat(null, "Station Time: [worldtime2text()]") - statpanel("Lobby") - if(client.statpanel=="Lobby" && ticker) + if(statpanel("Lobby") && ticker) if(ticker.hide_mode) stat("Game Mode:", "Secret") else @@ -387,16 +382,11 @@ global_announcer.autosay("A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer") proc/LateChoices() - var/mills = world.time // 1/10 of a second, not real milliseconds but whatever - //var/secs = ((mills % 36000) % 600) / 10 //Not really needed, but I'll leave it here for refrence.. or something - var/mins = (mills % 36000) / 600 - var/hours = mills / 36000 - var/name = client.prefs.be_random_name ? "friend" : client.prefs.real_name var/dat = "
" dat += "Welcome, [name].
" - dat += "Round Duration: [round(hours)]h [round(mins)]m
" + dat += "Round Duration: [round_duration()]
" if(emergency_shuttle) //In case Nanotrasen decides reposess CentComm's shuttles. if(emergency_shuttle.going_to_centcom()) //Shuttle is going to centcomm, not recalled From fc40dc579332456ecef0d40050f8c3bac236c3be Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 15 Aug 2015 22:15:24 +0200 Subject: [PATCH 05/40] Changelog entry. --- html/changelogs/PsiOmegaDelta-RoundDuration.yml | 4 ++++ html/changelogs/Yoshax-emptypls.xml | 5 ----- 2 files changed, 4 insertions(+), 5 deletions(-) create mode 100644 html/changelogs/PsiOmegaDelta-RoundDuration.yml delete mode 100644 html/changelogs/Yoshax-emptypls.xml diff --git a/html/changelogs/PsiOmegaDelta-RoundDuration.yml b/html/changelogs/PsiOmegaDelta-RoundDuration.yml new file mode 100644 index 00000000000..358c5cc4be4 --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-RoundDuration.yml @@ -0,0 +1,4 @@ +author: PsiOmegaDelta +delete-after: True +changes: + - rscadd: "Station time and duration now available in the Status tab." diff --git a/html/changelogs/Yoshax-emptypls.xml b/html/changelogs/Yoshax-emptypls.xml deleted file mode 100644 index 2c90ae80080..00000000000 --- a/html/changelogs/Yoshax-emptypls.xml +++ /dev/null @@ -1,5 +0,0 @@ -author: Yoshax -delete-after: True - -changes: - - tweak: "Makes hyposprays start empty instead of filled with Tricord." \ No newline at end of file From 176e4232cac25c9262b6f60f3b800229e960b2df Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 15 Aug 2015 18:28:09 -0400 Subject: [PATCH 06/40] Fixes #9155 Heaters and freezers now check if there are other machines in their turf that have the same connection dirs. --- code/ATMOSPHERICS/components/unary/cold_sink.dm | 7 +++++++ code/ATMOSPHERICS/components/unary/heat_source.dm | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/code/ATMOSPHERICS/components/unary/cold_sink.dm b/code/ATMOSPHERICS/components/unary/cold_sink.dm index e5305876ed9..9fcdad86139 100644 --- a/code/ATMOSPHERICS/components/unary/cold_sink.dm +++ b/code/ATMOSPHERICS/components/unary/cold_sink.dm @@ -43,6 +43,13 @@ node = target break + //copied from pipe construction code since heaters/freezers don't use fittings and weren't doing this check - this all really really needs to be refactored someday. + //check that there are no incompatible pipes/machinery in our own location + for(var/obj/machinery/atmospherics/M in src.loc) + if(M != src && (M.initialize_directions & node_connect) && M.check_connect_types(M,src)) // matches at least one direction on either type of pipe & same connection type + node = null + break + update_icon() /obj/machinery/atmospherics/unary/freezer/update_icon() diff --git a/code/ATMOSPHERICS/components/unary/heat_source.dm b/code/ATMOSPHERICS/components/unary/heat_source.dm index db046e79743..e139f6faf3f 100644 --- a/code/ATMOSPHERICS/components/unary/heat_source.dm +++ b/code/ATMOSPHERICS/components/unary/heat_source.dm @@ -39,11 +39,19 @@ var/node_connect = dir + //check that there is something to connect to for(var/obj/machinery/atmospherics/target in get_step(src, node_connect)) if(target.initialize_directions & get_dir(target, src)) node = target break + //copied from pipe construction code since heaters/freezers don't use fittings and weren't doing this check - this all really really needs to be refactored someday. + //check that there are no incompatible pipes/machinery in our own location + for(var/obj/machinery/atmospherics/M in src.loc) + if(M != src && (M.initialize_directions & node_connect) && M.check_connect_types(M,src)) // matches at least one direction on either type of pipe & same connection type + node = null + break + update_icon() From f90a4a0cd723159c7fc6f84e1d9a46ea389eca9e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 16 Aug 2015 10:32:25 +0200 Subject: [PATCH 07/40] Updates changelog. --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/HarpyEagle-breacher.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/HarpyEagle-breacher.yml diff --git a/html/changelog.html b/html/changelog.html index 324f2693d1c..5785c14fd92 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
+

16 August 2015

+

HarpyEagle updated:

+
    +
  • The unathi breacher is now only wearable by unathi.
  • +
+

15 August 2015

Kelenius updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 757bb9580e5..2c953e37f2b 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -2150,3 +2150,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: To put people into sleeper, you now have to click-drag people to it. Grabs no longer work. To exit the sleeper, move. - tweak: Sleeper now uses a NanoUI. +2015-08-16: + HarpyEagle: + - tweak: The unathi breacher is now only wearable by unathi. diff --git a/html/changelogs/HarpyEagle-breacher.yml b/html/changelogs/HarpyEagle-breacher.yml deleted file mode 100644 index 4c037c3ecb5..00000000000 --- a/html/changelogs/HarpyEagle-breacher.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: HarpyEagle -changes: - - tweak: "The unathi breacher is now only wearable by unathi." -delete-after: true From 0b01482eb6c166d2cc5a0c618c07d11ae30c2a37 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 16 Aug 2015 14:00:29 +0200 Subject: [PATCH 08/40] Synth say fixes. Adds synth message sanitizing. Fixes #10667. Makes sure say() code at least to some degree returns expected values. Fixes #10675. --- code/modules/mob/living/say.dm | 7 +++---- code/modules/mob/living/silicon/laws.dm | 2 ++ code/modules/mob/living/silicon/robot/drone/drone_say.dm | 2 +- code/modules/mob/living/silicon/say.dm | 3 +++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index b1c64b91095..7c63d23e1da 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -128,7 +128,6 @@ proc/get_radio_key_from_channel(var/channel) return verb /mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="") - if(client) if(client.prefs.muted & MUTE_IC) src << "\red You cannot speak in IC (Muted)." @@ -171,7 +170,7 @@ proc/get_radio_key_from_channel(var/channel) // irrespective of distance or anything else. if(speaking.flags & HIVEMIND) speaking.broadcast(src,trim(message)) - return + return 1 //If we've gotten this far, keep going! if(speaking.flags & COMMON_VERBS) verb = say_quote(message) @@ -188,11 +187,11 @@ proc/get_radio_key_from_channel(var/channel) verb = handle_s[2] if(!message || message == "") - return + return 0 var/list/obj/item/used_radios = new if(handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)) - return + return 1 var/list/handle_v = handle_speech_sound() var/sound/speech_sound = handle_v[1] diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index c4a4d634488..5c2068abdfe 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -78,6 +78,8 @@ for(var/datum/ai_law/law in laws.laws_to_state()) can_state = statelaw("[prefix][law.get_index()]. [law.law]") + if(!can_state) + break if(!can_state) src << "[method]: Unable to state laws. Communication method unavailable." diff --git a/code/modules/mob/living/silicon/robot/drone/drone_say.dm b/code/modules/mob/living/silicon/robot/drone/drone_say.dm index 71ca1c6918c..40f0119c996 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_say.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_say.dm @@ -37,4 +37,4 @@ else if(M.stat == 2 && M.client.prefs.toggles & CHAT_GHOSTEARS) if(M.client) M << "[src] transmits, \"[message]\"" return 1 - ..(message) \ No newline at end of file + return ..(message, 0) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 25052354ed8..ece00da5ee7 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -1,3 +1,6 @@ +/mob/living/silicon/say(var/message, var/sanitize = 1) + return ..(sanitize ? sanitize(message) : message) + /mob/living/silicon/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) log_say("[key_name(src)] : [message]") From 21fd8d825dc4edb923b5148dfeb9dc489d76ced7 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 16 Aug 2015 15:43:28 +0200 Subject: [PATCH 09/40] Makes the private AI channel truly private. --- code/controllers/communications.dm | 9 +++++---- code/game/machinery/bots/mulebot.dm | 2 +- code/game/machinery/telecomms/presets.dm | 4 ++-- code/game/objects/items/devices/PDA/radio.dm | 4 ++-- .../game/objects/items/devices/radio/intercom.dm | 7 +++++++ code/modules/mob/living/bot/secbot.dm | 2 +- maps/exodus-1.dmm | 16 ++++++++-------- 7 files changed, 26 insertions(+), 18 deletions(-) diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 52521415b49..c1594665a1b 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -97,20 +97,21 @@ On the map: 1455 for AI access */ +var/const/BOT_FREQ = 1447 var/const/COMM_FREQ = 1353 -var/const/SYND_FREQ = 1213 var/const/ERT_FREQ = 1345 +var/const/AI_FREQ = 1343 var/const/DTH_FREQ = 1341 -var/const/AI_FREQ = 1447 +var/const/SYND_FREQ = 1213 // department channels var/const/PUB_FREQ = 1459 var/const/SEC_FREQ = 1359 var/const/ENG_FREQ = 1357 -var/const/SCI_FREQ = 1351 var/const/MED_FREQ = 1355 -var/const/SUP_FREQ = 1347 +var/const/SCI_FREQ = 1351 var/const/SRV_FREQ = 1349 +var/const/SUP_FREQ = 1347 var/list/radiochannels = list( "Common" = PUB_FREQ, diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index fd2b11c3b1d..2fda22cd32d 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -19,7 +19,7 @@ brute_dam_coeff = 0.5 var/atom/movable/load = null // the loaded crate (usually) var/beacon_freq = 1400 - var/control_freq = AI_FREQ + var/control_freq = BOT_FREQ suffix = "" diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index f91fd2d40c5..dcb555b7552 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -56,7 +56,7 @@ id = "Receiver A" network = "tcommsat" autolinkers = list("receiverA") // link to relay - freq_listening = list(SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ) + freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ) //Common and other radio frequencies for people to freely use New() @@ -88,7 +88,7 @@ /obj/machinery/telecomms/bus/preset_two/New() for(var/i = 1441, i < 1489, i += 2) - if(i == AI_FREQ || i == PUB_FREQ) + if(i == PUB_FREQ) continue freq_listening |= i ..() diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm index c4fb3855369..2536308fb7a 100644 --- a/code/game/objects/items/devices/PDA/radio.dm +++ b/code/game/objects/items/devices/PDA/radio.dm @@ -40,7 +40,7 @@ var/mob/living/bot/secbot/active // the active bot; if null, show bot list var/list/botstatus // the status signal sent by the bot - var/control_freq = AI_FREQ + var/control_freq = BOT_FREQ // create a new QM cartridge, and register to receive bot control & beacon message New() @@ -112,7 +112,7 @@ var/list/beacons var/beacon_freq = 1400 - var/control_freq = AI_FREQ + var/control_freq = BOT_FREQ // create a new QM cartridge, and register to receive bot control & beacon message New() diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 522bef89a69..1abccb5e77d 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -67,3 +67,10 @@ icon_state = "intercom-p" else icon_state = "intercom" + +/obj/item/device/radio/intercom/locked + freerange = 1 + var/locked_frequency + +/obj/item/device/radio/intercom/locked/set_frequency() + ..(locked_frequency) diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index ee4a35e15b0..547361f4005 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -30,7 +30,7 @@ var/obj/secbot_listener/listener = null var/beacon_freq = 1445 // Navigation beacon frequency - var/control_freq = AI_FREQ // Bot control frequency + var/control_freq = BOT_FREQ // Bot control frequency var/list/path = list() var/frustration = 0 var/turf/patrol_target = null // This is where we are headed diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index bcca05b5838..2a10044b7bb 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -3209,12 +3209,12 @@ "bjK" = (/obj/machinery/light/small{dir = 4},/obj/machinery/porta_turret{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bjL" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bjM" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/wood,/area/bridge/meeting_room) -"bjN" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = -4},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bjN" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1343; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -25; pixel_y = -4},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bjO" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/wall,/area/maintenance/locker) "bjP" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai) "bjQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/civilian_west{c_tag = "Locker Room South"; dir = 8},/turf/simulated/floor,/area/crew_quarters/locker) "bjR" = (/obj/structure/table/standard,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office) -"bjS" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27; pixel_y = -3},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bjS" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1343; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27; pixel_y = -3},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bjT" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bjU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bjV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/bridge/meeting_room) @@ -3259,7 +3259,7 @@ "bkI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit) "bkJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bkK" = (/obj/machinery/door/window{dir = 4; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"bkL" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -32; pixel_y = 32},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the AI core maintenance door."; id = "AICore"; name = "AI Maintenance Hatch"; pixel_x = 17; pixel_y = 25; req_access = list(109)},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"bkL" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1343; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -32; pixel_y = 32},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the AI core maintenance door."; id = "AICore"; name = "AI Maintenance Hatch"; pixel_x = 17; pixel_y = 25; req_access = list(109)},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bkM" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "bkN" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/camera/network/command{c_tag = "Bridge - Captain's Office"; dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bkO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc/high{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green,/turf/simulated/floor,/area/hallway/secondary/entry/aft) @@ -3670,7 +3670,7 @@ "bsD" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/reception) "bsE" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/asimov,/obj/item/weapon/aiModule/freeformcore,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Core Modules"; req_access = list(20)},/obj/structure/window/reinforced,/obj/item/weapon/aiModule/corp,/obj/item/weapon/aiModule/paladin,/obj/item/weapon/aiModule/robocop,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bsF" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room) -"bsG" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -5; pixel_y = 22},/obj/machinery/porta_turret,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"bsG" = (/obj/machinery/porta_turret,/obj/item/device/radio/intercom/locked{frequency = 1343; locked_frequency = 1343; name = "Private AI Channel"; pixel_x = -5; pixel_y = 22},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bsH" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/porta_turret,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bsI" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access = list(20)},/obj/item/weapon/aiModule/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/antimov,/obj/item/weapon/aiModule/teleporterOffline,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bsJ" = (/obj/machinery/mech_bay_recharge_port,/turf/simulated/floor/plating,/area/assembly/chargebay) @@ -3912,7 +3912,7 @@ "bxl" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/crew_quarters/heads/hop) "bxm" = (/obj/structure/table/standard,/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/turf/simulated/floor,/area/medical/reception) "bxn" = (/obj/structure/table/woodentable,/obj/item/device/camera,/obj/item/weapon/storage/photo_album{pixel_y = -10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/captain) -"bxo" = (/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bxo" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bxp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Examination Room"; req_access = list(66)},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bxq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/obj/machinery/power/sensor{name = "Powernet Sensor - Command Subgrid"; name_tag = "Command Subgrid"},/turf/simulated/floor/plating,/area/maintenance/substation/command) "bxr" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) @@ -3956,7 +3956,7 @@ "byd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) "bye" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora) "byf" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) -"byg" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) +"byg" = (/obj/item/device/radio/intercom/locked{frequency = 1343; locked_frequency = 1343; name = "Private AI Channel"; pixel_x = 0; pixel_y = -27},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "byh" = (/obj/machinery/light{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/porta_turret{dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "byi" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/camera/network/command{c_tag = "Bridge - Captain's Quarters"; dir = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain) "byj" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor,/area/quartermaster/office) @@ -4116,7 +4116,7 @@ "bBh" = (/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/rnd/research) "bBi" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_server_room) "bBj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) -"bBk" = (/obj/machinery/turretid/stun{control_area = "\improper AI Upload Chamber"; name = "AI Upload turret control"; pixel_x = 6; pixel_y = 24},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -12; pixel_y = 20},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) +"bBk" = (/obj/machinery/turretid/stun{control_area = "\improper AI Upload Chamber"; name = "AI Upload turret control"; pixel_x = 6; pixel_y = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/item/device/radio/intercom/locked{frequency = 1343; locked_frequency = 1343; name = "Private AI Channel"; pixel_x = -12; pixel_y = 20},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) "bBl" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload_foyer) "bBm" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "bBn" = (/obj/machinery/light{dir = 1},/obj/structure/table/standard,/obj/item/weapon/hand_tele,/turf/simulated/floor,/area/teleporter) @@ -7518,7 +7518,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaT aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaaaaaabrsbrtbsjbslbskbsnbsnbsobrzbrAbgrbtkbsqbsvbsrbjpbjpbjpbajbrEbrFbrGbrHbrGbrGbrGbrHbrGbajbajbdPbdPbdPbsxbdPbrJbrJbrJbrJbrJbrJbqfbrKbrLbrMbrNbrObsybrQbrRbrSbrTbrUbrVbrWbrXbrYbrZaHBbsbbqvbsabszbsAbotbosbotaafbsibsEbsBbsGbsmbsHbsBbsIbsiaafbedbspbsObspbedbedbedbtbaJibssaRqaRpbXHbpBbngbstbsubtdbqLbswbqNbtlbthbtvbtmbtBbsCbqObsDbnibtIbsFbtKbtObnnbtTbqVbpebpfbpgbphbpfbpibYfaVJbpjbsJbsKbsLbsMbplbsNbtXbsPbsQbsRbsSbsTbsUbrhbsVbsWbsXbnIbsYbsZbtabtYbtcbubbnIbrqbpFbtebnMaaaaaaaaaaaaaaaaaaaaaaaaaIuaIuaIuaIuaIuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaaaaaaaaaaaaaaaaaaaTDaTDaTDaTDaTDaaaaacaaaaaaaaaaaaaaaaaaaaabrsbtfbtgbuhbtibtibtibtjbtibtibgrbujbuiboAbuobjpaaaaaaaaaaafaafbtnbtnbtnbtnbtnbtnbtnaaaaaabtobtpbtqbtrbtsbrJbrJbrJbrJbrJbrJbttbtubupbtwbtxbtybtzbtAbfmbfmbuxbfmbfmbtCbtDbtEbtFbmGbtHbmGbmGbmGbmGbmGbuAbmGaafbtJbuGbtLbtMbtNbtMbtLbuNbtPaafbspbtQbtRbtSbuObtUbspbtVaJlbtWbbmbuTaJibuUbnAbtZbuabuYbucbudbuebufbuZbvjbvabvnbukbulbumbnibnnbunbpubvobnnbuqburbusbutbuubuubuvbuwbYfaXqbpjbvqbplbplbsMbuybuzbvxbvybuCbuDbuEbuFbvCbrhbuHbuIbuJbnIbuKbuLbuMbtYbpCbvEbnIbpEbpFbvFbnMaaaaaaaaaaaacHOaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeObvLbvIbuVbpHbuWbgnbgobuXbuWbgrbvObjpbvYbvbbjpaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnaaaaaabvcbvdbrJbvebvfbvfbvfbvfbvfbvgbvhbvfbvibvZbvkbvlbvmbwcbwbbfmbvpbgGbwgbpzbvsbvtbvubvvbmGbmGbmGbwlbwjbvzbvAbvBbvwaafbpObwnbvHbvJbvKbvMbvNbwxbpOaafbspbwCbvQbxnbedbvRbspbvSaJlbvTbcLbvUaJibvVbvWbvXbwDbwKbucbwZbwYbxbbwdbwebwebwfbxhcdWcdVbxmbwkbxpbwmbwkbwkbwkbwkbxvbwkbwkaXKaXKaXKaXKaVJbpjbsJbsKbsLbwobwpbwqbwrbwsbwsbwsbsSbwtbxxbwvbwwbxzbwybnIbwzbwAbwBbxDbpCbxHbnIbwEbwFbnMbnMaaaaaaaaaaaaaafbuPbuQbuRbuQbuRbuQbuSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbwMbwNbwObwPbrJbwQbrJbwRbwRbwRbwSbwTbrKbrJbrJbrLbwUbwVbwWbwXbrpbxIbxabgGbgGbugbxcbvtbvubxdbxebxfbxObxTbxibxjbxkbxlbvwaafbxrbybbyabyfbyLbxobygbyhbxraafbspbqwbyibuBbedbyobspbtVaJlbxwbcLaRpaJibyKbxybyMbxAbxBbxCbyObxEbxCbxFbxGbyQbxFbwkbyUbxJbwkbwkbxKbxLbxMbxNbyXbxPbxQbxRbxSaXKbaybvraXKaVJbpjbxXbqZbqZbxYbxZbppbzcbwsbwsbwsbsSbwtbzrbwwbvDbUabTQbwwbzxbzzbzybzHbpCbzJbnIbrqbykbnMaaaaaaaaaaaaaaaaafbwGbwHbrgbzNbwJbzObwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbwMbwNbwObwPbrJbwQbrJbwRbwRbwRbwSbwTbrKbrJbrJbrLbwUbwVbwWbwXbrpbxIbxabgGbgGbugbxcbvtbvubxdbxebxfbxObxTbxibxjbxkbxlbvwaafbxrbybbyabyfbyLbygbxobyhbxraafbspbqwbyibuBbedbyobspbtVaJlbxwbcLaRpaJibyKbxybyMbxAbxBbxCbyObxEbxCbxFbxGbyQbxFbwkbyUbxJbwkbwkbxKbxLbxMbxNbyXbxPbxQbxRbxSaXKbaybvraXKaVJbpjbxXbqZbqZbxYbxZbppbzcbwsbwsbwsbsSbwtbzrbwwbvDbUabTQbwwbzxbzzbzybzHbpCbzJbnIbrqbykbnMaaaaaaaaaaaaaaaaafbwGbwHbrgbzNbwJbzObwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbzPbypbzPbyqbyrbwQbrJbrJbrJbysbrJbwTbrKbytbdPbdPbyubgGbrNbwXbyvbywbyxbyybyybyzbyAbyBbyCbyDbvsbyEbvPbyGbxkbyHbyIbyJbvwaafbxrbxrbxrbxrbzVbxrbxrbxrbxraafbyNbyNbyNbyNbyNbyNbyNbAeaJibyPblMblNaJibAibyRbyRbySbyTbxCbAkbyVbyWbAlbyYbyZbzabwmbzbbAobzdbzebzfbzgbzgbzhbzibzgbzjbzkbckbaAbwubclbAsbcnbAtbzsbztbzubzvbzwbppbAubpqbpqbAxbsSbwtbAAbzAbzBbzCbzDbzAbzEbzFbzGbAFbzIbwwbwwbALbnMbnMbzKbzLbzLbzLbzMbCJbylbymbrgbwJbrgbynbuRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaacaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbAVbzQbAVbzRbrJbwQbrJbzSbzSbzSbzSbwTbrKbzTbzUbdPbAXbgGbrNbBabzWbzXbzYbgGblnbgGbzZbAabAbbAcbAdbyEbwIbAfbxkbxkbxkbAgbvwbAhbAhbBibAhbBkbBjbBlbAjbBmbAjbAjbyNbBqbBnbAmbAnbBsbApbAqaJibAraRqaRpaJibBwbBtbBxbAvbAwbBAbAybAzbBEbABbACbADbAEbBGbAGbAHbAIbAJbAKbAIbxtbAMbANbAObnvblUbsdbBJbsgbsfbaAbPObpjbxubxUbAYbAZbAZbppbBKbBbbBcbppbBdbBebBfbBgbBhbBNbKebBQbYrbYrbBRbBSbBobTHbBUbBrbBXbCcbTIbBvbCdbCnbCkbCobwGbwJbrgbwJbwJbCrbwGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLbwLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtnbtnbtnbtnbtnbtnbtnbBCbwNbBDbCwbrJbwQbrJbrJbrJbrJbrJbwTbrKbzTbBFbdPbCAbgGbBHbBIbgGbCEbgFbgGbgGbyjbvsbvtbAbbAcbAdbyEbvwbBLbBMbCHbBMbBObvwbCKbCIbCQbCLbCYbCXbDabCZbDcbDbbBVbyNbBWbzmbBYbBZbCabCabCbbDdbAraRqaRpaJibDebCebCebySbCfbxCbCgbChbxCbCibCjbCjbDfbwkbClbCmbwkbwkbwkbwkbwkbwkbDgbwkbwkbwmbDhaXKaXKaXKaXKbDibpjbwwbzAbzAbzAbzAbzAbzAbzAbzAbzAbzIbDjbCsbCtbBhbWXbCvbDwbCxbCxbCxbCybCzbDBbCBbCCbCDbDDbTGbCGbDIbCGbDKbDNbBzbuQbuRbDQbuRbuQbBBaafaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From b21bd0c42d2159c15c26b47436ceb613214236c0 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 16 Aug 2015 14:07:11 -0400 Subject: [PATCH 10/40] Ports fix for #10660 from vg Courtesy of PJB3005 --- code/modules/lighting/__lighting_docs.dm | 2 +- code/modules/lighting/light_source.dm | 39 ++++++++++++++++++++++++ code/modules/lighting/lighting_turf.dm | 4 +++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/code/modules/lighting/__lighting_docs.dm b/code/modules/lighting/__lighting_docs.dm index 6ad0e32cdbc..5ac5897eb53 100644 --- a/code/modules/lighting/__lighting_docs.dm +++ b/code/modules/lighting/__lighting_docs.dm @@ -51,7 +51,7 @@ turf: (lighting_turf.dm) - proc/lighting_clear_overlays(): - Delete (manual GC) all light overlays on this turf, used when changing turf to space - proc/lighting_build_overlays(): - - Create lighting overlays for this turf + - Create lighting overlays for this turf. Called by ChangeTurf in case the turf is being changed to use dynamic lighting. atom/movable/lighting_overlay: (lighting_overlay.dm) diff --git a/code/modules/lighting/light_source.dm b/code/modules/lighting/light_source.dm index 73a65f064fc..2acddb4d298 100644 --- a/code/modules/lighting/light_source.dm +++ b/code/modules/lighting/light_source.dm @@ -246,6 +246,45 @@ effect_turf.Cut(idx, idx + 1) effect_str.Cut(idx, idx + 1) +//Whoop yet not another copy pasta because speed ~~~~BYOND. +//Calculates and applies lighting for a single turf. This is intended for when a turf switches to +//using dynamic lighting when it was not doing so previously (when constructing a floor on space, for example). +//Assumes the turf is visible and such. +//For the love of god don't call this proc when it's not needed! Lighting artifacts WILL happen! +/datum/light_source/proc/calc_turf(var/turf/T) + var/idx = effect_turf.Find(T) + if(!idx) + return //WHY. + + if(T.lighting_overlay) + #if LIGHTING_FALLOFF == 1 // circular + . = (T.lighting_overlay.x - source_turf.x)**2 + (T.lighting_overlay.y - source_turf.y)**2 + LIGHTING_HEIGHT + #if LIGHTING_LAMBERTIAN == 1 + . = CLAMP01((1 - CLAMP01(sqrt(.) / light_range)) * (1 / (sqrt(. + 1)))) + #else + . = 1 - CLAMP01(sqrt(.) / light_range) + #endif + + #elif LIGHTING_FALLOFF == 2 // square + . = abs(T.lighting_overlay.x - source_turf.x) + abs(T.lighting_overlay.y - source_turf.y) + LIGHTING_HEIGHT + #if LIGHTING_LAMBERTIAN == 1 + . = CLAMP01((1 - CLAMP01(. / light_range)) * (1 / (sqrt(.)**2 + ))) + #else + . = 1 - CLAMP01(. / light_range) + #endif + #endif + . *= light_power + + . = round(., LIGHTING_ROUND_VALUE) + + effect_str[idx] = . + + T.lighting_overlay.update_lumcount( + lum_r * ., + lum_g * ., + lum_b * . + ) + #undef LUM_FALLOFF #undef LUM_DISTANCE #undef LUM_ATTENUATION diff --git a/code/modules/lighting/lighting_turf.dm b/code/modules/lighting/lighting_turf.dm index e261931c41c..f8f0a5ab102 100644 --- a/code/modules/lighting/lighting_turf.dm +++ b/code/modules/lighting/lighting_turf.dm @@ -17,6 +17,10 @@ var/atom/movable/lighting_overlay/O = PoolOrNew(/atom/movable/lighting_overlay, src) lighting_overlay = O + //Make the light sources recalculate us so the lighting overlay updates immediately + for(var/datum/light_source/L in affecting_lights) + L.calc_turf(src) + /turf/Entered(atom/movable/obj) . = ..() if(obj && obj.opacity) From 9b547608f6f34ac8ca206300ec52c46a6b20186c Mon Sep 17 00:00:00 2001 From: SomeoneElse Date: Mon, 17 Aug 2015 00:23:38 +0600 Subject: [PATCH 11/40] [minor] Fix research design item path definition, usage of TECH_* macros code/modules/research/designs.dm: fixed path definition of `datum/design/circuit/shield` fixed req_tech variable to now use TECH_* macros --- code/modules/research/designs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index c0841e95eba..9a3cf14b290 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -324,8 +324,8 @@ other types of metals and chemistry for reagents). /////////////////////////////////// /////////Shield Generators///////// /////////////////////////////////// -datum/design/circuit/shield - req_tech = list("bluespace" = 4, "phorontech" = 3) +/datum/design/circuit/shield + req_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 10000, "$diamond" = 5000, "$gold" = 10000) /datum/design/item/medical From 4d826e68cbc338f6102da2b44359a86e0c7658dd Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 16 Aug 2015 20:24:53 +0200 Subject: [PATCH 12/40] Mob bump fixes. ED-209 is considered massive enough to not bump easily. update_canmove() no longer unconditionally sets mob density. Fixes #10365. Fixes #10682. --- code/modules/mob/living/bot/bot.dm | 4 +++- code/modules/mob/living/bot/ed209bot.dm | 5 +++++ code/modules/mob/mob.dm | 2 +- code/setup.dm | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index a2d60210982..bdf5091dadb 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -101,10 +101,12 @@ ..(message, null, verb) /mob/living/bot/Bump(var/atom/A) - if(istype(A, /obj/machinery/door) && botcard) + if(on && botcard && istype(A, /obj/machinery/door)) var/obj/machinery/door/D = A if(!istype(D, /obj/machinery/door/firedoor) && !istype(D, /obj/machinery/door/blast) && D.check_access(botcard)) D.open() + else + ..() /mob/living/bot/proc/Emag(var/mob/user) log_and_message_admins("emagged [src]") diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm index 78262f58ecc..9e50b4ddf71 100644 --- a/code/modules/mob/living/bot/ed209bot.dm +++ b/code/modules/mob/living/bot/ed209bot.dm @@ -11,6 +11,11 @@ is_ranged = 1 preparing_arrest_sounds = new() + a_intent = I_HURT + mob_bump_flag = HEAVY + mob_swap_flags = ALLMOBS + mob_push_flags = ALLMOBS|HEAVY + var/shot_delay = 4 var/last_shot = 0 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 86211d08fff..6926b9f6264 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -717,7 +717,7 @@ drop_l_hand() drop_r_hand() else - density = 1 + density = initial(density) for(var/obj/item/weapon/grab/G in grabbed_by) if(G.state >= GRAB_AGGRESSIVE) diff --git a/code/setup.dm b/code/setup.dm index a21e9f60426..a8eac57b7e6 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -863,7 +863,7 @@ var/list/be_special_flags = list( #define ROBOT 8 #define SLIME 16 #define SIMPLE_ANIMAL 32 - +#define HEAVY 64 #define ALLMOBS (HUMAN|MONKEY|ALIEN|ROBOT|SLIME|SIMPLE_ANIMAL) From 524548cc95888d0e0abbb62833601cac7b6639a6 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 16 Aug 2015 14:23:37 -0400 Subject: [PATCH 13/40] Fixes #10680 --- code/controllers/shuttle_controller.dm | 2 +- code/game/antagonist/outsider/raider.dm | 2 +- code/game/area/Space Station 13 areas.dm | 10 +- code/game/gamemodes/objective.dm | 6 +- maps/exodus-2.dmm | 212 +++++++++++------------ 5 files changed, 116 insertions(+), 116 deletions(-) diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index c13cc24d12c..f8f9c42c17e 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -203,7 +203,7 @@ var/global/datum/shuttle_controller/shuttle_controller //Skipjack. var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle() - VS.origin = locate(/area/shuttle/skipjack/station) + VS.origin = locate(/area/skipjack_station) VS.destinations = list( "Fore Starboard Solars" = locate(/area/skipjack_station/northeast_solars), diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm index d10adb26d78..5913847972b 100644 --- a/code/game/antagonist/outsider/raider.dm +++ b/code/game/antagonist/outsider/raider.dm @@ -184,7 +184,7 @@ var/datum/antagonist/raider/raiders return 0 for(var/datum/mind/player in current_antagonists) - if(!player.current || get_area(player.current) != locate(/area/shuttle/skipjack/station)) + if(!player.current || get_area(player.current) != locate(/area/skipjack_station)) return 0 return 1 diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 07a18948852..0467e7b34dc 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -319,11 +319,6 @@ area/space/atmosalert() /area/shuttle/research/outpost icon_state = "shuttle" -/area/shuttle/skipjack/station - name = "\improper Skipjack" - icon_state = "yellow" - requires_power = 0 - /area/airtunnel1/ // referenced in airtunnel.dm:759 /area/dummy/ // Referenced in engine.dm:261 @@ -516,6 +511,11 @@ area/space/atmosalert() requires_power = 0 lighting_use_dynamic = 0 +/area/skipjack_station + name = "\improper Skipjack" + icon_state = "yellow" + requires_power = 0 + /area/skipjack_station/transit name = "\improper hyperspace" diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 16d50cee4d0..13b896987dc 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -728,7 +728,7 @@ datum/objective/heist/kidnap //if (!target.current.restrained()) // return 0 // They're loose. Close but no cigar. - var/area/shuttle/skipjack/station/A = locate() + var/area/skipjack_station/A = locate() for(var/mob/living/carbon/human/M in A) if(target.current == M) return 1 //They're restrained on the shuttle. Success. @@ -779,7 +779,7 @@ datum/objective/heist/loot var/total_amount = 0 - for(var/obj/O in locate(/area/shuttle/skipjack/station)) + for(var/obj/O in locate(/area/skipjack_station)) if(istype(O,target)) total_amount++ for(var/obj/I in O.contents) if(istype(I,target)) total_amount++ @@ -828,7 +828,7 @@ datum/objective/heist/salvage var/total_amount = 0 - for(var/obj/item/O in locate(/area/shuttle/skipjack/station)) + for(var/obj/item/O in locate(/area/skipjack_station)) var/obj/item/stack/material/S if(istype(O,/obj/item/stack/material)) diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm index 95b80994d62..edcba96456e 100644 --- a/maps/exodus-2.dmm +++ b/maps/exodus-2.dmm @@ -591,20 +591,22 @@ "ls" = (/obj/structure/bed/chair,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "lt" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle"; pixel_x = 0; pixel_y = -25; tag_door = "centcom_shuttle_hatch"},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) "lu" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"lv" = (/obj/structure/table/standard,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/clothing/gloves/yellow,/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/weapon/card/emag,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"lw" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/wall/voxshuttle,/area/shuttle/skipjack/station) -"lx" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access = list(150)},/turf/simulated/wall/voxshuttle,/area/shuttle/skipjack/station) -"ly" = (/obj/machinery/button/remote/blast_door{id = "skipjackshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/wall/voxshuttle,/area/shuttle/skipjack/station) +"lv" = (/obj/structure/table/standard,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/clothing/gloves/yellow,/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/weapon/card/emag,/turf/simulated/shuttle/plating,/area/skipjack_station) +"lw" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/wall/voxshuttle,/area/skipjack_station) +"lx" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access = list(150)},/turf/simulated/wall/voxshuttle,/area/skipjack_station) +"ly" = (/obj/machinery/button/remote/blast_door{id = "skipjackshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/wall/voxshuttle,/area/skipjack_station) "lz" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) "lA" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) "lB" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) -"lC" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"lD" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"lC" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/skipjack_station) +"lD" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/skipjack_station) "lE" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"},/area/syndicate_mothership) -"lF" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; pixel_x = -22; req_one_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"lG" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; pixel_x = 22; req_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"lH" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"lI" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"lF" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; pixel_x = -22; req_one_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station) +"lG" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; pixel_x = 22; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station) +"lH" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/shuttle/plating,/area/skipjack_station) +"lI" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/shuttle/plating,/area/skipjack_station) +"lJ" = (/obj/structure/table/steel,/obj/machinery/recharger,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"lK" = (/obj/structure/table/standard,/obj/item/weapon/cautery,/obj/item/weapon/retractor,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) "mi" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) "mk" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/orange,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/orange,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "mr" = (/turf/unsimulated/wall,/area/start) @@ -938,7 +940,6 @@ "sR" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpetsymbol"},/area/centcom/living) "sS" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/obj/item/clothing/mask/surgical,/obj/item/clothing/gloves/latex,/obj/item/weapon/surgicaldrill,/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) "sT" = (/obj/machinery/vending/dinnerware,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) -"sU" = (/obj/structure/closet/secure_closet/medical_wall{pixel_y = 0; req_access = list(150)},/obj/item/weapon/surgicaldrill,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) "sV" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "sW" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living) "sX" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) @@ -1310,7 +1311,7 @@ "Ab" = (/obj/structure/table/standard,/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/control) "Ac" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "Ad" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"Ae" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_northwest_lock"; locked = 0; req_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Ae" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_northwest_lock"; locked = 0; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station) "Af" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/flash,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/device/flash,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/firstaid/adv,/obj/item/weapon/storage/firstaid/adv,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "Ag" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Weapon Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom/specops) "Ah" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/roller,/obj/item/roller,/obj/item/roller,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) @@ -1474,8 +1475,8 @@ "DI" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 30},/obj/structure/bed/chair{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) "DJ" = (/turf/simulated/floor/holofloor{icon_state = "carpet9-4"; dir = 4},/area/holodeck/source_theatre) "DK" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "carpet1-0"},/area/holodeck/source_theatre) -"DL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"DM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"DL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station) +"DM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station) "DN" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bloodsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "DO" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/tofukabob,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) "DP" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) @@ -1483,7 +1484,7 @@ "DR" = (/obj/structure/table/woodentable{dir = 5},/obj/item/clothing/under/suit_jacket,/obj/item/clothing/suit/wcoat,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "DS" = (/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "DT" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) -"DU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"DU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station) "DV" = (/turf/unsimulated/floor{icon_state = "white"},/area/centcom/holding) "DW" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) "DX" = (/obj/structure/bed/roller,/turf/unsimulated/floor{dir = 4; icon_state = "whitegreenfull"},/area/centcom/holding) @@ -1587,7 +1588,7 @@ "FV" = (/obj/item/clothing/head/xenos,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "FW" = (/obj/item/organ/xenos/plasmavessel,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) "FX" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror/raider{pixel_x = -28; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) -"FY" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_northeast_lock"; locked = 0; req_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"FY" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_northeast_lock"; locked = 0; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station) "Ga" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Gb" = (/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Gc" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) @@ -1839,36 +1840,36 @@ "KP" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "KQ" = (/obj/machinery/recharge_station,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) "KR" = (/obj/machinery/recharge_station,/obj/machinery/camera/network/crescent{c_tag = "Shuttle East Storage"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"KS" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/skipjack/station) -"KT" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/skipjack/station) +"KS" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/skipjack_station) +"KT" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/skipjack_station) "KU" = (/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar West"; dir = 4},/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) "KV" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "KW" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_alc/full,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "KX" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/holding) "KY" = (/obj/machinery/iv_drip,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "KZ" = (/obj/structure/bed/roller,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 30},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"La" = (/turf/simulated/wall/voxshuttle,/area/shuttle/skipjack/station) -"Lb" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southwest_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Ld" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southeast_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Le" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Lf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Lg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"La" = (/turf/simulated/wall/voxshuttle,/area/skipjack_station) +"Lb" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southwest_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Ld" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southeast_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Le" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Lf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Lg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) "Li" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) "Lj" = (/obj/machinery/hologram/holopad,/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/area/centcom/holding) "Lk" = (/turf/unsimulated/beach/sand{tag = "icon-beach"; icon_state = "beach"},/area/centcom/holding) "Ll" = (/turf/unsimulated/beach/sand{tag = "icon-beachcorner"; icon_state = "beachcorner"},/area/centcom/holding) "Lm" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access = list(101)},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "Ln" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/wrench,/turf/unsimulated/floor{dir = 8; icon_state = "whitegreen"},/area/centcom/holding) -"Lo" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Lp" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Lr" = (/obj/machinery/computer/shuttle_control/multi/vox,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Ls" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Lt" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Lo" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25},/turf/simulated/shuttle/plating,/area/skipjack_station) +"Lp" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating,/area/skipjack_station) +"Lr" = (/obj/machinery/computer/shuttle_control/multi/vox,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Ls" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Lt" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) "Lu" = (/turf/unsimulated/floor{tag = "icon-ironsand7"; icon_state = "ironsand7"},/turf/unsimulated/floor{tag = "icon-asteroid7"; name = "plating"; icon_state = "asteroid7"},/area/wizard_station) "Lv" = (/turf/unsimulated/floor{tag = "icon-ironsand12"; icon_state = "ironsand12"},/turf/unsimulated/floor{tag = "icon-asteroid2"; name = "plating"; icon_state = "asteroid2"},/area/wizard_station) -"Lw" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Lw" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25},/turf/simulated/shuttle/plating,/area/skipjack_station) "Lx" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"Ly" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Ly" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating,/area/skipjack_station) "Lz" = (/turf/simulated/floor/holofloor{icon_state = "carpet7-3"; dir = 4},/area/holodeck/source_theatre) "LA" = (/turf/simulated/floor/holofloor/grass,/turf/simulated/floor/holofloor{icon_state = "wood_siding1"; dir = 2},/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor{icon_state = "wood_siding5"; dir = 2},/area/holodeck/source_picnicarea) "LB" = (/turf/simulated/floor/holofloor{icon_state = "carpet11-12"; dir = 4},/area/holodeck/source_theatre) @@ -1897,51 +1898,51 @@ "LY" = (/obj/machinery/camera/network/crescent{c_tag = "Crescent Medical"; dir = 4},/turf/unsimulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/centcom/holding) "LZ" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "Ma" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"Mb" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access = list(150); tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Md" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Me" = (/obj/structure/bed/chair{dir = 1},/obj/item/clothing/glasses/thermal/plain/monocle,/obj/item/clothing/head/pirate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Mf" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Mg" = (/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Mh" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access = list(150); tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Mb" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access = list(150); tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Md" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Me" = (/obj/structure/bed/chair{dir = 1},/obj/item/clothing/glasses/thermal/plain/monocle,/obj/item/clothing/head/pirate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Mf" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Mg" = (/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Mh" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access = list(150); tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/skipjack_station) "Mj" = (/turf/unsimulated/beach/sand{tag = "icon-desert"; icon_state = "desert"},/turf/unsimulated/beach/sand{tag = "icon-coconuts"; icon_state = "coconuts"},/area/centcom/holding) "Mk" = (/obj/structure/table/standard,/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/turf/unsimulated/floor{tag = "icon-whitecorner"; name = "plating"; icon_state = "whitecorner"},/area/centcom/holding) "Ml" = (/obj/structure/table/standard,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/scalpel,/turf/unsimulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (SOUTHEAST)"},/area/centcom/holding) "Mm" = (/obj/structure/table/standard,/obj/item/weapon/cautery{pixel_y = 4},/obj/item/weapon/hemostat{pixel_y = 4},/turf/unsimulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (SOUTHEAST)"},/area/centcom/holding) "Mn" = (/obj/structure/table/standard,/obj/item/weapon/surgicaldrill,/obj/item/weapon/circular_saw,/turf/unsimulated/floor{tag = "icon-whitecorner (WEST)"; icon_state = "whitecorner"; dir = 8},/area/centcom/holding) "Mo" = (/obj/structure/table/standard,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/turf/unsimulated/floor{dir = 2; icon_state = "whitehall"; tag = "icon-whitehall (SOUTHEAST)"},/area/centcom/holding) -"Mp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Mq" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Mr" = (/obj/structure/table/rack,/obj/item/weapon/rig/industrial,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Ms" = (/obj/structure/table/rack,/obj/item/weapon/rig/light/hacker,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Mt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Mp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station) +"Mq" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Mr" = (/obj/structure/table/rack,/obj/item/weapon/rig/industrial,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Ms" = (/obj/structure/table/rack,/obj/item/weapon/rig/light/hacker,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Mt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station) "Mu" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access = list(45)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/holding) -"Mv" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/weapon/material/harpoon,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/rig/light/stealth,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Mw" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Mx" = (/obj/item/seeds/potatoseed,/obj/item/seeds/potatoseed,/obj/item/seeds/ambrosiavulgarisseed,/obj/item/weapon/material/minihoe,/obj/item/weapon/beartrap,/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"My" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Mz" = (/obj/machinery/vending/hydroseeds,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Mv" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/weapon/material/harpoon,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/rig/light/stealth,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Mw" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Mx" = (/obj/item/seeds/potatoseed,/obj/item/seeds/potatoseed,/obj/item/seeds/ambrosiavulgarisseed,/obj/item/weapon/material/minihoe,/obj/item/weapon/beartrap,/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/skipjack_station) +"My" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Mz" = (/obj/machinery/vending/hydroseeds,/turf/simulated/shuttle/plating,/area/skipjack_station) "MA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) -"MB" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"MC" = (/obj/machinery/washing_machine,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"MD" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/clothing/shoes/magboots,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"ME" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/clothing/suit/space/void/mining,/obj/item/clothing/head/helmet/space/void/mining,/obj/item/clothing/head/helmet/space/void/atmos,/obj/item/clothing/suit/space/void/atmos,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"MB" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"MC" = (/obj/machinery/washing_machine,/turf/simulated/shuttle/plating,/area/skipjack_station) +"MD" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/clothing/shoes/magboots,/turf/simulated/shuttle/plating,/area/skipjack_station) +"ME" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/clothing/suit/space/void/mining,/obj/item/clothing/head/helmet/space/void/mining,/obj/item/clothing/head/helmet/space/void/atmos,/obj/item/clothing/suit/space/void/atmos,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/plating,/area/skipjack_station) "MG" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 28},/turf/unsimulated/floor{tag = "icon-whitecorner (NORTH)"; icon_state = "whitecorner"; dir = 1},/area/centcom/holding) "MH" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/turf/unsimulated/floor{dir = 4; icon_state = "whitegreen"},/area/centcom/holding) -"MI" = (/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"MJ" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"MK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"MM" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"MO" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"MI" = (/turf/simulated/shuttle/plating,/area/skipjack_station) +"MJ" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/plating,/area/skipjack_station) +"MK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station) +"MM" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"MO" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/plating,/area/skipjack_station) "MP" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) "MQ" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) "MR" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"MS" = (/obj/item/robot_parts/head,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"MS" = (/obj/item/robot_parts/head,/turf/simulated/shuttle/plating,/area/skipjack_station) "MT" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/box/masks,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "MU" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = 4; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = 4; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OMinus{pixel_x = -5; pixel_y = -1},/obj/item/weapon/reagent_containers/blood/OMinus{pixel_x = -5; pixel_y = -1},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "MV" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/turf/unsimulated/floor{dir = 0; icon_state = "whitegreen"},/area/centcom/holding) "MW" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/adv{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/turf/unsimulated/floor{dir = 0; icon_state = "whitegreen"},/area/centcom/holding) "MX" = (/obj/structure/table/standard,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/unsimulated/floor{dir = 6; icon_state = "whitegreen"},/area/centcom/holding) -"MZ" = (/obj/item/robot_parts/l_leg,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"MZ" = (/obj/item/robot_parts/l_leg,/turf/simulated/shuttle/plating,/area/skipjack_station) "Na" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) "Nb" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "Nc" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) @@ -1954,21 +1955,21 @@ "Nk" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Nl" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Nm" = (/obj/machinery/computer/med_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Nn" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"No" = (/obj/machinery/floodlight,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Np" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/crossbow,/obj/item/stack/rods{amount = 10},/obj/machinery/light/small{dir = 8},/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Nn" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/skipjack_station) +"No" = (/obj/machinery/floodlight,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Np" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/crossbow,/obj/item/stack/rods{amount = 10},/obj/machinery/light/small{dir = 8},/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) "Nq" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{dir = 9; icon_state = "whitegreen"},/area/centcom/holding) -"Nr" = (/obj/structure/table/rack,/obj/item/weapon/grenade/empgrenade,/obj/item/weapon/grenade/flashbang,/obj/item/weapon/grenade/spawnergrenade,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Nr" = (/obj/structure/table/rack,/obj/item/weapon/grenade/empgrenade,/obj/item/weapon/grenade/flashbang,/obj/item/weapon/grenade/spawnergrenade,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) "Ns" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "Nt" = (/obj/machinery/sleep_console{icon_state = "sleeperconsole-r"; orient = "RIGHT"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Nu" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Nv" = (/obj/item/robot_parts/robot_suit,/obj/item/robot_parts/r_leg,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"Nu" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Nv" = (/obj/item/robot_parts/robot_suit,/obj/item/robot_parts/r_leg,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/plating,/area/skipjack_station) "Nw" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "Ny" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/holding) -"Nz" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"NA" = (/obj/structure/table/steel,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"NB" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"NC" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Nz" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station) +"NA" = (/obj/structure/table/steel,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"NB" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"NC" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) "ND" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "NE" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) "NF" = (/obj/structure/closet/hydrant{pixel_x = 30; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) @@ -1976,50 +1977,49 @@ "NH" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NI" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "NJ" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"NK" = (/obj/item/weapon/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"NK" = (/obj/item/weapon/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/skipjack_station) "NL" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"NM" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"NM" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/plating,/area/skipjack_station) "NN" = (/obj/machinery/door/airlock/glass_mining{name = "Shuttle Cargo"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"NO" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/weapon/crowbar,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"NO" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/weapon/crowbar,/turf/simulated/shuttle/plating,/area/skipjack_station) "NP" = (/obj/machinery/door/airlock/command{name = "Thunderdome"},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"NQ" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"NQ" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/skipjack_station) "NR" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"NT" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) -"NU" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) +"NT" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station) +"NU" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station) "NV" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"NW" = (/obj/item/weapon/deck,/obj/structure/table/steel,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"NX" = (/obj/machinery/body_scanconsole,/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"NY" = (/obj/machinery/bodyscanner,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"NZ" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"Oa" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Ob" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) +"NW" = (/obj/item/weapon/deck,/obj/structure/table/steel,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"NX" = (/obj/machinery/body_scanconsole,/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) +"NY" = (/obj/machinery/bodyscanner,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) +"NZ" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) +"Oa" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Ob" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/plating,/area/skipjack_station) "Od" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/reagent_containers/food/drinks/cans/beer,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) "Oe" = (/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve) -"Of" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/skipjack/station) -"Og" = (/obj/structure/shuttle/engine/heater,/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station) -"Oh" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"Oi" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/skipjack/station) -"Oj" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/skipjack/station) -"Ok" = (/obj/structure/table/standard,/obj/item/weapon/deck,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) -"Ol" = (/obj/structure/table/standard,/obj/item/weapon/legcuffs,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) -"Om" = (/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"On" = (/obj/structure/table/standard,/obj/item/weapon/circular_saw{pixel_y = 8},/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/obj/item/stack/medical/advanced/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) +"Of" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/skipjack_station) +"Og" = (/obj/structure/shuttle/engine/heater,/turf/simulated/shuttle/plating,/area/skipjack_station) +"Oh" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) +"Oi" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/skipjack_station) +"Oj" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/skipjack_station) +"Ok" = (/obj/structure/table/standard,/obj/item/weapon/deck,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station) +"Ol" = (/obj/structure/table/standard,/obj/item/weapon/legcuffs,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station) +"Om" = (/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"On" = (/obj/structure/table/standard,/obj/item/weapon/circular_saw{pixel_y = 8},/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/obj/item/stack/medical/advanced/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) "Oo" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) "Op" = (/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Oq" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"Or" = (/obj/structure/table/standard,/obj/item/weapon/cautery,/obj/item/weapon/retractor,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"Os" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) -"Ot" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rainbow,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Ou" = (/obj/structure/bed,/obj/item/weapon/bedsheet/hos,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Ov" = (/obj/structure/table/standard,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"Ow" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/skipjack/station) -"Ox" = (/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Oy" = (/obj/structure/bed,/obj/item/weapon/bedsheet/green,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"Oz" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"OA" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/skipjack/station) -"OB" = (/obj/item/pizzabox/meat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"OC" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rd,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) -"OD" = (/obj/structure/bed,/obj/item/weapon/bedsheet/clown,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/skipjack/station) +"Oq" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) +"Os" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station) +"Ot" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rainbow,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Ou" = (/obj/structure/bed,/obj/item/weapon/bedsheet/hos,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Ov" = (/obj/structure/table/standard,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) +"Ow" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station) +"Ox" = (/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Oy" = (/obj/structure/bed,/obj/item/weapon/bedsheet/green,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"Oz" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) +"OA" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station) +"OB" = (/obj/item/pizzabox/meat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"OC" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rd,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) +"OD" = (/obj/structure/bed,/obj/item/weapon/bedsheet/clown,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station) "OE" = (/obj/effect/landmark{name = "tdome2"},/obj/machinery/camera/network/thunder{c_tag = "Thunderdome - Red Team"; invisibility = 101},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "OF" = (/obj/effect/landmark{name = "tdome1"},/obj/machinery/camera/network/thunder{c_tag = "Green Team"; invisibility = 101},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) "OG" = (/obj/machinery/camera/network/thunder{c_tag = "Thunderdome Arena"; invisibility = 101},/turf/simulated/floor/bluegrid,/area/tdome) @@ -2176,7 +2176,7 @@ aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMjHoUqRpeqSpBqSpBqSpepBpBpBqTqUoVoVoVoVoVqVqWqMqMqMqLqvqvqvqvqvqvqvqvqvqLqMqMqMqMqMqMqMqMjNqyqXqYqYqYqYqYqXqAjIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnyrjrjrjrjrjrYnRnRnRrZnRnRnRnRsanBaMaMaMaMaMmAaMaMmBmumumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMjHoUoVpepepepepepepepBpBrhpBqUoVoVoVoVoVqVqWqMqMqMqLqvqvqvqvqvqvqvqqqqpFpFpFpFpFpFpFpFpFpZqyqXsbqYqYqYscqXpZjIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsdrjrjrjsfnHpzshpznHsioKslnRspnHaMaMaMaMaMaMaMaMaMmumumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMjHoUpdpermrnrormrppepBpBpBsqqUoVoVoVoVoVoVpFpFpFpFpFqvqvqsrQrFqsqvrrrspFsrrururvpFrwrxrypZqzqXqYqYqYqYrzsspZjIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHstsusHswsvnHsxnRsDnHsFnHnHnNnHnHaMaMaMaMaMaMaMmAaMmBmumumumumumumumumumumumumumumu -aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMjHoUqeqfrJrJrJrJrJpQpBpBpepepepepepepepgoVpFqIpUpVpFqvqvqsrQsGqsqvqqqqpFrLrLrLrLpFrMrxrNpZqzqXqYqYqYqYqYsIpZjIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsNrjsSsUnHnHnRsJsKnHnHnHsVnRLxnHaMaMaMaMaMaMaMmAmBmBmumumumumumumumumumumumumumumu +aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMjHoUqeqfrJrJrJrJrJpQpBpBpepepepepepepepgoVpFqIpUpVpFqvqvqsrQsGqsqvqqqqpFrLrLrLrLpFrMrxrNpZqzqXqYqYqYqYqYsIpZjIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsNrjsSnHnHnHnRsJsKnHnHnHsVnRLxnHaMaMaMaMaMaMaMmAmBmBmumumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMjHoUqGqfrUrJrJrJrJpepBpBpBpBpBpepBrVrWpeoVpFqopUpUrEqvqvqvqvqvqvqvqvqvpFrLsYsWsWpFpFtqpFpZqzqXqYqYqYqYtDqXpZjIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHtEsXtFnHaMnHsZsZsZnHaMnHnLtatbnHaMaMaMaMaMaMaMmAaMmBaMmumumumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMjHoUqRpepesgtGtGtGpepBtHtHtHpBpQpBsjskpeoVpFpFpFpFpFpFpFtNpFpFpFqvqvqvsmrLsnsnrLrLrLrLsWpZqzqXqYqYqYqYqYsIpZjIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMnHsZsZsZnHaMomtmtntoooaMnHsZsZsZnHaMaMaMaMaMaMaMmAmBmBmBmBmBmumumumumumumumumumumumu aMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMjHoUoVqRperJrJrJrJpepBtHtHtHpBpeqSpepeqHoVpFtXsyszpFsAsBsBsBsCpFqvqvqvqvrLrLrLrLtYrLrLsWpZqzqXqYqYqYqYsEtZpZjIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMmumuaMaMaMomtmtntoooaMaMaMaMaMaMaMomtmtntoooaMaMaMaMaMaMaMmAaMmBaMmBaMaMmumumumumumumumumumumu @@ -2230,12 +2230,12 @@ dCmumumumumuaMaMaMaMaMaMaMaMLaLbLaLaLaLaLaMrMqMqMqMqMqMsLaLaLaLaLaLdLaaMaMaMaMmt dCmumumumumuaMaMaMaMaMaMaMaMLalFMvMyMxMzLaMBMqMqMqMqMqMBLaMDMClvMElGLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMCNLlLWEZEZEZEZEZEZEZEZEHFAFbFbFdFeFfFbFbFBEHFCFDFEFFMGCNDVDVDVDVDVMHFIaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumuaMaMaMaMaMaMaMaMaMaMaMLaMwMIMIMIMJLaLfLeLgMMLfLeLgLaMOMIMIMSMwLaaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHCNCNCNCNCNCNCNCNCNCNCNEHFJFKFKFdFeFfFLFLFMEHMTFOFPFQMUCNFSFTFUMWMVMXCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumuaMaMaMaMaMaMaMaMaMaMaMMpMwMIMIMIMIMMMqMqMqMqMqMqMqMMMIMIMZMIMwMpaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeFeFeFeFeFeFeFeFeFeFeEHEHNbEHEHFeEHEHNbEHEHEHEHEHEHEHCNCNCNCNCNCNCNCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -dCmumumuaMaMaMaMaMaMaMaMaMaMMtNnMINoMIMILaNpMqMqMqMqMqNrLaMINuMINvMwMtaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHEHEHEHNwEHEHEHFeFeFeFeFeFeEHFeEHFeFeFeFeFeFeFeFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +dCmumumuaMaMaMaMaMaMaMaMaMaMMtNnMINoMIMILaNpMqMqMqMqlJNrLaMINuMINvMwMtaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHEHEHEHNwEHEHEHFeFeFeFeFeFeEHFeEHFeFeFeFeFeFeFeFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMaMaMaMaMaMaMMKNnMIMILaNzLaLaLaNBNANCLaLaLaNzLaNMNKNOMKaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGaGbGbGbGbGcEHEHEHEHEHEHEHEHNPEHEHEHEHEHEHEHEHFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMaMaMaMaMaMKSLalHNQNQLaNUNTNUMpNBNWNCMpNYNXNZLaObOalILaKTaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGaGbGbGbGbGcEHGeOdOeOdGhGiGiGiGiGiGhGiGhGiGjEHFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMmumuaMaMaMOfLaOgOgLaLaNUNUNUMtNBNANCMtNZNZOhLaLaOgOgLaOiaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGkGbGbGbGbGlEHGiGmGmGmGmGmGiGiGiGmGmGmGmGnGoEHFeEHEHEHEHEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMmumuaMaMaMaMOfOjOjOiLaOlOkNUMKOmMqOmMKNZNZOnLaOfOjOjOiaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFeEHGkOpOoOoGbGbGrGiGiGsGtGsGiGiGiGiGiGsGtGsGuGiEHFeFeFeFeFeFeFeEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM -dCmumumuaMaMaMaMmumuaMaMaMaMaMaMaMaMLaNUNUNULaLaMMLaLaOqNZOrLaaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHFeEHEHEHEHEHEHEHEHGiGmGmGmGmGmGiGiGiGmGmGmGmGvGiEHEHEHEHEHEHEHFeEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM +dCmumumuaMaMaMaMmumuaMaMaMaMaMaMaMaMLaNUNUNULaLaMMLaLaOqNZlKLaaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHEHFeEHEHEHEHEHEHEHEHGiGmGmGmGmGmGiGiGiGmGmGmGmGvGiEHEHEHEHEHEHEHFeEHEHEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumuaMaMaMaMaMaMaMaMaMaMaMaMaMaMLaNUNUOsLaOtMqOuLaNZNZOvLaaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAFeEHEHzazazazazaEHGxGxGxGxGxGxGxGxGxGxGxGxGxGyGxEHzbzbzbzbzbEHFeFeFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumumuaMaMaMaMaMaMaMaMaMaMaMaMaMLaLaOwNULaOxMqOyLaOAOzLaLaaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHEHEHHgHgHgHgHgEHGBGCGCGCGCGCGCGCGCGCGCGCGCGDGBEHHgHgHgHgHgEHEHEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM dCmumumumumuaMaMaMaMaMaMaMaMaMaMaMaMOfLaLaLaLaOCOBODLaLaLaLaOiaMaMaMaMaMaMaMaMmtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMEHFAEHzjGAGGGGGGGGGGGFGIGCGCGCGCGCGCGCGCGCGCGCGCGDGJGFGKGKGKGKGKGAGwEHFBEHaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM From 887a5154833d4cf1a87379cb0a87762842c10b2a Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 16 Aug 2015 14:39:10 -0400 Subject: [PATCH 14/40] Fixes #10659 --- code/game/objects/structures/girders.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 98947a2dae9..fdc1f13ade7 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -43,6 +43,7 @@ return /obj/structure/girder/proc/reset_girder() + anchored = 1 cover = initial(cover) health = min(health,initial(health)) state = 0 From f09b754a19d84db8aa73516fb15d23a0cd79725f Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 16 Aug 2015 14:55:54 -0400 Subject: [PATCH 15/40] Fixes #10636 --- code/game/objects/structures/window.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 41f7754e988..fc9f5b6a193 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -294,6 +294,10 @@ set category = "Object" set src in oview(1) + // TODO : Change to incapacitated() on merge. + if(usr.stat || usr.lying || usr.resting || usr.buckled) + return 0 + if(anchored) usr << "It is fastened to the floor therefore you can't rotate it!" return 0 @@ -310,6 +314,10 @@ set category = "Object" set src in oview(1) + // TODO : Change to incapacitated() on merge. + if(usr.stat || usr.lying || usr.resting || usr.buckled) + return 0 + if(anchored) usr << "It is fastened to the floor therefore you can't rotate it!" return 0 From 917f6f025036fc5f3793b2a95cdef17b3a96ef27 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Mon, 17 Aug 2015 05:45:34 +0100 Subject: [PATCH 16/40] Add Medical Equipment access to Chemists --- code/game/jobs/job/medical.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 0e79223b186..8de924339dc 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -107,7 +107,7 @@ supervisors = "the chief medical officer" selection_color = "#ffeef0" access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) - minimal_access = list(access_medical, access_chemistry) + minimal_access = list(access_medical, access_medical_equip, access_chemistry) alt_titles = list("Pharmacist") From 438837a9be82aefa353daa281b5e52fa1495b4d9 Mon Sep 17 00:00:00 2001 From: NullSnapshot Date: Sun, 16 Aug 2015 22:46:18 -0700 Subject: [PATCH 17/40] Moves ProcessScheduler list to new Processes tab. --- code/modules/mob/mob.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 6926b9f6264..fb221d3d681 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -645,13 +645,14 @@ if(client.holder) if(statpanel("Status")) statpanel("Status","Location:","([x], [y], [z])") - statpanel("Status","CPU:","[world.cpu]") - statpanel("Status","Instances:","[world.contents.len]") - if(statpanel("Status") && processScheduler && processScheduler.getIsRunning()) - for(var/datum/controller/process/P in processScheduler.processes) - statpanel("Status",P.getStatName(), P.getTickTime()) - else - statpanel("Status","processScheduler is not running.") + if(statpanel("Processes")) + statpanel("Processes","CPU:","[world.cpu]") + statpanel("Processes","Instances:","[world.contents.len]") + if(processScheduler && processScheduler.getIsRunning()) + for(var/datum/controller/process/P in processScheduler.processes) + statpanel("Processes",P.getStatName(), P.getTickTime()) + else + statpanel("Processes","processScheduler is not running.") if(listed_turf && client) if(!TurfAdjacent(listed_turf)) From 9d0c072b4a7aabb2a72cc7faf2e31c733cf24f83 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 17 Aug 2015 08:06:42 +0200 Subject: [PATCH 18/40] Adjusts Bump flags to make ALLMOBS mean all mobs again. --- code/modules/mob/living/bot/ed209bot.dm | 4 ++-- code/modules/mob/living/carbon/human/human_defines.dm | 4 ++-- code/modules/mob/living/carbon/human/species/species.dm | 6 +++--- .../living/carbon/human/species/xenomorphs/alien_species.dm | 4 ++-- code/modules/mob/living/silicon/robot/robot.dm | 2 +- code/setup.dm | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm index 9e50b4ddf71..570e58ec2ee 100644 --- a/code/modules/mob/living/bot/ed209bot.dm +++ b/code/modules/mob/living/bot/ed209bot.dm @@ -13,8 +13,8 @@ a_intent = I_HURT mob_bump_flag = HEAVY - mob_swap_flags = ALLMOBS - mob_push_flags = ALLMOBS|HEAVY + mob_swap_flags = ~HEAVY + mob_push_flags = HEAVY var/shot_delay = 4 var/last_shot = 0 diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 4546fab0507..7577fbb8f59 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -84,5 +84,5 @@ var/list/flavor_texts = list() mob_bump_flag = HUMAN - mob_push_flags = ALLMOBS - mob_swap_flags = ALLMOBS + mob_push_flags = ~HEAVY + mob_swap_flags = ~HEAVY diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 4b1b5bf2940..3ec44eca6d7 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -132,9 +132,9 @@ ) // Bump vars - var/bump_flag = HUMAN // What are we considered to be when bumped? - var/push_flags = ALLMOBS // What can we push? - var/swap_flags = ALLMOBS // What can we swap place with? + var/bump_flag = HUMAN // What are we considered to be when bumped? + var/push_flags = ~HEAVY // What can we push? + var/swap_flags = ~HEAVY // What can we swap place with? /datum/species/New() if(hud_type) diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm index b48593796f4..52410c5fc64 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm @@ -53,8 +53,8 @@ ) bump_flag = ALIEN - swap_flags = ALLMOBS - push_flags = ALLMOBS ^ ROBOT + swap_flags = ~HEAVY + push_flags = (~HEAVY) ^ ROBOT var/alien_number = 0 var/caste_name = "creature" // Used to update alien name. diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 592e6f3be54..7587eb9f449 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -10,7 +10,7 @@ mob_bump_flag = ROBOT mob_swap_flags = ROBOT|MONKEY|SLIME|SIMPLE_ANIMAL - mob_push_flags = ALLMOBS //trundle trundle + mob_push_flags = ~HEAVY //trundle trundle var/lights_on = 0 // Is our integrated light on? var/used_power_this_tick = 0 diff --git a/code/setup.dm b/code/setup.dm index a8eac57b7e6..07a53f51f1f 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -865,7 +865,7 @@ var/list/be_special_flags = list( #define SIMPLE_ANIMAL 32 #define HEAVY 64 -#define ALLMOBS (HUMAN|MONKEY|ALIEN|ROBOT|SLIME|SIMPLE_ANIMAL) +#define ALLMOBS (HUMAN|MONKEY|ALIEN|ROBOT|SLIME|SIMPLE_ANIMAL|HEAVY) #define NEXT_MOVE_DELAY 8 From e99f98e13fcefe2759e480d7d4531a5c8cc47847 Mon Sep 17 00:00:00 2001 From: NullSnapshot Date: Sun, 16 Aug 2015 23:24:25 -0700 Subject: [PATCH 19/40] No need for the statpanels. --- code/modules/mob/mob.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index fb221d3d681..93ffec00cc3 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -639,20 +639,20 @@ if(.) if(statpanel("Status") && ticker && ticker.current_state != GAME_STATE_PREGAME) - statpanel("Status", "Station Time", worldtime2text()) - statpanel("Status", "Round Duration", round_duration()) + stat("Station Time", worldtime2text()) + stat("Round Duration", round_duration()) if(client.holder) if(statpanel("Status")) - statpanel("Status","Location:","([x], [y], [z])") + stat("Location:","([x], [y], [z])") if(statpanel("Processes")) - statpanel("Processes","CPU:","[world.cpu]") - statpanel("Processes","Instances:","[world.contents.len]") + stat("CPU:","[world.cpu]") + stat("Instances:","[world.contents.len]") if(processScheduler && processScheduler.getIsRunning()) for(var/datum/controller/process/P in processScheduler.processes) - statpanel("Processes",P.getStatName(), P.getTickTime()) + stat(P.getStatName(), P.getTickTime()) else - statpanel("Processes","processScheduler is not running.") + stat("processScheduler is not running.") if(listed_turf && client) if(!TurfAdjacent(listed_turf)) From 73088ca1e7feda9c6af88becd8521376f2374a10 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 17 Aug 2015 09:27:08 +0200 Subject: [PATCH 20/40] Adds 48x48 option to dropdown menu. Port of https://github.com/ParadiseSS13/Paradise/pull/1733. --- interface/skin.dmf | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/interface/skin.dmf b/interface/skin.dmf index 68acfba6077..8e74d9d3cfc 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -996,7 +996,7 @@ menu "menu" is-disabled = false saved-params = "is-checked" elem "icon64" - name = "&64x64 (2x)" + name = "&64x64" command = ".winset \"mapwindow.map.icon-size=64\"" category = "&Icons" is-checked = false @@ -1004,6 +1004,15 @@ menu "menu" group = "size" is-disabled = false saved-params = "is-checked" + elem "icon32" + name = "&48x48" + command = ".winset \"mapwindow.map.icon-size=48\"" + category = "&Icons" + is-checked = false + can-check = true + group = "size" + is-disabled = false + saved-params = "is-checked" elem "icon32" name = "&32x32" command = ".winset \"mapwindow.map.icon-size=32\"" From 3f1a974ac8ac5f010a27092c2c336fcf31e356b7 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 17 Aug 2015 09:31:33 +0200 Subject: [PATCH 21/40] Updates changelog. --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/PsiOmegaDelta-RoundDuration.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/PsiOmegaDelta-RoundDuration.yml diff --git a/html/changelog.html b/html/changelog.html index 8669a8d5f39..27a4a947042 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
    +

    17 August 2015

    +

    PsiOmegaDelta updated:

    +
      +
    • Station time and duration now available in the Status tab.
    • +
    +

    11 August 2015

    PsiOmegaDelta updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index c045fb359b7..01630a63219 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1996,3 +1996,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: Crew monitors now update every 5th second instead of every other. Reduces lag and gives antags a larger window of opportunity to disable suit sensors if they have to harm someone. +2015-08-17: + PsiOmegaDelta: + - rscadd: Station time and duration now available in the Status tab. diff --git a/html/changelogs/PsiOmegaDelta-RoundDuration.yml b/html/changelogs/PsiOmegaDelta-RoundDuration.yml deleted file mode 100644 index 358c5cc4be4..00000000000 --- a/html/changelogs/PsiOmegaDelta-RoundDuration.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: PsiOmegaDelta -delete-after: True -changes: - - rscadd: "Station time and duration now available in the Status tab." From 9c08b585343c8d830a12b8f2d5e75ac3a2a6412f Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 17 Aug 2015 09:38:34 +0200 Subject: [PATCH 22/40] Code relocation. --- code/__defines/mobs.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index e4e406d219a..63f52544020 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -58,7 +58,8 @@ #define ROBOT 8 #define SLIME 16 #define SIMPLE_ANIMAL 32 -#define ALLMOBS (HUMAN|MONKEY|ALIEN|ROBOT|SLIME|SIMPLE_ANIMAL) +#define HEAVY 64 +#define ALLMOBS (HUMAN|MONKEY|ALIEN|ROBOT|SLIME|SIMPLE_ANIMAL|HEAVY) #define NEXT_MOVE_DELAY 8 From a0b2b8b28e37ac65eb00c04a58328c4c3ad866c7 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 17 Aug 2015 09:44:54 +0200 Subject: [PATCH 23/40] Updates changelog. --- html/changelog.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 767ca4fb1d7..6bb421ba780 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
      +

      17 August 2015

      +

      PsiOmegaDelta updated:

      +
        +
      • Station time and duration now available in the Status tab.
      • +
      +

      16 August 2015

      HarpyEagle updated:

        @@ -107,10 +113,6 @@

        Orelbon updated:

        • Changed the HoP's suit to more bibrant colors and hopefully you will like it.
        • -

          17 August 2015

          -

          PsiOmegaDelta updated:

          -
            -
          • Station time and duration now available in the Status tab.

          11 August 2015

          From edebf946d8c59bb82e912ff51a627222c81b09ce Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 17 Aug 2015 10:16:39 +0200 Subject: [PATCH 24/40] Harm icon state consistency. All icon states relating to the I_HARM intent now all use the same naming convention. --- code/_onclick/hud/monkey.dm | 10 +++++----- code/_onclick/hud/robot.dm | 2 +- code/setup.dm | 2 +- icons/mob/screen1_Midnight.dmi | Bin 141941 -> 141939 bytes icons/mob/screen1_Orange.dmi | Bin 140369 -> 140367 bytes icons/mob/screen1_White.dmi | Bin 128151 -> 128149 bytes icons/mob/screen1_old.dmi | Bin 114081 -> 114079 bytes 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 7314e8692d0..a7564246acd 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -10,7 +10,7 @@ using.name = "act_intent" using.set_dir(SOUTHWEST) using.icon = ui_style - using.icon_state = (mymob.a_intent == I_HURT ? I_HURT : mymob.a_intent) + using.icon_state = mymob.a_intent using.screen_loc = ui_acti using.layer = 20 src.adding += using @@ -23,7 +23,7 @@ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) ico.DrawBox(rgb(255,255,255,1),1,ico.Height()/2,ico.Width()/2,ico.Height()) using = new /obj/screen( src ) - using.name = "help" + using.name = I_HELP using.icon = ico using.screen_loc = ui_acti using.layer = 21 @@ -34,7 +34,7 @@ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,ico.Height()/2,ico.Width(),ico.Height()) using = new /obj/screen( src ) - using.name = "disarm" + using.name = I_DISARM using.icon = ico using.screen_loc = ui_acti using.layer = 21 @@ -45,7 +45,7 @@ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,1,ico.Width(),ico.Height()/2) using = new /obj/screen( src ) - using.name = "grab" + using.name = I_GRAB using.icon = ico using.screen_loc = ui_acti using.layer = 21 @@ -56,7 +56,7 @@ ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1) ico.DrawBox(rgb(255,255,255,1),1,1,ico.Width()/2,ico.Height()/2) using = new /obj/screen( src ) - using.name = "harm" + using.name = I_HURT using.icon = ico using.screen_loc = ui_acti using.layer = 21 diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index e5e05aa718c..7441ac56095 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -57,7 +57,7 @@ var/obj/screen/robot_inventory using.name = "act_intent" using.set_dir(SOUTHWEST) using.icon = 'icons/mob/screen1_robot.dmi' - using.icon_state = (mymob.a_intent == I_HURT ? I_HURT : mymob.a_intent) + using.icon_state = mymob.a_intent using.screen_loc = ui_acti using.layer = 20 src.adding += using diff --git a/code/setup.dm b/code/setup.dm index 07a53f51f1f..635214c4905 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -852,7 +852,7 @@ var/list/be_special_flags = list( #define I_HELP "help" #define I_DISARM "disarm" #define I_GRAB "grab" -#define I_HURT "hurt" +#define I_HURT "harm" /* These are used Bump() code for living mobs, in the mob_bump_flag, mob_swap_flags, and mob_push_flags vars to determine whom can bump/swap with whom. diff --git a/icons/mob/screen1_Midnight.dmi b/icons/mob/screen1_Midnight.dmi index 1952b1ea199dfe64c793a6722f6c4dac0d995437..7316c3dcac153efd08f03f391e5f4679a5c9ca95 100644 GIT binary patch delta 789 zcmV+w1M2+s)Clv`2#_Ry-+EM7bVOxyV{&P5bZKvH004NLrI*2S;xG(`&&gAG+vA2^ z5}@scOQ)Tk9@XN0DuZyBL!={rVf+Q<#}E@6^QPM3^$UXFNfj(C2KzThY? z2inds1hef7Lo8*5rH7ycvQVtO+mvp(970k7x`UQoYZdx7QwTB!u}zmF^Q5^F(h4DMc2@l zCTJtld$&1H&E5+v-wRt-q=|=(w(65iT3Sq(Mus{{B{$Y^}Vc#WR3`3LPgFG6cpkL3$ce8f)+~ zTD2FZ^M1#Fh^=Ovz{|w~6qlpx`vCr=Ne|jCov$L(N00o$NB3#)d##Nb!bW;ke*(&i ztcZz3&r;;vlMj~8+u71%gOYxo7k4b~hMshl^y>*NrOJ1!RV3w#+s|S;=sRgsMOGC3 zHf5a-vH5iT&5bX()O(p3(^tjVIAL71X4KI}nzgonE4ny3YdM_l&}-Dr(z0C!x+ zbY>h;I(3gIotCYK5IW9d`;BDG??-gttN(2se}{n^Xp3O6lnl)}psbd7V40oqK(iX; zn-?6r|D1&~0DUxsrZv&WXr5k+$Cn53@cfki2R^JJ|CK-iJOBV707*naRCt{1y?K}$ T)tN4XAOnXW0|B=n0|HeiUEzjc delta 789 zcmV+w1M2+q)Cl#|2#_Ry;d)e9bVOxyV{&P5bZKvH004NLrI*2S;xG(`&*Uk*?Qz2{ z3DEY!rPIz%58YQ_Oe}~8$Ii-1fqnWt(9+OiB)XFe%zTz*S^6bktNX`aPruc}^HcT$ z7;W%srY1i|*x!4h=?``-t^dII#? zjl^UjCd<=gnGFm$y;Cza&8P3nmKK3`V`&i*E}S!*@TF%sYWt8@|(FCXA$-B?x zbd(o)k@ph3K0-Ivwi-H99Khk6$lu=Vz>x=dGOjdLseV zfcO05K(!ztRxZ3iWU*KW0aa^k1ijDk*=KB&*jl0H#WR9~ih?8-I!3`UK_d?tOEut> zSM7!C5O;!q*jm8}P%jo>q#R%0ui$r{M6iAtuu4oHJ@T6z-KW9NwRP?iHqop46Hs2} zWlAJ^mJ;V4f3S4g&Xyk=jK+0Q-if#ye$q7>*JEBv4R)(lBIU~4&tiJfchsiJye#`| z$_E=$^Xce6H$LN1?`7s(Ulmj1gbUSLP)8f>*4D3o_~PiimvFu#v}A+lW#fSIrFlU4 z%s8NY>K;%&En9>bJIQ1FjTFr92lT>M|JyqG4i|1boD90P|O0|B=j0|Hkk1?z>q diff --git a/icons/mob/screen1_Orange.dmi b/icons/mob/screen1_Orange.dmi index 772a62386c974caddea41d8b36582948e34fe7f6..c5824e67908f88a99b09fedf8c6938832f8237c0 100644 GIT binary patch delta 796 zcmV+%1LOSB$OzBK2#_QJT9G9;0!b*5ULb$Kd1Z}Qh}pMEFj}b`OR*5sI2e_nmL+a~ zJW2$y5H~l$C|Aylg?I=?g_AXSu@KP#NM%;F4T&j(;EdFh0~uW=BQ_bIC*xq0gO(ey z5c6<;W`e}(oIeSRE|dd0#6mgf39rxTLOJM(vt!tn?wEmzp0k zL$uAvVH}Jctdz+=@O_E3|fEOh#Hj#6^LN_^SMx$j`vYXC-(ao~}ryar&@ zA_pF6%3{e-^itb5@U&;8Wl*JbHKU!-wBU2)IkuKg(uKx@h72udEu{C1FcIoT_x2>+ z3@#mQEmv5Ao73t@b?e-Qu?c^Q5vr4E3UnUZakScY;8%`%l_{*t=;iyuN4I+UUMa1I zusx-{+g65g822Txj-{Tsrze&^lL*&z$CgW1MezfRyQA+SxpdW(E(W=4m&+bu#`hn~ z!JzM`Y{y|7cgwc1%J*FjCZC-6f=iu80Ij=8wy#IiHmew?%_k>ywWmaJC}gJ0k~FuH zy5exIHHO3GkXfw^-O=qY0jvju$LHTaNXWG46e?@zJh?~dT(n1NksqwGf;w0phSO(! zkJ9J2ao~NEJp&jrgNbAmj2+5qTy`w8f7#KjHs;+6j@^IOK;nT8jc9pp#q+Nx@$~u< a{09_@T^s&`FqDId1BZzN0k??*0>~gND2sjo delta 798 zcmV+(1L6G7$OzHM2#_QJT#+R=0zoQ~ULbz}ow7zO#O&K77_C(9OR*5sI2e_nmZjhR zI4?bjg}Av1M!7;K7UCfo6)0Z zA?D%y%mj(mIe!usT_^-P#6ltTgxBYEp%8lF>=?G|4Lv&>VnuA%n}MNtyQb&&cFljA z-`h2j0a@xT`3Kt${ayGfy>M%C!2i19HV4OlhcQPO%t>ciP(Q#=q@!s zWQJ&)k;6C`A*__iKje2qXMjRWSN2eoqbzj#b&gVU!AgAD%DL}g*=YbqkwI{trkn;~ z)FK4uY0CPNq3ETyZ{TRpO3R>1i8Z60(6r!lsacEdwOE&Gl_6bcWk-DDvBRi+#P)v$t6}(x)|ixE|)#RjPE~| zgF)X>*^a|F?v`z1mFv42Og=gB1(!OH09tpGY+sM2ZB{W(n@djWYEMMtP{>S~C24LY zb;aSZHHO3GkXfw^-O=qY0jvju$LHTaNXWDvl~>l#d2)}^xoD5lB0pGV1$D4I45!cd z9;MH3gWz0~Jp&jt;}gj!7(0~Jxa?SF|FWZ5ZOpqDEz;N5f7U?afDVmld2Yq?uP5>J c`V#yHAnsi@BSmclgNFl$hXVn(hXVr0AdjSd6aWAK diff --git a/icons/mob/screen1_White.dmi b/icons/mob/screen1_White.dmi index 4b0a1a4a0739087dae12073af866bf1466fbdb49..0c852e859ea0fa92efb4590381d4be636088eb1c 100644 GIT binary patch delta 788 zcmV+v1MB>k=?9hR2aqIx^LkWRbVOxyV{&P5bZKvH004NLrI*2Sqc9AH&+ru9_PAs> zkfiM;mrgr7J+!aDIG}(h#%5*HkbU|+q)kYRk=+iLWaj&2Vf~WLHM@WO^Yp?Vo}c1Z zKqItbYqtC~kE6XPZOztfk;PFBqN?rjkFneWTeGXHI4T7iwq|L69Bq*|aQuA>CB& z%egn1dXw2WnZ;2Fk{{Tbt&-JQwiO6;8e4(jNMS0lBbPy7-5==Hb$BY5G7ZX_>ueiT=t;TFc>@HCru&gp?udmY()WmSipq4k9_;d+{OCc$}UdktN4nn%#MEH}t7qa@;NGMlG?cDuCdx%N~b`FI^$0 zZ$9r?_{42H=MYQdNNU|)^1QG)f)U0BifoN~pX;rEWA;)y6(}oFJ4-MkDL`3pp2vt1p#~|^(&YFfvI&6KV{i5e4@`r@aa|?d*6v}8{Hmm zOwjuR$FS`YA?4b0xf7}iP++H2nBt#SkQ;E0#u15yrj^c5?lit;k1r4G;rS{454KKQ S40H4X#WI5;1Ggdr0d?{1j)g7& delta 790 zcmV+x1L^#g=?9nT2aqIx^?FoTbVOxyV{&P5bZKvH004NLrI*ce+At8u&-PQO$+4!z z29jL3WRmIRki3FN*bCAiOYTYz(5LT#1WaOirDS}8ncsi4+Am4h?Edl3(+hieeo9{f ztu&e~+5FcuO?I+&f-TvsND~2aBi!+ib=(14va72!sU=#rWOKhUe2{ULI3XZEyNXZCbh z1#smAZS2T}+M@$=~pc0 zW_gxp{epm|4JaFbXj(eY4w{zEvV*3jbL^mLJsIvLVV2Dvf-d8g>JSekwn4sHK^@A`1K|z)Ns|atuMJk7N!ufTgrl{z z9Gl-;sZ{;W(-I3G?uKh=2w`wm z(|CHgWX$t&%yVjU?3BVhJ?XNKy%4+~d&v4+8rYtrLMc3NCf~P%eEQ4yKYZ+}{ z(}FLR=h&*9q#J?<4Fy`xw~*d5!bE609h@D8l~y|1TB)!BH>cH+>)yFH#vv$1s7~fN z&~1I&6zODnpOm9E7gNvSM)L8VLMX?Y`8mH-S5;s=)&I z;>KrO8eG=39v0cqETwI+WMrGqj{0g~aHwRVOih|wNxkH7t~Z9ml~83^tqeU)?S^&M z#s2>B&o2@(JvxQT8oEyIP`VcFP+H`BtE`~*mM_EU9N(dI{&o($?>RrJb|lN&cbai? z+@Tl#yL(^9-{BKK2MuPD(J;0sYjD}J%=u+Yv&NWrFF1DpSp%5|lV1ZD2$AtjK;)mq N3WI(Fw|)ZwBf9=AeFOji delta 785 zcmV+s1Md8v`v#%=29P8HQIRDz0=g2BTp@p;Q`U%unEjYUqm?RsBNk$sMxzE)-T2Lm z^U{M@h^wn;R4R00A?~74g|Y=F79!aLxh$4_M`Fr&KqK{JPbTNdgiWTW$ut_3pyiub zhk3Ly~Zz_4Av(Yv!DR>XGwc3~*quIc@~UGsnT z_jXMyrR%kx$Og3EZ4GF@+fIkD?OZsXZz67`6N!_Bpxae+KwS?XggXC9@>r;gNL@GrQo6M0zw#^ z)ijXi;6S8SP0HK0|QIc^2v$w5!Zk)g`oH z!6n*`1mSP5=sunwWYR3qGfNW5L3%!{`PF zP+(J8`0VH~&X{Ag7HLX4N!K(%86!pF zIj9!L&p`6o87t{|E2o~lWv2lc%>co9nsOR|(K8U7rzz_jhN5e2U%}CyHI_j&5?e;w z*R1I%3U)KR)rnev4!9`CrYOHsi^B&o2@(y+`GhHFTZap>!?Up|r^NR#`#qEnkMyIle>b{Ou5&>p4HFb|lN&cbai? z+@Tl#yL(^9-{BKK2aV4pqhV}O*5I;bne)q*W{olLUi3&`GyhownFEtu0~ZLP>r7iR PVWhu Date: Mon, 17 Aug 2015 09:29:22 +0200 Subject: [PATCH 25/40] Changelog entry. --- html/changelogs/PsiOmegaDelta-48by48.yml | 4 ++++ html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml | 3 --- interface/skin.dmf | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 html/changelogs/PsiOmegaDelta-48by48.yml delete mode 100644 html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml diff --git a/html/changelogs/PsiOmegaDelta-48by48.yml b/html/changelogs/PsiOmegaDelta-48by48.yml new file mode 100644 index 00000000000..7ee353a2839 --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-48by48.yml @@ -0,0 +1,4 @@ +author: PsiOmegaDelta +delete-after: true +changes: + - rscadd: "Adds the option to set the icon size to 48x48, found under the Icons menu, along with 32x32, 64x64, and stretch to fit." \ No newline at end of file diff --git a/html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml b/html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml deleted file mode 100644 index 6fdea55f549..00000000000 --- a/html/changelogs/PsiOmegaDelta-MoneyMoneyMoney.yml +++ /dev/null @@ -1,3 +0,0 @@ -author: PsiOmegaDelta -changes: [] -delete-after: false diff --git a/interface/skin.dmf b/interface/skin.dmf index 8e74d9d3cfc..08959c3994b 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -1004,7 +1004,7 @@ menu "menu" group = "size" is-disabled = false saved-params = "is-checked" - elem "icon32" + elem "icon48" name = "&48x48" command = ".winset \"mapwindow.map.icon-size=48\"" category = "&Icons" From 4cc31d10d9a48f48ebfd1e726ea995c20c62c9f5 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Mon, 17 Aug 2015 10:31:29 +0100 Subject: [PATCH 26/40] Remove Sabess's custom item from code, it's been replaced with an entry in the new system. --- .../clothing/under/accessories/lockets.dm | 14 +++++++------- icons/obj/clothing/ties.dmi | Bin 11017 -> 9967 bytes 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/clothing/under/accessories/lockets.dm b/code/modules/clothing/under/accessories/lockets.dm index d5fa21c0aa7..2aaa6750e5c 100644 --- a/code/modules/clothing/under/accessories/lockets.dm +++ b/code/modules/clothing/under/accessories/lockets.dm @@ -10,14 +10,14 @@ var/open var/obj/item/held //Item inside locket. -/obj/item/clothing/accessory/locket/heart - name = "heart-shaped locket" - desc = " A silver, heart-shaped locket. It flips open to reveal two pictures, one of a young red-headed woman and one of a brunette of similar age. Small writing is etched onto the back, reading 'M+L'. Some may regard it as cheesy." - icon_state = "heartlocket" - /obj/item/clothing/accessory/locket/attack_self(mob/user as mob) if(!base_icon) base_icon = icon_state + + if(!("[base_icon]_open" in icon_states(icon))) + user << "\The [src] doesn't seem to open." + return + open = !open user << "You flip \the [src] [open?"open":"closed"]." if(open) @@ -36,11 +36,11 @@ if(istype(O,/obj/item/weapon/paper) || istype(O, /obj/item/weapon/photo)) if(held) - usr << "[src] already has something inside it." + usr << "\The [src] already has something inside it." else usr << "You slip [O] into [src]." user.drop_item() O.loc = src src.held = O return - ..() \ No newline at end of file + ..() diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi index 357c32e5e5884289d3f583dea9164d3439934122..7ea52eaf5d8f99f4351be54fd961d82e2fa63f20 100644 GIT binary patch literal 9967 zcmb7KRa6|owjEr9ORx|;1cv~@-2%bgCAhmYXmEG8;1*zT83;~rmjrhh++pBN?)`W_ z@8|Ve)zz!Jy1I_kIlFdsq_U#S8+1~1008htPF7MCR`TV!Wy4bf48!gtWWf2&Wz(ZT$%EbaS< z#oA72%7gB8|M*OMckbMM&3jPWrJLYdfXLDbey84utS1OM_fU-;+VER`*LDy*^=qP^ zM7}52#%=?XgLf-~qLFhboqD)E?7JLuAHFUVsr8E`+WG zHMDs?JVt31U%tYZpw*c5tGA>cnP%h|YZqH+@t!g6Q4hOGnTfk-IP~fx_kkAl{!Wz- zb@bDb*yn!B1&*XAw!YiVal7cXRm`~BOITlc|tO>xCoCGA~uiZd1H= z^$O)UQn)P|LIK>thF&@=kU#+7JwQ%UOx-I7lI!cGe$#d)Vrwz3z?uF>ArKMudp0V% z_IZRVouNlfx&gN~s%eS2R<+FCA<T<*|@GwrUENhX6joD|2&4t>W3QcV}nd@@Yz#G&3cl@ z*;;I*T&XF^F$OyaiM#?_#vZV$*c`%A0nEiW%gr-+fQ5=n6cbT@O_F})W zlWfemLiqCg35!I5V^tR-HVbCSpWaeot#hf9ru(#m;)r^lDbXVsn+pS@w^pmXB&2;@ zqWx?Mo!uPxK?xG~KYB7EjngE&S-_(Ny_UFrhy~KX1HxXbqW@M6u(o3Y&BbnpZmrmoFCmSlH5vEOdAbT6~%o>3zWkDbwMuzI5rHJXMg%P*vl${ zG7-G*(ch#H8_9n@1-guNd7ddoL%px|B8z3>Zw0jejpDnBu{JVJ8*8;9TJ);8mH~Ib znKQEkMq4B6fRK0GCIl|s>3x{JHat;fmjSusr5T#`Kb7R@x0pbJY6M0Hp0($P95r%Y zpmznQ>>%kBaq7W^TQ7*fX)11rU03;k6-&yWz&HpXtqitdl^3`aAsQ#0+}fS@>6#o z-M6r69^Kl6YULUzJwK^a2e7{-$mVrKHvZf0Zpw}uLuB(F?q}Bxa^W#}%8_j5%Aa9N z`@v&8V7pp`{i46B9)eDvcVFc3hpyv{q#25f_I~YRe(hb;(2&&@g%Jdz;_EjP)~#e@ zo+g1Cq`T-COG_m2akzoGva(XU;Tsy4<;1tEz44H!o|x;37N_4Uq6LzUFZEmY9h4YIQ~tr^Rppg6hoE-%()|M(x1 z@CX#iV|>X+NU9X;FslPJ%OuO?NH$fZHtyc>g2GXZ6>G@=jCM3zs?uH>xGv|h?cK@CyCk~aI7H&q;}*df6zKHYIu4l$Mo9kdN>KFysC=B z_Lnkt{{kiLK9qD1NO!Vw^_jD$3Qzde9Pnn{EwTKit|&^3FtD3~eFn4O66Q3~LDUb8 zlftWI{5ZfdzD!pv$MvX?pTIH;`R>71_O_kH$AuZgyCOfQTzJUBl2h~Z`r=U%kR9ImSA`PrYQ zD_-a}1JS>@>*#r4U;q{r%~N735!6c_0}er4maN7C?M= zEnDUj-rU>(Qc_ah?mdgQ&0+3Q(%Smj#6p(gqKo5WZ#xhDcveCKP23K@wCQXh{c6~_m4Gj`I)hdiASUW+ zs94&l3B%=+3Rh5j?veKxrg74z$U(Tdpo-~;m&1O7K)KPFTiKtu8Sv~QR%1_MS`R)8q7>_S_C=m(_F_=|?$Ps|d^HqeSp}i6fn= zJF*1~y$76Ryj)(tZ05W-yVI`ks7Cb14bH{YjdQ6e}LFX!NGwQU|5$vTc%_?l$x4K0uuH+gSH;` zQ~y9&fP2qlZ_((cEO46ickoYhYgvQp*u*IOduBxMh9uF|zEM)f?uZ6)&96%Fx0wY8 zU1457;M?w29V19u7L?gNDK)c0b4uonJ5~vwdM8j{=*Ql~b-@>a zKm-TJ&r(uSpL0h!Z}90A4z5UJrLC>43xEE^QLbdEh}al`GNm4^A!Z^NfH#F!kM*;= zf^F|FBOnZPfej6ua`{Ne{PdZw^nG+4p7M{(>{A?v4J|M&rYu1eQp{bs@~@R0jn+<5W9|`2i?uhgK{&1=F?(P z_osCY#BFa>e+6NoTlg#Vo;2=E_z?rLXM+bSzeQB*mt@WTB^~5qO~A+pFRLagmr$=0JV z;_sak40m+|d3XY+revFWA6(Lqs{V@8zAfo6$D0@ER#?gpfyw=?o=S&8Qo=x16D4UN zDnc3u*PIX%8T}%Aq0w4#uRN5krp%%b05yrkaRSl_Ib%(F)lhUaXW2rubY6^GIMvL4C3}Ll4 zy?A{jDLh4mFzhSets51U2@x$zj6Tqa?NYtb@t);t0ip%PvD0b2W~P}*tgd%>*0o+u z2w2Q?n{AS&r1imyjGe5x=7p~tkKSW$*Pv`Xydjm3s3n`LI->49c(u#t$S3KmB4Q!UzY0!RkZcttckIXSaid=Jm5XGS*=8 z1(!np7X}n#Q>stRJ!4g-D4-H0M1WNLTHc;h#)5LhcVir7&c3k|JC;kzlcOztcG<|k ziUb)aPE+KVE<8B0?HKCzD4!XwSMGSjF7mObmkX9Av-dWNbe45@>ik=hCtSq@={zFD zC)81Z&_e{oj){vcu92JW1G1ivmXmoU&CO|9S)`(oW6{KH3)E-Fb>NASWQI%*GvsNj zls4CWm&a@CxOYNXZp2pYCnBykED%e0geVbnxIpUQdOXp6xm|xV`5e?4T0p9#H~{q6 z`4KtrNP9Ww#4c@j505Cgi-LmY=v9dpF)%HjP_ObWAWKA*(|KB-!F+Ka?+x0^Q@*3p z%EJw9_>1oNE;O9QjX! zh13!8FI;u1p~fK80#9auu^2Pzr|>>dxVR*oP7>-6Da^xCnWMw7{klQ1SXKU;0DR&> zA5+s1!ude%53ZnnUmaht^GGQD^bMl@;Amg-mgKdlo=g zSQsoO-JUEbH&2@spTM#OEa|%(Oi{61GWh(3P3ukg13|PrlCE7JTrUgb2*CBhK!RC) z0$DnRaKuf@TW)S~He}y8DY64q>u1q=$GJJwE-oSh0xN{CAAN66;G~5w1xRm`CjdTM zRiegr+_L#_*VG4#MC{rCA9W5;xK9~*%wW!YLJiEroXZ5vO0LQ(^$_Pc$51FPcksKD{!y%Y?&`6MTD)~*8R>1hW3-#7^drwFjCYyMLtQb`8Xju#`#7V7XNQr{56 z;Fla%;S|?_Z?TSx4r67XNK-(rwu{c8G9^huie-rKYYDIE@%Fy!5R+EiWA&JbkY5L& zb=cancW}A`NxAXWZ!91$7s)fG77B^~INNjfpt8RF6Ct$>-_pb7IGR+fR={@ZZY04C zd8zH$puX-hM|(r(*Zc#p4^%C`q~)zx9?YIaL-tW})>A90gpTize%fSCCv#SJhbrvJ zpO*>rX^>-yb~}4`cHM~O#DLBxh#sT5SPb$!O9h0CF<#Iuzt!Uu6#C>~_$gZEUHjzJ z*+#|9asP8>^1&ratM`aqo-SDNPvAf=YVA@9RkL$s7AtXjIWxX&>_9- z-X6Qq{CC|3Kd6Ig1ehe96JxiicliJwI@GI$%<|d^OxqDP^EwG+^P_+wT&pwm z^7*a-j@v|s7jNz`T7D<8sv)>k*2ZS1kL|recfG)i>TlHn0_k8T`sFf}Z`m<26GJRa z>z!YZUgP;$6pN^{-%Wol^rt2o`I43rD>G3na8fMfmlt_EB4_X?@eN_o+_v%MC$eV^ zrwiWH1KUP9FPDZ*yn~YnWh2UO3;B&sIU3~C6ivoW+QZE{!`LHkVZT0khG(A0oucqJ zG>WGvx+v>^D}Jv4#6#N~DJthL}grlpJLMQi?a8MAm6GM*Dr= zffRuFSFb2kk=ESM_1Tul>i|n~*kj3gi3KrOW&Gi06;QLrj?~6kn9!5zST;{q+9880 z^C2e(>UBL)w@+#4%Va{My<4&GDeqGslLDJwN|-x4*?GPyK0Ad^{e{Jr#4uR@WL#t> z9o150sa-cRRfpT@`p{vjqR8icDYZn4!pawJd}4xek!a+cPD|uoq)Cf7^M}Pr19jaO|XL|Hy_2(0!OF^D?gedXA^~KL1sMkOLop8Tpi3W-+b-U(5!xBGA zXgL32MUmzc=`j)({0*CdA>H)yU`+OrTF~XOkK%>3sE(IgWpT{%X&3<7Ao~7j$ix{> z{J|Mg?=L(pCjawYd=84JR;!tI?8b~Xcgf&t-v}23FgE;qD~g${+bKo#bCg8$MiR?C zY0>bjmeaIj4d^zsew2N_$ZeKe5mQBrq@Y0g`E5IA9FQsok!pi={vYjE_-sw_kA{$!W<4)cTkNyBTZ5X6)sR z?^GYo-Q-Yz2tMI|B~_#N!rNzeCq8~bL1ga#K6|H!mCp)oA(^G)0JCK~@v8hxMcw3`0?ZYp5|bPLFxzwrT}vVg#Bp=cC>@@4nHGgx0CCC;2CdUC!iovL zjf55j`xpUQzS28Ue|Z6q>8TqrR!5k!?D;Jf zTRsnB27kq3fTvPua{ld)KS-4e+qMEJ?}Zl`-yBUHb;q0j=1KL!YoSyvtkv;r>U2gf(z@&6=oK5lwIlnCa1oykjkc?E)xec;#!Se@_Wfuz@dHj7sF z%Gb6Z;zJ87d8IXg>T^N0lDGjs{X;lTN^s}v0fE2&ydngq8PlvOGpSGyCn;!u_)GDQ z4<$Qge5e~7=XEZ>3yVJEFBKWc5{OA*GzngJ?_x({|4c&^7&+oK*h%^S zV9x$au)Pg#Sr5>go12S()xL8JP!19yRYMY1{PKzl+(kp*8boDHO=%dh^?`|riy_@W zG=sz#$Hvz7sgsR~DS1r6$;1TR7^k-DR=1+GR2oymf-`^vi5)Srs5=vlm0ST1GelAa zIGVy}=FUfNO-lz?tT8xw8q9WpmpFd0j^X}Gs+2&{8jQrl+H7%Fo{r5VP2U!bGcNW^{=;)97F@R!K z>i(GyOX=r^@;BETAl`^f+h)gP8w8>1`?qAQLvLP|lJ=sBzX_0oj z%(ufY#p`->0U*nGK56y|S$+h&)#k4&V4z4iHf1S{NKz7h2(3^nyW9+?blDlkjd2MG z44Jk9?uYc76BqcWu83k!)>aez8(W@%4x_{Kz*G%^dGKJn(k00>A{@mt&P}%z)72Wizgnr zn!7j;=#zM3J_rzsBT0=rk;50l{986j@)POq_2H~!u}Ua=$B+y{(^^$`?Q*xhdhvOf zDQvl1t>30PmdObKjci(z91aMi1U=n9dP+e@q}`x{@51C zAZ&XJ2@=#^%Dd)EHY9UBBHOO!x)M)+%VQ`Ke9ORU0ek3k5nD% zX@&@;#$8)rB2BN)C@cycclk#`lE#|$=c|*1S03V=z!e_0z z6h6Ok@YhZ$OAhiQ|MgFcuQN0n(6Go?>k#>g!tdn1F5Sr7A1~3p`h>wZcl#qkM#c}a ztM70BZx$bynKd5(K#KkMFTj5o{cRia9$IKhdV2f~T@0fIGHf&8f0_QqHwn~aJaz}X z9FE(Av3vR@&fhcPRNp6FVQV^EE)R?W`gUqNG_iiS-3)czuE<+R-^Xy(BA&mzwmEAn zdY!BD7_Hv>tmK@*8bzJh5l;$vGT1J@R8AfvU_a-5&2~7{>h^%twI0`|{(|kxXFGFI z@Ly(UBZ@L51Ip{F&Kkj9F7?d@q6lCw0VWpef9>FfV-x zc;dBh57Ve>_AliUD~(5p!GMzta7}(Ye6g((mVkv@p15w|dcC^u^!WkOf@O2&_|#hz zN{t!@@8ZAFy*d}(zQE2V;JXWW z5{D-1_j$gjiuS9UPM3SIeV+-DdK?IhisxUl1Qty)M9&^}R_yI$8pPg=t3KN<$5`_! zGPB~DbCv%6ob<{zOQJ=xajJnI?*1G{OxlF`)5?eU3S7^0XhlK^y-{3WD*7xGSO(zN zOSNz6tS@ntmgUAs8PA}%QOqN`=7RNtwo#guZ0SMwzy@!DEX#;s2L$Qc0q2$&8v2X* zfNSm{uZQszR5sTO0wUM$0heZV?JoY(Q~3-?4x~qcus3Pr1@_0)-+bd|)C#K9oAD-* zxSFMWr^&POiWvyHB(cwLrdVy+4jTk5>38s4sFK5Inh7PcEL1_RB!Nlgxg5bpCZbK0 zlEx}C*}@E3dTThpE>kxe@Vl>w9M{xu4>A%9q)$bAChbMEC5t~kX3R49l>iB?Xd!^_ z=|~>qMow*fsOj)>@d*0#v~#I&U_%wwFM{l4IHwQO2W&djhPwI6h=-<-6(hP6xRv|h z{_h&_mnPe53-0<1E=pul)(h6N>i7s(2Y&~@gX%!Rs=Y-ZfougjsLWm!%&FvDu_+|+ zm{*X0(g7cs?|1#xTww3{&<+usppExgsgT=mzPabS1~sHh6rs=papP+)>KG)9^ zqTP2t{!hf~R@b#0ZT)Yzh;$=AkZBqt$(d7e7P9zCns# zqHnk@{EzHwYvkng9kQpCAd^ap^(65{woM>v7KyG8XCg?GA18H`zn zu0eybfWf4DU--EvfT8cVe2+1hcOn+>y;`kfu>Wh@ScMQT5U!2jtqt4hL}F*g`%A_? z^@gLE@L^W06vJ5mFE)ExCoI0HdbY&Fq81ea`cLaw7DV`ffcri=Sojg%-5z-O3RC;1 zzBax9K|WxqWuUXW+Os9xeA~Et5G&@`N9Cw~fsVuHZG1HVji|fN?86XSDL^^`b|?E4 a+t?O8okWM~59~)afSi<~WUaVy@c#f=zm=l^ literal 11017 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 Date: Mon, 17 Aug 2015 10:54:51 +0100 Subject: [PATCH 27/40] fix #10692 --- code/modules/virus2/disease2.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index 1edfec1280a..81a57dd3008 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -46,7 +46,7 @@ for (var/specie in all_species) var/datum/species/S = all_species[specie] if(!S.virus_immune) - meat += S.name + meat += S if(meat.len) var/num = rand(1,meat.len) for(var/i=0,i Date: Mon, 17 Aug 2015 11:34:26 +0100 Subject: [PATCH 28/40] adds admin logs to cryostorage --- code/game/machinery/cryopod.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 337d57df8d2..f2bb8061537 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -22,6 +22,7 @@ //Used for logging people entering cryosleep and important items they are carrying. var/list/frozen_crew = list() var/list/frozen_items = list() + var/list/_admin_logs = list() // _ so it shows first in VV var/storage_type = "crewmembers" var/storage_name = "Cryogenic Oversight Control" @@ -389,15 +390,18 @@ //TODO: Check objectives/mode, update new targets if this mob is the target, spawn new antags? - //This should guarantee that ghosts don't spawn. - occupant.ckey = null //Make an announcement and log the person entering storage. control_computer.frozen_crew += "[occupant.real_name], [occupant.mind.role_alt_title] - [worldtime2text()]" + control_computer._admin_logs += "[key_name(occupant)] ([occupant.mind.role_alt_title]) at [worldtime2text()]" + log_and_message_admins("[key_name(occupant)] ([occupant.mind.role_alt_title]) entered cryostorage.") announce.autosay("[occupant.real_name], [occupant.mind.role_alt_title], [on_store_message]", "[on_store_name]") visible_message("\The [initial(name)] hums and hisses as it moves [occupant.real_name] into storage.", 3) + //This should guarantee that ghosts don't spawn. + occupant.ckey = null + // Delete the mob. qdel(occupant) set_occupant(null) From 7bdbb7273165a63a62a78b7835c7c9589117deb1 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Mon, 17 Aug 2015 11:51:05 +0100 Subject: [PATCH 29/40] Change all misc research doors and windoors to require one of access_tox or access_robotics, rather than only access_tox or access_research --- maps/exodus-1.dmm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index bcca05b5838..3cd7fa57680 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -5254,8 +5254,8 @@ "bXb" = (/obj/machinery/air_sensor{frequency = 1430; id_tag = "toxins_mixing_exterior"; output = 63},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) "bXc" = (/obj/structure/table/standard,/obj/machinery/computer/med_data/laptop,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "whitered"},/area/medical/patient_b) "bXd" = (/obj/machinery/atmospherics/binary/dp_vent_pump/high_volume{dir = 2; frequency = 1379; id = "tox_airlock_pump"},/obj/machinery/air_sensor{frequency = 1430; id_tag = "toxins_mixing_interior"; output = 63; pixel_x = -8; pixel_y = -18},/turf/simulated/floor/engine,/area/rnd/mixing) -"bXe" = (/obj/machinery/door/window/southright{dir = 1; name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/window/southright{name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bXf" = (/obj/machinery/door/window/southleft{dir = 1; name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/window/southleft{name = "Test Chamber"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bXe" = (/obj/machinery/door/window/southright{dir = 1; name = "Test Chamber"; req_one_access = list(7, 29)},/obj/machinery/door/window/southright{name = "Test Chamber"; req_one_access = list(7, 29)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bXf" = (/obj/machinery/door/window/southleft{dir = 1; name = "Test Chamber"; req_one_access = list(7, 29)},/obj/machinery/door/window/southleft{name = "Test Chamber"; req_one_access = list(7, 29)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bXg" = (/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/rnd/mixing) "bXh" = (/obj/machinery/computer/general_air_control{frequency = 1430; name = "Mixing Chamber Monitor"; sensors = list("toxins_mixing_exterior" = "Mixing Chamber - Exterior", "toxins_mixing_interior" = "Mixing Chamber - Interior")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/mixing) "bXi" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/rnd/mixing) @@ -5382,7 +5382,7 @@ "bZz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Patient Wing Maintenance Access"; req_access = list(5)},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/patient_wing) "bZA" = (/turf/simulated/wall,/area/medical/patient_c) "bZB" = (/obj/machinery/button/remote/blast_door{id = "misclab"; name = "Test Chamber Blast Doors"; pixel_x = 6; pixel_y = 30; req_access = list(47)},/obj/item/weapon/stool/padded,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) -"bZC" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_access = list(7)},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"bZC" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_one_access = list(7, 29)},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bZD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) "bZE" = (/obj/machinery/light,/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "bZF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_port) @@ -5441,7 +5441,7 @@ "caG" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/wood,/area/medical/psych) "caH" = (/obj/structure/table/woodentable,/obj/machinery/computer/med_data/laptop,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/wood,/area/medical/psych) "caI" = (/turf/simulated/wall,/area/medical/psych) -"caJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_access = list(7)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) +"caJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Miscellaneous Reseach Room"; req_one_access = list(7, 29)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab) "caK" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "caL" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/network/research{c_tag = "Research Division South"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/rnd/research) "caM" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing) @@ -5531,7 +5531,7 @@ "ccs" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Research"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/substation/research) "cct" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/medical/biostorage) "ccu" = (/obj/structure/table/standard,/obj/machinery/computer/med_data/laptop,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/patient_c) -"ccv" = (/obj/machinery/door/airlock/maintenance{name = "Miscellaneous Reseach Maintenance"; req_access = list(7)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/substation/research) +"ccv" = (/obj/machinery/door/airlock/maintenance{name = "Miscellaneous Reseach Maintenance"; req_one_access = list(7, 29)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/substation/research) "ccw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccy" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/research_starboard) @@ -7381,7 +7381,7 @@ "cLW" = (/obj/structure/grille,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 2.7; name = "Reactor Blast Door"; opacity = 0},/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cLX" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 2.7; name = "Reactor Blast Door"; opacity = 0},/obj/structure/grille,/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room) "cLY" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/qm) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From c82a0291e41174c637404087ff3a187aeeb6a802 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 17 Aug 2015 13:22:41 +0200 Subject: [PATCH 30/40] Utensil knives and spoons are no longer contraband. After careful considerations by the council the law concerning Possession of a Controlled Utensil is finally abolished. The Dinnerware vending machine now offer both utensil knives and spoons without first having to hack them. --- code/game/machinery/vending.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index a665ba9a10c..8ac413b6059 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -912,8 +912,8 @@ desc = "A kitchen and restaurant equipment vendor." product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." icon_state = "dinnerware" - products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/material/kitchen/utensil/fork = 6,/obj/item/weapon/material/knife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2) - contraband = list(/obj/item/weapon/material/kitchen/utensil/spoon = 2,/obj/item/weapon/material/kitchen/utensil/knife = 2,/obj/item/weapon/material/kitchen/rollingpin = 2, /obj/item/weapon/material/knife/butch = 2) + products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/material/kitchen/utensil/fork = 6, /obj/item/weapon/material/kitchen/utensil/knife = 6, /obj/item/weapon/material/kitchen/utensil/spoon = 6, /obj/item/weapon/material/knife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2) + contraband = list(/obj/item/weapon/material/kitchen/rollingpin = 2, /obj/item/weapon/material/knife/butch = 2) /obj/machinery/vending/sovietsoda name = "BODA" From 673664efd66f8d77070b679b1baa75eaabfb45fb Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Mon, 17 Aug 2015 13:23:59 +0200 Subject: [PATCH 31/40] Changelog entry. --- html/changelogs/PsiOmegaDelta-SpoonRevolt.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/PsiOmegaDelta-SpoonRevolt.yml diff --git a/html/changelogs/PsiOmegaDelta-SpoonRevolt.yml b/html/changelogs/PsiOmegaDelta-SpoonRevolt.yml new file mode 100644 index 00000000000..c26ad21ff53 --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-SpoonRevolt.yml @@ -0,0 +1,4 @@ +author: PsiOmegaDelta +delete-after: True +changes: + - rscdel: "The Dinnerware vending machine now offer both utensil knives and spoons without first having to hack them." From 439b976272855491060025b129eab49d67229a8c Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 17 Aug 2015 22:41:19 +0200 Subject: [PATCH 32/40] Admin level doors are now always of the secure variant. Players keep finding ways to surprise. --- code/game/machinery/doors/airlock.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index d604cefff5d..000c374598a 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1022,6 +1022,9 @@ About the new airlock wires panel: name = "[istext(assembly.glass) ? "[assembly.glass] airlock" : assembly.base_name]" //wires + var/turf/T = get_turf(newloc) + if(T && (T.z in config.admin_levels)) + secured_wires = 1 if (secured_wires) wires = new/datum/wires/airlock/secure(src) else From ef8e3a94a0a9b6fd64cbb1e8b7f29e31507c0cea Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 17 Aug 2015 21:00:22 -0400 Subject: [PATCH 33/40] Fixes antag datum not respecting restricted_jobs depending on config Fixes #10657 --- code/game/antagonist/antagonist_helpers.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/antagonist/antagonist_helpers.dm b/code/game/antagonist/antagonist_helpers.dm index a578c1bf4fd..056fbd18651 100644 --- a/code/game/antagonist/antagonist_helpers.dm +++ b/code/game/antagonist/antagonist_helpers.dm @@ -2,9 +2,9 @@ if(player.current && jobban_isbanned(player.current, bantype)) return 0 if(!ignore_role) - if(player.assigned_role in protected_jobs) + if(player.assigned_role in restricted_jobs) return 0 - if(config.protect_roles_from_antagonist && (player.assigned_role in restricted_jobs)) + if(config.protect_roles_from_antagonist && (player.assigned_role in protected_jobs)) return 0 return 1 From e1f4551693834d7a1a11d0ba981b01d8fda6490f Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 17 Aug 2015 21:04:23 -0400 Subject: [PATCH 34/40] Fixes revs being unspawnable The player has not been spawned yet how can they possibly be a /mob/living/carbon/human? Also fixes spawning revs via traitor panel. --- code/game/antagonist/station/revolutionary.dm | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/code/game/antagonist/station/revolutionary.dm b/code/game/antagonist/station/revolutionary.dm index 59d12b50ada..06819c96ce6 100644 --- a/code/game/antagonist/station/revolutionary.dm +++ b/code/game/antagonist/station/revolutionary.dm @@ -135,10 +135,10 @@ datum/antagonist/revolutionary/finalize(var/datum/mind/target) world << text // This is a total redefine because headrevs are greeted differently to subrevs. -/datum/antagonist/revolutionary/add_antagonist(var/datum/mind/player) +/datum/antagonist/revolutionary/add_antagonist(var/datum/mind/player, var/ignore_role) if((player in current_antagonists) || (player in head_revolutionaries)) return 0 - if(!can_become_antag(player)) + if(!can_become_antag(player, ignore_role)) return 0 current_antagonists |= player player.current << "You are a Revolutionary!" @@ -168,11 +168,6 @@ datum/antagonist/revolutionary/finalize(var/datum/mind/target) if(show_message) player.current.visible_message("[player.current] looks like they just remembered their real allegiance!") -/datum/antagonist/revolutionary/can_become_antag(var/datum/mind/player) - return ..() && istype(player) && \ - istype(player.current, /mob/living/carbon/human) && \ - !(player.assigned_role in command_positions) - // Used by RP-rev. /mob/living/carbon/human/proc/convert_to_rev(mob/M as mob in oview(src)) set name = "Convert Bourgeoise" From dadc6e4b7749ce191de99737ca74fd72359ef9fb Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 17 Aug 2015 21:10:24 -0400 Subject: [PATCH 35/40] Adds logging for admin spawning antags --- code/__HELPERS/logging.dm | 6 ++++++ code/datums/mind.dm | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/code/__HELPERS/logging.dm b/code/__HELPERS/logging.dm index d5d0f586852..23119c69ad5 100644 --- a/code/__HELPERS/logging.dm +++ b/code/__HELPERS/logging.dm @@ -109,6 +109,12 @@ M = whom C = M.client key = M.key + else if(istype(whom, /datum/mind)) + var/datum/mind/D = whom + key = D.key + M = D.current + if(D.current) + C = D.current.client else if(istype(whom, /datum)) var/datum/D = whom return "*invalid:[D.type]*" diff --git a/code/datums/mind.dm b/code/datums/mind.dm index b8260825c90..99c467825c4 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -143,7 +143,11 @@ if(href_list["add_antagonist"]) var/datum/antagonist/antag = all_antag_types[href_list["add_antagonist"]] - if(antag) antag.add_antagonist(src, 1, 1, 0, 1, 1) // Ignore equipment and role type for this. + if(antag) + if(antag.add_antagonist(src, 1, 1, 0, 1, 1)) // Ignore equipment and role type for this. + log_admin("[key_name_admin(usr)] made [key_name(src)] into a [antag.role_text].") + else + usr << "[src] could not be made into a [antag.role_text]!" else if(href_list["remove_antagonist"]) var/datum/antagonist/antag = all_antag_types[href_list["remove_antagonist"]] From e84f6932195e23c240bfc57ecf0d60f6c0530aa8 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 17 Aug 2015 21:11:57 -0400 Subject: [PATCH 36/40] Fixes certain antag roles from being unspawnable Fixes antag roles without certain flags from being unspawnable at round start. Also adds more debug messages and feedback --- code/game/antagonist/antagonist.dm | 19 ++++++++++++------- code/game/gamemodes/game_mode.dm | 24 ++++++++++-------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm index 059a883aad3..0bde5791c77 100644 --- a/code/game/antagonist/antagonist.dm +++ b/code/game/antagonist/antagonist.dm @@ -59,20 +59,23 @@ /datum/antagonist/proc/get_candidates(var/ghosts_only) candidates = list() // Clear. - candidates = ticker.mode.get_players_for_role(role_type, id) + // Prune restricted status. Broke it up for readability. // Note that this is done before jobs are handed out. - for(var/datum/mind/player in candidates) + for(var/datum/mind/player in ticker.mode.get_players_for_role(role_type, id)) if(ghosts_only && !istype(player.current, /mob/dead)) - candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: Only ghosts may join as this role!" else if(player.special_role) - candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: They already have a special role ([player.special_role])!" else if (player in pending_antagonists) - candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: They have already been selected for this role!" else if(!can_become_antag(player)) - candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: They are blacklisted for this role!" else if(player_is_antag(player)) - candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: They are already an antagonist!" + else + candidates += player + return candidates /datum/antagonist/proc/attempt_random_spawn() @@ -108,6 +111,7 @@ return 0 //Grab candidates randomly until we have enough. + candidates = shuffle(candidates) while(candidates.len && pending_antagonists.len < cur_max) var/datum/mind/player = pick(candidates) candidates -= player @@ -118,6 +122,7 @@ /datum/antagonist/proc/draft_antagonist(var/datum/mind/player) //Check if the player can join in this antag role, or if the player has already been given an antag role. if(!can_become_antag(player) || player.special_role) + log_debug("[player.key] was selected for [role_text] by lottery, but is not allowed to be that role.") return 0 pending_antagonists |= player diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 961d3e067b8..8c0254829a8 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -511,32 +511,26 @@ var/global/list/additional_antag_types = list() if(!antag_template) return candidates - var/roletext // Assemble a list of active players without jobbans. for(var/mob/new_player/player in player_list) if( player.client && player.ready ) - if(!(jobban_isbanned(player, "Syndicate") || jobban_isbanned(player, antag_template.bantype))) - players += player - - // Shuffle the players list so that it becomes ping-independent. - players = shuffle(players) + players += player // Get a list of all the people who want to be the antagonist for this round for(var/mob/new_player/player in players) if(!role || (player.client.prefs.be_special & role)) - log_debug("[player.key] had [roletext] enabled, so we are drafting them.") + log_debug("[player.key] had [antag_id] enabled, so we are drafting them.") candidates += player.mind players -= player // If we don't have enough antags, draft people who voted for the round. if(candidates.len < required_enemies) - for(var/key in round_voters) - for(var/mob/new_player/player in players) - if(player.ckey == key) - log_debug("[player.key] voted for this round, so we are drafting them.") - candidates += player.mind - players -= player - break + for(var/mob/new_player/player in players) + if(player.ckey in round_voters) + log_debug("[player.key] voted for this round, so we are drafting them.") + candidates += player.mind + players -= player + break return candidates // Returns: The number of people who had the antagonist role set to yes, regardless of recomended_enemies, if that number is greater than required_enemies // required_enemies if the number of people with that role set to yes is less than recomended_enemies, @@ -569,12 +563,14 @@ var/global/list/additional_antag_types = list() if(antag) antag_templates |= antag + /* if(antag_templates && antag_templates.len) for(var/datum/antagonist/antag in antag_templates) if(antag.flags & (ANTAG_OVERRIDE_JOB|ANTAG_RANDSPAWN)) continue antag_templates -= antag world << "[antag.role_text_plural] are invalid for additional roundtype antags!" + */ newscaster_announcements = pick(newscaster_standard_feeds) From 3ea5bfb1318b19d5eca8ef0db9883c779fa5b3b2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 17 Aug 2015 21:12:40 -0400 Subject: [PATCH 37/40] Makes error message print to admins instead of world --- code/game/antagonist/antagonist_create.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/antagonist/antagonist_create.dm b/code/game/antagonist/antagonist_create.dm index 026b1a556c8..7d924687213 100644 --- a/code/game/antagonist/antagonist_create.dm +++ b/code/game/antagonist/antagonist_create.dm @@ -86,7 +86,7 @@ code_owner.store_memory("Nuclear Bomb Code: [code]", 0, 0) code_owner.current << "The nuclear authorization code is: [code]" else - world << "Could not spawn nuclear bomb. Contact a developer." + message_admins("Could not spawn nuclear bomb. Contact a developer.") return spawned_nuke = code From f0c8db3d0fc3c4b604c4a4f94e6e2a6e2232127a Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Tue, 18 Aug 2015 02:16:50 +0100 Subject: [PATCH 38/40] Adds settable rank to IRC messages, changes it so non-admins can see who on IRC is messaging them, and adds the name of the original sender to reply PMs --- code/modules/admin/verbs/adminpm.dm | 21 +++++++++++---------- code/modules/client/client procs.dm | 2 +- code/world.dm | 8 ++++++-- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 26cae206e9e..ca2fd11f9cc 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -118,30 +118,31 @@ if(X.key != key && X.key != C.key && (X.holder.rights & R_ADMIN|R_MOD|R_MENTOR)) X << "" + create_text_tag("pm_other", "PM:", X) + " [key_name(src, X, 0)] to [key_name(C, X, 0)]: [msg]" -/client/proc/cmd_admin_irc_pm() +/client/proc/cmd_admin_irc_pm(sender) if(prefs.muted & MUTE_ADMINHELP) src << "Error: Private-Message: You are unable to use PM-s (muted)." return - var/msg = input(src,"Message:", "Private message to admins on IRC / 400 character limit") as text|null + var/msg = input(src,"Message:", "Reply private message to [sender] on IRC / 400 character limit") as text|null if(!msg) return sanitize(msg) - if(length(msg) > 400) // TODO: if message length is over 400, divide it up into seperate messages, the message length restriction is based on IRC limitations. Probably easier to do this on the bots ends. - src << "\red Your message was not sent because it was more then 400 characters find your message below for ease of copy/pasting" - src << "\blue [msg]" - return + // Handled on Bot32's end, unsure about other bots +// if(length(msg) > 400) // TODO: if message length is over 400, divide it up into seperate messages, the message length restriction is based on IRC limitations. Probably easier to do this on the bots ends. +// src << "Your message was not sent because it was more then 400 characters find your message below for ease of copy/pasting" +// src << "\blue [msg]" +// return - send2adminirc("PlayerPM from [key_name(src)]: [html_decode(msg)]") + send2adminirc("PlayerPM to [sender] from [key_name(src)]: [html_decode(msg)]") - src << "" + create_text_tag("pm_out_alt", "", src) + " to Admin IRC: [msg]" + src << "" + create_text_tag("pm_out_alt", "", src) + " to IRC-[sender]: [msg]" - log_admin("PM: [key_name(src)]->IRC: [msg]") + log_admin("PM: [key_name(src)]->IRC-[sender]: [msg]") for(var/client/X in admins) if(X == src) continue if(X.holder.rights & R_ADMIN|R_MOD) - X << "" + create_text_tag("pm_other", "PM:", X) + " [key_name(src, X, 0)] to Admin IRC: [msg]" + X << "" + create_text_tag("pm_other", "PM:", X) + " [key_name(src, X, 0)] to IRC-[sender]: [msg]" diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index f9c67496a80..ecbd78b14d5 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -52,7 +52,7 @@ if(mute_irc) usr << "" return - cmd_admin_irc_pm() + cmd_admin_irc_pm(href_list["irc_msg"]) return diff --git a/code/world.dm b/code/world.dm index 2b8b0f07f39..34b91076998 100644 --- a/code/world.dm +++ b/code/world.dm @@ -183,8 +183,12 @@ var/world_topic_spam_protect_time = world.timeofday if(!C) return "No client with that name on server" - var/message = "IRC-Admin PM from [C.holder ? "IRC-" + input["sender"] : "Administrator"]: [input["msg"]]" - var/amessage = "IRC-Admin PM from IRC-[input["sender"]] to [key_name(C)] : [input["msg"]]" + var/rank = input["rank"] + if(!rank) + rank = "Admin" + + var/message = "IRC-[rank] PM from IRC-[input["sender"]]: [input["msg"]]" + var/amessage = "IRC-[rank] PM from IRC-[input["sender"]] to [key_name(C)] : [input["msg"]]" C.received_irc_pm = world.time C.irc_admin = input["sender"] From 87da0d4eb52ee07ead92f0a9f04367f9b490340a Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 17 Aug 2015 21:24:59 -0400 Subject: [PATCH 39/40] Fixes missing ), "spam" class --- code/game/antagonist/antagonist.dm | 10 +++++----- code/game/antagonist/antagonist_create.dm | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm index 0bde5791c77..6e98ce6c353 100644 --- a/code/game/antagonist/antagonist.dm +++ b/code/game/antagonist/antagonist.dm @@ -64,15 +64,15 @@ // Note that this is done before jobs are handed out. for(var/datum/mind/player in ticker.mode.get_players_for_role(role_type, id)) if(ghosts_only && !istype(player.current, /mob/dead)) - log_debug("[key_name(player)] is not eligible to become a [role_text]: Only ghosts may join as this role!" + log_debug("[key_name(player)] is not eligible to become a [role_text]: Only ghosts may join as this role!") else if(player.special_role) - log_debug("[key_name(player)] is not eligible to become a [role_text]: They already have a special role ([player.special_role])!" + log_debug("[key_name(player)] is not eligible to become a [role_text]: They already have a special role ([player.special_role])!") else if (player in pending_antagonists) - log_debug("[key_name(player)] is not eligible to become a [role_text]: They have already been selected for this role!" + log_debug("[key_name(player)] is not eligible to become a [role_text]: They have already been selected for this role!") else if(!can_become_antag(player)) - log_debug("[key_name(player)] is not eligible to become a [role_text]: They are blacklisted for this role!" + log_debug("[key_name(player)] is not eligible to become a [role_text]: They are blacklisted for this role!") else if(player_is_antag(player)) - log_debug("[key_name(player)] is not eligible to become a [role_text]: They are already an antagonist!" + log_debug("[key_name(player)] is not eligible to become a [role_text]: They are already an antagonist!") else candidates += player diff --git a/code/game/antagonist/antagonist_create.dm b/code/game/antagonist/antagonist_create.dm index 7d924687213..416a774541a 100644 --- a/code/game/antagonist/antagonist_create.dm +++ b/code/game/antagonist/antagonist_create.dm @@ -86,7 +86,7 @@ code_owner.store_memory("Nuclear Bomb Code: [code]", 0, 0) code_owner.current << "The nuclear authorization code is: [code]" else - message_admins("Could not spawn nuclear bomb. Contact a developer.") + message_admins("Could not spawn nuclear bomb. Contact a developer.") return spawned_nuke = code From a8969916576cb53c5beaa29b60cbfbdefe877d40 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 18 Aug 2015 11:55:43 -0700 Subject: [PATCH 40/40] Even comments need matching spans for Travis to pass. --- code/modules/admin/verbs/adminpm.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index ca2fd11f9cc..61050526d51 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -133,7 +133,7 @@ // Handled on Bot32's end, unsure about other bots // if(length(msg) > 400) // TODO: if message length is over 400, divide it up into seperate messages, the message length restriction is based on IRC limitations. Probably easier to do this on the bots ends. // src << "Your message was not sent because it was more then 400 characters find your message below for ease of copy/pasting" -// src << "\blue [msg]" +// src << "[msg]" // return send2adminirc("PlayerPM to [sender] from [key_name(src)]: [html_decode(msg)]")