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/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/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index e69f750a5fa..1df53516f51 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,100 +16,100 @@ 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
" + if (locked) + t1 += "Swipe ID
" + else + t1 += "Block
" + + t1 += "Access requirement is set to " + t1 += one_access ? "ONE
" : "ALL
" + + t1 += conf_access == null ? "All
" : "All
" + + t1 += "
" + + 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") + +/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 - t1 += "Block
" - - t1 += "Access requirement is set to " - t1 += one_access ? "ONE
" : "ALL
" - - t1 += conf_access == null ? "All
" : "All
" - - t1 += "
" - - 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)) + 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 = 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 + 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) - 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/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/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/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/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" 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/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/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!") diff --git a/html/changelog.html b/html/changelog.html index 1663eced64a..9a95d30688f 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,27 @@ -->
+

12 April 2017

+

MoondancerPony updated:

+ + +

10 April 2017

+

Lohikar updated:

+ +

MoondancerPony updated:

+ +

08 April 2017

MoondancerPony updated: