From 5d025d9ac657157a147ede2bb9fca72d7bf51d03 Mon Sep 17 00:00:00 2001 From: Alberyk Date: Sun, 9 Apr 2017 07:00:22 -0300 Subject: [PATCH 1/9] Mark of wizard fix and missing uniform name (#2062) -unfucks the path of the mark of wizard -fix the name i may have erased from two uniforms --- code/modules/clothing/under/miscellaneous.dm | 4 +++- code/modules/spells/general/mark_recall.dm | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 2276df9b822..e7af61c3673 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -76,13 +76,14 @@ //This set of uniforms looks fairly fancy and is generally used for high-ranking NT personnel from what I've seen, so lets give them appropriate ranks. /obj/item/clothing/under/rank/centcom desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Captain.\"" - name = "\improper officer's dress uniform" + name = "officer's dress uniform" icon_state = "officer" item_state = "lawyer_black" worn_state = "officer" displays_id = 0 /obj/item/clothing/under/rank/centcom_officer + name = "officer's dress uniform" desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Admiral.\"" icon_state = "officer" item_state = "lawyer_black" @@ -90,6 +91,7 @@ displays_id = 0 /obj/item/clothing/under/rank/centcom_captain + name = "officer's dress uniform" desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Admiral-Executive.\"" icon_state = "centcom" item_state = "lawyer_black" diff --git a/code/modules/spells/general/mark_recall.dm b/code/modules/spells/general/mark_recall.dm index ca800be35ef..1bf2f727c39 100644 --- a/code/modules/spells/general/mark_recall.dm +++ b/code/modules/spells/general/mark_recall.dm @@ -29,7 +29,7 @@ return 0 var/target = targets[1] if(istext(target)) - mark = new /obj/effect/cleanable/wizard_mark(get_turf(user),src) + mark = new /obj/effect/decal/wizard_mark(get_turf(user),src) return 1 if(!istype(target,/obj)) //something went wrong return 0 @@ -47,7 +47,7 @@ return "You no longer have to be conscious to activate this spell." -/obj/effect/cleanable/wizard_mark +/obj/effect/decal/wizard_mark name = "mark of the wizard" desc = "A strange rune, probably someone playing with crayons again." icon = 'icons/obj/rune.dmi' @@ -59,22 +59,22 @@ var/spell/mark_recall/spell -/obj/effect/cleanable/wizard_mark/New(var/newloc,var/mrspell) +/obj/effect/decal/wizard_mark/New(var/newloc,var/mrspell) ..() spell = mrspell -/obj/effect/cleanable/wizard_mark/Destroy() +/obj/effect/decal/wizard_mark/Destroy() spell.mark = null //dereference pls. spell = null ..() -/obj/effect/cleanable/wizard_mark/attack_hand(var/mob/user) +/obj/effect/decal/wizard_mark/attack_hand(var/mob/user) if(user == spell.holder) user.visible_message("\The [user] mutters an incantation and \the [src] disappears!") qdel(src) ..() -/obj/effect/cleanable/wizard_mark/attackby(var/obj/item/I, var/mob/user) +/obj/effect/decal/wizard_mark/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/weapon/nullrod) || istype(I, /obj/item/weapon/spellbook)) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) src.visible_message("\The [src] fades away!") From c625bbe8e4cc2679724fc907907eb424ac2ea2c1 Mon Sep 17 00:00:00 2001 From: Lohikar Date: Mon, 10 Apr 2017 03:54:09 -0500 Subject: [PATCH 2/9] Nightmode Tweaks 2: The Fixening (#2065) I actually fixed it this time I swear changes: Nightmode now follows the station's time instead of some random time schedule that made no sense. Red alert will properly disable night mode now. Dropping from red alert will reset nightmode to the state it was in before red alert was triggered. --- code/_helpers/time.dm | 4 +--- code/controllers/Processes/night_lighting.dm | 19 ++++++++++--------- .../security levels/security levels.dm | 10 +++++++++- html/changelogs/lohikar-nightmodeagain.yml | 5 +++++ 4 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 html/changelogs/lohikar-nightmodeagain.yml diff --git a/code/_helpers/time.dm b/code/_helpers/time.dm index ef732ebd0f4..5c80a00ad67 100644 --- a/code/_helpers/time.dm +++ b/code/_helpers/time.dm @@ -13,9 +13,7 @@ proc/worldtime2text(time = world.time, timeshift = 1) /proc/worldtime2hours() if (!roundstart_hour) worldtime2text() - . = (world.timeofday / (60 MINUTES)) + roundstart_hour - if (. > 24) - . -= 24 + . = text2num(time2text(world.time + (36000 * roundstart_hour), "hh")) proc/worlddate2text() return num2text(game_year) + "-" + time2text(world.timeofday, "MM-DD") diff --git a/code/controllers/Processes/night_lighting.dm b/code/controllers/Processes/night_lighting.dm index feba6f97eaf..d421aef941a 100644 --- a/code/controllers/Processes/night_lighting.dm +++ b/code/controllers/Processes/night_lighting.dm @@ -3,7 +3,10 @@ var/datum/controller/process/night_lighting/nl_ctrl /datum/controller/process/night_lighting/ var/isactive = 0 var/firstrun = 1 - var/manual_override = 0 + var/manual_override = 0 + // 0 -> No manual override + // 1 -> Override via. player-set nightmode setting (like CE console) + // 2 -> Red-alert override. /datum/controller/process/night_lighting/proc/is_active() return isactive @@ -19,25 +22,23 @@ var/datum/controller/process/night_lighting/nl_ctrl disabled = 1 /datum/controller/process/night_lighting/preStart() - var/time = worldtime2hours() - if (time <= config.nl_finish || time >= config.nl_start) - activate() - else - deactivate() + doWork(FALSE) -/datum/controller/process/night_lighting/doWork() +/datum/controller/process/night_lighting/doWork(announce = TRUE) if (manual_override) // don't automatically change lighting if it was manually changed in-game return var/time = worldtime2hours() if (time <= config.nl_finish || time >= config.nl_start) if (!isactive) - command_announcement.Announce("Good evening. The time is [worldtime2text()]. \n\nThe automated systems aboard the [station_name()] will now dim lighting in the public hallways in order to accommodate the circadian rhythm of some species.", "Automated Lighting System", new_sound = 'sound/misc/bosuns_whistle.ogg') activate() + if (announce) + command_announcement.Announce("Good evening. The time is [worldtime2text()]. \n\nThe automated systems aboard the [station_name()] will now dim lighting in the public hallways in order to accommodate the circadian rhythm of some species.", "Automated Lighting System", new_sound = 'sound/misc/bosuns_whistle.ogg') else if (isactive) - command_announcement.Announce("Good morning. The time is [worldtime2text()]. \n\nThe automated systems aboard the [station_name()] will now return the public hallway lighting levels to normal.", "Automated Lighting System", new_sound = 'sound/misc/bosuns_whistle.ogg') deactivate() + if (announce) + command_announcement.Announce("Good morning. The time is [worldtime2text()]. \n\nThe automated systems aboard the [station_name()] will now return the public hallway lighting levels to normal.", "Automated Lighting System", new_sound = 'sound/misc/bosuns_whistle.ogg') // 'whitelisted' areas are areas that have nightmode explicitly enabled diff --git a/code/modules/security levels/security levels.dm b/code/modules/security levels/security levels.dm index cbb4a9b4312..ca6f503d7f3 100644 --- a/code/modules/security levels/security levels.dm +++ b/code/modules/security levels/security levels.dm @@ -25,16 +25,24 @@ if(SEC_LEVEL_GREEN) security_announcement_down.Announce("[config.alert_desc_green]", "Attention! Security level lowered to green.") security_level = SEC_LEVEL_GREEN + if (nl_ctrl.manual_override == 2) // Disable override if it was set by code-red. + nl_ctrl.manual_override = 0 + nl_ctrl.doWork(FALSE) // Update night lighting if it was turned off by red alert. if(SEC_LEVEL_BLUE) if(security_level < SEC_LEVEL_BLUE) security_announcement_up.Announce("[config.alert_desc_blue_upto]", "Attention! Security level elevated to blue.") else security_announcement_down.Announce("[config.alert_desc_blue_downto]", "Attention! Security level lowered to blue.") security_level = SEC_LEVEL_BLUE + if (nl_ctrl.manual_override == 2) + nl_ctrl.manual_override = 0 + nl_ctrl.doWork(FALSE) // Update night lighting if it was turned off by red alert. if(SEC_LEVEL_RED) if(security_level < SEC_LEVEL_RED) security_announcement_up.Announce("[config.alert_desc_red_upto]", "Attention! Security level elevated to red!") nl_ctrl.deactivate(0) // Disable nightmode globally + if (!nl_ctrl.manual_override) + nl_ctrl.manual_override = 2 else security_announcement_down.Announce("[config.alert_desc_red_downto]", "Attention! Code red!") security_level = SEC_LEVEL_RED @@ -95,4 +103,4 @@ set_security_level(2) /mob/verb/set_thing3() set_security_level(3) -*/ \ No newline at end of file +*/ diff --git a/html/changelogs/lohikar-nightmodeagain.yml b/html/changelogs/lohikar-nightmodeagain.yml new file mode 100644 index 00000000000..3cdda17b5ae --- /dev/null +++ b/html/changelogs/lohikar-nightmodeagain.yml @@ -0,0 +1,5 @@ +author: Lohikar +delete-after: True +changes: + - bugfix: "NanoTrasen has fired several designers in charge of stations' night-mode control systems after it was revealed that they did not actually know how time works." + - tweak: "Red-alert is now kind enough to restore the previous nightmode settings instead of forcing its standards of illumination on the crew." From 3834fd9decf1ca1a1ed6af273cd4f556dfcb5a2c Mon Sep 17 00:00:00 2001 From: Lohikar Date: Mon, 10 Apr 2017 03:55:56 -0500 Subject: [PATCH 3/9] Darkness Fixes & Shell Tweaks (#2066) changes: ChangeTurf no longer breaks lighting when switching from statically lit turfs to dynamically lit turfs. Human-types' is_noisy value is now updated on spawn; boots should now make footstep SFX without having to take them off and put them back on. Fixed a logic error in is_noisy calculations which could have lead to false-negatives. Shells can now wear socks & undershirts. Fixed a bug where changing the dynamic lighting status on an area would attempt to build lighting overlays for the entire map. Fixes #2027. Fixes #1982. --- code/datums/ai_law_sets.dm | 2 +- code/game/jobs/job_controller.dm | 3 +++ code/game/turfs/turf_changing.dm | 5 +++-- code/modules/lighting/lighting_area.dm | 4 ++-- code/modules/mob/living/carbon/human/human_movement.dm | 2 +- code/modules/mob/living/carbon/human/inventory.dm | 4 ---- .../carbon/human/species/station/machine_subspecies.dm | 2 +- html/changelogs/lohikar-finite-darkness.yml | 6 ++++++ 8 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 html/changelogs/lohikar-finite-darkness.yml diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index ee425f43ddc..00746d852eb 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -95,7 +95,7 @@ /datum/ai_laws/drone/New() add_inherent_law("Preserve, repair and improve the station to the best of your abilities.") add_inherent_law("Cause no harm to the station or crew.") - add_inherent_law("Interact with no humanoid or synthetic being. that is not a fellow maintenance drone.") + add_inherent_law("Interact with no humanoid or synthetic being that is not a fellow maintenance drone.") ..() /datum/ai_laws/construction_drone diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 831a183c46b..798ad177407 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -472,6 +472,9 @@ var/global/datum/controller/occupations/job_master var/obj/item/clothing/glasses/G = H.glasses G.prescription = 1 + // So shoes aren't silent if people never change 'em. + H.update_noise_level() + BITSET(H.hud_updateflag, ID_HUD) BITSET(H.hud_updateflag, IMPLOYAL_HUD) BITSET(H.hud_updateflag, SPECIALROLE_HUD) diff --git a/code/game/turfs/turf_changing.dm b/code/game/turfs/turf_changing.dm index dc666366ad7..87a4e96282b 100644 --- a/code/game/turfs/turf_changing.dm +++ b/code/game/turfs/turf_changing.dm @@ -78,13 +78,14 @@ . = W recalc_atom_opacity() + lighting_overlay = old_lighting_overlay affecting_lights = old_affecting_lights corners = old_corners - if((old_opacity != opacity) || (dynamic_lighting != old_dynamic_lighting) || force_lighting_update) - reconsider_lights() if(dynamic_lighting != old_dynamic_lighting) if(dynamic_lighting) lighting_build_overlay() else lighting_clear_overlay() + if((old_opacity != opacity) || (dynamic_lighting != old_dynamic_lighting) || force_lighting_update) + force_update_lights() diff --git a/code/modules/lighting/lighting_area.dm b/code/modules/lighting/lighting_area.dm index 875a41c956e..a39eb1d975e 100644 --- a/code/modules/lighting/lighting_area.dm +++ b/code/modules/lighting/lighting_area.dm @@ -17,12 +17,12 @@ dynamic_lighting = new_dynamic_lighting if (new_dynamic_lighting) - for (var/turf/T in turfs) + for (var/turf/T in src) if (T.dynamic_lighting) T.lighting_build_overlay() else - for (var/turf/T in turfs) + for (var/turf/T in src) if (T.lighting_overlay) T.lighting_clear_overlay() diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 23d09be1e95..055de9788f7 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -127,7 +127,7 @@ . = ..() if (is_noisy) var/turf/T = get_turf(src) - if (T.x == last_x && T.y == last_y) + if ((T.x == last_x && T.y == last_y) || !T.footstep_sound) return last_x = T.x last_y = T.y diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index d4418b7ef3c..56757d27653 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -437,8 +437,4 @@ This saves us from having to call add_fingerprint() any time something is put in if (shoes:silent) return - var/turf/T = get_turf(src) - if (!istype(T) || !T.footstep_sound) - return - is_noisy = TRUE diff --git a/code/modules/mob/living/carbon/human/species/station/machine_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/machine_subspecies.dm index 9543182be57..bdd0b4a06fa 100644 --- a/code/modules/mob/living/carbon/human/species/station/machine_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/machine_subspecies.dm @@ -35,7 +35,7 @@ "Your synthetic flesh crawls in the heat, swelling into a disgusting morass of plastic." ) - appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_EYE_COLOR | HAS_FBP + appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_EYE_COLOR | HAS_FBP | HAS_UNDERWEAR | HAS_SOCKS has_limbs = list( "chest" = list("path" = /obj/item/organ/external/chest/shell), diff --git a/html/changelogs/lohikar-finite-darkness.yml b/html/changelogs/lohikar-finite-darkness.yml new file mode 100644 index 00000000000..b7abb7fbdb9 --- /dev/null +++ b/html/changelogs/lohikar-finite-darkness.yml @@ -0,0 +1,6 @@ +author: Lohikar +delete-after: True +changes: + - rscadd: "Shells have figured out how to put on socks & undershirts. Synth uprising soon." + - bugfix: "Repairing holes to space no longer sucks the light out of a room forever." + - bugfix: "Footstep sounds now actually work without having to take off your boots." From 964e49b0f852bdc583103b8fb5a1453d01a72d7b Mon Sep 17 00:00:00 2001 From: MarinaGryphon Date: Mon, 10 Apr 2017 03:58:04 -0500 Subject: [PATCH 4/9] Fixes #1932 and converts airlock_electronics.dm to absolute paths (#2053) Fixes #1932 by adding an 'inuse' variable to airlock electronics and setting/checking whether it's in use when constructing doors. Converted airlock_electronics.dm to absolute paths from relative paths. --- .../machinery/doors/airlock_electronics.dm | 133 +++++++++--------- code/game/objects/structures/door_assembly.dm | 27 ++-- .../objects/structures/windoor_assembly.dm | 28 ++-- html/changelogs/MoondancerPony-PR-[2053].yml | 4 + 4 files changed, 102 insertions(+), 90 deletions(-) create mode 100644 html/changelogs/MoondancerPony-PR-[2053].yml diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index e69f750a5fa..74a350a2223 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -1,4 +1,5 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 +// Please do not use relative paths. /obj/item/weapon/airlock_electronics name = "airlock electronics" @@ -15,69 +16,70 @@ var/one_access = 0 //if set to 1, door would receive req_one_access instead of req_access var/last_configurator = null var/locked = 1 + var/inuse = 0 // no double-spending - attack_self(mob/user as mob) - if (!ishuman(user) && !istype(user,/mob/living/silicon/robot)) - return ..(user) +/obj/item/weapon/airlock_electronics/attack_self(mob/user as mob) + if (!ishuman(user) && !istype(user,/mob/living/silicon/robot)) + return ..(user) - var/mob/living/carbon/human/H = user - if(H.getBrainLoss() >= 60) - return + var/mob/living/carbon/human/H = user + if(H.getBrainLoss() >= 60) + return - var/t1 = text("Access control
\n") + var/t1 = text("Access control
\n") - if (last_configurator) - t1 += "Operator: [last_configurator]
" + if (last_configurator) + t1 += "Operator: [last_configurator]
" - if (locked) - t1 += "Swipe ID
" - else - t1 += "Block
" + if (locked) + t1 += "Swipe ID
" + else + t1 += "Block
" - t1 += "Access requirement is set to " - t1 += one_access ? "ONE
" : "ALL
" + t1 += "Access requirement is set to " + t1 += one_access ? "ONE
" : "ALL
" - t1 += conf_access == null ? "All
" : "All
" + t1 += conf_access == null ? "All
" : "All
" - t1 += "
" + t1 += "
" - var/list/accesses = get_all_station_access() - for (var/acc in accesses) - var/aname = get_access_desc(acc) + var/list/accesses = get_all_station_access() + for (var/acc in accesses) + var/aname = get_access_desc(acc) - if (!conf_access || !conf_access.len || !(acc in conf_access)) - t1 += "[aname]
" - else if(one_access) - t1 += "[aname]
" - else - t1 += "[aname]
" - - t1 += text("

Close

\n", src) - - user << browse(t1, "window=airlock_electronics") - onclose(user, "airlock") - - Topic(href, href_list) - ..() - if (usr.stat || usr.restrained() || (!ishuman(usr) && !istype(usr,/mob/living/silicon))) - return - if (href_list["close"]) - usr << browse(null, "window=airlock") - return - - if (href_list["login"]) - if(istype(usr,/mob/living/silicon)) - src.locked = 0 - src.last_configurator = usr.name + if (!conf_access || !conf_access.len || !(acc in conf_access)) + t1 += "[aname]
" + else if(one_access) + t1 += "[aname]
" else - var/obj/item/I = usr.get_active_hand() - if (istype(I, /obj/item/device/pda)) - var/obj/item/device/pda/pda = I - I = pda.id - if (I && src.check_access(I)) - src.locked = 0 - src.last_configurator = I:registered_name + t1 += "[aname]
" + + t1 += text("

Close

\n", src) + + user << browse(t1, "window=airlock_electronics") + onclose(user, "airlock") + +/obj/item/weapon/airlock_electronics/Topic(href, href_list) + ..() + if (usr.stat || usr.restrained() || (!ishuman(usr) && !istype(usr,/mob/living/silicon))) + return + if (href_list["close"]) + usr << browse(null, "window=airlock") + return + + if (href_list["login"]) + if(istype(usr,/mob/living/silicon)) + src.locked = 0 + src.last_configurator = usr.name + else + var/obj/item/I = usr.get_active_hand() + if (istype(I, /obj/item/device/pda)) + var/obj/item/device/pda/pda = I + I = pda.id + if (I && src.check_access(I)) + src.locked = 0 + src.last_configurator = I:registered_name if (locked) return @@ -93,22 +95,21 @@ attack_self(usr) - proc - toggle_access(var/acc) - if (acc == "all") +/obj/item/weapon/airlock_electronics/proc/toggle_access(var/acc) + if (acc == "all") + conf_access = null + else + var/req = text2num(acc) + + if (conf_access == null) + conf_access = list() + + if (!(req in conf_access)) + conf_access += req + else + conf_access -= req + if (!conf_access.len) conf_access = null - else - var/req = text2num(acc) - - if (conf_access == null) - conf_access = list() - - if (!(req in conf_access)) - conf_access += req - else - conf_access -= req - if (!conf_access.len) - conf_access = null /obj/item/weapon/airlock_electronics/secure diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 0778246a81c..bfec020bab2 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -212,17 +212,22 @@ src.state = 0 else if(istype(W, /obj/item/weapon/airlock_electronics) && state == 1) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.") - - if(do_after(user, 40)) - if(!src) return - user.drop_item() - W.loc = src - user << "You installed the airlock electronics!" - src.state = 2 - src.name = "Near finished Airlock Assembly" - src.electronics = W + var/obj/item/weapon/airlock_electronics/EL = W + if(!EL.inuse) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) + user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.") + EL.inuse = 1 + if(do_after(user, 40)) + EL.inuse = 0 + if(!src) return + user.drop_item() + EL.forceMove(src) + user << "You installed the airlock electronics!" + src.state = 2 + src.name = "Near finished Airlock Assembly" + src.electronics = EL + else + EL.inuse = 0 else if(istype(W, /obj/item/weapon/crowbar) && state == 2 ) //This should never happen, but just in case I guess diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 0b278903a74..83676aeb43d 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -167,19 +167,21 @@ obj/structure/windoor_assembly/Destroy() //Adding airlock electronics for access. Step 6 complete. else if(istype(W, /obj/item/weapon/airlock_electronics) && W:icon_state != "door_electronics_smoked") - playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.") - - if(do_after(user, 40)) - if(!src) return - - user.drop_item() - W.loc = src - user << "You've installed the airlock electronics!" - src.name = "Near finished Windoor Assembly" - src.electronics = W - else - W.loc = src.loc + var/obj/item/weapon/airlock_electronics/EL = W + if(!EL.inuse) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) + user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.") + EL.inuse = 1 + if(do_after(user, 40)) + EL.inuse = 0 + if(!src) return + user.drop_item() + EL.forceMove(src) + user << "You've installed the airlock electronics!" + src.name = "Near finished Windoor Assembly" + src.electronics = EL + else + EL.inuse = 0 //Screwdriver to remove airlock electronics. Step 6 undone. else if(istype(W, /obj/item/weapon/screwdriver) && src.electronics) diff --git a/html/changelogs/MoondancerPony-PR-[2053].yml b/html/changelogs/MoondancerPony-PR-[2053].yml new file mode 100644 index 00000000000..6c9bd521fdb --- /dev/null +++ b/html/changelogs/MoondancerPony-PR-[2053].yml @@ -0,0 +1,4 @@ +author: MoondancerPony +delete-after: True +changes: + - bugfix: "Eliminated the possibility for 'double-spending' airlock electronics, duplicating boards and allowing you to complete multiple airlocks with one board." From aa01ce9efe7addcf9e9e6533758760e182e06b88 Mon Sep 17 00:00:00 2001 From: skull132 Date: Mon, 10 Apr 2017 14:13:08 +0300 Subject: [PATCH 5/9] Changelogs, 10APR2017 --- html/changelog.html | 14 ++++++++++++++ html/changelogs/.all_changelog.yml | 14 ++++++++++++++ html/changelogs/MoondancerPony-PR-[2053].yml | 4 ---- html/changelogs/lohikar-finite-darkness.yml | 6 ------ html/changelogs/lohikar-nightmodeagain.yml | 5 ----- 5 files changed, 28 insertions(+), 15 deletions(-) delete mode 100644 html/changelogs/MoondancerPony-PR-[2053].yml delete mode 100644 html/changelogs/lohikar-finite-darkness.yml delete mode 100644 html/changelogs/lohikar-nightmodeagain.yml diff --git a/html/changelog.html b/html/changelog.html index 1663eced64a..6c713a7cb40 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,20 @@ -->
+

10 April 2017

+

Lohikar updated:

+
    +
  • Shells have figured out how to put on socks & undershirts. Synth uprising soon.
  • +
  • Repairing holes to space no longer sucks the light out of a room forever.
  • +
  • Footstep sounds now actually work without having to take off your boots.
  • +
  • NanoTrasen has fired several designers in charge of stations' night-mode control systems after it was revealed that they did not actually know how time works.
  • +
  • Red-alert is now kind enough to restore the previous nightmode settings instead of forcing its standards of illumination on the crew.
  • +
+

MoondancerPony updated:

+
    +
  • Eliminated the possibility for 'double-spending' airlock electronics, duplicating boards and allowing you to complete multiple airlocks with one board.
  • +
+

08 April 2017

MoondancerPony updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 19cb42bdb63..71e3b4df498 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4094,3 +4094,17 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. reagents transferred. - bugfix: Relocating your/someone's limb will now properly show a message to all bystanders. +2017-04-10: + Lohikar: + - rscadd: Shells have figured out how to put on socks & undershirts. Synth uprising + soon. + - bugfix: Repairing holes to space no longer sucks the light out of a room forever. + - bugfix: Footstep sounds now actually work without having to take off your boots. + - bugfix: NanoTrasen has fired several designers in charge of stations' night-mode + control systems after it was revealed that they did not actually know how time + works. + - tweak: Red-alert is now kind enough to restore the previous nightmode settings + instead of forcing its standards of illumination on the crew. + MoondancerPony: + - bugfix: Eliminated the possibility for 'double-spending' airlock electronics, + duplicating boards and allowing you to complete multiple airlocks with one board. diff --git a/html/changelogs/MoondancerPony-PR-[2053].yml b/html/changelogs/MoondancerPony-PR-[2053].yml deleted file mode 100644 index 6c9bd521fdb..00000000000 --- a/html/changelogs/MoondancerPony-PR-[2053].yml +++ /dev/null @@ -1,4 +0,0 @@ -author: MoondancerPony -delete-after: True -changes: - - bugfix: "Eliminated the possibility for 'double-spending' airlock electronics, duplicating boards and allowing you to complete multiple airlocks with one board." diff --git a/html/changelogs/lohikar-finite-darkness.yml b/html/changelogs/lohikar-finite-darkness.yml deleted file mode 100644 index b7abb7fbdb9..00000000000 --- a/html/changelogs/lohikar-finite-darkness.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: Lohikar -delete-after: True -changes: - - rscadd: "Shells have figured out how to put on socks & undershirts. Synth uprising soon." - - bugfix: "Repairing holes to space no longer sucks the light out of a room forever." - - bugfix: "Footstep sounds now actually work without having to take off your boots." diff --git a/html/changelogs/lohikar-nightmodeagain.yml b/html/changelogs/lohikar-nightmodeagain.yml deleted file mode 100644 index 3cdda17b5ae..00000000000 --- a/html/changelogs/lohikar-nightmodeagain.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Lohikar -delete-after: True -changes: - - bugfix: "NanoTrasen has fired several designers in charge of stations' night-mode control systems after it was revealed that they did not actually know how time works." - - tweak: "Red-alert is now kind enough to restore the previous nightmode settings instead of forcing its standards of illumination on the crew." From fa3e74bdf842fd33f24cc0b1affdcdcf35a8a654 Mon Sep 17 00:00:00 2001 From: MarinaGryphon Date: Wed, 12 Apr 2017 04:40:22 -0500 Subject: [PATCH 6/9] Fixes #2069 (#2070) Fixed #2069 by commenting out a statement that set new pAIs' canmove to zero. --- code/modules/mob/living/silicon/pai/pai.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index e73e71cbe42..c494998119e 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -337,6 +337,8 @@ var/turf/T = get_turf(src) if(istype(T)) T.visible_message("[src] folds outwards, expanding into a mobile form.") + canmove = 1 + resting = 0 /mob/living/silicon/pai/verb/fold_up() set category = "pAI Commands" From fe723018e363f784861d4e1ac1b0bf029536abea Mon Sep 17 00:00:00 2001 From: MarinaGryphon Date: Wed, 12 Apr 2017 04:40:53 -0500 Subject: [PATCH 7/9] Fixes #2072 (#2074) Fixed #2072, caused by an error in indentation when I converted airlock_electronics.dm to absolute pathing. --- .../machinery/doors/airlock_electronics.dm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index 74a350a2223..1df53516f51 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -81,19 +81,19 @@ src.locked = 0 src.last_configurator = I:registered_name - if (locked) - return + if (locked) + return - if (href_list["logout"]) - locked = 1 + if (href_list["logout"]) + locked = 1 - if (href_list["one_access"]) - one_access = !one_access + if (href_list["one_access"]) + one_access = !one_access - if (href_list["access"]) - toggle_access(href_list["access"]) + if (href_list["access"]) + toggle_access(href_list["access"]) - attack_self(usr) + attack_self(usr) /obj/item/weapon/airlock_electronics/proc/toggle_access(var/acc) if (acc == "all") From 2cb9f18671954c18a0e9a39b296d2bb30120d6f2 Mon Sep 17 00:00:00 2001 From: MarinaGryphon Date: Wed, 12 Apr 2017 13:15:39 -0500 Subject: [PATCH 8/9] Hopefully fixed IPC surgery. (#2076) IPC external organs are now encased, which means organ removal now checks for the proper open value (which is 3, not 2). This should fix #2020. --- code/modules/organs/subtypes/machine.dm | 61 +++++++++++++++++++++---- html/changelogs/Moondancer-PR-2076.yml | 5 ++ 2 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 html/changelogs/Moondancer-PR-2076.yml diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm index 416e03caf1c..43cfe6a6d27 100644 --- a/code/modules/organs/subtypes/machine.dm +++ b/code/modules/organs/subtypes/machine.dm @@ -7,7 +7,7 @@ vital = 1 //because it is now hosting the posibrain max_damage = 50 //made same as arm, since it is not vital min_broken_damage = 30 - encased = null + encased = "support frame" /obj/item/organ/external/head/ipc/New() robotize("Hephaestus Integrated Limb") @@ -15,31 +15,35 @@ /obj/item/organ/external/chest/ipc dislocated = -1 - encased = null + encased = "support frame" /obj/item/organ/external/chest/ipc/New() robotize("Hephaestus Integrated Limb") ..() /obj/item/organ/external/groin/ipc dislocated = -1 + encased = "support frame" /obj/item/organ/external/groin/ipc/New() robotize("Hephaestus Integrated Limb") ..() /obj/item/organ/external/arm/ipc dislocated = -1 + encased = "support frame" /obj/item/organ/external/arm/ipc/New() robotize("Hephaestus Integrated Limb") ..() /obj/item/organ/external/arm/right/ipc dislocated = -1 + encased = "support frame" /obj/item/organ/external/arm/right/ipc/New() robotize("Hephaestus Integrated Limb") ..() /obj/item/organ/external/leg/ipc dislocated = -1 + encased = "support frame" /obj/item/organ/external/leg/ipc/New() robotize("Hephaestus Integrated Limb") ..() @@ -52,24 +56,28 @@ /obj/item/organ/external/foot/ipc dislocated = -1 + encased = "support frame" /obj/item/organ/external/foot/ipc/New() robotize("Hephaestus Integrated Limb") ..() /obj/item/organ/external/foot/right/ipc dislocated = -1 + encased = "support frame" /obj/item/organ/external/foot/right/ipc/New() robotize("Hephaestus Integrated Limb") ..() /obj/item/organ/external/hand/ipc dislocated = -1 + encased = "support frame" /obj/item/organ/external/hand/ipc/New() robotize("Hephaestus Integrated Limb") ..() /obj/item/organ/external/hand/right/ipc dislocated = -1 + encased = "support frame" /obj/item/organ/external/hand/right/ipc/New() robotize("Hephaestus Integrated Limb") ..() @@ -214,7 +222,7 @@ vital = 0 max_damage = 50 //made same as arm, since it is not vital min_broken_damage = 30 - encased = null + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/eyes/optical_sensor/terminator @@ -226,7 +234,7 @@ /obj/item/organ/external/chest/terminator dislocated = -1 - encased = null + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/chest/terminator/New() @@ -235,6 +243,7 @@ /obj/item/organ/external/groin/terminator dislocated = -1 + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/groin/terminator/New() @@ -243,6 +252,7 @@ /obj/item/organ/external/arm/terminator dislocated = -1 + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/arm/terminator/New() @@ -251,6 +261,7 @@ /obj/item/organ/external/arm/right/terminator dislocated = -1 + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/arm/right/terminator/New() @@ -259,6 +270,7 @@ /obj/item/organ/external/leg/terminator dislocated = -1 + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/leg/terminator/New() @@ -267,6 +279,7 @@ /obj/item/organ/external/leg/right/terminator dislocated = -1 + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/leg/right/terminator/New() @@ -275,6 +288,7 @@ /obj/item/organ/external/foot/terminator dislocated = -1 + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/foot/terminator/New() @@ -283,6 +297,7 @@ /obj/item/organ/external/foot/right/terminator dislocated = -1 + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/foot/right/terminator/New() @@ -291,6 +306,7 @@ /obj/item/organ/external/hand/terminator dislocated = -1 + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/hand/terminator/New() @@ -299,6 +315,7 @@ /obj/item/organ/external/hand/right/terminator dislocated = -1 + encased = "reinforced support frame" emp_coeff = 0.5 /obj/item/organ/external/hand/right/terminator/New() @@ -315,7 +332,7 @@ vital = 0 max_damage = 50 //made same as arm, since it is not vital min_broken_damage = 30 - encased = null + encased = "support frame" /obj/item/organ/external/head/industrial/New() robotize("Hephaestus Industrial Limb") @@ -323,61 +340,80 @@ /obj/item/organ/external/chest/industrial dislocated = -1 - encased = null + encased = "support frame" + /obj/item/organ/external/chest/industrial/New() robotize("Hephaestus Industrial Limb") ..() /obj/item/organ/external/groin/industrial dislocated = -1 + encased = "support frame" + /obj/item/organ/external/groin/industrial/New() robotize("Hephaestus Industrial Limb") ..() /obj/item/organ/external/arm/industrial dislocated = -1 + encased = "support frame" + /obj/item/organ/external/arm/industrial/New() robotize("Hephaestus Industrial Limb") ..() /obj/item/organ/external/arm/right/industrial dislocated = -1 + encased = "support frame" + /obj/item/organ/external/arm/right/industrial/New() robotize("Hephaestus Industrial Limb") ..() /obj/item/organ/external/leg/industrial dislocated = -1 + encased = "support frame" + /obj/item/organ/external/leg/industrial/New() robotize("Hephaestus Industrial Limb") ..() /obj/item/organ/external/leg/right/industrial dislocated = -1 + encased = "support frame" + /obj/item/organ/external/leg/right/industrial/New() robotize("Hephaestus Industrial Limb") ..() /obj/item/organ/external/foot/industrial dislocated = -1 + encased = "support frame" + /obj/item/organ/external/foot/industrial/New() robotize("Hephaestus Industrial Limb") ..() /obj/item/organ/external/foot/right/industrial dislocated = -1 + encased = "support frame" + /obj/item/organ/external/foot/right/industrial/New() robotize("Hephaestus Industrial Limb") ..() /obj/item/organ/external/hand/industrial dislocated = -1 + encased = "support frame" + /obj/item/organ/external/hand/industrial/New() robotize("Hephaestus Industrial Limb") ..() /obj/item/organ/external/hand/right/industrial dislocated = -1 + encased = "support frame" + /obj/item/organ/external/hand/right/industrial/New() robotize("Hephaestus Industrial Limb") ..() @@ -392,7 +428,7 @@ vital = 0 max_damage = 50 //made same as arm, since it is not vital min_broken_damage = 30 - encased = null + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/head/shell/New() @@ -401,7 +437,7 @@ /obj/item/organ/external/chest/shell dislocated = -1 - encased = null + encased = "support frame" force_skintone = TRUE @@ -411,6 +447,7 @@ /obj/item/organ/external/groin/shell dislocated = -1 + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/groin/shell/New() @@ -419,6 +456,7 @@ /obj/item/organ/external/arm/shell dislocated = -1 + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/arm/shell/New() @@ -427,6 +465,7 @@ /obj/item/organ/external/arm/right/shell dislocated = -1 + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/arm/right/shell/New() @@ -435,6 +474,7 @@ /obj/item/organ/external/leg/shell dislocated = -1 + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/leg/shell/New() @@ -443,6 +483,7 @@ /obj/item/organ/external/leg/right/shell dislocated = -1 + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/leg/right/shell/New() @@ -451,6 +492,7 @@ /obj/item/organ/external/foot/shell dislocated = -1 + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/foot/shell/New() @@ -459,6 +501,7 @@ /obj/item/organ/external/foot/right/shell dislocated = -1 + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/foot/right/shell/New() @@ -467,6 +510,7 @@ /obj/item/organ/external/hand/shell dislocated = -1 + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/hand/shell/New() @@ -475,6 +519,7 @@ /obj/item/organ/external/hand/right/shell dislocated = -1 + encased = "support frame" force_skintone = TRUE /obj/item/organ/external/hand/right/shell/New() diff --git a/html/changelogs/Moondancer-PR-2076.yml b/html/changelogs/Moondancer-PR-2076.yml new file mode 100644 index 00000000000..20ce03e6f79 --- /dev/null +++ b/html/changelogs/Moondancer-PR-2076.yml @@ -0,0 +1,5 @@ +author: MoondancerPony +delete-after: True +changes: + - bugfix: "Taught roboticists how to properly remove IPC organs." + - tweak: "IPC organs are now encased." From 078420769ecd4b0f0026f24a5111571cfc8ccbf2 Mon Sep 17 00:00:00 2001 From: skull132 Date: Wed, 12 Apr 2017 21:16:38 +0300 Subject: [PATCH 9/9] Changelogs, 12APR2017 --- html/changelog.html | 7 +++++++ html/changelogs/.all_changelog.yml | 4 ++++ html/changelogs/Moondancer-PR-2076.yml | 5 ----- 3 files changed, 11 insertions(+), 5 deletions(-) delete mode 100644 html/changelogs/Moondancer-PR-2076.yml diff --git a/html/changelog.html b/html/changelog.html index 6c713a7cb40..9a95d30688f 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,13 @@ -->
    +

    12 April 2017

    +

    MoondancerPony updated:

    +
      +
    • Taught roboticists how to properly remove IPC organs.
    • +
    • IPC organs are now encased.
    • +
    +

    10 April 2017

    Lohikar updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 71e3b4df498..05fa1ab4c4a 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4108,3 +4108,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. MoondancerPony: - bugfix: Eliminated the possibility for 'double-spending' airlock electronics, duplicating boards and allowing you to complete multiple airlocks with one board. +2017-04-12: + MoondancerPony: + - bugfix: Taught roboticists how to properly remove IPC organs. + - tweak: IPC organs are now encased. diff --git a/html/changelogs/Moondancer-PR-2076.yml b/html/changelogs/Moondancer-PR-2076.yml deleted file mode 100644 index 20ce03e6f79..00000000000 --- a/html/changelogs/Moondancer-PR-2076.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: MoondancerPony -delete-after: True -changes: - - bugfix: "Taught roboticists how to properly remove IPC organs." - - tweak: "IPC organs are now encased."