From 4b794ded6c26077c32f15051291e6ecf6d98d353 Mon Sep 17 00:00:00 2001 From: fira Date: Sat, 4 Nov 2023 06:32:04 +0100 Subject: [PATCH 01/51] Whiskey Outpost Reqs Tweaks (#4803) # About the pull request Right now reqs on WO is a pain for three major reasons: * Marines have less gearing option making Req Line an huge burden * A lot of stuff is defunct or removed such as the recycler, parcel network, and vendors not containing now basic gear nowadays * Because of all that there is little incentive to run Reqs beyond the attachies line, meaning it becomes a pure roaming game as assistant engineers This attempts to address it in the following ways: * Fixing the recycler. It now outputs materials, and can now recycle all the crates that previously littered Reqs for metal * Fixing req vendors. They did not benefit from eg. attachies vendor dispensing to table like Almayers' * Standardize the vendors contents with Almayers' to bring useful things like binos or grenades that were missing. The ammo vendor retains the spec ammo in addition to this. * Readds a delivery chute, related piping, paper wrap, and destination taggers, allowing Reqs to once again fax whole crates to pillboxes * Tweak supply pad deliveries weights and contents to make it more interesting and hopefully not ignored. This means higher chances to get materials, and new packs such as mortar shells, while reducing highly redundant packs such as floodlights. * Minor Req mapping adjsutments Additionally it adds the two missing synth vendors from the Almayer to the map. **!!! Note that this enables recycler output also for other instances of the Reyclers. I don't believe it will be a major problem but they could be issued a yield penalty if you think it might. !!!** # Explain why it's good for the game QoL and making Reqs more relevant on WO, aswell as incentive using the bunker building more # Changelog :cl: fix: Fixed recyclers (including Whiskey Outposts') and added the possibility to recycle crates with them. fix: Standardized "vend to table" functionality of vendors, enabling it to work for Whiskey Outpost's Reqs. add: Whiskey Outpost vendors now contain the same items as Almayer's. WO still has spare specialist ammo on top of that. add: Readded delivery chute, wrap and tagger to Whiskey Outpost Reqs, letting you pack and send crates and items via disposals again. balance: Whiskey Outpost supply drops should now be more interesting and impactful. add: Added missing Synth vendors on WO. /:cl: --- code/game/area/WhiskeyOutpost.dm | 2 +- .../colonialmarines/whiskey_outpost.dm | 79 ++++++- code/game/machinery/vending/cm_vending.dm | 23 +- .../vending/vendor_types/requisitions.dm | 56 +---- .../vending/vendor_types/wo_vendors.dm | 142 +----------- code/modules/recycling/recycler.dm | 54 ++++- .../Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm | 213 +++++++++++++----- 7 files changed, 310 insertions(+), 259 deletions(-) diff --git a/code/game/area/WhiskeyOutpost.dm b/code/game/area/WhiskeyOutpost.dm index 02d94dc942da..aef72d1a9941 100644 --- a/code/game/area/WhiskeyOutpost.dm +++ b/code/game/area/WhiskeyOutpost.dm @@ -65,7 +65,7 @@ icon_state = "livingspace" /area/whiskey_outpost/inside/supply - name = "\improper Supply Depo" + name = "\improper Supply Depot" icon_state = "req" /* diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm index e7d7b7a67edf..6669dc058ee7 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm @@ -322,9 +322,9 @@ OT = "sup" //no breaking anything. else if (OT == "sup") - randpick = rand(0,50) + randpick = rand(0,90) switch(randpick) - if(0 to 5)//Marine Gear 10% Chance. + if(0 to 3)//Marine Gear 3% Chance. crate = new /obj/structure/closet/crate/secure/gear(T) choosemax = rand(5,10) randomitems = list(/obj/item/clothing/head/helmet/marine, @@ -340,19 +340,19 @@ /obj/effect/landmark/wo_supplies/storage/webbing, /obj/item/device/binoculars) - if(6 to 10)//Lights and shiet 10% + if(4 to 6)//Lights and shiet 2% new /obj/structure/largecrate/supply/floodlights(T) new /obj/structure/largecrate/supply/supplies/flares(T) - if(11 to 13) //6% Chance to drop this !FUN! junk. + if(7 to 10) //3% Chance to drop this !FUN! junk. crate = new /obj/structure/closet/crate/secure/gear(T) spawnitems = list(/obj/item/storage/belt/utility/full, /obj/item/storage/belt/utility/full, /obj/item/storage/belt/utility/full, /obj/item/storage/belt/utility/full) - if(14 to 18)//Materials 10% Chance. + if(11 to 22)//Materials 12% Chance. crate = new /obj/structure/closet/crate/secure/gear(T) choosemax = rand(3,8) randomitems = list(/obj/item/stack/sheet/metal, @@ -363,7 +363,7 @@ /obj/item/stack/sandbags_empty/half, /obj/item/stack/sandbags_empty/half) - if(19 to 20)//Blood Crate 4% chance + if(23 to 25)//Blood Crate 2% chance crate = new /obj/structure/closet/crate/medical(T) spawnitems = list(/obj/item/reagent_container/blood/OMinus, /obj/item/reagent_container/blood/OMinus, @@ -371,7 +371,7 @@ /obj/item/reagent_container/blood/OMinus, /obj/item/reagent_container/blood/OMinus) - if(21 to 25)//Advanced meds Crate 10% + if(26 to 30)//Advanced meds Crate 5% crate = new /obj/structure/closet/crate/medical(T) spawnitems = list(/obj/item/storage/firstaid/fire, /obj/item/storage/firstaid/regular, @@ -386,7 +386,7 @@ /obj/item/clothing/glasses/hud/health, /obj/item/device/defibrillator) - if(26 to 30)//Random Medical Items 10% as well. Made the list have less small junk + if(31 to 34)//Random Medical Items 4%. Made the list have less small junk crate = new /obj/structure/closet/crate/medical(T) spawnitems = list(/obj/item/storage/belt/medical/lifesaver/full, /obj/item/storage/belt/medical/lifesaver/full, @@ -394,7 +394,7 @@ /obj/item/storage/belt/medical/lifesaver/full, /obj/item/storage/belt/medical/lifesaver/full) - if(31 to 35)//Random explosives Crate 10% because the lord commeth and said let there be explosives. + if(35 to 40)//Random explosives Crate 5% because the lord commeth and said let there be explosives. crate = new /obj/structure/closet/crate/ammo(T) choosemax = rand(1,5) randomitems = list(/obj/item/storage/box/explosive_mines, @@ -404,7 +404,7 @@ /obj/item/explosive/grenade/high_explosive, /obj/item/storage/box/nade_box ) - if(36 to 40) // Junk + if(41 to 44) crate = new /obj/structure/closet/crate/ammo(T) spawnitems = list( /obj/item/attachable/heavy_barrel, @@ -412,20 +412,75 @@ /obj/item/attachable/heavy_barrel, /obj/item/attachable/heavy_barrel) - if(40 to 48)//Weapon + supply beacon drop. 6% + if(45 to 50)//Weapon + supply beacon drop. 5% crate = new /obj/structure/closet/crate/ammo(T) spawnitems = list(/obj/item/device/whiskey_supply_beacon, /obj/item/device/whiskey_supply_beacon, /obj/item/device/whiskey_supply_beacon, /obj/item/device/whiskey_supply_beacon) - if(49 to 50)//Rare weapons. Around 4% + if(51 to 57)//Rare weapons. Around 6% crate = new /obj/structure/closet/crate/ammo(T) spawnitems = list(/obj/effect/landmark/wo_supplies/ammo/box/rare/m41aap, /obj/effect/landmark/wo_supplies/ammo/box/rare/m41aapmag, /obj/effect/landmark/wo_supplies/ammo/box/rare/m41aextend, /obj/effect/landmark/wo_supplies/ammo/box/rare/smgap, /obj/effect/landmark/wo_supplies/ammo/box/rare/smgextend) + + if(58 to 65) // Sandbags kit + crate = new /obj/structure/closet/crate(T) + spawnitems = list(/obj/item/tool/shovel/etool, + /obj/item/stack/sandbags_empty/half, + /obj/item/stack/sandbags_empty/half, + /obj/item/stack/sandbags_empty/half) + + if(66 to 70) // Mortar shells. Pew Pew! + crate = new /obj/structure/closet/crate/secure/mortar_ammo(T) + choosemax = rand(6,10) + randomitems = list(/obj/item/mortar_shell/he, + /obj/item/mortar_shell/incendiary, + /obj/item/mortar_shell/flare, + /obj/item/mortar_shell/frag) + + if(71 to 79) + crate = new /obj/structure/closet/crate/ammo(T) + choosemax = rand(2, 3) + randomitems = list(/obj/item/ammo_box/rounds, + /obj/item/ammo_box/rounds/ap, + /obj/item/ammo_box/rounds/smg, + /obj/item/ammo_box/rounds/smg/ap, + /obj/item/ammo_box/magazine/ap, + /obj/item/ammo_box/magazine/ext, + /obj/item/ammo_box/magazine/m4ra/ap, + /obj/item/ammo_box/magazine/m4ra/ap, + /obj/item/ammo_box/magazine/m39/ap, + /obj/item/ammo_box/magazine/m39/ext, + ) + + if(80 to 82) + crate = new /obj/structure/closet/crate/ammo(T) + choosemax = rand(2, 3) + randomitems = list(/obj/item/ammo_magazine/rifle/lmg/holo_target, + /obj/item/ammo_magazine/rifle/lmg/holo_target, + /obj/item/ammo_magazine/rifle/lmg, + /obj/item/ammo_magazine/rifle/lmg, + ) + + if(83 to 86) + crate = new /obj/structure/closet/crate/ammo(T) + spawnitems = list( + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/magnetic_harness) + + if(86 to 90) + crate = new /obj/structure/closet/crate/secure/gear(T) + spawnitems = list( + /obj/item/device/binoculars/range, + /obj/item/device/binoculars/range, + ) + if(crate) crate.storage_capacity = 60 diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index 43ff59488aa3..c530da73d8e5 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -37,8 +37,14 @@ var/vend_delay = 0 //delaying vending of an item (for drinks machines animation, for example). Make sure to synchronize this with animation duration var/vend_sound //use with caution. Potential spam + /// X Offset to vend to var/vend_x_offset = 0 + /// Y Offset to vend to var/vend_y_offset = 0 + /// Vending direction from adjacent users, if not using vend_x_offset or vend_y_offset + var/vend_dir + /// Direction to adjacent user from which we're allowed to do offset vending + var/list/vend_dir_whitelist var/list/listed_products = list() @@ -125,11 +131,20 @@ GLOBAL_LIST_EMPTY(vending_products) GLOB.vending_products[typepath] = 1 //get which turf the vendor will dispense its products on. -/obj/structure/machinery/cm_vending/proc/get_appropriate_vend_turf() - var/turf/T = loc +/obj/structure/machinery/cm_vending/proc/get_appropriate_vend_turf(mob/living/carbon/human/user) + var/turf/turf = loc if(vend_x_offset != 0 || vend_y_offset != 0) //this check should be more less expensive than using locate to locate your own tile every vending. - T = locate(x + vend_x_offset, y + vend_y_offset, z) - return T + turf = locate(x + vend_x_offset, y + vend_y_offset, z) + return turf + if(vend_dir) + if(vend_dir_whitelist) + var/user_dir = get_dir(loc, user) + if(!(user_dir in vend_dir_whitelist)) + return turf + var/turf/relative_turf = get_step(user, vend_dir) + if(relative_turf.Adjacent(src)) + return relative_turf + return turf /obj/structure/machinery/cm_vending/get_examine_text(mob/living/carbon/human/user) . = ..() diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index 8558019839f7..1dbd31c63de4 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -175,22 +175,8 @@ //Special cargo-specific vendor with vending offsets /obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_LOAD_AMMO_BOXES //We want to vend to turf not hand, since we are in requisitions - -/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/get_appropriate_vend_turf(mob/living/carbon/human/H) - var/turf/turf_to_vent_to - if(vend_x_offset != 0 || vend_y_offset != 0) //this will allow to avoid code below that suits only Almayer. - turf_to_vent_to = locate(x + vend_x_offset, y + vend_y_offset, z) - else - turf_to_vent_to = get_turf(get_step(src, NORTH)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = get_turf(get_step(src, SOUTH)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = H.loc - return turf_to_vent_to + vend_dir = WEST + vend_dir_whitelist = list(NORTH, SOUTH) /obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend icon_state = "req_guns_wall" @@ -209,6 +195,8 @@ req_access = list(ACCESS_MARINE_CARGO) vendor_theme = VENDOR_THEME_USCM vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND | VEND_LOAD_AMMO_BOXES + vend_dir = WEST + vend_dir_whitelist = list(SOUTHWEST, NORTHWEST) /obj/structure/machinery/cm_vending/sorted/cargo_ammo/vend_fail() return @@ -307,22 +295,6 @@ /obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_LOAD_AMMO_BOXES //We want to vend to turf not hand, since we are in requisitions -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/get_appropriate_vend_turf(mob/living/carbon/human/H) - var/turf/turf_to_vent_to - if(vend_x_offset != 0 || vend_y_offset != 0) //this will allow to avoid code below that suits only Almayer. - turf_to_vent_to = locate(x + vend_x_offset, y + vend_y_offset, z) - else - turf_to_vent_to = get_turf(get_step(src, NORTHWEST)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = get_turf(get_step(src, SOUTHWEST)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = H.loc - return turf_to_vent_to - //------------ATTACHMENTS VENDOR--------------- /obj/structure/machinery/cm_vending/sorted/attachments @@ -331,6 +303,9 @@ req_access = list(ACCESS_MARINE_CARGO) vendor_theme = VENDOR_THEME_USCM icon_state = "req_attach" + vend_dir = WEST + vend_dir_whitelist = list(SOUTHEAST, NORTHEAST) + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY //We want to vend to turf not hand, since we are in requisitions /obj/structure/machinery/cm_vending/sorted/attachments/vend_fail() return @@ -379,22 +354,6 @@ list("M44 Magnum Sharpshooter Stock", round(scale * 4.5), /obj/item/attachable/stock/revolver, VENDOR_ITEM_REGULAR) ) -/obj/structure/machinery/cm_vending/sorted/attachments/get_appropriate_vend_turf(mob/living/carbon/human/H) - var/turf/turf_to_vent_to - if(vend_x_offset != 0 || vend_y_offset != 0) //this will allow to avoid code below that suits only Almayer. - turf_to_vent_to = locate(x + vend_x_offset, y + vend_y_offset, z) - else - turf_to_vent_to = get_turf(get_step(src, NORTHEAST)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = get_turf(get_step(src, SOUTHEAST)) - if(H.loc == turf_to_vent_to) - turf_to_vent_to = get_turf(get_step(H.loc, WEST)) - else - turf_to_vent_to = loc - return turf_to_vent_to - /obj/structure/machinery/cm_vending/sorted/attachments/blend icon_state = "req_attach_wall" tiles_with = list( @@ -402,7 +361,6 @@ /obj/structure/machinery/door/airlock, /turf/closed/wall/almayer, ) - vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY //We want to vend to turf not hand, since we are in requisitions //------------UNIFORM VENDOR--------------- diff --git a/code/game/machinery/vending/vendor_types/wo_vendors.dm b/code/game/machinery/vending/vendor_types/wo_vendors.dm index 645640f9dc84..557933754f07 100644 --- a/code/game/machinery/vending/vendor_types/wo_vendors.dm +++ b/code/game/machinery/vending/vendor_types/wo_vendors.dm @@ -110,52 +110,13 @@ ) //------------REQ AMMUNITION VENDOR--------------- -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/wo +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/wo req_access = list(ACCESS_MARINE_CARGO) req_one_access = list() -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/wo/populate_product_list(scale) - listed_products = list( - list("REGULAR AMMUNITION", -1, null, null), - list("Box Of Buckshot Shells", round(scale * 5), /obj/item/ammo_magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), - list("Box Of Flechette Shells", round(scale * 5), /obj/item/ammo_magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), - list("Box Of Shotgun Slugs", round(scale * 5), /obj/item/ammo_magazine/shotgun/slugs, VENDOR_ITEM_REGULAR), - list("M4RA magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/m4ra, VENDOR_ITEM_REGULAR), - list("M39 HV Magazine (10x20mm)", round(scale * 10), /obj/item/ammo_magazine/smg/m39, VENDOR_ITEM_REGULAR), - list("M41A MK1 Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/m41aMK1, VENDOR_ITEM_REGULAR), - list("M41A MK2 Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), - list("M44 Speed Loader (.44)", round(scale * 10), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), - list("M4A3 Magazine (9mm)", round(scale * 10), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), - - list("ARMOR-PIERCING AMMUNITION", -1, null, null), - list("88 Mod 4 AP Magazine (9mm)", round(scale * 5), /obj/item/ammo_magazine/pistol/mod88, VENDOR_ITEM_REGULAR), - list("M4RA AP Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/m4ra/ap, VENDOR_ITEM_REGULAR), - list("M39 AP Magazine (10x20mm)", round(scale * 5), /obj/item/ammo_magazine/smg/m39/ap, VENDOR_ITEM_REGULAR), - list("M41A MK1 AP Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/m41aMK1/ap, VENDOR_ITEM_REGULAR), - list("M41A MK2 AP Magazine (10x24mm)", round(scale * 10), /obj/item/ammo_magazine/rifle/ap, VENDOR_ITEM_REGULAR), - list("M4A3 AP Magazine (9mm)", round(scale * 5), /obj/item/ammo_magazine/pistol/ap, VENDOR_ITEM_REGULAR), - - list("EXTENDED AMMUNITION", -1, null, null), - list("M39 Extended Magazine (10x20mm)", round(scale * 1), /obj/item/ammo_magazine/smg/m39/extended, VENDOR_ITEM_REGULAR), - list("M41A MK2 Extended Magazine (10x24mm)", round(scale * 3), /obj/item/ammo_magazine/rifle/extended, VENDOR_ITEM_REGULAR), - - list("INCENDIARY AMMUNITION", -1, null, null), - list("M4RA Incendiary Magazine (10x24mm)", round(scale * 3), /obj/item/ammo_magazine/rifle/m4ra/incendiary, VENDOR_ITEM_REGULAR), - list("M39 Incendiary Magazine (10x20mm)", round(scale * 2), /obj/item/ammo_magazine/smg/m39/incendiary, VENDOR_ITEM_REGULAR), - list("M41A MK2 Incendiary Magazine (10x24mm)", round(scale * 3), /obj/item/ammo_magazine/rifle/incendiary, VENDOR_ITEM_REGULAR), - list("M4A3 Incendiary Magazine (9mm)", round(scale * 1), /obj/item/ammo_magazine/pistol/incendiary, VENDOR_ITEM_REGULAR), - - list("SPECIAL AMMUNITION", -1, null, null), - list("Incinerator Tank", round(scale * 2.5), /obj/item/ammo_magazine/flamer_tank, VENDOR_ITEM_REGULAR), - list("M41AE2 Ammo Box (10x24mm)", round(scale * 5), /obj/item/ammo_magazine/rifle/lmg, VENDOR_ITEM_REGULAR), - list("M44 Heavy Speed Loader (.44)", round(scale * 2), /obj/item/ammo_magazine/revolver/heavy, VENDOR_ITEM_REGULAR), - list("M44 Marksman Speed Loader (.44)", round(scale * 2), /obj/item/ammo_magazine/revolver/marksman, VENDOR_ITEM_REGULAR), - list("M4A3 HP Magazine (9mm)", round(scale * 5), /obj/item/ammo_magazine/pistol/hp, VENDOR_ITEM_REGULAR), - list("M56 Battery", round(scale * 5), /obj/item/smartgun_battery, VENDOR_ITEM_REGULAR), - list("M56 Smartgun Drum", round(scale * 2), /obj/item/ammo_magazine/smartgun, VENDOR_ITEM_REGULAR), - list("SU-6 Smartpistol Magazine (.45)", round(scale * 6), /obj/item/ammo_magazine/pistol/smart, VENDOR_ITEM_REGULAR), - list("VP78 Magazine", round(scale * 6), /obj/item/ammo_magazine/pistol/vp78, VENDOR_ITEM_REGULAR), - +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/wo/populate_product_list(scale) + ..() + listed_products += list( list("EXTRA SCOUT AMMUNITION", -1, null, null, null), list("A19 High Velocity Impact Magazine (10x24mm)", round(scale * 1), /obj/item/ammo_magazine/rifle/m4ra/custom/impact, VENDOR_ITEM_REGULAR), list("A19 High Velocity Incendiary Magazine (10x24mm)", round(scale * 1), /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, VENDOR_ITEM_REGULAR), @@ -181,96 +142,17 @@ list("Large Incinerator Tank", round(scale * 1), /obj/item/ammo_magazine/flamer_tank/large, VENDOR_ITEM_REGULAR), list("Large Incinerator Tank (B) (Green Flame)", round(scale * 1), /obj/item/ammo_magazine/flamer_tank/large/B, VENDOR_ITEM_REGULAR), list("Large Incinerator Tank (X) (Blue Flame)", round(scale * 1), /obj/item/ammo_magazine/flamer_tank/large/X, VENDOR_ITEM_REGULAR), - - list("AMMUNITION BOXES", -1, null, null), - list("Rifle Ammunition Box (10x24mm)", round(scale * 0.9), /obj/item/ammo_box/rounds, VENDOR_ITEM_REGULAR), - list("Rifle Ammunition Box (10x24mm AP)", round(scale * 0.75), /obj/item/ammo_box/rounds/ap, VENDOR_ITEM_REGULAR), - list("SMG Ammunition Box (10x20mm HV)", round(scale * 0.9), /obj/item/ammo_box/rounds/smg, VENDOR_ITEM_REGULAR), - list("SMG Ammunition Box (10x20mm AP)", round(scale * 0.75), /obj/item/ammo_box/rounds/smg/ap, VENDOR_ITEM_REGULAR), ) //------------ARMAMENTS VENDOR--------------- -/obj/structure/machinery/cm_vending/sorted/cargo_guns/wo +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/wo req_access = list(ACCESS_MARINE_CARGO) + vend_dir = NORTH + vend_dir_whitelist = list(EAST, WEST) -/obj/structure/machinery/cm_vending/sorted/cargo_guns/wo/populate_product_list(scale) - listed_products = list( - list("PRIMARY FIREARMS", -1, null, null), - list("M4RA Battle Rifle", round(scale * 20), /obj/item/weapon/gun/rifle/m4ra, VENDOR_ITEM_REGULAR), - list("M37A2 Pump Shotgun", round(scale * 10), /obj/item/weapon/gun/shotgun/pump, VENDOR_ITEM_REGULAR), - list("M39 Submachinegun", round(scale * 15), /obj/item/weapon/gun/smg/m39, VENDOR_ITEM_REGULAR), - list("M41A Pulse Rifle MK1", round(scale * 20), /obj/item/weapon/gun/rifle/m41aMK1, VENDOR_ITEM_REGULAR), - list("M41A Pulse Rifle MK2", round(scale * 20), /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_REGULAR), - list("MK221 Tactical Shotgun", round(scale * 3), /obj/item/weapon/gun/shotgun/combat, VENDOR_ITEM_REGULAR), - - list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 15), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), - list("M44 Combat Revolver", round(scale * 10), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), - list("M4A3 Service Pistol", round(scale * 20), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), - list("SU-6 Smartpistol", round(scale * 2), /obj/item/weapon/gun/pistol/smart, VENDOR_ITEM_REGULAR), - list("M82F Flare Gun", round(scale * 5), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), - - list("RESTRICTED FIREARMS", -1, null, null), - list("VP78 Pistol", round(scale * 4), /obj/item/storage/box/guncase/vp78, VENDOR_ITEM_REGULAR), - list("SU-6 Smart Pistol", round(scale * 3), /obj/item/storage/box/guncase/smartpistol, VENDOR_ITEM_REGULAR), - list("M41AE2 Heavy Pulse Rifle", round(scale * 2), /obj/item/storage/box/guncase/lmg, VENDOR_ITEM_REGULAR), - list("M56D Heavy Machine Gun", round(scale * 2), /obj/item/storage/box/guncase/m56d, VENDOR_ITEM_REGULAR), - list("M2C Heavy Machine Gun", round(scale * 2), /obj/item/storage/box/guncase/m2c, VENDOR_ITEM_REGULAR), - list("M240 Incinerator Unit", round(scale * 2), /obj/item/storage/box/guncase/flamer, VENDOR_ITEM_REGULAR), - - list("EXPLOSIVES", -1, null, null), - list("M15 Fragmentation Grenade", round(scale * 2), /obj/item/explosive/grenade/high_explosive/m15, VENDOR_ITEM_REGULAR), - list("M20 Claymore Anti-Personnel Mine", round(scale * 5), /obj/item/explosive/mine, VENDOR_ITEM_REGULAR), - list("M40 HEDP Grenade Box", round(scale * 1), /obj/item/storage/box/nade_box, VENDOR_ITEM_REGULAR), - list("M40 HIDP Incendiary Grenade", round(scale * 3), /obj/item/explosive/grenade/incendiary, VENDOR_ITEM_REGULAR), - list("M40 HSDP Smoke Grenade", round(scale * 5), /obj/item/explosive/grenade/smokebomb, VENDOR_ITEM_REGULAR), - - list("BACKPACKS", -1, null, null), - list("Lightweight IMP Backpack", round(scale * 15), /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), - list("Shotgun Scabbard", round(scale * 10), /obj/item/storage/large_holster/m37, VENDOR_ITEM_REGULAR), - list("USCM Pyrotechnician G4-1 Fueltank", round(scale * 2), /obj/item/storage/backpack/marine/engineerpack/flamethrower/kit, VENDOR_ITEM_REGULAR), - list("USCM Technician Welderpack", round(scale * 2), /obj/item/storage/backpack/marine/engineerpack, VENDOR_ITEM_REGULAR), - - list("BELTS", -1, null, null), - list("G8-A General Utility Pouch", round(scale * 3), /obj/item/storage/backpack/general_belt, VENDOR_ITEM_REGULAR), - list("M276 Pattern Ammo Load Rig", round(scale * 15), /obj/item/storage/belt/marine, VENDOR_ITEM_REGULAR), - list("M276 Pattern General Pistol Holster Rig", round(scale * 10), /obj/item/storage/belt/gun/m4a3, VENDOR_ITEM_REGULAR), - list("M276 Pattern M39 Holster Rig", round(scale * 5), /obj/item/storage/belt/gun/m39, VENDOR_ITEM_REGULAR), - list("M276 Pattern M44 Holster Rig", round(scale * 5), /obj/item/storage/belt/gun/m44, VENDOR_ITEM_REGULAR), - list("M276 M82F Holster Rig", round(scale * 2), /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR), - list("M276 Pattern Shotgun Shell Loading Rig", round(scale * 10), /obj/item/storage/belt/shotgun, VENDOR_ITEM_REGULAR), - - list("WEBBINGS", -1, null, null), - list("Black Webbing Vest", round(scale * 5), /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), - list("Brown Webbing Vest", round(scale * 5), /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", round(scale * 5), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), - list("Webbing", round(scale * 5), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR), - list("Knife Webbing", round(scale * 3), /obj/item/clothing/accessory/storage/knifeharness, VENDOR_ITEM_REGULAR), - list("Drop Pouch", round(scale * 5), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), - - list("POUCHES", -1, null, null), - list("Construction Pouch", round(scale * 2), /obj/item/storage/pouch/construction, VENDOR_ITEM_REGULAR), - list("Explosive Pouch", round(scale * 2), /obj/item/storage/pouch/explosive, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/firstaid/full, VENDOR_ITEM_REGULAR), - list("First Responder Pouch", round(scale * 2), /obj/item/storage/pouch/first_responder, VENDOR_ITEM_REGULAR), - list("Flare Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", round(scale * 4), /obj/item/storage/pouch/flamertank, VENDOR_ITEM_REGULAR), - list("Large Pistol Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine/pistol/large, VENDOR_ITEM_REGULAR), - list("Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR), - list("Medical Pouch", round(scale * 2), /obj/item/storage/pouch/medical, VENDOR_ITEM_REGULAR), - list("Medium General Pouch", round(scale * 2), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", round(scale * 2), /obj/item/storage/pouch/medkit, VENDOR_ITEM_REGULAR), - list("Sidearm Pouch", round(scale * 15), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR), - list("Syringe Pouch", round(scale * 2), /obj/item/storage/pouch/syringe, VENDOR_ITEM_REGULAR), - list("Tools Pouch (Full)", round(scale * 2), /obj/item/storage/pouch/tools/full, VENDOR_ITEM_REGULAR), - - list("MISCELLANEOUS", -1, null, null), - list("Combat Flashlight", round(scale * 5), /obj/item/device/flashlight/combat, VENDOR_ITEM_REGULAR), - list("Entrenching Tool (ET)", round(scale * 4), /obj/item/tool/shovel/etool, VENDOR_ITEM_REGULAR), - list("Gas Mask", round(scale * 10), /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR), - list("M89-S Signal Flare Pack", round(scale * 2), /obj/item/storage/box/m94/signal, VENDOR_ITEM_REGULAR), - list("M94 Marking Flare Pack", round(scale * 10), /obj/item/storage/box/m94, VENDOR_ITEM_REGULAR), - list("Machete Scabbard (Full)", round(scale * 20), /obj/item/storage/large_holster/machete/full, VENDOR_ITEM_REGULAR), - list("MB-6 Folding Barricades (x3)", round(scale * 1), /obj/item/stack/folding_barricade/three, VENDOR_ITEM_REGULAR) - ) +//---- ATTACHIES +/obj/structure/machinery/cm_vending/sorted/attachments/wo + req_access = list(ACCESS_MARINE_CARGO) + vend_dir = NORTH + vend_dir_whitelist = list(SOUTHWEST, SOUTHEAST) diff --git a/code/modules/recycling/recycler.dm b/code/modules/recycling/recycler.dm index 73d00b763f68..abbf010bf4cc 100644 --- a/code/modules/recycling/recycler.dm +++ b/code/modules/recycling/recycler.dm @@ -9,32 +9,39 @@ density = TRUE var/recycle_dir = NORTH var/list/stored_matter = list("metal" = 0, "glass" = 0) + /// Amount of metal refunded per crate, by default about 2 metal sheets (building one takes 5) + var/crate_reward = 7500 + /// Amount of sheets to stack before outputting a stack + var/sheets_per_batch = 10 var/last_recycle_sound //for sound cooldown var/ignored_items = list(/obj/item/limb) -/obj/structure/machinery/recycler/New() - ..() - update_icon() +/obj/structure/machinery/recycler/whiskey + crate_reward = 15000 // Boosted reward (4 sheets) to make up for workload and the fact you can't sell them +/obj/structure/machinery/recycler/Initialize(mapload, ...) + . = ..() + update_icon() /obj/structure/machinery/recycler/power_change() ..() update_icon() - /obj/structure/machinery/recycler/update_icon() + . = ..() icon_state = "separator-AO[(inoperable()) ? "0":"1"]" - -/obj/structure/machinery/recycler/Collided(atom/movable/AM) +/obj/structure/machinery/recycler/Collided(atom/movable/movable) if(inoperable()) return - var/move_dir = get_dir(loc, AM.loc) - if(!AM.anchored && move_dir == recycle_dir) - if(istype(AM, /obj/item)) - recycle(AM) + var/move_dir = get_dir(loc, movable.loc) + if(!movable.anchored && move_dir == recycle_dir) + if(istype(movable, /obj/item)) + recycle(movable) + else if(istype(movable, /obj/structure/closet/crate)) + recycle_crate(movable) else - AM.forceMove(loc) + movable.forceMove(loc) /obj/structure/machinery/recycler/proc/recycle(obj/item/I) @@ -63,7 +70,32 @@ stored_matter[material] += total_material qdel(I) + play_recycle_sound() + output_materials() + +/obj/structure/machinery/recycler/proc/recycle_crate(obj/structure/closet/crate) + for(var/atom/movable/movable in crate) + movable.forceMove(loc) + recycle(movable) + stored_matter["metal"] += crate_reward + qdel(crate) + play_recycle_sound() + output_materials() + +/obj/structure/machinery/recycler/proc/play_recycle_sound() if(last_recycle_sound < world.time) playsound(loc, 'sound/items/Welder.ogg', 30, 1) last_recycle_sound = world.time + 50 +/obj/structure/machinery/recycler/proc/output_materials() + for(var/material in stored_matter) + if(stored_matter[material] >= sheets_per_batch * 3750) + var/sheets = round(stored_matter[material] / 3750) + stored_matter[material] -= sheets * 3750 + var/obj/item/stack/sheet/sheet_stack + switch(material) + if("metal") sheet_stack = new /obj/item/stack/sheet/metal(loc) + if("glass") sheet_stack = new /obj/item/stack/sheet/glass(loc) + if(sheet_stack) + sheet_stack.amount = sheets + sheet_stack.update_icon() diff --git a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm index bfef8513f799..36c8e9abe717 100644 --- a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm +++ b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm @@ -166,6 +166,11 @@ }, /turf/open/floor/wood, /area/whiskey_outpost/inside/cic) +"aC" = ( +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/whiskey_outpost/inside/cic) "aE" = ( /obj/structure/bed, /obj/item/bedsheet/hop, @@ -868,6 +873,13 @@ "dl" = ( /turf/closed/wall/r_wall/unmeltable, /area/whiskey_outpost/inside/hospital) +"dp" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "dr" = ( /obj/structure/window/reinforced{ dir = 4; @@ -2021,6 +2033,13 @@ /obj/structure/surface/rack, /turf/open/jungle, /area/whiskey_outpost/outside/lane/two_south) +"hr" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/machinery/disposal/deliveryChute{ + dir = 1 + }, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "hs" = ( /turf/open/gm/coast/beachcorner2/south_west, /area/whiskey_outpost/outside/lane/four_north) @@ -3058,8 +3077,10 @@ }, /area/whiskey_outpost/inside/supply) "kE" = ( -/obj/structure/surface/rack, -/turf/open/floor/plating/plating_catwalk/prison, +/obj/structure/machinery/computer/cryopod, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, /area/whiskey_outpost/inside/supply) "kG" = ( /obj/structure/bed/chair{ @@ -4260,6 +4281,10 @@ /obj/effect/landmark/start/whiskey/pilot, /turf/open/gm/dirt, /area/whiskey_outpost/outside/mortar_pit) +"pg" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "pj" = ( /obj/effect/landmark/start/whiskey/engineer, /turf/open/gm/dirtgrassborder/north, @@ -5151,7 +5176,7 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/whiskey_outpost/inside/engineering) "sh" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/wo, +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/wo, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -5223,6 +5248,10 @@ /obj/structure/sign/ROsign, /turf/closed/wall/r_wall, /area/whiskey_outpost) +"sw" = ( +/obj/effect/decal/warning_stripes, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "sx" = ( /obj/structure/machinery/cm_vending/clothing/dress, /turf/open/floor/prison{ @@ -5251,7 +5280,7 @@ }, /area/whiskey_outpost/inside/living) "sJ" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/wo, +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/wo, /turf/open/floor/prison, /area/whiskey_outpost/inside/supply) "sK" = ( @@ -5356,9 +5385,8 @@ /turf/open/floor/prison, /area/whiskey_outpost/inside/supply) "th" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/obj/structure/disposalpipe/junction{ + dir = 8 }, /turf/open/floor/prison, /area/whiskey_outpost/inside/supply) @@ -5729,12 +5757,13 @@ dir = 4; id = "trash" }, -/obj/structure/machinery/recycler{ - recycle_dir = 8 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/machinery/light/small, +/obj/structure/machinery/recycler/whiskey{ + recycle_dir = 8 + }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -6274,6 +6303,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/structure/machinery/light/small, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -6337,7 +6367,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/machinery/light/small, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -6403,6 +6432,14 @@ "wK" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/whiskey_outpost/outside/lane/two_south) +"wL" = ( +/obj/structure/surface/rack, +/obj/item/device/destTagger, +/obj/item/packageWrap, +/obj/item/packageWrap, +/obj/item/packageWrap, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "wM" = ( /obj/structure/machinery/line_nexter{ dir = 1; @@ -6533,10 +6570,17 @@ }, /area/whiskey_outpost/inside/cic) "xk" = ( -/obj/structure/machinery/light, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/surface/rack, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1; + dir = 1 }, +/obj/item/device/destTagger, +/obj/item/packageWrap, +/obj/item/packageWrap, +/obj/item/packageWrap, +/turf/open/floor/prison, /area/whiskey_outpost/inside/supply) "xl" = ( /obj/item/ammo_casing{ @@ -6788,6 +6832,7 @@ /area/whiskey_outpost/inside/hospital) "yj" = ( /obj/effect/landmark/start/whiskey/cargo, +/obj/structure/disposalpipe/segment, /turf/open/floor/prison{ dir = 8; icon_state = "darkyellowcorners2" @@ -6867,10 +6912,6 @@ dir = 4; health = 80 }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, /turf/open/floor/prison{ dir = 4; icon_state = "darkyellowfull2" @@ -6926,6 +6967,9 @@ health = 80 }, /obj/item/tool/hand_labeler, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/prison{ dir = 8; icon_state = "darkyellow2" @@ -7860,6 +7904,13 @@ icon_state = "floor_plate" }, /area/whiskey_outpost/inside/bunker/bunker/front) +"Cd" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/closed/wall/r_wall/unmeltable, +/area/whiskey_outpost/inside/supply) "Ce" = ( /turf/open/gm/grass/grassbeach/west, /area/whiskey_outpost/outside/lane/one_north) @@ -8361,6 +8412,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk/prison, /area/whiskey_outpost/inside/bunker) +"DW" = ( +/obj/structure/machinery/door/window/northleft, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/whiskey_outpost/inside/engineering) "DX" = ( /obj/structure/blocker/invisible_wall, /turf/open/gm/river, @@ -8576,6 +8634,10 @@ icon_state = "grass_impenetrable" }, /area/whiskey_outpost/outside/north/northwest) +"EL" = ( +/obj/structure/machinery/cm_vending/gear/synth, +/turf/open/floor/plating/plating_catwalk, +/area/whiskey_outpost/inside/cic) "EN" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor{ @@ -9834,7 +9896,7 @@ /turf/closed/wall/r_wall, /area/whiskey_outpost/inside/bunker/bunker/front) "Kc" = ( -/obj/structure/machinery/cm_vending/sorted/attachments, +/obj/structure/machinery/cm_vending/sorted/attachments/wo, /turf/open/floor/plating, /area/whiskey_outpost/inside/supply) "Kd" = ( @@ -9880,6 +9942,18 @@ /obj/structure/sign/poster, /turf/closed/wall/r_wall, /area/whiskey_outpost/inside/engineering) +"Ks" = ( +/obj/structure/closet/secure_closet/cargotech, +/obj/item/clothing/accessory/storage/webbing, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/prison{ + dir = 4; + icon_state = "darkyellowfull2" + }, +/area/whiskey_outpost/inside/supply) "Kt" = ( /obj/structure/fence, /turf/open/gm/dirt, @@ -10779,6 +10853,20 @@ icon_state = "white" }, /area/whiskey_outpost/inside/hospital/triage) +"OI" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/whiskey_outpost) "OK" = ( /turf/closed/wall/strata_ice/jungle, /area/whiskey_outpost/outside/south/far) @@ -12234,6 +12322,16 @@ icon_state = "blue" }, /area/whiskey_outpost/inside/cic) +"Vr" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/item/device/destTagger, +/obj/item/packageWrap, +/obj/item/packageWrap, +/turf/open/floor/prison, +/area/whiskey_outpost/inside/supply) "Vt" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -12565,6 +12663,10 @@ icon_state = "asteroidwarning" }, /area/whiskey_outpost/outside/north) +"WK" = ( +/obj/structure/machinery/cm_vending/own_points/experimental_tools, +/turf/open/floor/plating/plating_catwalk, +/area/whiskey_outpost/inside/cic) "WL" = ( /obj/structure/flora/bush/ausbushes/var3/leafybush, /obj/structure/disposalpipe/segment{ @@ -12805,6 +12907,13 @@ /obj/effect/spawner/random/tool, /turf/open/gm/dirtgrassborder/east, /area/whiskey_outpost/outside/lane/two_south) +"XO" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, +/area/whiskey_outpost/inside/supply) "XP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -19252,9 +19361,9 @@ mT mT mT mT -mT -mT -mT +ak +ak +ak mT mT mT @@ -19455,7 +19564,7 @@ mT mT mT ak -ak +WK ak ak ak @@ -19655,9 +19764,9 @@ mT mT mT mT -mT ak ai +aC qe ih Nr @@ -19857,9 +19966,9 @@ mT mT mT mT -mT ak Vy +aC PB PM Ed @@ -20061,7 +20170,7 @@ ak ak ak ak -ak +EL Mo Gx PM @@ -21086,7 +21195,7 @@ vn tv wl nK -ya +JN ya ya nr @@ -21287,8 +21396,8 @@ nK vv tv wz -nK -JN +DW +ya ya Jd nr @@ -21692,7 +21801,7 @@ vw tv wA nK -ya +JN ya ya nr @@ -22502,7 +22611,7 @@ uB uB yf xg -vC +xg nr fy fy @@ -22704,7 +22813,7 @@ kS pK vL yz -nr +vC nr fy fy @@ -23304,12 +23413,12 @@ cx rm uf wQ -kS -pK -kS -pK +dp +XO +pg +XO yj -yF +Ks nr nr UN @@ -23706,14 +23815,14 @@ oW OX qT lw -rZ -kS -kS -kS +xk kS kS +pK kS -nr +sw +hr +Cd nr mT BT @@ -23908,13 +24017,13 @@ oW OX qT lw -rZ +wL kS kS kS kS Dk -vN +Vr nr mT mT @@ -24713,7 +24822,7 @@ la nn oI rg -oP +OI su Kc sh @@ -24924,7 +25033,7 @@ kS tS tS wQ -wQ +kS nr zg yk @@ -25123,11 +25232,11 @@ VF TP wQ kS -kE -kE -xk +tS +tS +wQ +vN yv -nr Av zG Av @@ -25327,9 +25436,9 @@ kS kS tS tS -wQ +kE +nr nr -lw fj fj fj From 4ff511287574c8613cb080d5038c8693b3d849b8 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 4 Nov 2023 05:41:11 +0000 Subject: [PATCH 02/51] Automatic changelog for PR #4803 [ci skip] --- html/changelogs/AutoChangeLog-pr-4803.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4803.yml diff --git a/html/changelogs/AutoChangeLog-pr-4803.yml b/html/changelogs/AutoChangeLog-pr-4803.yml new file mode 100644 index 000000000000..25bed2ce3dd5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4803.yml @@ -0,0 +1,9 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fixed recyclers (including Whiskey Outposts') and added the possibility to recycle crates with them." + - bugfix: "Standardized \"vend to table\" functionality of vendors, enabling it to work for Whiskey Outpost's Reqs." + - rscadd: "Whiskey Outpost vendors now contain the same items as Almayer's. WO still has spare specialist ammo on top of that." + - rscadd: "Readded delivery chute, wrap and tagger to Whiskey Outpost Reqs, letting you pack and send crates and items via disposals again." + - balance: "Whiskey Outpost supply drops should now be more interesting and impactful." + - rscadd: "Added missing Synth vendors on WO." \ No newline at end of file From 1cee6df23c40ccbb4693578095466712e759d3c0 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 5 Nov 2023 01:13:13 +0000 Subject: [PATCH 03/51] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4803.yml | 9 --------- html/changelogs/archive/2023-11.yml | 12 ++++++++++++ 2 files changed, 12 insertions(+), 9 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4803.yml diff --git a/html/changelogs/AutoChangeLog-pr-4803.yml b/html/changelogs/AutoChangeLog-pr-4803.yml deleted file mode 100644 index 25bed2ce3dd5..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4803.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed recyclers (including Whiskey Outposts') and added the possibility to recycle crates with them." - - bugfix: "Standardized \"vend to table\" functionality of vendors, enabling it to work for Whiskey Outpost's Reqs." - - rscadd: "Whiskey Outpost vendors now contain the same items as Almayer's. WO still has spare specialist ammo on top of that." - - rscadd: "Readded delivery chute, wrap and tagger to Whiskey Outpost Reqs, letting you pack and send crates and items via disposals again." - - balance: "Whiskey Outpost supply drops should now be more interesting and impactful." - - rscadd: "Added missing Synth vendors on WO." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 3706601022a2..2d89cade6388 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -36,3 +36,15 @@ - rscadd: Changed the plain glass in Working Joe presets to Reinforced Glass. sleepynecrons: - imagedel: shrinks the type-19 SMG stick magazine to a more reasonable size +2023-11-05: + fira: + - bugfix: Fixed recyclers (including Whiskey Outposts') and added the possibility + to recycle crates with them. + - bugfix: Standardized "vend to table" functionality of vendors, enabling it to + work for Whiskey Outpost's Reqs. + - rscadd: Whiskey Outpost vendors now contain the same items as Almayer's. WO still + has spare specialist ammo on top of that. + - rscadd: Readded delivery chute, wrap and tagger to Whiskey Outpost Reqs, letting + you pack and send crates and items via disposals again. + - balance: Whiskey Outpost supply drops should now be more interesting and impactful. + - rscadd: Added missing Synth vendors on WO. From d587c68f3ae2d632e39ac35a6f309a0fc2fb7672 Mon Sep 17 00:00:00 2001 From: Fira Date: Sun, 5 Nov 2023 17:04:05 +0000 Subject: [PATCH 04/51] remove now unused resting procs --- code/modules/mob/living/living_health_procs.dm | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index b5fd52d8ce11..f8efd28a832b 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -277,18 +277,6 @@ sleeping = max(sleeping + amount,0) return -/mob/living/proc/Resting(amount) - resting = max(max(resting,amount),0) - return - -/mob/living/proc/SetResting(amount) - resting = max(amount,0) - return - -/mob/living/proc/AdjustResting(amount) - resting = max(resting + amount,0) - return - /mob/living/proc/EyeBlur(amount) eye_blurry = max(max(eye_blurry, amount), 0) update_eye_blur() From cd8e2175088aff6df8098b7754c6db33340aa6e2 Mon Sep 17 00:00:00 2001 From: Fira Date: Sun, 5 Nov 2023 17:47:40 +0000 Subject: [PATCH 05/51] move stop pulling logic --- code/modules/mob/mob.dm | 28 ++++++++++++++++++++++++++++ code/modules/mob/mob_verbs.dm | 25 +------------------------ 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 02a686320b04..3cf985ca62b6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -513,6 +513,34 @@ return do_pull(AM, lunge, no_msg) +/mob/proc/stop_pulling() + if(!pulling) + return + + REMOVE_TRAIT(pulling, TRAIT_FLOORED, CHOKEHOLD_TRAIT) + var/mob/M = pulling + pulling.pulledby = null + pulling = null + + grab_level = 0 + if(client) + client.recalculate_move_delay() + // When you stop pulling a mob after you move a tile with it your next movement will still include + // the grab delay so we have to fix it here (we love code) + client.next_movement = world.time + client.move_delay + if(hud_used && hud_used.pull_icon) + hud_used.pull_icon.icon_state = "pull0" + if(istype(r_hand, /obj/item/grab)) + temp_drop_inv_item(r_hand) + else if(istype(l_hand, /obj/item/grab)) + temp_drop_inv_item(l_hand) + if(istype(M)) + if(M.client) + //resist_grab uses long movement cooldown durations to prevent message spam + //so we must undo it here so the victim can move right away + M.client.next_movement = world.time + M.update_transform(TRUE) + /mob/living/vv_get_header() . = ..() var/refid = REF(src) diff --git a/code/modules/mob/mob_verbs.dm b/code/modules/mob/mob_verbs.dm index 67d45092a4d8..74333b3e5d42 100644 --- a/code/modules/mob/mob_verbs.dm +++ b/code/modules/mob/mob_verbs.dm @@ -221,27 +221,4 @@ set name = "Stop Pulling" set category = "IC" - if(pulling) - REMOVE_TRAIT(pulling, TRAIT_FLOORED, CHOKEHOLD_TRAIT) - var/mob/M = pulling - pulling.pulledby = null - pulling = null - - grab_level = 0 - if(client) - client.recalculate_move_delay() - // When you stop pulling a mob after you move a tile with it your next movement will still include - // the grab delay so we have to fix it here (we love code) - client.next_movement = world.time + client.move_delay - if(hud_used && hud_used.pull_icon) - hud_used.pull_icon.icon_state = "pull0" - if(istype(r_hand, /obj/item/grab)) - temp_drop_inv_item(r_hand) - else if(istype(l_hand, /obj/item/grab)) - temp_drop_inv_item(l_hand) - if(istype(M)) - if(M.client) - //resist_grab uses long movement cooldown durations to prevent message spam - //so we must undo it here so the victim can move right away - M.client.next_movement = world.time - M.update_transform(TRUE) + stop_pulling() From af2854c2c0e549c8a66e768542956867cfcdc687 Mon Sep 17 00:00:00 2001 From: Fira Date: Sun, 5 Nov 2023 20:16:15 +0000 Subject: [PATCH 06/51] oopsie --- code/modules/mob/mob_verbs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/mob_verbs.dm b/code/modules/mob/mob_verbs.dm index 74333b3e5d42..f5410a603f66 100644 --- a/code/modules/mob/mob_verbs.dm +++ b/code/modules/mob/mob_verbs.dm @@ -216,7 +216,7 @@ -/mob/verb/stop_pulling() +/mob/verb/stop_pulling_verb() set name = "Stop Pulling" set category = "IC" From bbaf0bfbd44486565b7c91141449f36c46ff39fc Mon Sep 17 00:00:00 2001 From: Releasethesea <135743398+Releasethesea@users.noreply.github.com> Date: Sun, 5 Nov 2023 20:08:25 -0600 Subject: [PATCH 07/51] Pill packets fit in helmets now (#4841) # About the pull request Makes it so you can put pill packets in your helmet since i didnt know how to originally, for now im only doing this for the helmet, but over the next week or so ill be making it so they can fit in all the marine hats that can fit autoinjectors # Explain why it's good for the game Pill packets shouldve been able to be placed in your helmet, i didnt know how to do this when they were added, this remedies that # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
testing consisted of joining a private server and seeing if they fit in helmets # Changelog :cl: balance: Makes it so that Pill packets fit in helmets /:cl: --------- Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com> --- code/modules/clothing/head/helmet.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index bd648484b875..2c89d31e04cf 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -337,7 +337,8 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( /obj/item/stack/medical/bruise_pack ="brutepack (bandages)", /obj/item/stack/medical/ointment = "ointment", /obj/item/tool/surgery/scalpel = "scalpel", - /obj/item/reagent_container/hypospray/autoinjector = "helmet_injector" + /obj/item/reagent_container/hypospray/autoinjector = "helmet_injector", + /obj/item/storage/pill_bottle/packet = "brutepack (bandages)", )) /obj/item/clothing/head/helmet/marine From ebb0ac65d70c3c02e8ffdfd5290d1d9989e53b13 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 02:17:14 +0000 Subject: [PATCH 08/51] Automatic changelog for PR #4841 [ci skip] --- html/changelogs/AutoChangeLog-pr-4841.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4841.yml diff --git a/html/changelogs/AutoChangeLog-pr-4841.yml b/html/changelogs/AutoChangeLog-pr-4841.yml new file mode 100644 index 000000000000..d6f6b2fae886 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4841.yml @@ -0,0 +1,4 @@ +author: "Releasethesea" +delete-after: True +changes: + - balance: "Makes it so that Pill packets fit in helmets" \ No newline at end of file From f4ad05cbd07c482e7ae97ba43fcc4b772b26bb68 Mon Sep 17 00:00:00 2001 From: fordmichigan <149270317+fordmichigan@users.noreply.github.com> Date: Sun, 5 Nov 2023 21:35:44 -0500 Subject: [PATCH 09/51] Adding toners to rec vendors (#4834) # About the pull request Adds toners to the rec vendor fixes #4603 # Explain why it's good for the game Allows for prolonged use of the copiers during the round. # Testing Photographs and Procedure
Screenshots & Videos ![2023-11-04 (3)](https://github.com/cmss13-devs/cmss13/assets/149270317/fd17b2b2-0908-48f4-a47c-56b7d6d72ebc)
# Changelog :cl: Alexguinea add: Added toners to the rec vendor /:cl: --- code/game/machinery/vending/vending_types.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/machinery/vending/vending_types.dm b/code/game/machinery/vending/vending_types.dm index a61934324491..c109db25b3a9 100644 --- a/code/game/machinery/vending/vending_types.dm +++ b/code/game/machinery/vending/vending_types.dm @@ -411,6 +411,7 @@ /obj/item/device/camera = 5, /obj/item/device/camera_film = 10, /obj/item/notepad = 5, + /obj/item/device/toner = 5, ) contraband = list(/obj/item/toy/sword = 2) @@ -431,5 +432,6 @@ /obj/item/toy/deck = 20, /obj/item/toy/deck/uno = 15, /obj/item/device/camera = 30, + /obj/item/device/toner = 15, ) product_type = VENDOR_PRODUCT_TYPE_RECREATIONAL From 9f7fcb51ee63f8371d47c0722a7dc97073adba6c Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 02:47:27 +0000 Subject: [PATCH 10/51] Automatic changelog for PR #4834 [ci skip] --- html/changelogs/AutoChangeLog-pr-4834.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4834.yml diff --git a/html/changelogs/AutoChangeLog-pr-4834.yml b/html/changelogs/AutoChangeLog-pr-4834.yml new file mode 100644 index 000000000000..7778f38607b4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4834.yml @@ -0,0 +1,4 @@ +author: "Alexguinea" +delete-after: True +changes: + - rscadd: "Added toners to the rec vendor" \ No newline at end of file From 0a64aacfa4bdd84020dcf79f47af4b1a67051f3e Mon Sep 17 00:00:00 2001 From: fira Date: Mon, 6 Nov 2023 03:36:30 +0100 Subject: [PATCH 11/51] Fixes GC deletion issues around reagents (#4833) # About the pull request Fixes a potential GC consistency issue around reagents and reagents_containers In theory this should do nothing because `reagents` is *supposed* to get soft GC'ed anyway when it is swapped out. There is something more to it somewhere, because on live bottles get deleted and retain their `reagents`. In this case it's a circular reference preventing deletion. # Explain why it's good for the game backend consistency / long term performance --- .../objects/items/reagent_containers/reagent_container.dm | 6 ------ code/modules/reagents/Chemistry-Holder.dm | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/code/game/objects/items/reagent_containers/reagent_container.dm b/code/game/objects/items/reagent_containers/reagent_container.dm index e0561d5a7e3d..327f6ba1ce1c 100644 --- a/code/game/objects/items/reagent_containers/reagent_container.dm +++ b/code/game/objects/items/reagent_containers/reagent_container.dm @@ -67,12 +67,6 @@ if (N) R.amount_per_transfer_from_this = N -/obj/item/reagent_container/Initialize() - . = ..() - if (!possible_transfer_amounts) - verbs -= /obj/item/reagent_container/verb/set_APTFT //which objects actually uses it? - create_reagents(volume) - /obj/item/reagent_container/Destroy() possible_transfer_amounts = null return ..() diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 643130559e94..2c08e9f4e693 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -713,5 +713,6 @@ // Convenience proc to create a reagents holder for an atom // Max vol is maximum volume of holder /atom/proc/create_reagents(max_vol) + QDEL_NULL(reagents) reagents = new/datum/reagents(max_vol) reagents.my_atom = src From 7ea7e721d808fb9caf8a289a795932db482c91df Mon Sep 17 00:00:00 2001 From: Xander3359 <66163761+Xander3359@users.noreply.github.com> Date: Sun, 5 Nov 2023 21:38:12 -0500 Subject: [PATCH 12/51] Fixes being able to load a flamer tank with no flamer unit (#4825) # About the pull request Closes https://github.com/cmss13-devs/cmss13/issues/4824 Makes it so that you have to have the Broiler equipped in your back before you are allowed to switch out fuel tanks. If you used the verb after unequipping the broiler from your back and then dropped it, it was possible to remove the tank from the flamer by clicking it. This caused issues because the tank would then teleport to you from anywhere after switching fuel types again. # Explain why it's good for the game Bugfix # Changelog :cl: fix: Fixes being able to create ghost tanks from a Broiler-T unit. /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- .../objects/items/storage/large_holster.dm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/storage/large_holster.dm b/code/game/objects/items/storage/large_holster.dm index 1d37a542bad4..27026165fc31 100644 --- a/code/game/objects/items/storage/large_holster.dm +++ b/code/game/objects/items/storage/large_holster.dm @@ -249,9 +249,13 @@ if(!ishuman(user) || user.is_mob_incapacitated()) return FALSE - var/obj/item/weapon/gun/flamer/M240T/F = user.get_active_hand() - if(!istype(F)) - to_chat(usr, "You must be holding the M240-T incinerator unit to use [src]") + if(user.back != src) + to_chat(user, "The [src] must be equipped before you can switch types") + return + + var/obj/item/weapon/gun/flamer/M240T/flamer = user.get_active_hand() + if(!istype(flamer)) + to_chat(user, "You must be holding the M240-T incinerator unit to use [src]") return if(!active_fuel) @@ -267,14 +271,13 @@ else active_fuel = fuelB - for(var/X in actions) - var/datum/action/A = X - A.update_button_icon() + for(var/datum/action/action_added as anything in actions) + action_added.update_button_icon() to_chat(user, "You switch the fuel tank to [active_fuel.caliber]") playsound(src, 'sound/machines/click.ogg', 25, TRUE) - F.current_mag = active_fuel - F.update_icon() + flamer.current_mag = active_fuel + flamer.update_icon() return TRUE From 732b8b541563605b70052eaad950a75e0999107c Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 03:16:18 +0000 Subject: [PATCH 13/51] Automatic changelog for PR #4825 [ci skip] --- html/changelogs/AutoChangeLog-pr-4825.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4825.yml diff --git a/html/changelogs/AutoChangeLog-pr-4825.yml b/html/changelogs/AutoChangeLog-pr-4825.yml new file mode 100644 index 000000000000..a63550514e3b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4825.yml @@ -0,0 +1,4 @@ +author: "Xander3359" +delete-after: True +changes: + - bugfix: "Fixes being able to create ghost tanks from a Broiler-T unit." \ No newline at end of file From 08d427d7393688c59e73278aededb2fa4de2c004 Mon Sep 17 00:00:00 2001 From: fira Date: Mon, 6 Nov 2023 03:38:49 +0100 Subject: [PATCH 14/51] Better OB cannon logging (#4830) # About the pull request This streamlines and expands OB cannon logging adding chambering log, misfuel information, and detailing both the hit target and intended aimed target. The inherent cannon inaccuracy is moved to be counted with fuel inaccuracy. Also adds a log for locking of dropships by queen as mistakes happen every so often... Additionally moves (JMP) for these logs to logging arguments so the whole HTML link doesnt get printed in logs # Explain why it's good for the game Auditing # Testing Photographs and Procedure Tested OB firing, OB JMP links, locking dropship # Changelog :cl: admin: Added better logging for orbital bombardment. /:cl: --- code/__HELPERS/unsorted.dm | 8 ++-- code/_globalvars/misc.dm | 7 +++ code/game/world.dm | 4 +- code/global.dm | 8 ---- code/modules/cm_marines/orbital_cannon.dm | 47 ++++++++++++++----- code/modules/cm_marines/overwatch.dm | 17 +++---- .../shuttle/computers/dropship_computer.dm | 10 ++-- 7 files changed, 60 insertions(+), 41 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 9a6ee4362088..38c02e776735 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -21,16 +21,16 @@ #define between(low, middle, high) (max(min(middle, high), low)) //Offuscate x for coord system -#define obfuscate_x(x) (x + obfs_x) +#define obfuscate_x(x) (x + GLOB.obfs_x) //Offuscate y for coord system -#define obfuscate_y(y) (y + obfs_y) +#define obfuscate_y(y) (y + GLOB.obfs_y) //Deoffuscate x for coord system -#define deobfuscate_x(x) (x - obfs_x) +#define deobfuscate_x(x) (x - GLOB.obfs_x) //Deoffuscate y for coord system -#define deobfuscate_y(y) (y - obfs_y) +#define deobfuscate_y(y) (y - GLOB.obfs_y) #define can_xeno_build(T) (!T.density && !(locate(/obj/structure/fence) in T) && !(locate(/obj/structure/tunnel) in T) && (locate(/obj/effect/alien/weeds) in T)) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 646b8ec2c854..44f4b2c4010f 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -30,3 +30,10 @@ GLOBAL_VAR_INIT(time_offset, setup_offset()) /// The last count of possible candidates in the xeno larva queue (updated via get_alien_candidates) GLOBAL_VAR(xeno_queue_candidate_count) + +//Coordinate obsfucator +//Used by the rangefinders and linked systems to prevent coords collection/prefiring +/// A number between -500 and 500. +GLOBAL_VAR(obfs_x) +/// A number between -500 and 500. +GLOBAL_VAR(obfs_y) diff --git a/code/game/world.dm b/code/game/world.dm index fce40ca468ae..450f72427903 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -91,8 +91,8 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") update_status() //Scramble the coords obsfucator - obfs_x = rand(-500, 500) //A number between -100 and 100 - obfs_y = rand(-500, 500) //A number between -100 and 100 + GLOB.obfs_x = rand(-500, 500) //A number between -100 and 100 + GLOB.obfs_y = rand(-500, 500) //A number between -100 and 100 spawn(3000) //so we aren't adding to the round-start lag if(CONFIG_GET(flag/ToRban)) diff --git a/code/global.dm b/code/global.dm index bdde529a9af8..e329cbdd00d5 100644 --- a/code/global.dm +++ b/code/global.dm @@ -153,14 +153,6 @@ var/list/nato_phonetic_alphabet = list("Alpha", "Bravo", "Charlie", "Delta", "Ec var/distress_cancel = 0 var/destroy_cancel = 0 -//Coordinate obsfucator -//Used by the rangefinders and linked systems to prevent coords collection/prefiring - -/// A number between -500 and 500. -var/global/obfs_x = 0 -/// A number between -500 and 500. -var/global/obfs_y = 0 - // Which lobby art is on display // This is updated by the lobby art turf when it initializes var/displayed_lobby_art = -1 diff --git a/code/modules/cm_marines/orbital_cannon.dm b/code/modules/cm_marines/orbital_cannon.dm index 1d49c42f5e0d..edcb5a836b5d 100644 --- a/code/modules/cm_marines/orbital_cannon.dm +++ b/code/modules/cm_marines/orbital_cannon.dm @@ -171,6 +171,9 @@ var/list/ob_type_fuel_requirements flick("OBC_chambering",src) + + + playsound(loc, 'sound/machines/hydraulics_2.ogg', 40, 1) ob_cannon_busy = TRUE @@ -178,14 +181,29 @@ var/list/ob_type_fuel_requirements sleep(6) ob_cannon_busy = FALSE - chambered_tray = TRUE + var/misfuel = get_misfuel_amount() + var/message = "[key_name(user)] chambered the Orbital Bombardment cannon." + if(misfuel) + message += " It is misfueled by [misfuel] units!" + message_admins(message, x, y, z) update_icon() /var/global/list/orbital_cannon_cancellation = new -/obj/structure/orbital_cannon/proc/fire_ob_cannon(turf/T, mob/user) + +/obj/structure/orbital_cannon/proc/get_misfuel_amount() + switch(tray.warhead.warhead_kind) + if("explosive") + return abs(ob_type_fuel_requirements[1] - tray.fuel_amt) + if("incendiary") + return abs(ob_type_fuel_requirements[2] - tray.fuel_amt) + if("cluster") + return abs(ob_type_fuel_requirements[3] - tray.fuel_amt) + return 0 + +/obj/structure/orbital_cannon/proc/fire_ob_cannon(turf/T, mob/user, squad_behalf) set waitfor = 0 if(!chambered_tray || !loaded_tray || !tray || !tray.warhead || ob_cannon_busy) @@ -203,17 +221,22 @@ var/list/ob_type_fuel_requirements playsound(loc, 'sound/weapons/vehicles/smokelauncher_fire.ogg', 70, 1) playsound(loc, 'sound/weapons/pred_plasma_shot.ogg', 70, 1) - var/inaccurate_fuel = 0 - - switch(tray.warhead.warhead_kind) - if("explosive") - inaccurate_fuel = abs(ob_type_fuel_requirements[1] - tray.fuel_amt) - if("incendiary") - inaccurate_fuel = abs(ob_type_fuel_requirements[2] - tray.fuel_amt) - if("cluster") - inaccurate_fuel = abs(ob_type_fuel_requirements[3] - tray.fuel_amt) + var/inaccurate_fuel = get_misfuel_amount() + var/area/area = get_area(T) + var/off_x = (inaccurate_fuel + 1) * round(rand(-3,3), 1) + var/off_y = (inaccurate_fuel + 1) * round(rand(-3,3), 1) + var/target_x = Clamp(T.x + off_x, 1, world.maxx) + var/target_y = Clamp(T.y + off_y, 1, world.maxy) + var/turf/target = locate(target_x, target_y, T.z) + var/area/target_area = get_area(target) + + message_admins(FONT_SIZE_HUGE("ALERT: [key_name(user)] fired an orbital bombardment in '[target_area]' for squad '[squad_behalf]' landing at ([target.x],[target.y],[target.z])"), target.x, target.y, target.z) + var/message = "Orbital bombardment original target was ([T.x],[T.y],[T.z]) - offset by [abs(off_x)+abs(off_y)]" + if(inaccurate_fuel) + message += " - It was misfueled by [inaccurate_fuel] units!" + message_admins(message, T.x, T.y, T.z) + log_attack("[key_name(user)] fired an orbital bombardment in [area.name] for squad '[squad_behalf]'") - var/turf/target = locate(T.x + inaccurate_fuel * round(rand(-3,3), 1), T.y + inaccurate_fuel * round(rand(-3,3), 1), T.z) if(user) tray.warhead.source_mob = user diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 66d83f9e73b8..5d651e0aa220 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -776,7 +776,7 @@ playsound(T,'sound/effects/alert.ogg', 25, 1) //Placeholder addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/machinery/computer/overwatch, alert_ob), T), 2 SECONDS) addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/machinery/computer/overwatch, begin_fire)), 6 SECONDS) - addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/machinery/computer/overwatch, fire_bombard), user, A, T), 6 SECONDS + 6) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/machinery/computer/overwatch, fire_bombard), user, T), 6 SECONDS + 6) /obj/structure/machinery/computer/overwatch/proc/begin_fire() for(var/mob/living/carbon/H in GLOB.alive_mob_list) @@ -787,23 +787,20 @@ visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Orbital bombardment for squad '[current_squad]' has fired! Impact imminent!")]") current_squad.send_message("WARNING! Ballistic trans-atmospheric launch detected! Get outside of Danger Close!") -/obj/structure/machinery/computer/overwatch/proc/fire_bombard(mob/user, area/A, turf/T) - if(!A || !T) +/obj/structure/machinery/computer/overwatch/proc/fire_bombard(mob/user,turf/T) + if(!T) return var/ob_name = lowertext(almayer_orbital_cannon.tray.warhead.name) var/mutable_appearance/warhead_appearance = mutable_appearance(almayer_orbital_cannon.tray.warhead.icon, almayer_orbital_cannon.tray.warhead.icon_state) - notify_ghosts(header = "Bombardment Inbound", message = "\A [ob_name] targeting [A.name] has been fired!", source = T, alert_overlay = warhead_appearance, extra_large = TRUE) - message_admins(FONT_SIZE_HUGE("ALERT: [key_name(user)] fired an orbital bombardment in [A.name] for squad '[current_squad]' [ADMIN_JMP(T)]")) - log_attack("[key_name(user)] fired an orbital bombardment in [A.name] for squad '[current_squad]'") + notify_ghosts(header = "Bombardment Inbound", message = "\A [ob_name] targeting [get_area(T)] has been fired!", source = T, alert_overlay = warhead_appearance, extra_large = TRUE) /// Project ARES interface log. - log_ares_bombardment(user.name, ob_name, "X[x_bomb], Y[y_bomb] in [A.name]") + log_ares_bombardment(user.name, ob_name, "X[x_bomb], Y[y_bomb] in [get_area(T)]") busy = FALSE - var/turf/target = locate(T.x + rand(-3, 3), T.y + rand(-3, 3), T.z) - if(target && istype(target)) - almayer_orbital_cannon.fire_ob_cannon(target, user) + if(istype(T)) + almayer_orbital_cannon.fire_ob_cannon(T, user, current_squad) user.count_niche_stat(STATISTICS_NICHE_OB) /obj/structure/machinery/computer/overwatch/proc/handle_supplydrop() diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm index 4540588ca628..4fe102270537 100644 --- a/code/modules/shuttle/computers/dropship_computer.dm +++ b/code/modules/shuttle/computers/dropship_computer.dm @@ -214,19 +214,19 @@ // door controls being overriden if(!dropship_control_lost) - to_chat(xeno, SPAN_XENONOTICE("You override the doors.")) - xeno_message(SPAN_XENOANNOUNCE("The doors of the metal bird have been overridden! Rejoice!"), 3, xeno.hivenumber) dropship.control_doors("unlock", "all", TRUE) dropship_control_lost = TRUE door_control_cooldown = addtimer(CALLBACK(src, PROC_REF(remove_door_lock)), SHUTTLE_LOCK_COOLDOWN, TIMER_STOPPABLE) - notify_ghosts(header = "Dropship Locked", message = "[xeno] has locked [dropship]!", source = xeno, action = NOTIFY_ORBIT) - if(almayer_orbital_cannon) almayer_orbital_cannon.is_disabled = TRUE addtimer(CALLBACK(almayer_orbital_cannon, TYPE_PROC_REF(/obj/structure/orbital_cannon, enable)), 10 MINUTES, TIMER_UNIQUE) - if(!GLOB.resin_lz_allowed) set_lz_resin_allowed(TRUE) + + to_chat(xeno, SPAN_XENONOTICE("You override the doors.")) + xeno_message(SPAN_XENOANNOUNCE("The doors of the metal bird have been overridden! Rejoice!"), 3, xeno.hivenumber) + message_admins("[key_name(xeno)] has locked the dropship '[dropship]'", xeno.x, xeno.y, xeno.z) + notify_ghosts(header = "Dropship Locked", message = "[xeno] has locked [dropship]!", source = xeno, action = NOTIFY_ORBIT) return if(dropship_control_lost) From 81f0edeb8035caf89e47a10a8d8aab322abf0588 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 03:31:05 +0000 Subject: [PATCH 15/51] Automatic changelog for PR #4830 [ci skip] --- html/changelogs/AutoChangeLog-pr-4830.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4830.yml diff --git a/html/changelogs/AutoChangeLog-pr-4830.yml b/html/changelogs/AutoChangeLog-pr-4830.yml new file mode 100644 index 000000000000..2eaaf3f2081f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4830.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - admin: "Added better logging for orbital bombardment." \ No newline at end of file From 3ea4e87ce6c481c192beb2f44729cc1f14d0f15f Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Sun, 5 Nov 2023 18:41:30 -0800 Subject: [PATCH 16/51] Fix job entry message wiki links (#4823) # About the pull request This PR is a followup to the issues created by #4449 fixing job entry_message_body links to the wiki. /datum/controller/configuration now has a variable `is_loaded` that can be checked to see if configuration has already occurred such as the case for the ASO where subsequent creations of the job datum were not hitting the proc that would be called on the config load signal. # Explain why it's good for the game Broken wiki links harm the new player experience. # Testing Photographs and Procedure
Screenshots & Videos ![aso](https://github.com/cmss13-devs/cmss13/assets/76988376/73c0b8e4-78f6-4f34-bfbe-9f74b7f05b14) ![CO](https://github.com/cmss13-devs/cmss13/assets/76988376/30b627bc-afe3-4064-b745-fecab5925970) ![marine](https://github.com/cmss13-devs/cmss13/assets/76988376/25250d85-445f-4506-8d91-3c12d500d20c)
# Changelog :cl: Drathek fix: Fixed various job's entry messages having broken links to the wiki /:cl: --- code/__DEFINES/urls.dm | 4 ++++ code/controllers/configuration/configuration.dm | 4 ++++ code/game/jobs/job/civilians/other/liaison.dm | 2 +- code/game/jobs/job/civilians/other/mess_seargent.dm | 2 +- code/game/jobs/job/civilians/support/cmo.dm | 2 +- code/game/jobs/job/civilians/support/nurse.dm | 2 +- code/game/jobs/job/civilians/support/researcher.dm | 2 +- code/game/jobs/job/civilians/support/synthetic.dm | 2 +- .../job/command/auxiliary/auxiliary_support_officer.dm | 2 +- code/game/jobs/job/command/auxiliary/crew_chief.dm | 2 +- code/game/jobs/job/command/auxiliary/intel.dm | 2 +- code/game/jobs/job/command/auxiliary/pilot.dm | 2 +- code/game/jobs/job/command/auxiliary/senior.dm | 2 +- code/game/jobs/job/command/cic/captain.dm | 2 +- code/game/jobs/job/command/cic/staffofficer.dm | 2 +- code/game/jobs/job/command/police/chief_police.dm | 2 +- code/game/jobs/job/command/police/police.dm | 2 +- code/game/jobs/job/command/police/warden.dm | 2 +- code/game/jobs/job/job.dm | 7 +++++-- code/game/jobs/job/logistics/cargo/cargo_tech.dm | 2 +- code/game/jobs/job/logistics/cargo/chief_req.dm | 2 +- code/game/jobs/job/logistics/engi/chief_engineer.dm | 2 +- code/game/jobs/job/logistics/engi/maint_tech.dm | 2 +- code/game/jobs/job/logistics/engi/ordnance_tech.dm | 2 +- code/game/jobs/job/marine/squad/engineer.dm | 2 +- code/game/jobs/job/marine/squad/leader.dm | 2 +- code/game/jobs/job/marine/squad/medic.dm | 2 +- code/game/jobs/job/marine/squad/smartgunner.dm | 2 +- code/game/jobs/job/marine/squad/specialist.dm | 2 +- code/game/jobs/job/marine/squad/standard.dm | 5 ++++- code/game/jobs/job/marine/squad/tl.dm | 2 +- config/example/config.txt | 1 + 32 files changed, 45 insertions(+), 30 deletions(-) diff --git a/code/__DEFINES/urls.dm b/code/__DEFINES/urls.dm index 137095327a2c..5d3fca1a2032 100644 --- a/code/__DEFINES/urls.dm +++ b/code/__DEFINES/urls.dm @@ -1,3 +1,7 @@ +// placeholder strings to be replaced +#define WIKI_PLACEHOLDER "%WIKIURL%" +#define LAW_PLACEHOLDER "%LAWURL%" + // ------ MISC WIKI LINKS ------ // #define URL_WIKI_LAW "Marine_Law" #define URL_WIKI_XENO_QUICKSTART "Xeno_Quickstart_Guide" diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index e8b010669c0e..0066fee5d256 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -22,6 +22,8 @@ var/static/regex/ic_filter_regex var/list/fail_to_topic_whitelisted_ips + var/is_loaded = FALSE + /datum/controller/configuration/proc/admin_reload() if(IsAdminAdvancedProcCall()) alert_proccall("configuration admin_reload") @@ -55,6 +57,8 @@ LoadChatFilter() LoadTopicRateWhitelist() + is_loaded = TRUE + if(Master) Master.OnConfigLoad() diff --git a/code/game/jobs/job/civilians/other/liaison.dm b/code/game/jobs/job/civilians/other/liaison.dm index 7f73376a05dd..cbbb87124957 100644 --- a/code/game/jobs/job/civilians/other/liaison.dm +++ b/code/game/jobs/job/civilians/other/liaison.dm @@ -6,7 +6,7 @@ selection_class = "job_cl" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/liaison - entry_message_body = "As a representative of Weyland-Yutani Corporation, your job requires you to stay in character at all times. You are not required to follow military orders; however, you cannot give military orders. Your primary job is to observe and report back your findings to Weyland-Yutani. Follow regular game rules unless told otherwise by your superiors. Use your office fax machine to communicate with corporate headquarters or to acquire new directives. You may not receive anything back, and this is normal." + entry_message_body = "As a representative of Weyland-Yutani Corporation, your job requires you to stay in character at all times. You are not required to follow military orders; however, you cannot give military orders. Your primary job is to observe and report back your findings to Weyland-Yutani. Follow regular game rules unless told otherwise by your superiors. Use your office fax machine to communicate with corporate headquarters or to acquire new directives. You may not receive anything back, and this is normal." var/mob/living/carbon/human/active_liaison /datum/job/civilian/liaison/generate_entry_conditions(mob/living/liaison, whitelist_status) diff --git a/code/game/jobs/job/civilians/other/mess_seargent.dm b/code/game/jobs/job/civilians/other/mess_seargent.dm index 4b1975015a95..97578eb1159d 100644 --- a/code/game/jobs/job/civilians/other/mess_seargent.dm +++ b/code/game/jobs/job/civilians/other/mess_seargent.dm @@ -6,7 +6,7 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT supervisors = "the auxiliary support officer" gear_preset = /datum/equipment_preset/uscm_ship/chef - entry_message_body = "Your job is to service the marines with excellent food, drinks and entertaining the shipside crew when needed. You have a lot of freedom and it is up to you, to decide what to do with it. Good luck!" + entry_message_body = "Your job is to service the marines with excellent food, drinks and entertaining the shipside crew when needed. You have a lot of freedom and it is up to you, to decide what to do with it. Good luck!" /obj/effect/landmark/start/chef name = JOB_MESS_SERGEANT diff --git a/code/game/jobs/job/civilians/support/cmo.dm b/code/game/jobs/job/civilians/support/cmo.dm index 8c4690ea2057..835f16f7d814 100644 --- a/code/game/jobs/job/civilians/support/cmo.dm +++ b/code/game/jobs/job/civilians/support/cmo.dm @@ -6,7 +6,7 @@ selection_class = "job_cmo" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/cmo - entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overriden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." + entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overriden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." AddTimelock(/datum/job/civilian/professor, list( JOB_MEDIC_ROLES = 10 HOURS diff --git a/code/game/jobs/job/civilians/support/nurse.dm b/code/game/jobs/job/civilians/support/nurse.dm index 7a0cab16f559..8912011298dc 100644 --- a/code/game/jobs/job/civilians/support/nurse.dm +++ b/code/game/jobs/job/civilians/support/nurse.dm @@ -6,7 +6,7 @@ selection_class = "job_doctor" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/nurse - entry_message_body = "You are tasked with keeping the Marines healthy and strong. You are also an expert when it comes to medication and treatment, and can do minor surgical procedures. Focus on assisting doctors and triaging wounded marines." + entry_message_body = "You are tasked with keeping the Marines healthy and strong. You are also an expert when it comes to medication and treatment, and can do minor surgical procedures. Focus on assisting doctors and triaging wounded marines." /obj/effect/landmark/start/nurse name = JOB_NURSE diff --git a/code/game/jobs/job/civilians/support/researcher.dm b/code/game/jobs/job/civilians/support/researcher.dm index 61245c8164ab..21163f27959d 100644 --- a/code/game/jobs/job/civilians/support/researcher.dm +++ b/code/game/jobs/job/civilians/support/researcher.dm @@ -10,7 +10,7 @@ selection_class = "job_researcher" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/researcher - entry_message_body = "You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are tasked with researching and developing new medical treatments, helping your fellow doctors, and generally learning new things. Your role involves a lot of roleplaying, but you can perform the function of a regular doctor. Do not hand out things to Marines without getting permission from your supervisor." + entry_message_body = "You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are tasked with researching and developing new medical treatments, helping your fellow doctors, and generally learning new things. Your role involves a lot of roleplaying, but you can perform the function of a regular doctor. Do not hand out things to Marines without getting permission from your supervisor." /datum/job/civilian/researcher/set_spawn_positions(count) spawn_positions = rsc_slot_formula(count) diff --git a/code/game/jobs/job/civilians/support/synthetic.dm b/code/game/jobs/job/civilians/support/synthetic.dm index 3e02385bc96c..70060fb36a15 100644 --- a/code/game/jobs/job/civilians/support/synthetic.dm +++ b/code/game/jobs/job/civilians/support/synthetic.dm @@ -9,7 +9,7 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADMIN_NOTIFY|ROLE_WHITELISTED|ROLE_CUSTOM_SPAWN flags_whitelist = WHITELIST_SYNTHETIC gear_preset = /datum/equipment_preset/synth/uscm - entry_message_body = "You are a Synthetic! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Synthetic Rules. Failure to do so may result in your White-list Removal. Your primary job is to support and assist all USCM Departments and Personnel on-board. In addition, being a Synthetic gives you knowledge in every field and specialization possible on-board the ship. As a Synthetic you answer to the acting commanding officer. Special circumstances may change this!" + entry_message_body = "You are a Synthetic! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Synthetic Rules. Failure to do so may result in your White-list Removal. Your primary job is to support and assist all USCM Departments and Personnel on-board. In addition, being a Synthetic gives you knowledge in every field and specialization possible on-board the ship. As a Synthetic you answer to the acting commanding officer. Special circumstances may change this!" /datum/job/civilian/synthetic/New() . = ..() diff --git a/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm index e5155c949a32..5f6293000365 100644 --- a/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm +++ b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm @@ -5,7 +5,7 @@ allow_additional = TRUE flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/auxiliary_officer - entry_message_body = "Your job is to oversee the hangar crew, the intel officers, the engineering department, and requisition department. You have many responsibilities and a few plates to keep spinning but your subordinates are mostly self-reliant. Assist where you can and make sure command personnel are confident the auxiliary departments are operating at peak efficiency." + entry_message_body = "Your job is to oversee the hangar crew, the intel officers, the engineering department, and requisition department. You have many responsibilities and a few plates to keep spinning but your subordinates are mostly self-reliant. Assist where you can and make sure command personnel are confident the auxiliary departments are operating at peak efficiency." AddTimelock(/datum/job/command/auxiliary_officer, list( JOB_SQUAD_ROLES = 5 HOURS, diff --git a/code/game/jobs/job/command/auxiliary/crew_chief.dm b/code/game/jobs/job/command/auxiliary/crew_chief.dm index c8dfe2a8eb37..0770bcd60ffa 100644 --- a/code/game/jobs/job/command/auxiliary/crew_chief.dm +++ b/code/game/jobs/job/command/auxiliary/crew_chief.dm @@ -7,7 +7,7 @@ supervisors = "the pilot officers" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/dcc - entry_message_body = "Your job is to assist the pilot officer maintain the ship's dropship. You have authority only on the dropship, but you are expected to maintain order, as not to disrupt the pilot." + entry_message_body = "Your job is to assist the pilot officer maintain the ship's dropship. You have authority only on the dropship, but you are expected to maintain order, as not to disrupt the pilot." AddTimelock(/datum/job/command/crew_chief, list( JOB_SQUAD_ROLES = 5 HOURS diff --git a/code/game/jobs/job/command/auxiliary/intel.dm b/code/game/jobs/job/command/auxiliary/intel.dm index 8d83d49ed143..9905bc9d3747 100644 --- a/code/game/jobs/job/command/auxiliary/intel.dm +++ b/code/game/jobs/job/command/auxiliary/intel.dm @@ -8,7 +8,7 @@ supervisors = "the auxiliary support officer" flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = "USCM Intelligence Officer (IO) (Cryo)" - entry_message_body = "Your job is to assist the marines in collecting intelligence related to the current operation to better inform command of their opposition. You are in charge of gathering any data disks, folders, and notes you may find on the operational grounds and decrypt them to grant the USCM additional resources." + entry_message_body = "Your job is to assist the marines in collecting intelligence related to the current operation to better inform command of their opposition. You are in charge of gathering any data disks, folders, and notes you may find on the operational grounds and decrypt them to grant the USCM additional resources." /datum/job/command/intel/set_spawn_positions(count) spawn_positions = int_slot_formula(count) diff --git a/code/game/jobs/job/command/auxiliary/pilot.dm b/code/game/jobs/job/command/auxiliary/pilot.dm index a75846f92919..1a7a7c21d5a0 100644 --- a/code/game/jobs/job/command/auxiliary/pilot.dm +++ b/code/game/jobs/job/command/auxiliary/pilot.dm @@ -7,7 +7,7 @@ supervisors = "the auxiliary support officer" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/po - entry_message_body = "Your job is to fly, protect, and maintain the ship's dropship. While you are an officer, your authority is limited to the dropship, where you have authority over the enlisted personnel. If you are not piloting, there is an autopilot fallback for command, but don't leave the dropship without reason." + entry_message_body = "Your job is to fly, protect, and maintain the ship's dropship. While you are an officer, your authority is limited to the dropship, where you have authority over the enlisted personnel. If you are not piloting, there is an autopilot fallback for command, but don't leave the dropship without reason." // Dropship Roles is both PO and DCC combined to not force people to backtrack AddTimelock(/datum/job/command/pilot, list( diff --git a/code/game/jobs/job/command/auxiliary/senior.dm b/code/game/jobs/job/command/auxiliary/senior.dm index 5e9b7caf1f10..014db9569b2a 100644 --- a/code/game/jobs/job/command/auxiliary/senior.dm +++ b/code/game/jobs/job/command/auxiliary/senior.dm @@ -7,7 +7,7 @@ job_options = list("Gunnery Sergeant" = "GySGT", "Master Sergeant" = "MSgt", "First Sergeant" = "1Sgt", "Master Gunnery Sergeant" = "MGySgt", "Sergeant Major" = "SgtMaj") /datum/job/command/senior/on_config_load() - entry_message_body = "You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Standard Operating Procedure. Failure to do so may result in your Mentorship Removal. Your primary job is to teach others the game and its mechanics, and offer advice to all USCM Departments and Personnel on-board." + entry_message_body = "You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Standard Operating Procedure. Failure to do so may result in your Mentorship Removal. Your primary job is to teach others the game and its mechanics, and offer advice to all USCM Departments and Personnel on-board." return ..() /datum/job/command/senior/announce_entry_message(mob/living/carbon/human/H) diff --git a/code/game/jobs/job/command/cic/captain.dm b/code/game/jobs/job/command/cic/captain.dm index 98db585e1d07..72f861351912 100644 --- a/code/game/jobs/job/command/cic/captain.dm +++ b/code/game/jobs/job/command/cic/captain.dm @@ -16,7 +16,7 @@ ) /datum/job/command/commander/generate_entry_message() - entry_message_body = "You are the Commanding Officer of the [MAIN_SHIP_NAME] as well as the operation. Your goal is to lead the Marines on their mission as well as protect and command the ship and her crew. Your job involves heavy roleplay and requires you to behave like a high-ranking officer and to stay in character at all times. As the Commanding Officer your only superior is High Command itself. You must abide by the Commanding Officer Code of Conduct. Failure to do so may result in punitive action against you. Godspeed." + entry_message_body = "You are the Commanding Officer of the [MAIN_SHIP_NAME] as well as the operation. Your goal is to lead the Marines on their mission as well as protect and command the ship and her crew. Your job involves heavy roleplay and requires you to behave like a high-ranking officer and to stay in character at all times. As the Commanding Officer your only superior is High Command itself. You must abide by the Commanding Officer Code of Conduct. Failure to do so may result in punitive action against you. Godspeed." return ..() /datum/job/command/commander/get_whitelist_status(list/roles_whitelist, client/player) diff --git a/code/game/jobs/job/command/cic/staffofficer.dm b/code/game/jobs/job/command/cic/staffofficer.dm index fff51624aa4b..94769de2158f 100644 --- a/code/game/jobs/job/command/cic/staffofficer.dm +++ b/code/game/jobs/job/command/cic/staffofficer.dm @@ -6,7 +6,7 @@ scaled = FALSE flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/so - entry_message_body = "Your job is to monitor the Marines, man the CIC, and listen to your superior officers. You are in charge of logistics and the overwatch system. You are also in line to take command after other eligible superior commissioned officers." + entry_message_body = "Your job is to monitor the Marines, man the CIC, and listen to your superior officers. You are in charge of logistics and the overwatch system. You are also in line to take command after other eligible superior commissioned officers." /datum/job/command/bridge/set_spawn_positions(count) spawn_positions = so_slot_formula(count) diff --git a/code/game/jobs/job/command/police/chief_police.dm b/code/game/jobs/job/command/police/chief_police.dm index b76943c4d0ac..63e6d8023f17 100644 --- a/code/game/jobs/job/command/police/chief_police.dm +++ b/code/game/jobs/job/command/police/chief_police.dm @@ -4,7 +4,7 @@ selection_class = "job_cmp" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/cmp - entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. You lead the Military Police, ensure your officers maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" + entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. You lead the Military Police, ensure your officers maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" AddTimelock(/datum/job/command/warrant, list( JOB_POLICE_ROLES = 15 HOURS, diff --git a/code/game/jobs/job/command/police/police.dm b/code/game/jobs/job/command/police/police.dm index 7285c5b278b1..e05bc2e96256 100644 --- a/code/game/jobs/job/command/police/police.dm +++ b/code/game/jobs/job/command/police/police.dm @@ -8,7 +8,7 @@ selection_class = "job_mp" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/mp - entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" + entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" /datum/job/command/police/set_spawn_positions(count) spawn_positions = mp_slot_formula(count) diff --git a/code/game/jobs/job/command/police/warden.dm b/code/game/jobs/job/command/police/warden.dm index 55cbea975401..d2775e197537 100644 --- a/code/game/jobs/job/command/police/warden.dm +++ b/code/game/jobs/job/command/police/warden.dm @@ -5,7 +5,7 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT supervisors = "the Chief MP" gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/warden - entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the mainting security records and overwatching any prisoners in Brig." + entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the mainting security records and overwatching any prisoners in Brig." AddTimelock(/datum/job/command/warden, list( JOB_POLICE_ROLES = 10 HOURS diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 0d68d23e5524..48ad372e1f33 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -49,13 +49,16 @@ if(!disp_title) disp_title = title + if(global.config.is_loaded) + on_config_load() + /datum/job/proc/on_config_load() if(entry_message_body) entry_message_body = replace_placeholders(entry_message_body) /datum/job/proc/replace_placeholders(replacement_string) - replacement_string = replacetextEx(replacement_string, "%WIKIURL%", generate_wiki_link()) - replacement_string = replacetextEx(replacement_string, "%LAWURL%", "[CONFIG_GET(string/wikiarticleurl)]/[URL_WIKI_LAW]") + replacement_string = replacetextEx(replacement_string, WIKI_PLACEHOLDER, generate_wiki_link()) + replacement_string = replacetextEx(replacement_string, LAW_PLACEHOLDER, "[CONFIG_GET(string/wikiarticleurl)]/[URL_WIKI_LAW]") return replacement_string /datum/job/proc/generate_wiki_link() diff --git a/code/game/jobs/job/logistics/cargo/cargo_tech.dm b/code/game/jobs/job/logistics/cargo/cargo_tech.dm index 3b588022bd97..c4725289c3ff 100644 --- a/code/game/jobs/job/logistics/cargo/cargo_tech.dm +++ b/code/game/jobs/job/logistics/cargo/cargo_tech.dm @@ -8,7 +8,7 @@ selection_class = "job_ct" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/cargo - entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Stay in your department when possible to ensure the marines have full access to the supplies they may require. Listen to the radio in case someone requests a supply drop via the overwatch system." + entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Stay in your department when possible to ensure the marines have full access to the supplies they may require. Listen to the radio in case someone requests a supply drop via the overwatch system." /datum/job/logistics/cargo/set_spawn_positions(count) spawn_positions = ct_slot_formula(count) diff --git a/code/game/jobs/job/logistics/cargo/chief_req.dm b/code/game/jobs/job/logistics/cargo/chief_req.dm index 76b7e98f2db8..5d5123e687ed 100644 --- a/code/game/jobs/job/logistics/cargo/chief_req.dm +++ b/code/game/jobs/job/logistics/cargo/chief_req.dm @@ -3,7 +3,7 @@ selection_class = "job_qm" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/qm - entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Your cargo techs can help you out, but you have final say in your department. Make sure they're not goofing off. While you may request paperwork for supplies, do not go out of your way to screw with marines, unless you want to get deposed. A happy ship is a well-functioning ship." + entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Your cargo techs can help you out, but you have final say in your department. Make sure they're not goofing off. While you may request paperwork for supplies, do not go out of your way to screw with marines, unless you want to get deposed. A happy ship is a well-functioning ship." AddTimelock(/datum/job/logistics/requisition, list( JOB_REQUISITION_ROLES = 10 HOURS, diff --git a/code/game/jobs/job/logistics/engi/chief_engineer.dm b/code/game/jobs/job/logistics/engi/chief_engineer.dm index 3a15c8632953..b6aa23f9c4a6 100644 --- a/code/game/jobs/job/logistics/engi/chief_engineer.dm +++ b/code/game/jobs/job/logistics/engi/chief_engineer.dm @@ -3,7 +3,7 @@ selection_class = "job_ce" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/chief_engineer - entry_message_body = "Your job is to maintain your department and keep your technicians in check. You are responsible for engineering, power, ordnance, and the orbital cannon. Should the commanding and executive officer be unavailable, you are next in the chain of command." + entry_message_body = "Your job is to maintain your department and keep your technicians in check. You are responsible for engineering, power, ordnance, and the orbital cannon. Should the commanding and executive officer be unavailable, you are next in the chain of command." AddTimelock(/datum/job/logistics/engineering, list( JOB_ENGINEER_ROLES = 10 HOURS, diff --git a/code/game/jobs/job/logistics/engi/maint_tech.dm b/code/game/jobs/job/logistics/engi/maint_tech.dm index 8562408360d7..b13062127a12 100644 --- a/code/game/jobs/job/logistics/engi/maint_tech.dm +++ b/code/game/jobs/job/logistics/engi/maint_tech.dm @@ -6,7 +6,7 @@ selection_class = "job_ot" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/maint - entry_message_body = "Your job is to maintain the integrity of the ship, including the orbital cannon. You remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." + entry_message_body = "Your job is to maintain the integrity of the ship, including the orbital cannon. You remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." /obj/effect/landmark/start/maint name = JOB_MAINT_TECH diff --git a/code/game/jobs/job/logistics/engi/ordnance_tech.dm b/code/game/jobs/job/logistics/engi/ordnance_tech.dm index bed0acf15887..43a8a7122a8f 100644 --- a/code/game/jobs/job/logistics/engi/ordnance_tech.dm +++ b/code/game/jobs/job/logistics/engi/ordnance_tech.dm @@ -9,7 +9,7 @@ selection_class = "job_ot" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/ordn - entry_message_body = "Your job is to maintain the integrity of the USCM weapons, munitions and equipment, including the orbital cannon. You can use the workshop in the portside hangar to construct new armaments for the marines. However you remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." + entry_message_body = "Your job is to maintain the integrity of the USCM weapons, munitions and equipment, including the orbital cannon. You can use the workshop in the portside hangar to construct new armaments for the marines. However you remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." /datum/job/logistics/otech/set_spawn_positions(count) spawn_positions = ot_slot_formula(count) diff --git a/code/game/jobs/job/marine/squad/engineer.dm b/code/game/jobs/job/marine/squad/engineer.dm index 00a6b91dcffd..1910248a61a2 100644 --- a/code/game/jobs/job/marine/squad/engineer.dm +++ b/code/game/jobs/job/marine/squad/engineer.dm @@ -5,7 +5,7 @@ allow_additional = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/engineer - entry_message_body = "You have the equipment and skill to build fortifications, reroute power lines, and bunker down. Your squaddies will look to you when it comes to construction in the field of battle." + entry_message_body = "You have the equipment and skill to build fortifications, reroute power lines, and bunker down. Your squaddies will look to you when it comes to construction in the field of battle." /datum/job/marine/engineer/set_spawn_positions(count) for(var/datum/squad/sq in RoleAuthority.squads) diff --git a/code/game/jobs/job/marine/squad/leader.dm b/code/game/jobs/job/marine/squad/leader.dm index 960a80d5f659..be78438db3d6 100644 --- a/code/game/jobs/job/marine/squad/leader.dm +++ b/code/game/jobs/job/marine/squad/leader.dm @@ -5,7 +5,7 @@ supervisors = "the acting commanding officer" flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/leader - entry_message_body = "You are responsible for the men and women of your squad. Make sure they are on task, working together, and communicating. You are also in charge of communicating with command and letting them know about the situation first hand. Keep out of harm's way." + entry_message_body = "You are responsible for the men and women of your squad. Make sure they are on task, working together, and communicating. You are also in charge of communicating with command and letting them know about the situation first hand. Keep out of harm's way." /datum/job/marine/leader/whiskey title = JOB_WO_SQUAD_LEADER diff --git a/code/game/jobs/job/marine/squad/medic.dm b/code/game/jobs/job/marine/squad/medic.dm index cdbd74acefde..3df0a3793ca5 100644 --- a/code/game/jobs/job/marine/squad/medic.dm +++ b/code/game/jobs/job/marine/squad/medic.dm @@ -5,7 +5,7 @@ allow_additional = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/medic - entry_message_body = "You tend the wounds of your squad mates and make sure they are healthy and active. You may not be a fully-fledged doctor, but you stand between life and death when it matters." + entry_message_body = "You tend the wounds of your squad mates and make sure they are healthy and active. You may not be a fully-fledged doctor, but you stand between life and death when it matters." /datum/job/marine/medic/set_spawn_positions(count) for(var/datum/squad/sq in RoleAuthority.squads) diff --git a/code/game/jobs/job/marine/squad/smartgunner.dm b/code/game/jobs/job/marine/squad/smartgunner.dm index aacc562f921b..1a89abf5d3be 100644 --- a/code/game/jobs/job/marine/squad/smartgunner.dm +++ b/code/game/jobs/job/marine/squad/smartgunner.dm @@ -6,7 +6,7 @@ scaled = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/sg - entry_message_body = "You are the smartgunner. Your task is to provide heavy weapons support." + entry_message_body = "You are the smartgunner. Your task is to provide heavy weapons support." /datum/job/marine/smartgunner/set_spawn_positions(count) spawn_positions = sg_slot_formula(count) diff --git a/code/game/jobs/job/marine/squad/specialist.dm b/code/game/jobs/job/marine/squad/specialist.dm index 42ee69ef2d5c..e69241cdc70b 100644 --- a/code/game/jobs/job/marine/squad/specialist.dm +++ b/code/game/jobs/job/marine/squad/specialist.dm @@ -6,7 +6,7 @@ scaled = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/spec - entry_message_body = "You are the very rare and valuable weapon expert, trained to use special equipment. You can serve a variety of roles, so choose carefully." + entry_message_body = "You are the very rare and valuable weapon expert, trained to use special equipment. You can serve a variety of roles, so choose carefully." /datum/job/marine/specialist/set_spawn_positions(count) spawn_positions = spec_slot_formula(count) diff --git a/code/game/jobs/job/marine/squad/standard.dm b/code/game/jobs/job/marine/squad/standard.dm index e2502576e5ea..2fcd8a3cdd28 100644 --- a/code/game/jobs/job/marine/squad/standard.dm +++ b/code/game/jobs/job/marine/squad/standard.dm @@ -6,7 +6,10 @@ spawn_positions = -1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/pfc - entry_message_body = "You are a rank-and-file Marine of the USCM, and that is your strength. What you lack alone, you gain standing shoulder to shoulder with the men and women of the corps. Ooh-rah!" + +/datum/job/marine/standard/on_config_load() + entry_message_body = "You are a rank-and-file Marine of the USCM, and that is your strength. What you lack alone, you gain standing shoulder to shoulder with the men and women of the corps. Ooh-rah!" + return ..() /datum/job/marine/standard/set_spawn_positions(count) spawn_positions = max((round(count * STANDARD_MARINE_TO_TOTAL_SPAWN_RATIO)), 8) diff --git a/code/game/jobs/job/marine/squad/tl.dm b/code/game/jobs/job/marine/squad/tl.dm index ebebf360e830..2b0cff3ea3ed 100644 --- a/code/game/jobs/job/marine/squad/tl.dm +++ b/code/game/jobs/job/marine/squad/tl.dm @@ -5,7 +5,7 @@ allow_additional = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/tl - entry_message_body = "You are the Team Leader.Your task is to assist the squad leader in leading the squad as well as utilize ordnance such as orbital bombardments, CAS, and mortar as well as coordinating resupply with Requisitions and CIC. If the squad leader dies, you are expected to lead in their place." + entry_message_body = "You are the Team Leader.Your task is to assist the squad leader in leading the squad as well as utilize ordnance such as orbital bombardments, CAS, and mortar as well as coordinating resupply with Requisitions and CIC. If the squad leader dies, you are expected to lead in their place." /datum/job/marine/tl/generate_entry_conditions(mob/living/carbon/human/spawning_human) . = ..() diff --git a/config/example/config.txt b/config/example/config.txt index dcce46434404..8e8bb2b754d5 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -132,6 +132,7 @@ FORUMURL https://forum.cm-ss13.com/ ## Wiki address WIKIURL https://cm-ss13.com/w +WIKIARTICLEURL https://cm-ss13.com/wiki ## Rules address RULESURL https://cm-ss13.com/viewtopic.php?f=57&t=5094 From 3c9f6ba7d883ae90d11904a9b2f74ee41806f6f4 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 03:45:15 +0000 Subject: [PATCH 17/51] Automatic changelog for PR #4823 [ci skip] --- html/changelogs/AutoChangeLog-pr-4823.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4823.yml diff --git a/html/changelogs/AutoChangeLog-pr-4823.yml b/html/changelogs/AutoChangeLog-pr-4823.yml new file mode 100644 index 000000000000..75e0f5807495 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4823.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Fixed various job's entry messages having broken links to the wiki" \ No newline at end of file From c8c7cb927b013398cb4af9794783e964107513f5 Mon Sep 17 00:00:00 2001 From: blackdragonTOW <31581761+blackdragonTOW@users.noreply.github.com> Date: Sun, 5 Nov 2023 18:43:24 -0800 Subject: [PATCH 18/51] Replaces Nanotrasen cashcard icon with a W-Y cashcard icon. (#4832) Replacing SS13 icon sprites with CM sprites # Explain why it's good for the game SS13 holdovers bad. In-universe things good. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: imageadd: Changed nanotrasen cashcard icon to W-Y /:cl: --- icons/obj/items/items.dmi | Bin 67525 -> 72789 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items/items.dmi b/icons/obj/items/items.dmi index 076a93feb544b4af0445880a8543b7a98ef77295..52b53208e226d39434fd32faac8910e031355e2e 100644 GIT binary patch literal 72789 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 z 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 Uao95=4gdfE07*qoM6N<$g7xM3yZ`_I literal 67525 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

M;@Jw}i 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 LN>VivMnV4vZ4yn! From 048e608f4d067badbe2b3c54641f27fdfdf83752 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 03:59:39 +0000 Subject: [PATCH 19/51] Automatic changelog for PR #4832 [ci skip] --- html/changelogs/AutoChangeLog-pr-4832.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4832.yml diff --git a/html/changelogs/AutoChangeLog-pr-4832.yml b/html/changelogs/AutoChangeLog-pr-4832.yml new file mode 100644 index 000000000000..9f9570a6cc47 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4832.yml @@ -0,0 +1,4 @@ +author: "blackdragonTOW" +delete-after: True +changes: + - imageadd: "Changed nanotrasen cashcard icon to W-Y" \ No newline at end of file From f790028b8417894c48946ca2578455ca9915facd Mon Sep 17 00:00:00 2001 From: Steelpoint <6595389+Steelpoint@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:51:56 +0800 Subject: [PATCH 20/51] Adds Corpsman Sterile Gloves (#4826) # About the pull request Adds a set of marine corpsman sterile gloves that Corpsman can vend. The gloves are identical to regular gloves except they have the sterile glove sprite. # Explain why it's good for the game Helps increase loadout customization of Corpsman. Considering these gloves would further advertise the medical nature of the Corpsman, these gloves will not be a balance issue. # Testing Photographs and Procedure

Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Corpsman can chose to optionally vend a set of armoured sterile gloves as a alternative to regular gloves. They provide full glove protection, but are otherwise an aesthetic choice. /:cl: Co-authored-by: Steelpoint --- .../vending/vendor_types/squad_prep/squad_medic.dm | 1 + code/modules/clothing/gloves/marine_gloves.dm | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm index 69399cfb1eb5..f6b99887bbbb 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm @@ -117,6 +117,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_medic, list( GLOBAL_LIST_INIT(cm_vending_clothing_medic, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Standard Marine Apparel", 0, list(/obj/item/clothing/under/marine/medic, /obj/item/clothing/shoes/marine/knife, /obj/item/clothing/gloves/marine, /obj/item/device/radio/headset/almayer/marine, /obj/item/clothing/head/helmet/marine/medic), MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("Combat Sterile Gloves", 0, /obj/item/clothing/gloves/marine/medical, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Map", 0, /obj/item/map/current_map, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), diff --git a/code/modules/clothing/gloves/marine_gloves.dm b/code/modules/clothing/gloves/marine_gloves.dm index 15c596f9f6e1..9a3e9fd5bb08 100644 --- a/code/modules/clothing/gloves/marine_gloves.dm +++ b/code/modules/clothing/gloves/marine_gloves.dm @@ -53,6 +53,14 @@ item_state = "brown" adopts_squad_color = FALSE +/obj/item/clothing/gloves/marine/medical + name = "marine medical combat gloves" + desc = "Standard issue marine sterile gloves, offers regular protection whilst offering the user a better grip when performing medical work." + icon_state = "latex" + item_state = "lgloves" + adopts_squad_color = FALSE + + /obj/item/clothing/gloves/marine/officer name = "officer gloves" desc = "Shiny and impressive. They look expensive." From 6d1256f5a9b2009025f0cb82045ed25b569131d5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 04:13:45 +0000 Subject: [PATCH 21/51] Automatic changelog for PR #4826 [ci skip] --- html/changelogs/AutoChangeLog-pr-4826.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4826.yml diff --git a/html/changelogs/AutoChangeLog-pr-4826.yml b/html/changelogs/AutoChangeLog-pr-4826.yml new file mode 100644 index 000000000000..b06b575cb81d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4826.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - rscadd: "Corpsman can chose to optionally vend a set of armoured sterile gloves as a alternative to regular gloves. They provide full glove protection, but are otherwise an aesthetic choice." \ No newline at end of file From b68dc1b886bf24a907275fc1c91f71ae0fecf3fa Mon Sep 17 00:00:00 2001 From: TopHatPenguin Date: Mon, 6 Nov 2023 02:52:34 +0000 Subject: [PATCH 22/51] [NI] - Kutjevo Communications | Re-Addition of Kutjevo Blackbox (#4572) # About the pull request - Nightmare insert for Kutjevo; attaches onto the sensor tower by W8 H12. - Re-adds the Kutjevo blackbox after it was removed previously. # Explain why it's good for the game A nightmare insert for Kutjevo and re-adding blackbox hrp # Testing Photographs and Procedure Location: https://i.gyazo.com/aa80cd26fcfa5ec5585e9ab43a8956aa.png (Green square is where it is inserted from) The actual insert: https://i.gyazo.com/1f089ffa66f5893e89fd0ec7c5ab5778.png Kutjevo Blackbox Re-Addition: https://i.gyazo.com/5a68d21efa55b6d71d404574d579ff64.png # Changelog :cl: TopHatPenguin add: Adds a mostly built communications office nightmare insert to Kutjevo which attaches onto the sensor tower. add: Re-adds the Kutjevo blackbox. /:cl: --- maps/map_files/Kutjevo/Kutjevo.dmm | 18 +- .../Kutjevo/sprinkles/35.communications.dmm | 549 ++++++++++++++++++ 2 files changed, 565 insertions(+), 2 deletions(-) create mode 100644 maps/map_files/Kutjevo/sprinkles/35.communications.dmm diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index a79ef352f94b..eb5f1afabaed 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -2534,6 +2534,14 @@ icon = 'icons/turf/floors/desert_water_toxic.dmi' }, /area/kutjevo/interior/oob) +"dtV" = ( +/obj/structure/machinery/blackbox_recorder, +/obj/item/prop/almayer/flight_recorder/colony{ + pixel_x = 10; + pixel_y = 10 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/kutjevo/interior/complex/botany/east_tech) "duu" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ name = "\improper South Power Shutters" @@ -17217,6 +17225,12 @@ /obj/structure/barricade/wooden, /turf/open/floor/kutjevo/colors/red/tile, /area/kutjevo/interior/complex/botany) +"xPU" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "communications" + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/construction) "xQz" = ( /turf/open/floor/kutjevo/colors/cyan/inner_corner{ dir = 1 @@ -39694,7 +39708,7 @@ xWK bKH xWK xWK -xWK +xPU xWK jhx bKH @@ -40558,7 +40572,7 @@ hws qwg vcY jhS -htT +dtV dkE tfx dkE diff --git a/maps/map_files/Kutjevo/sprinkles/35.communications.dmm b/maps/map_files/Kutjevo/sprinkles/35.communications.dmm new file mode 100644 index 000000000000..235f370b4321 --- /dev/null +++ b/maps/map_files/Kutjevo/sprinkles/35.communications.dmm @@ -0,0 +1,549 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aA" = ( +/obj/structure/girder/displaced, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"cm" = ( +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 8 + }, +/area/template_noop) +"cL" = ( +/obj/item/clothing/suit/storage/hazardvest/yellow, +/turf/open/floor/kutjevo/tan, +/area/template_noop) +"cW" = ( +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"di" = ( +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"dl" = ( +/obj/structure/girder/displaced, +/obj/item/stack/sheet/metal, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"gD" = ( +/obj/item/stack/rods, +/obj/item/tool/warning_cone, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"ix" = ( +/obj/item/tool/warning_cone, +/obj/item/paper/crumpled{ + pixel_x = 5; + pixel_y = -8 + }, +/obj/item/paper/crumpled{ + pixel_x = -4; + pixel_y = 14 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"lD" = ( +/obj/structure/machinery/door_display{ + desc = "A work schedule monitor. It appears to be broken."; + name = "Schedule Monitor" + }, +/turf/closed/wall/kutjevo/colony, +/area/template_noop) +"lZ" = ( +/obj/structure/bed/chair{ + dir = 4; + pixel_x = 4; + pixel_y = 5 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"mv" = ( +/obj/structure/girder, +/turf/open/floor/plating/kutjevo, +/area/template_noop) +"nn" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"oB" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/prop/almayer/computer/PC{ + dir = 8; + layer = 2.8 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"oK" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"oU" = ( +/obj/structure/machinery/light, +/obj/structure/machinery/message_server, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"pP" = ( +/obj/structure/largecrate/random{ + pixel_y = 19; + layer = 3.02 + }, +/obj/structure/largecrate/random{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/structure/barricade/handrail/kutjevo{ + layer = 3.1 + }, +/obj/structure/barricade/handrail/kutjevo{ + dir = 4 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"qp" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + req_one_access = null + }, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"qI" = ( +/obj/structure/window/framed/kutjevo, +/turf/open/space/basic, +/area/template_noop) +"qM" = ( +/obj/structure/machinery/light, +/obj/effect/decal/cleanable/blood/oil, +/obj/item/tool/warning_cone, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"rm" = ( +/obj/structure/surface/rack, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"ry" = ( +/obj/item/stack/rods, +/obj/structure/fence, +/turf/open/auto_turf/sand/layer1, +/area/template_noop) +"rG" = ( +/obj/item/stack/rods, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"rP" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"sQ" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"uS" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp/on{ + pixel_x = 9; + pixel_y = 15; + layer = 3.04 + }, +/obj/item/clipboard{ + pixel_x = -6 + }, +/obj/item/tool/pen/blue/clicky{ + pixel_x = 9 + }, +/obj/item/paper_bin{ + pixel_x = 9; + pixel_y = 3 + }, +/obj/item/paper{ + info = "It has been three weeks since I was relocated to the 'finished' comms office. Me and Paul have been trying to work with this infernal racket going on, but by all that's holy I can't think- let alone recalibrate the new computers. Speaking of, these new computers are all fine and dandy but the sensor uplink tower still hasn't been setup properly after the accident with the apprentice, you know, the one that piled up those debris filled trash bags by Paul's 'desk' and then left. Anyway, like you said the builders didn't lay down the protective matting for the new flooring so there's dirt everywhere. For your sake Jeff, I hope your holiday doesn't end too soon, you still don't even have a desk yet."; + pixel_x = -5; + icon_state = "paper_words"; + name = "I should have gone on holiday" + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"wh" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"wC" = ( +/obj/structure/surface/rack, +/obj/item/notepad/blue, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"wO" = ( +/obj/structure/filingcabinet{ + density = 0; + layer = 3.0; + pixel_x = 8; + pixel_y = 18 + }, +/obj/structure/filingcabinet/chestdrawer{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/obj/structure/prop/rock{ + pixel_x = -8; + pixel_y = -5 + }, +/obj/structure/prop/rock{ + layer = 3.1; + pixel_y = 3 + }, +/obj/structure/prop/rock{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/structure/flora/pottedplant/random/unanchored{ + pixel_y = 16; + layer = 3.3 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"yQ" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/power/apc/weak{ + dir = 1 + }, +/obj/structure/surface/rack, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"zb" = ( +/turf/open/floor/kutjevo/tan/grey_edge, +/area/template_noop) +"zh" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/tool, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Af" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"Ca" = ( +/obj/structure/window/framed/kutjevo, +/obj/structure/barricade/handrail/kutjevo{ + layer = 3.1 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Ci" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"DY" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + dir = 1; + req_one_access = null + }, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"EK" = ( +/obj/structure/window/framed/kutjevo, +/turf/open/floor/plating/kutjevo, +/area/template_noop) +"GH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/paper/crumpled{ + pixel_x = -4; + pixel_y = 14 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"IR" = ( +/obj/item/paper/crumpled, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Jg" = ( +/obj/effect/spawner/random/toolbox, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"Jz" = ( +/obj/item/stack/sheet/metal, +/obj/item/stack/rods, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"Ks" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"KC" = ( +/obj/structure/bed/chair/comfy{ + dir = 1; + pixel_y = 11 + }, +/obj/item/paper/crumpled{ + pixel_x = -12; + pixel_y = 14 + }, +/obj/item/paper/crumpled{ + pixel_x = -5; + pixel_y = -2 + }, +/obj/item/paper/crumpled{ + pixel_x = 5; + pixel_y = -8 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"KD" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + dir = 1; + req_one_access = null + }, +/turf/closed/wall/kutjevo/colony, +/area/template_noop) +"LG" = ( +/obj/structure/fence, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"LO" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/item/prop/alien/hugger, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"LR" = ( +/obj/structure/prop/almayer/computers/sensor_computer2, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"MV" = ( +/obj/structure/largecrate/random{ + pixel_y = 1 + }, +/obj/structure/largecrate/random{ + pixel_y = 19; + layer = 3.02; + pixel_x = -3 + }, +/obj/structure/barricade/handrail/kutjevo{ + layer = 3.1 + }, +/obj/structure/barricade/handrail/kutjevo{ + dir = 4 + }, +/obj/structure/barricade/handrail/kutjevo{ + dir = 8 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Nr" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Or" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Pp" = ( +/obj/structure/prop/almayer/computers/sensor_computer1, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Re" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/warning_cone, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"Rj" = ( +/obj/item/stack/rods, +/obj/effect/decal/cleanable/blood/oil, +/obj/item/tool/warning_cone, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"RK" = ( +/turf/closed/wall/kutjevo/colony, +/area/template_noop) +"SZ" = ( +/turf/closed/wall/kutjevo/colony/reinforced, +/area/template_noop) +"Ul" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + req_one_access = null + }, +/turf/open/floor/kutjevo/tan/grey_edge, +/area/template_noop) +"Um" = ( +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 4 + }, +/area/template_noop) +"Vc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/warning_cone, +/turf/open/auto_turf/sand/layer0, +/area/template_noop) +"Xi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/tan/grey_edge, +/area/template_noop) +"Xq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 8 + }, +/area/template_noop) +"XS" = ( +/obj/structure/fence{ + desc = "A large metal mesh strewn between two poles. A 'Keep Out! Under Construction' sign dangles from one of the fence posts." + }, +/turf/open/auto_turf/sand/layer1, +/area/template_noop) +"Yo" = ( +/obj/item/clothing/head/hardhat/orange, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 1 + }, +/area/template_noop) +"YG" = ( +/obj/structure/machinery/power/port_gen/pacman, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) +"YO" = ( +/obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ + dir = 1; + req_one_access = null + }, +/turf/open/floor/kutjevo/tan/grey_edge{ + dir = 8 + }, +/area/template_noop) +"Zf" = ( +/obj/structure/window/framed/kutjevo, +/obj/structure/barricade/handrail/kutjevo{ + layer = 3 + }, +/turf/open/floor/kutjevo/grey/plate, +/area/template_noop) + +(1,1,1) = {" +SZ +RK +RK +RK +qp +Ul +RK +RK +RK +RK +RK +RK +"} +(2,1,1) = {" +RK +pP +cW +cW +Ci +zb +Ca +Pp +oK +nn +oU +RK +"} +(3,1,1) = {" +KD +Nr +Ks +cW +di +Xi +Zf +uS +KC +IR +Or +RK +"} +(4,1,1) = {" +SZ +MV +Or +rP +Yo +zb +lD +LR +ix +GH +Re +EK +"} +(5,1,1) = {" +qI +wC +rG +LO +sQ +cL +cm +Xq +Xq +cm +cm +YO +"} +(6,1,1) = {" +qI +rm +lZ +nn +Or +Af +Um +Jg +Um +Jz +wh +DY +"} +(7,1,1) = {" +SZ +yQ +oB +wO +gD +zh +Rj +dl +YG +Vc +qM +RK +"} +(8,1,1) = {" +SZ +mv +RK +RK +aA +RK +LG +LG +mv +ry +XS +mv +"} From 30b578c1003c142758526f98aca9991659a678aa Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 04:31:38 +0000 Subject: [PATCH 23/51] Automatic changelog for PR #4572 [ci skip] --- html/changelogs/AutoChangeLog-pr-4572.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4572.yml diff --git a/html/changelogs/AutoChangeLog-pr-4572.yml b/html/changelogs/AutoChangeLog-pr-4572.yml new file mode 100644 index 000000000000..5dd4e07a3200 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4572.yml @@ -0,0 +1,5 @@ +author: "TopHatPenguin" +delete-after: True +changes: + - rscadd: "Adds a mostly built communications office nightmare insert to Kutjevo which attaches onto the sensor tower." + - rscadd: "Re-adds the Kutjevo blackbox." \ No newline at end of file From 3a28b7a3f2138d7ee2c01da03547cb99e06d0f3a Mon Sep 17 00:00:00 2001 From: tool mind <106038874+toolmind@users.noreply.github.com> Date: Sun, 5 Nov 2023 20:52:39 -0600 Subject: [PATCH 24/51] New Varadero Survivor Outfit Changes (#4819) # About the pull request This PR adds new equipment presets for the New Varadero survivors, replacing some of their uniforms with United American utility jumpsuits. The Researcher preset has been tweaked to be less mismatched and out of place with the outdated virologist's lab coat and purple scrubs. It also changes the Vehicle Operator's job title to Cargo Technician, but there's no changes for the skillset. This PR is solely visual changes, and includes no balance changes. # Explain why it's good for the game New Varadero is a UA outpost, so it makes sense that the people working and living there would have UA jumpsuits. It also gives the outfits some use outside of just being in the synth vendor, and makes some of the New Varadero survivors somewhat more visually distinct from the ones on LV, which New Varadero copies most of its presets from. # Testing Photographs and Procedure
Screenshots & Videos ![image](https://github.com/cmss13-devs/cmss13/assets/106038874/3ba45ac0-daee-47cc-a75b-2c2377927890) Left to Right - Cargo Technician, Medical Technician, Engineer, Researcher
# Changelog :cl:IowaPotatoFarmer add: Added new survivor presets for New Varadero to make them more visually distinct and unique to the map. /:cl: --- .../new_varadero/preset_new_varadero.dm | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm b/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm index f9af043aac62..daa3a8ec019b 100644 --- a/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm +++ b/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm @@ -17,10 +17,10 @@ assignment = "New Varadero Medical Technician" /datum/equipment_preset/survivor/doctor/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/synthetic/utility(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap(new_human), WEAR_HEAD) ..() /datum/equipment_preset/survivor/scientist/nv @@ -28,13 +28,14 @@ assignment = "New Varadero Researcher" /datum/equipment_preset/survivor/scientist/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/researcher(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/chem(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/purple(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(new_human), WEAR_FEET) ..() /datum/equipment_preset/survivor/interstellar_commerce_commission_liason/nv @@ -51,15 +52,16 @@ ..() /datum/equipment_preset/survivor/trucker/nv - name = "Survivor - New Varadero Vehicle Operator" - assignment = "New Varadero Vehicle Operator" + name = "Survivor - New Varadero Cargo Technician" + assignment = "New Varadero Cargo Technician" /datum/equipment_preset/survivor/trucker/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/wy_davisone(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(new_human), WEAR_EYES) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beanie/tan(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/tech(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/brown(new_human), WEAR_HANDS) ..() /datum/equipment_preset/survivor/engineer/nv @@ -67,11 +69,11 @@ assignment = "New Varadero Engineer" /datum/equipment_preset/survivor/engineer/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/dispatch(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/ua_civvies(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest/blue(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/eng(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/orange(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/dblue(new_human), WEAR_HEAD) ..() /datum/equipment_preset/survivor/chaplain/nv From b9626316b81e5fa11728f812951149a5e7c895c5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 04:53:32 +0000 Subject: [PATCH 25/51] Automatic changelog for PR #4819 [ci skip] --- html/changelogs/AutoChangeLog-pr-4819.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4819.yml diff --git a/html/changelogs/AutoChangeLog-pr-4819.yml b/html/changelogs/AutoChangeLog-pr-4819.yml new file mode 100644 index 000000000000..48abe6072890 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4819.yml @@ -0,0 +1,4 @@ +author: "IowaPotatoFarmer" +delete-after: True +changes: + - rscadd: "Added new survivor presets for New Varadero to make them more visually distinct and unique to the map." \ No newline at end of file From 7628cf9cf8ab20f357cf9f82b36642e47391f19d Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 02:53:08 +0000 Subject: [PATCH 26/51] Automatic TGS DMAPI Update (#4850) This pull request updates the TGS DMAPI to the latest version. Please note any breaking or unimplemented changes before merging. Co-authored-by: tgstation-server --- code/__DEFINES/tgs.dm | 2 +- code/modules/tgs/core/datum.dm | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index d468d6044196..0cc106ec9cf2 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "6.6.1" +#define TGS_DMAPI_VERSION "6.6.2" // All functions and datums outside this document are subject to change with any version and should not be relied on. diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index de420a2a325a..07ce3b684584 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -12,8 +12,13 @@ TGS_DEFINE_AND_SET_GLOBAL(tgs, null) src.version = version /datum/tgs_api/proc/TerminateWorld() - del(world) - sleep(1) // https://www.byond.com/forum/post/2894866 + while(TRUE) + TGS_DEBUG_LOG("About to terminate world. Tick: [world.time], sleep_offline: [world.sleep_offline]") + world.sleep_offline = FALSE // https://www.byond.com/forum/post/2894866 + del(world) + world.sleep_offline = FALSE // just in case, this is BYOND after all... + sleep(1) + TGS_DEBUG_LOG("BYOND DIDN'T TERMINATE THE WORLD!!! TICK IS: [world.time], sleep_offline: [world.sleep_offline]") /datum/tgs_api/latest parent_type = /datum/tgs_api/v5 From 18cd71a0f1f2ee1539499038125d31b03bf22e73 Mon Sep 17 00:00:00 2001 From: fira Date: Mon, 6 Nov 2023 03:55:45 +0100 Subject: [PATCH 27/51] Removes Unused Stuff (#4835) # About the pull request This just removes unused odds and ends that are still active in repo and we have to maintain. Check commit list for a detailed overview. What this basically means is it: - Removes some SS13 Machinery that is unused, mass drivers and such, making them props - Refactors some global-list backed subsystems to use GLOB - Removes some oldschool subsystems that can be integrated into processing subsystems - Removes completely unused stuff like SSxenocon - Removes SSfail_to_topic because it doesn't work on Linux hosts anyway # Explain why it's good for the game Less surface to maintain = better maintaining! # Testing Photographs and Procedure I just checked game didn't blow up when played. # Changelog :cl: del: Removed unused magnet and mass driver legacy SS13 machinery. /:cl: --- code/__DEFINES/subsystems.dm | 25 +- code/_globalvars/global_lists.dm | 3 - code/_globalvars/lists/object_lists.dm | 3 + .../configuration/configuration.dm | 17 - code/controllers/subsystem/admin.dm | 40 -- code/controllers/subsystem/disease.dm | 11 +- code/controllers/subsystem/fail_to_topic.dm | 81 ---- code/controllers/subsystem/fast_machinery.dm | 27 -- code/controllers/subsystem/htmlui.dm | 57 --- code/controllers/subsystem/midi.dm | 45 -- .../subsystem/processing/defprocess.dm | 5 + code/controllers/subsystem/smoke_system.dm | 31 -- code/controllers/subsystem/stamina.dm | 25 -- code/controllers/subsystem/stats_collector.dm | 17 - code/controllers/subsystem/teleporter.dm | 10 - code/controllers/subsystem/xenocon.dm | 18 - code/datums/disease.dm | 6 +- code/datums/diseases/advance/advance.dm | 4 +- code/datums/stamina/_stamina.dm | 6 +- .../colonialmarines/whiskey_outpost.dm | 3 - .../gamemodes/colonialmarines/xenovsxeno.dm | 3 - code/game/machinery/buttons.dm | 12 - code/game/machinery/computer/pod.dm | 160 +------ code/game/machinery/door_control.dm | 41 -- code/game/machinery/machinery.dm | 2 +- code/game/machinery/magnet.dm | 421 ------------------ code/game/machinery/mass_driver.dm | 32 +- .../objects/effects/effect_system/smoke.dm | 4 +- .../objects/items/circuitboards/computer.dm | 15 +- code/game/world.dm | 5 - code/modules/admin/verbs/debug.dm | 2 +- code/modules/client/client_procs.dm | 2 - code/modules/defenses/defenses.dm | 4 +- .../living/carbon/xenomorph/xeno_defines.dm | 1 - .../reagents/chemistry_machinery/pandemic.dm | 2 +- .../teleporters/teleporter_admin_verbs.dm | 2 +- .../modules/teleporters/teleporter_console.dm | 24 +- .../teleporters/teleporter_landmarks.dm | 32 +- colonialmarines.dme | 12 +- 39 files changed, 60 insertions(+), 1150 deletions(-) delete mode 100644 code/controllers/subsystem/admin.dm delete mode 100644 code/controllers/subsystem/fail_to_topic.dm delete mode 100644 code/controllers/subsystem/fast_machinery.dm delete mode 100644 code/controllers/subsystem/htmlui.dm delete mode 100644 code/controllers/subsystem/midi.dm create mode 100644 code/controllers/subsystem/processing/defprocess.dm delete mode 100644 code/controllers/subsystem/smoke_system.dm delete mode 100644 code/controllers/subsystem/stamina.dm delete mode 100644 code/controllers/subsystem/stats_collector.dm delete mode 100644 code/controllers/subsystem/teleporter.dm delete mode 100644 code/controllers/subsystem/xenocon.dm delete mode 100644 code/game/machinery/magnet.dm diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 158c59aff327..ac9cfd3e12d2 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -109,36 +109,22 @@ // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. -#define SS_INIT_TICKER_SPAWN 999 #define SS_INIT_INPUT 85 -#define SS_INIT_FAIL_TO_TOPIC 84 #define SS_INIT_TOPIC 83 #define SS_INIT_LOBBYART 82 -#define SS_INIT_RUST 30 #define SS_INIT_INFLUXDRIVER 28 -#define SS_INIT_SUPPLY_SHUTTLE 25 #define SS_INIT_GARBAGE 24 #define SS_INIT_EVENTS 23.5 -#define SS_INIT_JOB 23 #define SS_INIT_REDIS 22.5 #define SS_INIT_REAGENTS 22.1 #define SS_INIT_MAPPING 22 #define SS_INIT_NIGHTMARE 21.5 #define SS_INIT_TIMETRACK 21.1 #define SS_INIT_HUMANS 21 -#define SS_INIT_MAP 20 -#define SS_INIT_COMPONENT 19.5 #define SS_INIT_POWER 19 -#define SS_INIT_OBJECT 18 -#define SS_INIT_PIPENET 17.5 -#define SS_INIT_XENOARCH 17 -#define SS_INIT_MORE_INIT 16 -#define SS_INIT_AIR 15 -#define SS_INIT_TELEPORTER 13 #define SS_INIT_INFLUXMCSTATS 12 #define SS_INIT_INFLUXSTATS 11 #define SS_INIT_LIGHTING 10 -#define SS_INIT_DEFCON 9 #define SS_INIT_LAW 6 #define SS_INIT_FZ_TRANSITIONS 5 #define SS_INIT_PROJECTILES 4.1 @@ -152,12 +138,9 @@ #define SS_INIT_RADIO 2 #define SS_INIT_TIMER 100 #define SS_INIT_UNSPECIFIED 0 -#define SS_INIT_EMERGENCY_SHUTTLE -19 #define SS_INIT_ASSETS -20 #define SS_INIT_TICKER -21 #define SS_INIT_VOTE -23 -#define SS_INIT_FINISH -24 -#define SS_INIT_ADMIN -26 #define SS_INIT_DATABASE -27 #define SS_INIT_ENTITYMANAGER -28 #define SS_INIT_PLAYTIME -29 @@ -176,7 +159,6 @@ #define SS_PRIORITY_SOUND 250 #define SS_PRIORITY_TICKER 200 #define SS_PRIORITY_NIGHTMARE 180 -#define SS_PRIORITY_MAPVIEW 170 #define SS_PRIORITY_QUADTREE 160 #define SS_PRIORITY_CHAT 155 #define SS_PRIORITY_STATPANEL 154 @@ -194,20 +176,16 @@ #define SS_PRIORITY_VOTE 110 #define SS_PRIORITY_FAST_OBJECTS 105 #define SS_PRIORITY_OBJECTS 104 -#define SS_PRIORITY_FACEHUGGERS 100 #define SS_PRIORITY_DECORATOR 99 #define SS_PRIORITY_POWER 95 #define SS_PRIORITY_EFFECTS 92 #define SS_PRIORITY_MACHINERY 90 #define SS_PRIORITY_FZ_TRANSITIONS 88 -#define SS_PRIORITY_PIPENET 85 #define SS_PRIORITY_ROUND_RECORDING 83 #define SS_PRIORITY_SHUTTLE 80 -#define SS_PRIORITY_TELEPORTER 75 #define SS_PRIORITY_EVENT 65 #define SS_PRIORITY_DISEASE 60 -#define SS_PRIORITY_FAST_MACHINERY 55 -#define SS_PRIORITY_MIDI 40 +#define SS_PRIORITY_DEFENSES 55 #define SS_PRIORITY_ENTITY 37 #define SS_PRIORITY_DEFCON 35 #define SS_PRIORITY_ACID_PILLAR 34 @@ -226,7 +204,6 @@ #define SS_PRIORITY_INFLUXSTATS 8 #define SS_PRIORITY_PLAYTIME 5 #define SS_PRIORITY_PERFLOGGING 4 -#define SS_PRIORITY_CORPSESPAWNER 3 #define SS_PRIORITY_GARBAGE 2 #define SS_PRIORITY_INACTIVITY 1 #define SS_PRIORITY_ADMIN 0 diff --git a/code/_globalvars/global_lists.dm b/code/_globalvars/global_lists.dm index 36058a44fc37..1e1e9cefd5db 100644 --- a/code/_globalvars/global_lists.dm +++ b/code/_globalvars/global_lists.dm @@ -1,6 +1,3 @@ - -var/list/unansweredAhelps = list() //This feels inefficient, but I can't think of a better way. Stores the message indexed by CID - GLOBAL_LIST_EMPTY(PressFaxes) GLOBAL_LIST_EMPTY(WYFaxes) //Departmental faxes GLOBAL_LIST_EMPTY(USCMFaxes) diff --git a/code/_globalvars/lists/object_lists.dm b/code/_globalvars/lists/object_lists.dm index 3a417625538b..3db9bd28cbfe 100644 --- a/code/_globalvars/lists/object_lists.dm +++ b/code/_globalvars/lists/object_lists.dm @@ -31,3 +31,6 @@ GLOBAL_LIST_EMPTY_TYPED(all_multi_vehicles, /obj/vehicle/multitile) GLOBAL_LIST_EMPTY_TYPED(lifeboat_almayer_docks, /obj/docking_port/stationary/lifeboat_dock) GLOBAL_LIST_EMPTY_TYPED(lifeboat_doors, /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor) + +GLOBAL_LIST_EMPTY_TYPED(teleporters, /datum/teleporter) +GLOBAL_LIST_EMPTY(teleporters_by_id) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 0066fee5d256..147f57fcb1aa 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -20,7 +20,6 @@ var/policy var/static/regex/ic_filter_regex - var/list/fail_to_topic_whitelisted_ips var/is_loaded = FALSE @@ -55,7 +54,6 @@ loadmaplist(CONFIG_GROUND_MAPS_FILE, GROUND_MAP) loadmaplist(CONFIG_SHIP_MAPS_FILE, SHIP_MAP) LoadChatFilter() - LoadTopicRateWhitelist() is_loaded = TRUE @@ -337,18 +335,3 @@ /datum/controller/configuration/proc/DelayedMessageAdmins(text) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(message_admins), text), 0) -/datum/controller/configuration/proc/LoadTopicRateWhitelist() - LAZYINITLIST(fail_to_topic_whitelisted_ips) - if(!fexists("[directory]/topic_rate_limit_whitelist.txt")) - log_config("Error 404: topic_rate_limit_whitelist.txt not found!") - return - - log_config("Loading config file topic_rate_limit_whitelist.txt...") - - for(var/line in file2list("[directory]/topic_rate_limit_whitelist.txt")) - if(!line) - continue - if(findtextEx(line, "#", 1, 2)) - continue - - fail_to_topic_whitelisted_ips[line] = 1 diff --git a/code/controllers/subsystem/admin.dm b/code/controllers/subsystem/admin.dm deleted file mode 100644 index 8aab64b04881..000000000000 --- a/code/controllers/subsystem/admin.dm +++ /dev/null @@ -1,40 +0,0 @@ -SUBSYSTEM_DEF(admin) - name = "Admin" - wait = 5 MINUTES - flags = SS_NO_INIT | SS_KEEP_TIMING - runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY - var/list/currentrun = list() - var/times_repeated = 0 - -/datum/controller/subsystem/admin/stat_entry(msg) - msg = "P:[unansweredAhelps.len]" - return ..() - -/datum/controller/subsystem/admin/fire(resumed = FALSE) - if (!resumed) - currentrun = unansweredAhelps.Copy() - - if(!currentrun.len) - times_repeated = 0 - return - - var/msg = "Unheard Ahelps (Repeated [times_repeated] times):" - - while (currentrun.len) - var/ahelp_msg = currentrun[currentrun.len] - currentrun.len-- - - if (!ahelp_msg) - continue - - msg += unansweredAhelps[ahelp_msg] + "\n" - - if (MC_TICK_CHECK) - return - - for(var/client/C in GLOB.admins) - if(C && C.admin_holder && (C.admin_holder.rights & R_MOD)) - if(C.prefs.toggles_sound & SOUND_ADMINHELP) - sound_to(C, 'sound/effects/adminhelp_new.ogg') - to_chat(C, msg) - times_repeated++ diff --git a/code/controllers/subsystem/disease.dm b/code/controllers/subsystem/disease.dm index 25200cce11ed..b98187ca252c 100644 --- a/code/controllers/subsystem/disease.dm +++ b/code/controllers/subsystem/disease.dm @@ -1,22 +1,19 @@ -var/list/active_diseases = list() - - SUBSYSTEM_DEF(disease) name = "Disease" wait = 2 SECONDS flags = SS_NO_INIT | SS_KEEP_TIMING priority = SS_PRIORITY_DISEASE - var/list/currentrun = list() + var/list/datum/disease/all_diseases = list() + var/list/datum/disease/currentrun = list() /datum/controller/subsystem/disease/stat_entry(msg) - msg = "P:[active_diseases.len]" + msg = "P:[all_diseases.len]" return ..() - /datum/controller/subsystem/disease/fire(resumed = FALSE) if (!resumed) - currentrun = active_diseases.Copy() + currentrun = all_diseases.Copy() while (currentrun.len) var/datum/disease/D = currentrun[currentrun.len] diff --git a/code/controllers/subsystem/fail_to_topic.dm b/code/controllers/subsystem/fail_to_topic.dm deleted file mode 100644 index 45674683a443..000000000000 --- a/code/controllers/subsystem/fail_to_topic.dm +++ /dev/null @@ -1,81 +0,0 @@ -SUBSYSTEM_DEF(fail_to_topic) - name = "Fail to Topic" - init_order = SS_INIT_FAIL_TO_TOPIC - flags = SS_BACKGROUND - runlevels = ALL - - var/list/rate_limiting = list() - var/list/fail_counts = list() - var/list/active_bans = list() - var/list/currentrun = list() - - var/rate_limit - var/max_fails - var/enabled = FALSE - -/datum/controller/subsystem/fail_to_topic/Initialize(timeofday) - rate_limit = ((CONFIG_GET(number/topic_rate_limit)) SECONDS) - max_fails = CONFIG_GET(number/topic_max_fails) - enabled = CONFIG_GET(flag/topic_enabled) - - if (world.system_type == UNIX && enabled) - enabled = FALSE - WARNING("fail_to_topic subsystem disabled. UNIX is not supported.") - return SS_INIT_NO_NEED - - if (!enabled) - can_fire = FALSE - return SS_INIT_NO_NEED - - return SS_INIT_SUCCESS - -/datum/controller/subsystem/fail_to_topic/fire(resumed = FALSE) - if(!resumed) - currentrun = rate_limiting.Copy() - //cache for sanic speed (lists are references anyways) - var/list/current_run = currentrun - - while(current_run.len) - var/ip = current_run[current_run.len] - var/last_attempt = current_run[ip] - current_run.len-- - - // last_attempt list housekeeping - if(world.time - last_attempt > rate_limit) - rate_limiting -= ip - fail_counts -= ip - - if(MC_TICK_CHECK) - return - -/datum/controller/subsystem/fail_to_topic/proc/IsRateLimited(ip) - if(!enabled) - return FALSE - - var/last_attempt = rate_limiting[ip] - - if (config.fail_to_topic_whitelisted_ips[ip]) - return FALSE - - if (active_bans[ip]) - return TRUE - - rate_limiting[ip] = world.time - - if (isnull(last_attempt)) - return FALSE - - if (world.time - last_attempt > rate_limit) - fail_counts -= ip - return FALSE - else - var/failures = fail_counts[ip] - - if (isnull(failures)) - fail_counts[ip] = 1 - return TRUE - else if (failures > max_fails) - return TRUE - else - fail_counts[ip] = failures + 1 - return TRUE diff --git a/code/controllers/subsystem/fast_machinery.dm b/code/controllers/subsystem/fast_machinery.dm deleted file mode 100644 index 8211b3b5e310..000000000000 --- a/code/controllers/subsystem/fast_machinery.dm +++ /dev/null @@ -1,27 +0,0 @@ -var/list/fast_machines = list() - - -SUBSYSTEM_DEF(fast_machinery) - name = "Fast Machinery" - wait = 0.7 SECONDS - priority = SS_PRIORITY_FAST_MACHINERY - flags = SS_NO_INIT - var/list/currentrun = list() - -/datum/controller/subsystem/fast_machinery/stat_entry(msg) - msg = "FP:[fast_machines.len]" - return ..() - -/datum/controller/subsystem/fast_machinery/fire(resumed = FALSE) - if(!resumed) - currentrun = fast_machines.Copy() - while(currentrun.len) - var/obj/structure/machinery/M = currentrun[currentrun.len] - currentrun.len-- - - if(QDELETED(M)) - continue - - M.process() - if(MC_TICK_CHECK) - return diff --git a/code/controllers/subsystem/htmlui.dm b/code/controllers/subsystem/htmlui.dm deleted file mode 100644 index 5dc885abc625..000000000000 --- a/code/controllers/subsystem/htmlui.dm +++ /dev/null @@ -1,57 +0,0 @@ -// What in the name of god is this? -// You'd think it'd be some form of process for the HTML interface module. -// But it isn't? -// It's some form of proc queue but ??? -// Does anything even *use* this? - -SUBSYSTEM_DEF(html_ui) - name = "HTMLUI" - wait = 1.7 SECONDS - flags = SS_NO_INIT - runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY - var/list/update = list() - -/datum/controller/subsystem/html_ui/fire(resumed = FALSE) - if (update.len) - var/list/L = list() - var/key - - for (var/datum/procqueue_item/item in update) - key = "[item.ref]_[item.procname]" - - if (item.args) - key += "(" - var/first = 1 - for (var/a in item.args) - if (!first) - key += "," - key += "[a]" - first = 0 - key += ")" - - if (!(key in L)) - if (item.args) - call(item.ref, item.procname)(arglist(item.args)) - else - call(item.ref, item.procname)() - - L.Add(key) - - update.Cut() - - -/datum/controller/subsystem/html_ui/proc/queue(ref, procname, ...) - var/datum/procqueue_item/item = new - item.ref = ref - item.procname = procname - - if (args.len > 2) - item.args = args.Copy(3) - - update.Insert(1, item) - - -/datum/procqueue_item - var/ref - var/procname - var/list/args diff --git a/code/controllers/subsystem/midi.dm b/code/controllers/subsystem/midi.dm deleted file mode 100644 index 158d67cf25ac..000000000000 --- a/code/controllers/subsystem/midi.dm +++ /dev/null @@ -1,45 +0,0 @@ -/datum/midi_record - var/target - var/midi - -SUBSYSTEM_DEF(midi) - name = "Midi" - wait = 2 SECONDS - flags = SS_NO_INIT|SS_BACKGROUND - runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY - priority = SS_PRIORITY_MIDI - - var/list/datum/midi_record/prepped_midis = list() - - var/list/datum/midi_record/currentrun = list() - - -/datum/controller/subsystem/midi/stat_entry(msg) - msg = "MR:[prepped_midis.len]" - return ..() - - -/datum/controller/subsystem/midi/fire(resumed = FALSE) - if (!resumed) - currentrun = prepped_midis - prepped_midis = list() - - while (currentrun.len) - var/datum/midi_record/E = currentrun[currentrun.len] - currentrun.len-- - - if (!E) - continue - - E.target << E.midi - - if (MC_TICK_CHECK) - return - -/datum/controller/subsystem/midi/proc/queue(target, midi) - if(!prepped_midis) - prepped_midis = list() - var/datum/midi_record/MR = new() - MR.target = target - MR.midi = midi - prepped_midis.Add(MR) diff --git a/code/controllers/subsystem/processing/defprocess.dm b/code/controllers/subsystem/processing/defprocess.dm new file mode 100644 index 000000000000..3701a0617a7a --- /dev/null +++ b/code/controllers/subsystem/processing/defprocess.dm @@ -0,0 +1,5 @@ +PROCESSING_SUBSYSTEM_DEF(defprocess) + name = "Defenses Processing" + priority = SS_PRIORITY_DEFENSES + flags = SS_NO_INIT + wait = 0.7 SECONDS diff --git a/code/controllers/subsystem/smoke_system.dm b/code/controllers/subsystem/smoke_system.dm deleted file mode 100644 index 2010687fcba2..000000000000 --- a/code/controllers/subsystem/smoke_system.dm +++ /dev/null @@ -1,31 +0,0 @@ -var/list/active_smoke_effects = list() - - -SUBSYSTEM_DEF(smoke_effects) - name = "Smoke Effects" - wait = 1 SECONDS - flags = SS_NO_INIT | SS_KEEP_TIMING - priority = SS_PRIORITY_OBJECTS - - var/list/currentrun = list() - -/datum/controller/subsystem/smoke_effects/stat_entry(msg) - msg = "P:[active_smoke_effects.len]" - return ..() - - -/datum/controller/subsystem/smoke_effects/fire(resumed = FALSE) - if(!resumed) - currentrun = active_smoke_effects.Copy() - - while(currentrun.len) - var/obj/effect/particle_effect/smoke/E = currentrun[currentrun.len] - currentrun.len-- - - if(!E || QDELETED(E)) - continue - - E.process() - - if(MC_TICK_CHECK) - return diff --git a/code/controllers/subsystem/stamina.dm b/code/controllers/subsystem/stamina.dm deleted file mode 100644 index 84d5b4038cd0..000000000000 --- a/code/controllers/subsystem/stamina.dm +++ /dev/null @@ -1,25 +0,0 @@ -var/global/list/active_staminas = list() - -SUBSYSTEM_DEF(stamina) - name = "Stamina" - wait = 2 SECONDS - priority = SS_PRIORITY_STAMINA - flags = SS_NO_INIT - var/list/currentrun = list() - - -/datum/controller/subsystem/stamina/fire(resumed = FALSE) - if (!resumed) - currentrun = active_staminas.Copy() - - while (currentrun.len) - var/datum/stamina/S = currentrun[currentrun.len] - currentrun.len-- - - if (!S || QDELETED(S)) - continue - - S.process() - - if (MC_TICK_CHECK) - return diff --git a/code/controllers/subsystem/stats_collector.dm b/code/controllers/subsystem/stats_collector.dm deleted file mode 100644 index de66e3b2c6b1..000000000000 --- a/code/controllers/subsystem/stats_collector.dm +++ /dev/null @@ -1,17 +0,0 @@ -/// Collects simple round statistics periodically -SUBSYSTEM_DEF(stats_collector) - name = "Round Stats" - wait = 30 SECONDS - priority = SS_PRIORITY_PAGER_STATUS - runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY - flags = SS_KEEP_TIMING | SS_NO_INIT - - var/stat_ticks = 0 - var/players_counter = 0 - -/datum/controller/subsystem/stats_collector/fire(resumed = FALSE) - players_counter += length(GLOB.clients) - stat_ticks++ - -/datum/controller/subsystem/stats_collector/proc/get_avg_players() - return players_counter / stat_ticks diff --git a/code/controllers/subsystem/teleporter.dm b/code/controllers/subsystem/teleporter.dm deleted file mode 100644 index b753bdb0d519..000000000000 --- a/code/controllers/subsystem/teleporter.dm +++ /dev/null @@ -1,10 +0,0 @@ -// Master teleporter controller. -SUBSYSTEM_DEF(teleporter) - name = "Teleporter" - wait = 5 SECONDS - init_order = SS_INIT_TELEPORTER - priority = SS_PRIORITY_TELEPORTER - flags = SS_NO_FIRE|SS_NO_INIT - - var/list/teleporters_by_id = list() // Associative list of teleporters by ID, master list of teleporters to process - var/list/teleporters = list() // Process list (identical contents to teleporters_by_id) diff --git a/code/controllers/subsystem/xenocon.dm b/code/controllers/subsystem/xenocon.dm deleted file mode 100644 index d16e59bd9813..000000000000 --- a/code/controllers/subsystem/xenocon.dm +++ /dev/null @@ -1,18 +0,0 @@ -SUBSYSTEM_DEF(xenocon) - name = "XENOCON" - wait = 5 SECONDS - priority = SS_PRIORITY_INACTIVITY - flags = SS_NO_INIT - var/rewarded = FALSE - -/datum/controller/subsystem/xenocon/fire(resumed = FALSE) - if(rewarded) - return - - var/datum/hive_status/hive - for(var/hivenumber in GLOB.hive_datum) - hive = GLOB.hive_datum[hivenumber] - if(hive.xenocon_points >= XENOCON_THRESHOLD) - var/datum/emergency_call/em_call = new /datum/emergency_call/xenos/platoon() - em_call.activate() - rewarded = TRUE diff --git a/code/datums/disease.dm b/code/datums/disease.dm index 92986b668b47..d2f466ebeb39 100644 --- a/code/datums/disease.dm +++ b/code/datums/disease.dm @@ -131,7 +131,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease /datum/disease/process() if(!holder) - active_diseases -= src + SSdisease.all_diseases -= src return if(prob(65)) spread(holder) @@ -176,7 +176,7 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease /datum/disease/New(process=TRUE)//process = 1 - adding the object to global list. List is processed by master controller. cure_list = list(cure_id) // to add more cures, add more vars to this list in the actual disease's New() if(process) // Viruses in list are considered active. - active_diseases += src + SSdisease.all_diseases += src initial_spread = spread /datum/disease/proc/IsSame(datum/disease/D) @@ -191,5 +191,5 @@ var/list/diseases = typesof(/datum/disease) - /datum/disease /datum/disease/Destroy() affected_mob = null holder = null - active_diseases -= src + SSdisease.all_diseases -= src . = ..() diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 6440c9734374..ad4703ba65fe 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -391,7 +391,7 @@ var/list/advance_cures = list( D.AssignName(new_name) D.Refresh() - for(var/datum/disease/advance/AD in active_diseases) + for(var/datum/disease/advance/AD in SSdisease.all_diseases) AD.Refresh() for(var/mob/living/carbon/human/H in shuffle(GLOB.alive_mob_list.Copy())) @@ -409,7 +409,7 @@ var/list/advance_cures = list( /* /mob/verb/test() - for(var/datum/disease/D in active_diseases) + for(var/datum/disease/D in SSdisease.all_diseases) to_chat(src, "[D.name] - [D.holder]") */ diff --git a/code/datums/stamina/_stamina.dm b/code/datums/stamina/_stamina.dm index 36705e3be300..e233aaa81676 100644 --- a/code/datums/stamina/_stamina.dm +++ b/code/datums/stamina/_stamina.dm @@ -37,13 +37,11 @@ current_stamina = Clamp(current_stamina - amount, 0, max_stamina) if(current_stamina < max_stamina) - if(!(src in active_staminas)) - active_staminas.Add(src) - + START_PROCESSING(SSobj, src) if(amount > 0) apply_rest_period(STAMINA_REST_PERIOD) else - active_staminas.Remove(src) + STOP_PROCESSING(SSobj, src) update_stamina_level() diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm index 6669dc058ee7..9b3ef1df4c15 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm @@ -152,9 +152,6 @@ spawn(0) //Deleting Almayer, for performance! SSitem_cleanup.delete_almayer() - if(SSxenocon) - //Don't need XENOCON - SSxenocon.wait = 30 MINUTES //PROCCESS diff --git a/code/game/gamemodes/colonialmarines/xenovsxeno.dm b/code/game/gamemodes/colonialmarines/xenovsxeno.dm index 5623295f1915..a19c3e3582c1 100644 --- a/code/game/gamemodes/colonialmarines/xenovsxeno.dm +++ b/code/game/gamemodes/colonialmarines/xenovsxeno.dm @@ -79,9 +79,6 @@ spawn(0) //Deleting Almayer, for performance! SSitem_cleanup.delete_almayer() - if(SSxenocon) - //Don't need XENOCON - SSxenocon.wait = 30 MINUTES //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index ee83c430c2db..8d4b27778c69 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -1,15 +1,3 @@ -/obj/structure/machinery/driver_button - name = "mass driver button" - icon = 'icons/obj/objects.dmi' - icon_state = "launcherbtt" - desc = "A remote control switch for a mass driver." - var/id = null - var/active = 0 - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 2 - active_power_usage = 4 - /obj/structure/machinery/ignition_switch name = "ignition switch" icon = 'icons/obj/objects.dmi' diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index f6adaa8edd4e..7ec97874bb7f 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -1,158 +1,8 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -/obj/structure/machinery/computer/pod - name = "Pod Launch Control" - desc = "A control for launching pods. Some people prefer firing Mechas." +// Legacy SS13 machinery turned into props +/obj/structure/machinery/computer/pod/old + name = "DoorMex Control Computer" + desc = "A control for launching pods." icon_state = "computer_generic" density = TRUE - circuit = /obj/item/circuitboard/computer/pod - var/id = 1 - var/obj/structure/machinery/mass_driver/connected = null - var/timing = 0 - var/time = 30 - var/title = "Mass Driver Controls" + circuit = /obj/item/circuitboard/computer/pod/old processing = TRUE - - -/obj/structure/machinery/computer/pod/New() - ..() - spawn( 5 ) - for(var/obj/structure/machinery/mass_driver/M in machines) - if(M.id == id) - connected = M - return - return - - -/obj/structure/machinery/computer/pod/proc/alarm() - if(inoperable()) - return - - if(!( connected )) - to_chat(viewers(null, null), "Cannot locate mass driver connector. Cancelling firing sequence!") - return - - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == id) - M.open() - - sleep(20) - - for(var/obj/structure/machinery/mass_driver/M in machines) - if(M.id == id) - M.power = connected.power - M.drive() - - sleep(50) - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == id) - M.close() - return - return - -/obj/structure/machinery/computer/pod/attack_remote(mob/user as mob) - return attack_hand(user) - -/obj/structure/machinery/computer/pod/attack_hand(mob/user as mob) - if(..()) - return - - var/dat = "[title]" - user.set_interaction(src) - if(connected) - var/d2 - if(timing) //door controls do not need timers. - d2 = "Stop Time Launch" - else - d2 = "Initiate Time Launch" - var/second = time % 60 - var/minute = (time - second) / 60 - dat += "
\nTimer System: [d2]\nTime Left: [minute ? "[minute]:" : null][second] - - + +" - var/temp = "" - var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 ) - for(var/t in L) - if(t == connected.power) - temp += "[t] " - else - temp += "[t] " - dat += "
\nPower Level: [temp]
\nFiring Sequence
\nTest Fire Driver
\nToggle Outer Door
" - else - dat += "
\nToggle Outer Door
" - dat += "

Close
" - show_browser(user, dat, "computer", "size=400x500") - add_fingerprint(usr) - return - - -/obj/structure/machinery/computer/pod/process() - if(!..()) - return - if(timing) - if(time > 0) - time = round(time) - 1 - else - alarm() - time = 0 - timing = 0 - updateDialog() - return - - -/obj/structure/machinery/computer/pod/Topic(href, href_list) - if(..()) - return - if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (isRemoteControlling(usr))) - usr.set_interaction(src) - if(href_list["power"]) - var/t = text2num(href_list["power"]) - t = min(max(0.25, t), 16) - if(connected) - connected.power = t - if(href_list["alarm"]) - alarm() - if(href_list["drive"]) - for(var/obj/structure/machinery/mass_driver/M in machines) - if(M.id == id) - M.power = connected.power - M.drive() - - if(href_list["time"]) - timing = text2num(href_list["time"]) - if(href_list["tp"]) - var/tp = text2num(href_list["tp"]) - time += tp - time = min(max(round(time), 0), 120) - if(href_list["door"]) - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == id) - if(M.density) - M.open() - else - M.close() - updateUsrDialog() - return - - - -/obj/structure/machinery/computer/pod/old - name = "DoorMex Control Computer" - title = "Door Controls" - -/obj/structure/machinery/computer/pod/old/syndicate - name = "ProComp Executive IIc" - desc = "The Syndicate operate on a tight budget. Operates external airlocks." - icon_state = "syndicomp" - title = "External Airlock Controls" - req_access = list(ACCESS_ILLEGAL_PIRATE) - -/obj/structure/machinery/computer/pod/old/syndicate/attack_hand(mob/user as mob) - if(!allowed(user)) - to_chat(user, SPAN_DANGER("Access Denied")) - return - else - ..() - -/obj/structure/machinery/computer/pod/old/swf - name = "Magix System IV" - icon_state = "wizard" - desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition" diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 8be8609d6008..8b73588f1d0b 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -150,47 +150,6 @@ else icon_state = initial(icon_state) + "0" -/obj/structure/machinery/driver_button/attack_remote(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/driver_button/attackby(obj/item/W, mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/driver_button/attack_hand(mob/user as mob) - - src.add_fingerprint(usr) - if(inoperable()) - return - if(active) - return - add_fingerprint(user) - - use_power(5) - - active = 1 - icon_state = "launcheract" - - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == src.id) - INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/door, open)) - - sleep(20) - - for(var/obj/structure/machinery/mass_driver/M in machines) - if(M.id == src.id) - M.drive() - - sleep(50) - - for(var/obj/structure/machinery/door/poddoor/M in machines) - if(M.id == src.id) - INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/structure/machinery/door, close)) - - icon_state = "launcherbtt" - active = 0 - - return - // Controls elevator railings /obj/structure/machinery/door_control/railings name = "railing controls" diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index f4ad7a63ba77..4ce295aa9965 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -105,7 +105,7 @@ Class Procs: var/list/component_parts //list of all the parts used to build it, if made from certain kinds of frames. var/manual = 0 layer = OBJ_LAYER - var/machine_processing = 0 // whether the machine is busy and requires process() calls in scheduler. + var/machine_processing = 0 // whether the machine is busy and requires process() calls in scheduler. // Please replace this by DF_ISPROCESSING in another refactor --fira throwpass = 1 projectile_coverage = PROJECTILE_COVERAGE_MEDIUM var/power_machine = FALSE //Whether the machine should process on power, or normal processor diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm deleted file mode 100644 index 591cec1f5baa..000000000000 --- a/code/game/machinery/magnet.dm +++ /dev/null @@ -1,421 +0,0 @@ -// Magnetic attractor, creates variable magnetic fields and attraction. -// Can also be used to emit electron/proton beams to create a center of magnetism on another tile - -// tl;dr: it's magnets lol -// This was created for firing ranges, but I suppose this could have other applications - Doohl - -/obj/structure/machinery/magnetic_module - - icon = 'icons/obj/objects.dmi' - icon_state = "floor_magnet-f" - name = "Electromagnetic Generator" - desc = "A device that uses station power to create points of magnetic energy." - level = 1 // underfloor - layer = UNDERFLOOR_OBJ_LAYER - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 50 - - var/freq = 1449 // radio frequency - var/electricity_level = 1 // intensity of the magnetic pull - var/magnetic_field = 1 // the range of magnetic attraction - var/code = 0 // frequency code, they should be different unless you have a group of magnets working together or something - var/turf/center // the center of magnetic attraction - var/on = 0 - var/pulling = 0 - - // x, y modifiers to the center turf; (0, 0) is centered on the magnet, whereas (1, -1) is one tile right, one tile down - var/center_x = 0 - var/center_y = 0 - var/max_dist = 20 // absolute value of center_x,y cannot exceed this integer - -/obj/structure/machinery/magnetic_module/Initialize(mapload, ...) - . = ..() - - var/turf/T = loc - hide(T.intact_tile) - center = T - - SSradio.add_object(src, freq, RADIO_MAGNETS) - - INVOKE_ASYNC(src, PROC_REF(magnetic_process)) - -/obj/structure/machinery/magnetic_module/Destroy() - center = null - SSradio.remove_object(src, freq) - . = ..() - - - // update the invisibility and icon -/obj/structure/machinery/magnetic_module/hide(intact) - invisibility = intact ? 101 : 0 - updateicon() - - // update the icon_state -/obj/structure/machinery/magnetic_module/proc/updateicon() - var/state="floor_magnet" - var/onstate="" - if(!on) - onstate="0" - - if(invisibility) - icon_state = "[state][onstate]-f" // if invisible, set icon to faded version - // in case of being revealed by T-scanner - else - icon_state = "[state][onstate]" - -/obj/structure/machinery/magnetic_module/receive_signal(datum/signal/signal) - - var/command = signal.data["command"] - var/modifier = signal.data["modifier"] - var/signal_code = signal.data["code"] - if(command && (signal_code == code)) - - Cmd(command, modifier) - - - -/obj/structure/machinery/magnetic_module/proc/Cmd(command, modifier) - - if(command) - switch(command) - if("set-electriclevel") - if(modifier) electricity_level = modifier - if("set-magneticfield") - if(modifier) magnetic_field = modifier - - if("add-elec") - electricity_level++ - if(electricity_level > 12) - electricity_level = 12 - if("sub-elec") - electricity_level-- - if(electricity_level <= 0) - electricity_level = 1 - if("add-mag") - magnetic_field++ - if(magnetic_field > 4) - magnetic_field = 4 - if("sub-mag") - magnetic_field-- - if(magnetic_field <= 0) - magnetic_field = 1 - - if("set-x") - if(modifier) center_x = modifier - if("set-y") - if(modifier) center_y = modifier - - if("N") // NORTH - center_y++ - if("S") // SOUTH - center_y-- - if("E") // EAST - center_x++ - if("W") // WEST - center_x-- - if("C") // CENTER - center_x = 0 - center_y = 0 - if("R") // RANDOM - center_x = rand(-max_dist, max_dist) - center_y = rand(-max_dist, max_dist) - - if("set-code") - if(modifier) code = modifier - if("toggle-power") - on = !on - - if(on) - INVOKE_ASYNC(src, PROC_REF(magnetic_process)) - - -/obj/structure/machinery/magnetic_module/process() - if(stat & NOPOWER) - on = 0 - - // Sanity checks: - if(electricity_level <= 0) - electricity_level = 1 - if(magnetic_field <= 0) - magnetic_field = 1 - - - // Limitations: - if(abs(center_x) > max_dist) - center_x = max_dist - if(abs(center_y) > max_dist) - center_y = max_dist - if(magnetic_field > 4) - magnetic_field = 4 - if(electricity_level > 12) - electricity_level = 12 - - // Update power usage: - if(on) - use_power = USE_POWER_ACTIVE - active_power_usage = electricity_level*15 - else - use_power = USE_POWER_NONE - - - // Overload conditions: - /* // Eeeehhh kinda stupid - if(on) - if(electricity_level > 11) - if(prob(electricity_level)) - explosion(loc, 0, 1, 2, 3) // ooo dat shit EXPLODES son - spawn(2) - qdel(src) - */ - - updateicon() - - -/obj/structure/machinery/magnetic_module/proc/magnetic_process() // proc that actually does the pulling - if(pulling) return - while(on) - - pulling = 1 - center = locate(x+center_x, y+center_y, z) - if(center) - for(var/obj/M in orange(magnetic_field, center)) - if(!M.anchored && (M.flags_atom & CONDUCT)) - step_towards(M, center) - - for(var/mob/living/silicon/S in orange(magnetic_field, center)) - if(isAI(S)) continue - step_towards(S, center) - - use_power(electricity_level * 5) - sleep(13 - electricity_level) - - pulling = 0 - -/obj/structure/machinery/magnetic_controller - name = "Magnetic Control Console" - icon = 'icons/obj/structures/machinery/airlock_machines.dmi' // uses an airlock machine icon, THINK GREEN HELP THE ENVIRONMENT - RECYCLING! - icon_state = "airlock_control_standby" - density = TRUE - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 45 - var/frequency = 1449 - var/code = 0 - var/list/magnets = list() - var/title = "Magnetic Control Console" - var/autolink = 0 // if set to 1, can't probe for other magnets! - - var/pathpos = 1 // position in the path - var/path = "NULL" // text path of the magnet - var/speed = 1 // lowest = 1, highest = 10 - var/list/rpath = list() // real path of the magnet, used in iterator - - var/moving = 0 // 1 if scheduled to loop - var/looping = 0 // 1 if looping - - var/datum/radio_frequency/radio_connection - -/obj/structure/machinery/magnetic_controller/Initialize(mapload, ...) - . = ..() - if(autolink) - for(var/obj/structure/machinery/magnetic_module/M in machines) - if(M.freq == frequency && M.code == code) - magnets.Add(M) - - SSradio.add_object(src, frequency, RADIO_MAGNETS) - - if(path) // check for default path - filter_path() // renders rpath - -/obj/structure/machinery/magnetic_controller/Destroy() - QDEL_NULL_LIST(magnets) - SSradio.remove_object(src, frequency) - . = ..() - - -/obj/structure/machinery/magnetic_controller/process() - if(magnets.len == 0 && autolink) - for(var/obj/structure/machinery/magnetic_module/M in machines) - if(M.freq == frequency && M.code == code) - magnets.Add(M) - -/obj/structure/machinery/magnetic_controller/attack_remote(mob/user as mob) - return src.attack_hand(user) - -/obj/structure/machinery/magnetic_controller/attack_hand(mob/user as mob) - if(inoperable()) - return - user.set_interaction(src) - var/dat = "Magnetic Control Console

" - if(!autolink) - dat += {" - Frequency: [frequency]
- Code: [code]
- Probe Generators
- "} - - if(magnets.len >= 1) - - dat += "Magnets confirmed:
" - var/i = 0 - for(var/obj/structure/machinery/magnetic_module/M in magnets) - i++ - dat += "     < \[[i]\] ([M.on ? "On":"Off"])|Electricity level: - [M.electricity_level] +; Magnetic field: - [M.magnetic_field] +
" - - dat += "
Speed: - [speed] +
" - dat += "Path: {[path]}
" - dat += "Moving: [moving ? "Enabled":"Disabled"]" - - - show_browser(user, dat, name, "magnet", "size=400x500") - -/obj/structure/machinery/magnetic_controller/Topic(href, href_list) - . = ..() - if(.) - return - if(inoperable()) - return - usr.set_interaction(src) - src.add_fingerprint(usr) - - if(href_list["radio-op"]) - - // Prepare signal beforehand, because this is a radio operation - var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission - signal.source = src - signal.frequency = frequency - signal.data["code"] = code - - // Apply any necessary commands - switch(href_list["radio-op"]) - if("togglepower") - signal.data["command"] = "toggle-power" - - if("minuselec") - signal.data["command"] = "sub-elec" - if("pluselec") - signal.data["command"] = "add-elec" - - if("minusmag") - signal.data["command"] = "sub-mag" - if("plusmag") - signal.data["command"] = "add-mag" - - - // Broadcast the signal - - radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) - - addtimer(CALLBACK(src, PROC_REF(updateUsrDialog)), 1) - - if(href_list["operation"]) - switch(href_list["operation"]) - if("plusspeed") - speed ++ - if(speed > 10) - speed = 10 - if("minusspeed") - speed -- - if(speed <= 0) - speed = 1 - if("setpath") - var/newpath = copytext(sanitize(input(usr, "Please define a new path!",,path) as text|null),1,MAX_MESSAGE_LEN) - if(newpath && newpath != "") - moving = 0 // stop moving - path = newpath - pathpos = 1 // reset position - filter_path() // renders rpath - - if("togglemoving") - moving = !moving - if(moving) - INVOKE_ASYNC(src, PROC_REF(MagnetMove)) - - - updateUsrDialog() - -/obj/structure/machinery/magnetic_controller/proc/MagnetMove() - if(looping) return - - while(moving && rpath.len >= 1) - - if(inoperable()) - break - - looping = 1 - - // Prepare the radio signal - var/datum/signal/signal = new - signal.transmission_method = 1 // radio transmission - signal.source = src - signal.frequency = frequency - signal.data["code"] = code - - if(pathpos > rpath.len) // if the position is greater than the length, we just loop through the list! - pathpos = 1 - - var/nextmove = uppertext(rpath[pathpos]) // makes it un-case-sensitive - - if(!(nextmove in list("N","S","E","W","C","R"))) - // N, S, E, W are directional - // C is center - // R is random (in magnetic field's bounds) - qdel(signal) - break // break the loop if the character located is invalid - - signal.data["command"] = nextmove - - - pathpos++ // increase iterator - - // Broadcast the signal - spawn() - radio_connection.post_signal(src, signal, filter = RADIO_MAGNETS) - - if(speed == 10) - sleep(1) - else - sleep(12-speed) - - looping = 0 - - -/obj/structure/machinery/magnetic_controller/proc/filter_path() - // Generates the rpath variable using the path string, think of this as "string2list" - // Doesn't use params2list() because of the akward way it stacks entities - rpath = list() // clear rpath - var/maximum_character = min( 50, length(path) ) // chooses the maximum length of the iterator. 50 max length - - for(var/i=1, i<=maximum_character, i++) // iterates through all characters in path - - var/nextchar = copytext(path, i, i+1) // find next character - - if(!(nextchar in list(";", "&", "*", " "))) // if char is a separator, ignore - rpath += copytext(path, i, i+1) // else, add to list - - // there doesn't HAVE to be separators but it makes paths syntatically visible - - - - - - - - - - - - - - - - - - - - - - - diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index d1e2fecce20f..f1b0081e3a39 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -1,5 +1,4 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - +// Legacy SS13 machinery turned into a prop /obj/structure/machinery/mass_driver name = "mass driver" desc = "Shoots things into space." @@ -9,32 +8,3 @@ use_power = USE_POWER_IDLE idle_power_usage = 2 active_power_usage = 50 - - var/power = 1 - var/code = 1 - var/id = 1 - var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess. - - -/obj/structure/machinery/mass_driver/proc/drive(amount) - if(inoperable()) - return - use_power(500) - var/O_limit - var/atom/target = get_edge_target_turf(src, dir) - for(var/atom/movable/O in loc) - if(!O.anchored) - if(O_limit >= 20) - for(var/mob/M in hearers(src, null)) - to_chat(M, SPAN_NOTICE(" The mass driver lets out a screech, it mustn't be able to handle any more items.")) - break - use_power(500) - INVOKE_ASYNC(O, TYPE_PROC_REF(/atom/movable, throw_atom), target, drive_range * power, 100/power) - flick("mass_driver1", src) - return - -/obj/structure/machinery/mass_driver/emp_act(severity) - if(inoperable()) - return - drive() - ..(severity) diff --git a/code/game/objects/effects/effect_system/smoke.dm b/code/game/objects/effects/effect_system/smoke.dm index 78aa01b5dacb..b80f53b14d2e 100644 --- a/code/game/objects/effects/effect_system/smoke.dm +++ b/code/game/objects/effects/effect_system/smoke.dm @@ -31,13 +31,13 @@ amount = oldamount - 1 cause_data = new_cause_data time_to_live += rand(-1,1) - active_smoke_effects += src + START_PROCESSING(SSeffects, src) /obj/effect/particle_effect/smoke/Destroy() . = ..() if(opacity) set_opacity(0) - active_smoke_effects -= src + STOP_PROCESSING(SSeffects, src) cause_data = null /obj/effect/particle_effect/smoke/initialize_pass_flags(datum/pass_flags_container/PF) diff --git a/code/game/objects/items/circuitboards/computer.dm b/code/game/objects/items/circuitboards/computer.dm index 7276e8a7f051..122136f6f2fa 100644 --- a/code/game/objects/items/circuitboards/computer.dm +++ b/code/game/objects/items/circuitboards/computer.dm @@ -96,9 +96,9 @@ /obj/item/circuitboard/computer/atmos_alert name = "Circuit board (Atmospheric Alert)" build_path = /obj/structure/machinery/computer/atmos_alert -/obj/item/circuitboard/computer/pod - name = "Circuit board (Massdriver control)" - build_path = /obj/structure/machinery/computer/pod +/obj/item/circuitboard/computer/pod/old + name = "Circuit board (DoorMex)" + build_path = /obj/structure/machinery/computer/pod/old /obj/item/circuitboard/computer/robotics name = "Circuit board (Robotics Control)" build_path = /obj/structure/machinery/computer/robotics @@ -117,15 +117,6 @@ /obj/item/circuitboard/computer/powermonitor name = "Circuit board (Power Monitor)" build_path = /obj/structure/machinery/power/monitor -/obj/item/circuitboard/computer/olddoor - name = "Circuit board (DoorMex)" - build_path = /obj/structure/machinery/computer/pod/old -/obj/item/circuitboard/computer/syndicatedoor - name = "Circuit board (ProComp Executive)" - build_path = /obj/structure/machinery/computer/pod/old/syndicate -/obj/item/circuitboard/computer/swfdoor - name = "Circuit board (Magix)" - build_path = /obj/structure/machinery/computer/pod/old/swf /obj/item/circuitboard/computer/prisoner name = "Circuit board (Prisoner Management)" build_path = /obj/structure/machinery/computer/prisoner diff --git a/code/game/world.dm b/code/game/world.dm index 450f72427903..82a9ae45de12 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -174,11 +174,6 @@ var/world_topic_spam_protect_time = world.timeofday response["response"] = "Payload too large" return json_encode(response) - if(SSfail_to_topic?.IsRateLimited(addr)) - response["statuscode"] = 429 - response["response"] = "Rate limited" - return json_encode(response) - var/logging = CONFIG_GET(flag/log_world_topic) var/topic_decoded = rustg_url_decode(T) if(!rustg_json_is_valid(topic_decoded)) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 0297145c7e8d..a7ee69469f1d 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -329,7 +329,7 @@ set desc = "For scheduler debugging" var/list/individual_counts = list() - for(var/datum/disease/M in active_diseases) + for(var/datum/disease/M in SSdisease.all_diseases) individual_counts["[M.type]"]++ for(var/mob/M in SShuman.processable_human_list) individual_counts["[M.type]"]++ diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 82540d6cbf5e..181133edc2aa 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -145,7 +145,6 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( if(!receiver_client) to_chat(src, SPAN_WARNING("The person you were attempting to PM has gone offline!")) return - if(unansweredAhelps[receiver_client.computer_id]) unansweredAhelps.Remove(receiver_client.computer_id) cmd_admin_pm(receiver_client, null) return @@ -467,7 +466,6 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( GLOB.clients -= src SSping.currentrun -= src - unansweredAhelps?.Remove(computer_id) log_access("Logout: [key_name(src)]") if(CLIENT_IS_STAFF(src)) message_admins("Admin logout: [key_name(src)]") diff --git a/code/modules/defenses/defenses.dm b/code/modules/defenses/defenses.dm index d2c5e63fee29..b39128b1a8bc 100644 --- a/code/modules/defenses/defenses.dm +++ b/code/modules/defenses/defenses.dm @@ -147,12 +147,12 @@ /obj/structure/machinery/defenses/start_processing() if(!machine_processing) machine_processing = TRUE - fast_machines += src + START_PROCESSING(SSdefprocess, src) /obj/structure/machinery/defenses/stop_processing() if(machine_processing) machine_processing = FALSE - fast_machines -= src + STOP_PROCESSING(SSdefprocess, src) /obj/structure/machinery/defenses/proc/earn_kill() kills++ diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index a74fa7413804..f1fff4fb765e 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -279,7 +279,6 @@ var/allowed_nest_distance = 15 //How far away do we allow nests from an ovied Queen. Default 15 tiles. var/obj/effect/alien/resin/special/pylon/core/hive_location = null //Set to ref every time a core is built, for defining the hive location var/crystal_stored = 0 //How much stockpiled material is stored for the hive to use. - var/xenocon_points = 0 //Xeno version of DEFCON var/datum/mutator_set/hive_mutators/mutators = new var/tier_slot_multiplier = 1 diff --git a/code/modules/reagents/chemistry_machinery/pandemic.dm b/code/modules/reagents/chemistry_machinery/pandemic.dm index aef4823effda..c9e34f79609e 100644 --- a/code/modules/reagents/chemistry_machinery/pandemic.dm +++ b/code/modules/reagents/chemistry_machinery/pandemic.dm @@ -132,7 +132,7 @@ if(archive_diseases[id]) var/datum/disease/advance/A = archive_diseases[id] A.AssignName(new_name) - for(var/datum/disease/advance/AD in active_diseases) + for(var/datum/disease/advance/AD in SSdisease.all_diseases) AD.Refresh() updateUsrDialog() diff --git a/code/modules/teleporters/teleporter_admin_verbs.dm b/code/modules/teleporters/teleporter_admin_verbs.dm index 930f9209d481..61f21fdb34ee 100644 --- a/code/modules/teleporters/teleporter_admin_verbs.dm +++ b/code/modules/teleporters/teleporter_admin_verbs.dm @@ -3,7 +3,7 @@ set desc = "Force a teleporter to teleport" set category = "Admin.Game" - var/available_teleporters = SSteleporter.teleporters + var/list/datum/teleporter/available_teleporters = GLOB.teleporters var/datum/teleporter/teleporter = tgui_input_list(usr, "Which teleporter do you want to use?", "Select a teleporter:", available_teleporters) if(!teleporter) diff --git a/code/modules/teleporters/teleporter_console.dm b/code/modules/teleporters/teleporter_console.dm index b9a3629c881d..88384578a939 100644 --- a/code/modules/teleporters/teleporter_console.dm +++ b/code/modules/teleporters/teleporter_console.dm @@ -40,19 +40,13 @@ if(linked_teleporter) // Maybe should debug log this because it's indicative of bad logic, but I'll leave it out for the sake of (potential) spam return TRUE - if(SSteleporter) - - var/datum/teleporter/found_teleporter = SSteleporter.teleporters_by_id[teleporter_id] - if(found_teleporter) - linked_teleporter = found_teleporter - linked_teleporter.linked_consoles += src - else - log_debug("Couldn't find teleporter matching ID [linked_teleporter]. Code: TELEPORTER_CONSOLE_2") - log_admin("Couldn't find teleporter matching ID [linked_teleporter]. Tell the devs. Code: TELEPORTER_CONSOLE_2") - return FALSE + var/datum/teleporter/found_teleporter = GLOB.teleporters_by_id[teleporter_id] + if(found_teleporter) + linked_teleporter = found_teleporter + linked_teleporter.linked_consoles += src else - log_debug("Couldn't find teleporter SS to pull teleporter from. Code: TELEPORTER_CONSOLE_3") - log_admin("Couldn't find teleporter SS to pull teleporter from. Tell the devs. Code: TELEPORTER_CONSOLE_3") + log_debug("Couldn't find teleporter matching ID [linked_teleporter]. Code: TELEPORTER_CONSOLE_2") + log_admin("Couldn't find teleporter matching ID [linked_teleporter]. Tell the devs. Code: TELEPORTER_CONSOLE_2") return FALSE return TRUE @@ -181,9 +175,9 @@ if(SSmapping.configs[GROUND_MAP].map_name != MAP_CORSAT) // Bad style, but I'm leaving it here for now until someone wants to add a teleporter to another map return - if(SSteleporter.teleporters.len) // already made the damn thing + if(GLOB.teleporters.len) // already made the damn thing return var/datum/teleporter/corsat/teleporter = new - SSteleporter.teleporters_by_id[teleporter.id] = teleporter - SSteleporter.teleporters += teleporter + GLOB.teleporters_by_id[teleporter.id] = teleporter + GLOB.teleporters += teleporter diff --git a/code/modules/teleporters/teleporter_landmarks.dm b/code/modules/teleporters/teleporter_landmarks.dm index 75ce77550f52..fe0ab4648903 100644 --- a/code/modules/teleporters/teleporter_landmarks.dm +++ b/code/modules/teleporters/teleporter_landmarks.dm @@ -41,30 +41,24 @@ /obj/effect/landmark/teleporter_loc/LateInitialize() . = ..() - if (SSteleporter) - var/datum/teleporter/T = SSteleporter.teleporters_by_id[linked_teleporter] - if (T) - if (!T.locations[location_id]) - T.locations[location_id] = list() + var/datum/teleporter/T = GLOB.teleporters_by_id[linked_teleporter] + if (T) + if (!T.locations[location_id]) + T.locations[location_id] = list() - var/list/location = T.locations[location_id] + var/list/location = T.locations[location_id] - if (!location) - log_debug("Teleporter locations turf list not properly instantiated. Code: TELEPORTER_LANDMARK_1") - log_admin("Teleporter locations turf list not properly instantiated. Tell the devs. Code: TELEPORTER_LANDMARK_1") - qdel(src) - return - - location[index] = get_turf(src) - - else - log_debug("Couldn't find teleporter matching ID [linked_teleporter]. Code: TELEPORTER_LANDMARK_2") - log_admin("Couldn't find teleporter matching ID [linked_teleporter]. Tell the devs. Code: TELEPORTER_LANDMARK_2") + if (!location) + log_debug("Teleporter locations turf list not properly instantiated. Code: TELEPORTER_LANDMARK_1") + log_admin("Teleporter locations turf list not properly instantiated. Tell the devs. Code: TELEPORTER_LANDMARK_1") qdel(src) return + + location[index] = get_turf(src) + else - log_debug("Couldn't find teleporter SS to register with. Code: TELEPORTER_LANDMARK_3") - log_admin("Couldn't find teleporter SS to register with. Tell the devs. Code: TELEPORTER_LANDMARK_3") + log_debug("Couldn't find teleporter matching ID [linked_teleporter]. Code: TELEPORTER_LANDMARK_2") + log_admin("Couldn't find teleporter matching ID [linked_teleporter]. Tell the devs. Code: TELEPORTER_LANDMARK_2") qdel(src) return diff --git a/colonialmarines.dme b/colonialmarines.dme index 192217ea59b3..37c34d443c1b 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -227,7 +227,6 @@ #include "code\controllers\mc\master.dm" #include "code\controllers\mc\subsystem.dm" #include "code\controllers\subsystem\acid_pillar.dm" -#include "code\controllers\subsystem\admin.dm" #include "code\controllers\subsystem\assets.dm" #include "code\controllers\subsystem\atoms.dm" #include "code\controllers\subsystem\autofire.dm" @@ -238,11 +237,8 @@ #include "code\controllers\subsystem\decorator.dm" #include "code\controllers\subsystem\disease.dm" #include "code\controllers\subsystem\events.dm" -#include "code\controllers\subsystem\fail_to_topic.dm" -#include "code\controllers\subsystem\fast_machinery.dm" #include "code\controllers\subsystem\fz_transitions.dm" #include "code\controllers\subsystem\garbage.dm" -#include "code\controllers\subsystem\htmlui.dm" #include "code\controllers\subsystem\human.dm" #include "code\controllers\subsystem\inactivity.dm" #include "code\controllers\subsystem\influxdriver.dm" @@ -254,7 +250,6 @@ #include "code\controllers\subsystem\lighting.dm" #include "code\controllers\subsystem\machinery.dm" #include "code\controllers\subsystem\mapping.dm" -#include "code\controllers\subsystem\midi.dm" #include "code\controllers\subsystem\minimap.dm" #include "code\controllers\subsystem\mob.dm" #include "code\controllers\subsystem\nanoui.dm" @@ -274,15 +269,11 @@ #include "code\controllers\subsystem\round_recording.dm" #include "code\controllers\subsystem\shuttle.dm" #include "code\controllers\subsystem\shuttles.dm" -#include "code\controllers\subsystem\smoke_system.dm" #include "code\controllers\subsystem\sound.dm" #include "code\controllers\subsystem\sound_loops.dm" #include "code\controllers\subsystem\soundscape.dm" -#include "code\controllers\subsystem\stamina.dm" #include "code\controllers\subsystem\statpanel.dm" -#include "code\controllers\subsystem\stats_collector.dm" #include "code\controllers\subsystem\techtree.dm" -#include "code\controllers\subsystem\teleporter.dm" #include "code\controllers\subsystem\tgui.dm" #include "code\controllers\subsystem\ticker.dm" #include "code\controllers\subsystem\time_track.dm" @@ -292,10 +283,10 @@ #include "code\controllers\subsystem\weather.dm" #include "code\controllers\subsystem\x_evolution.dm" #include "code\controllers\subsystem\xeno.dm" -#include "code\controllers\subsystem\xenocon.dm" #include "code\controllers\subsystem\init\landmarks.dm" #include "code\controllers\subsystem\init\law.dm" #include "code\controllers\subsystem\init\lobby_art.dm" +#include "code\controllers\subsystem\processing\defprocess.dm" #include "code\controllers\subsystem\processing\effects.dm" #include "code\controllers\subsystem\processing\fastobj.dm" #include "code\controllers\subsystem\processing\hive_status.dm" @@ -805,7 +796,6 @@ #include "code\game\machinery\lightswitch.dm" #include "code\game\machinery\line_nexter.dm" #include "code\game\machinery\machinery.dm" -#include "code\game\machinery\magnet.dm" #include "code\game\machinery\mass_driver.dm" #include "code\game\machinery\mining.dm" #include "code\game\machinery\misc.dm" From bdecde4ce267b151ab7fa9dfbd72cb8e932ff56f Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 05:17:07 +0000 Subject: [PATCH 28/51] Automatic changelog for PR #4835 [ci skip] --- html/changelogs/AutoChangeLog-pr-4835.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4835.yml diff --git a/html/changelogs/AutoChangeLog-pr-4835.yml b/html/changelogs/AutoChangeLog-pr-4835.yml new file mode 100644 index 000000000000..6fcce13e1ece --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4835.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - rscdel: "Removed unused magnet and mass driver legacy SS13 machinery." \ No newline at end of file From 8cc8778dc20e394d56f876081d97d93ce84a1ff7 Mon Sep 17 00:00:00 2001 From: BeagleGaming1 <56142455+BeagleGaming1@users.noreply.github.com> Date: Sun, 5 Nov 2023 21:57:51 -0500 Subject: [PATCH 29/51] Tent code changes (#4796) # About the pull request Using the tents map template datum directly makes it easier to edit # Explain why it's good for the game Makes it possible to vv edit it # Changelog :cl: code: Tents now hold the datum directly, instead of the typepath admin: Added a proc for staff to change tent dmm's /:cl: --- code/controllers/subsystem/mapping.dm | 11 ++++- code/modules/tents/folded_tents.dm | 59 ++++++++++++++------------ icons/obj/structures/tents_folded.dmi | Bin 560 -> 1181 bytes 3 files changed, 43 insertions(+), 27 deletions(-) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 6f0f060305b2..913e5dcd50d3 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -6,10 +6,13 @@ SUBSYSTEM_DEF(mapping) var/list/datum/map_config/configs var/list/datum/map_config/next_map_configs + ///Name of all maps var/list/map_templates = list() - + ///Name of all shuttles var/list/shuttle_templates = list() var/list/all_shuttle_templates = list() + ///map_id of all tents + var/list/tent_type_templates = list() var/list/areas_in_z = list() @@ -201,6 +204,7 @@ SUBSYSTEM_DEF(mapping) map_templates[T.name] = T preloadShuttleTemplates() + preload_tent_templates() /proc/generateMapList(filename) . = list() @@ -242,6 +246,11 @@ SUBSYSTEM_DEF(mapping) all_shuttle_templates[item] = S map_templates[S.shuttle_id] = S +/datum/controller/subsystem/mapping/proc/preload_tent_templates() + for(var/template in subtypesof(/datum/map_template/tent)) + var/datum/map_template/tent/new_tent = new template() + tent_type_templates[new_tent.map_id] = new_tent + /datum/controller/subsystem/mapping/proc/RequestBlockReservation(width, height, z, type = /datum/turf_reservation, turf_type_override) UNTIL(initialized && !clearing_reserved_turfs) var/datum/turf_reservation/reserve = new type diff --git a/code/modules/tents/folded_tents.dm b/code/modules/tents/folded_tents.dm index 08b8142ab358..2bed879a0a99 100644 --- a/code/modules/tents/folded_tents.dm +++ b/code/modules/tents/folded_tents.dm @@ -1,20 +1,34 @@ /obj/item/folded_tent name = "Folded Abstract Tent" icon = 'icons/obj/structures/tents_folded.dmi' + icon_state = "tent" w_class = SIZE_LARGE /// Required cleared area along X axis var/dim_x = 1 /// Required cleared area along Y axis var/dim_y = 1 - /// Deployment X offset - var/off_x = 0 - /// Deployment Y offset - var/off_y = 0 - /// Map Template to use for the tent - var/template + /// Tents map template typepath + var/template_preset = "abstract" + ///Map template datum used for tent + var/datum/map_template/template /// If this tent can be deployed anywhere var/unrestricted_deployment = FALSE +/obj/item/folded_tent/Initialize(mapload, ...) + . = ..() + if(template_preset == "abstract") //So spawning an abstract tent wont fail create and destroy + return + set_template(SSmapping.tent_type_templates[template_preset]) + if(!template) + CRASH("[src] initialized with template preset, \"[template_preset]\", that does not exist.") + +/obj/item/folded_tent/proc/set_template(datum/map_template/new_template) + if(!istype(new_template)) + return + template = new_template + dim_x = template.width + dim_y = template.height + /// Check an area is clear for deployment of the tent /obj/item/folded_tent/proc/check_area(turf/ref_turf, mob/message_receiver, display_error = FALSE) SHOULD_NOT_SLEEP(TRUE) @@ -47,9 +61,11 @@ return FALSE return TRUE -/obj/item/folded_tent/proc/unfold(turf/ref_turf) - var/datum/map_template/template_instance = new template() - template_instance.load(ref_turf, FALSE, FALSE) +/obj/item/folded_tent/proc/unfold(mob/user, turf/ref_turf) + if(!istype(template)) + to_chat(user, SPAN_BOLDWARNING("[src] does not contain a tent! It is broken!")) + CRASH("[src] attempted to unfold \"[template]\" as a tent.") + template.load(ref_turf, FALSE, FALSE) /obj/item/folded_tent/proc/get_deployment_area(turf/ref_turf) RETURN_TYPE(/list/turf) @@ -58,11 +74,13 @@ /obj/item/folded_tent/attack_self(mob/living/user) . = ..() + var/off_x = -(tgui_input_number(user, "If facing North or South", "Set X Offset", 0, dim_x, 0, 30 SECONDS, TRUE)) + var/off_y = -(tgui_input_number(user, "If facing East or West", "Set Y Offset", 0, dim_y, 0, 30 SECONDS, TRUE)) var/turf/deploy_turf = user.loc if(!istype(deploy_turf)) return // In a locker or something. Get lost you already have a home. - switch(user.dir) // Fix up offset deploy location so tent is better centered + can be deployed under all angles + switch(user.dir) //Handles offsets when deploying if(NORTH) deploy_turf = locate(deploy_turf.x + off_x, deploy_turf.y + 1, deploy_turf.z) if(SOUTH) @@ -103,7 +121,7 @@ QDEL_IN(gfx, 1.5 SECONDS) return - unfold(deploy_turf) + unfold(user, deploy_turf) user.visible_message(SPAN_INFO("[user] finishes deploying the [src]!"), SPAN_INFO("You finish deploying the [src]!")) for(var/gfx in turf_overlay) qdel(gfx) @@ -113,36 +131,25 @@ name = "folded USCM Command Tent" icon_state = "cmd" desc = "A standard USCM Command Tent. This one comes equipped with a self-powered Overwatch Console and a Telephone. Unfold in a suitable location to maximize usefulness. Staff Officer not included. ENTRANCE TO THE SOUTH." - dim_x = 2 - dim_y = 4 - off_x = -1 - template = /datum/map_template/tent/cmd + template_preset = "tent_cmd" /obj/item/folded_tent/med name = "folded USCM Medical Tent" icon_state = "med" desc = "A standard USCM Medical Tent. This one comes equipped with advanced field surgery facilities. Unfold in a suitable location to maximize health gains. Surgical Tray not included. ENTRANCE TO THE SOUTH." - dim_x = 2 - dim_y = 4 - template = /datum/map_template/tent/med + template_preset = "tent_med" /obj/item/folded_tent/reqs name = "folded USCM Requisitions Tent" icon_state = "req" desc = "A standard USCM Requisitions Tent. Now, you can enjoy req line anywhere you go! Unfold in a suitable location to maximize resource distribution. ASRS not included. ENTRANCE TO THE SOUTH." - dim_x = 4 - dim_y = 4 - off_x = -2 - template = /datum/map_template/tent/reqs + template_preset = "tent_reqs" /obj/item/folded_tent/big name = "folded USCM Big Tent" icon_state = "big" desc = "A standard USCM Tent. This one is just a bigger, general purpose version. Unfold in a suitable location for maximum FOB vibes. Mess Tech not included. ENTRANCE TO THE SOUTH." - dim_x = 3 - dim_y = 4 - off_x = -2 - template = /datum/map_template/tent/big + template_preset = "tent_big" /obj/effect/overlay/temp/tent_deployment_error icon = 'icons/effects/effects.dmi' diff --git a/icons/obj/structures/tents_folded.dmi b/icons/obj/structures/tents_folded.dmi index e9f4555ae6a12a2c8aef0901dd5a273027a96759..e93702d7b2f9c6a01885f643496432e1943240c9 100644 GIT binary patch delta 1090 zcmdnMGM7`eGr-TCmrII^fq{Y7)59eQNGAZX0|y(Bd}>m}2c+sICgs#mSTJkSl|4c+ zT~kD3{>B{G$HJiT)lo@^XO=Ys1M@9U7srr_Id5nCW(Yfq99ORsyqL6h!j%S&Z$cZU zDSdh1c*4>4g`g=49*186u$Lagocl!`xe2g8Qqo zhS1;jdp6uW^G0p==HJ`C{Z%-_SFdRO{_Ov=Z_YgPT^6IK-Pm7xhiy%%3qu-KWcH)B zGW$!8?WwccQ_uTZn*Gxe{w5b==90TT*1AWTf$hutx52G*twp?kZHad0+_fz)Ncph4 zv*qDb=PPB_8C3Q=hCu*>Q>S#{+@kpZk0Oe?Xk}H#tjZjcvsddRk%9@DSW#4^TET`)vu1fk6%@= z$-K}y=khfz4rPXVr3aIba9n82e17I{;BzTeU+2|x9T)}PPVJw3&ZdpuWkGgLM&IXa ztFNZMKK4km<%Ii87Pb3UYkz-jeJ^5SYMOm_r9pr|!@ti*mnkq5OjvjKtA^u*Dev7F zpFI~3-FRd5s`z~?=e><~x-0Yjfbjfz{}LZ?FiG!w{ch#!?rEtSYguyY8`$n{+0E0+ zyR+u{{gr7)vjkXlopXP^J9o41P z!OyY$z3s^Z6D&hB|5)&JJTM6OUC83NJJNK)?nYGo~D3`w~1Z*w=u zyYs!@RAjc`)5Gel|Dl(;CR};QVt?W1i57#@y{uOQ7sWnd{`xlX>z1wypO)J^J>Fh= zC)(Ze@1wnjhF;(GI_j z`mg9aKR$8NU-($6hD_zpsu!h=> zi`@R%qLMkQX_DQX2ke~!OJl#E@P56zV_G^xXTs)*8!Ueb99$-wd8EQcGt>E+*2?=G jf8Td7oIyi>7)8oF*O@dBEW5>gTe~DWM4fbTkDA delta 463 zcmV;=0WkiZ39tlWiBL{Q4GJ0x0000DNk~Le0000$0000$1Oos709Z$C?EnA(Bv4FL zMZmzoMnxSXA_{VFKww@lFfI^SRw%2YqLqt_MhO^C3>`{HA^eMF0RR910d!JMQvg8b z*k%9#0C$lkY=01!8f67nKNqkE08kP($z@z7!2kdOH%UZ6R7i>KltFI7Fc3wPMGg?G zutt$`05Hk{ij{pLnSIqjdxQ1>NaX-sRJ}l@u93K2ga6FL4$v;>s>=7uqc`@%@P8DI z`a8ubG?`I>_GwOgwbE|gHPo=wZY>LR#JYWHO}7>n1%FlU-*=U%Rs}lhho|SA2PD(- z^)m$8eH#KFUvJ?F=9d$ANC5^jY%J6;AYVbidb)Mm6a-L%C4jfK$pK{dXxKIY5~Z}$ zoB-*_=_zY^*$hBb&(WYK1SE0=?fJLh!kOfX*%e^asGF3g!$1hdalnBP3r~rnN>gFM zjGQN&C}f>i10dFq$D{G`U Date: Mon, 6 Nov 2023 05:31:15 +0000 Subject: [PATCH 30/51] Automatic changelog for PR #4796 [ci skip] --- html/changelogs/AutoChangeLog-pr-4796.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4796.yml diff --git a/html/changelogs/AutoChangeLog-pr-4796.yml b/html/changelogs/AutoChangeLog-pr-4796.yml new file mode 100644 index 000000000000..b314142a6e81 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4796.yml @@ -0,0 +1,5 @@ +author: "BeagleGaming1" +delete-after: True +changes: + - code_imp: "Tents now hold the datum directly, instead of the typepath" + - admin: "Added a proc for staff to change tent dmm's" \ No newline at end of file From 46be29791d052d7062df5f6a68a7badd6bd0ce61 Mon Sep 17 00:00:00 2001 From: spartanbobby <71467726+spartanbobby@users.noreply.github.com> Date: Mon, 6 Nov 2023 02:59:14 +0000 Subject: [PATCH 31/51] Big Red Changes Part 1: Admin (#4838) # About the pull request This (hopefully) string of PRs aims to re-detail areas of big red that visually don't have a lot going on, such as breaking up copy-pasted bedrooms, adding dirt and grime floor decals, and placing props / adding new ways into underused areas This PR focuses entirely on colony admin and the nightmare inserts in it I've added to that funny little middle room that no one goes into to hopefully make it more seen and used and widened some hallways, of course, some minor retailing and honestly not much else # Explain why it's good for the game Honestly feel like Big Red is one of the maps in most need of a glow up, it can get pretty barebones in places and has a lot of underused rooms I'm not aiming to rework the entire map just small additions piece by piece because the last time I did this I did it all at once and my map file corrupted trying to fix merge conflicts # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: SpartanBobby maptweak: Alot of changes to big reds admin area, including new windows, prop placement, room detailing, new doors /:cl: --- maps/map_files/BigRed/BigRed.dmm | 1184 ++++++++++++----- .../BigRed/sprinkles/40.admin_pmc.dmm | 451 +++---- .../BigRed/standalone/medbay-passage.dmm | 41 +- 3 files changed, 1077 insertions(+), 599 deletions(-) diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index bf9fc7771858..b13a1d684262 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -11058,21 +11058,10 @@ /turf/closed/wall/solaris/rock, /area/bigredv2/outside/sw) "aFd" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4; - health = 80 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/jungle{ - bushes_spawn = 0; - icon_state = "grass_impenetrable" +/obj/structure/flora/jungle/plantbot1{ + pixel_y = 10 }, +/turf/open/jungle, /area/bigredv2/outside/admin_building) "aFf" = ( /obj/structure/closet/secure_closet/scientist, @@ -12526,10 +12515,7 @@ "aIY" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/medium, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aIZ" = ( /obj/effect/decal/warning_stripes{ @@ -14231,7 +14217,6 @@ /area/bigredv2/outside/admin_building) "aNC" = ( /obj/structure/machinery/computer/station_alert, -/obj/structure/machinery/camera/autoname, /obj/structure/surface/table, /turf/open/floor{ icon_state = "white" @@ -14286,6 +14271,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 9; icon_state = "darkred2" @@ -14298,6 +14284,7 @@ }, /area/bigredv2/outside/admin_building) "aNK" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 9; icon_state = "darkred2" @@ -14321,6 +14308,7 @@ /area/bigredv2/outside/admin_building) "aNN" = ( /obj/structure/machinery/vending/coffee, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -14342,6 +14330,9 @@ /area/bigredv2/outside/admin_building) "aNQ" = ( /obj/structure/bed, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, /turf/open/floor{ icon_state = "wood" }, @@ -15145,16 +15136,22 @@ }, /area/bigredv2/outside/admin_building) "aPP" = ( -/turf/open/floor{ +/obj/structure/stairs/perspective{ dir = 1; - icon_state = "rampbottom" + icon_state = "p_stair_full" + }, +/turf/open/floor{ + icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aPQ" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ +/obj/structure/stairs/perspective{ dir = 1; - icon_state = "rampbottom" + icon_state = "p_stair_full" + }, +/turf/open/floor{ + icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aPS" = ( @@ -15182,7 +15179,17 @@ }, /area/bigredv2/outside/admin_building) "aPW" = ( -/obj/structure/coatrack, +/obj/structure/coatrack{ + pixel_x = -5; + pixel_y = 13 + }, +/obj/item/clothing/shoes/dress{ + pixel_y = -13 + }, +/obj/item/clothing/under/suit_jacket/trainee{ + pixel_x = -6; + pixel_y = 15 + }, /turf/open/floor{ icon_state = "wood" }, @@ -15653,6 +15660,7 @@ name = "Storm Shutters"; pixel_y = -32 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "darkred2" }, @@ -15987,9 +15995,8 @@ }, /area/bigredv2/outside/admin_building) "aRZ" = ( -/obj/structure/machinery/door/airlock/almayer/command/colony{ - dir = 1; - name = "\improper Operations EVA" +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 }, /turf/open/floor{ icon_state = "delivery" @@ -16309,6 +16316,14 @@ }, /area/bigredv2/outside/general_store) "aSQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, /obj/structure/machinery/door/airlock/almayer/command/colony{ dir = 1; name = "\improper Operations" @@ -16319,6 +16334,8 @@ /area/bigredv2/outside/admin_building) "aSR" = ( /obj/structure/pipes/vents/pump, +/obj/structure/surface/rack, +/obj/item/weapon/gun/smg/mp27, /turf/open/floor{ dir = 8; icon_state = "redcorner" @@ -16355,6 +16372,7 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/item/prop/alien/hugger, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -16370,8 +16388,14 @@ }, /area/bigredv2/outside/admin_building) "aSX" = ( -/obj/structure/machinery/suit_storage_unit/carbon_unit, -/turf/open/floor/plating, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + icon_state = "white" + }, /area/bigredv2/outside/admin_building) "aSZ" = ( /obj/structure/machinery/power/apc{ @@ -16384,10 +16408,12 @@ /turf/open/floor/plating, /area/bigredv2/outside/admin_building) "aTb" = ( -/obj/structure/surface/table/woodentable, -/obj/effect/landmark/objective_landmark/close, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, /turf/open/floor{ - icon_state = "wood" + icon_state = "white" }, /area/bigredv2/outside/admin_building) "aTc" = ( @@ -16696,7 +16722,10 @@ }, /area/bigredv2/outside/general_store) "aTU" = ( -/obj/structure/machinery/message_server, +/obj/structure/prop/server_equipment/yutani_server{ + density = 0; + pixel_y = 16 + }, /turf/open/floor{ icon_state = "podhatchfloor" }, @@ -16706,12 +16735,6 @@ icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) -"aTX" = ( -/obj/structure/machinery/computer3/server, -/turf/open/floor{ - icon_state = "dark" - }, -/area/bigredv2/outside/admin_building) "aTY" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -16720,8 +16743,6 @@ }, /area/bigredv2/outside/admin_building) "aTZ" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/smg/mp27, /obj/structure/machinery/light{ dir = 4 }, @@ -16747,28 +16768,34 @@ }, /area/bigredv2/outside/admin_building) "aUd" = ( -/obj/structure/machinery/alarm{ - dir = 1; - pixel_y = -30 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 5; + icon_state = "darkred2" }, -/turf/open/floor/plating, /area/bigredv2/outside/admin_building) "aUe" = ( /obj/structure/machinery/light{ dir = 4 }, +/obj/structure/machinery/alarm{ + dir = 1; + pixel_y = -30 + }, +/obj/structure/machinery/suit_storage_unit/carbon_unit, /turf/open/floor/plating, /area/bigredv2/outside/admin_building) "aUf" = ( /obj/effect/landmark/good_item, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 8; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aUg" = ( -/obj/structure/surface/table/woodentable, -/obj/item/device/camera, +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "wood" }, @@ -17148,12 +17175,10 @@ dir = 4 }, /turf/open/floor{ - icon_state = "dark" + icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) "aVk" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/mod88, /turf/open/floor{ dir = 8; icon_state = "redcorner" @@ -17382,13 +17407,11 @@ dir = 1; network = list("interrogation") }, -/obj/structure/machinery/computer3/server, /turf/open/floor{ icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) "aVT" = ( -/obj/structure/machinery/computer3/server, /turf/open/floor{ dir = 9; icon_state = "darkblue2" @@ -17404,7 +17427,6 @@ /obj/structure/machinery/light{ dir = 1 }, -/obj/structure/machinery/photocopier, /turf/open/floor{ dir = 1; icon_state = "darkblue2" @@ -17420,13 +17442,16 @@ phone_id = "Operations"; pixel_y = 24 }, +/obj/item/prop/alien/hugger, /turf/open/floor{ dir = 1; icon_state = "darkblue2" }, /area/bigredv2/outside/admin_building) "aVX" = ( -/obj/structure/machinery/computer/cameras, +/obj/structure/machinery/computer/cameras{ + dir = 8 + }, /obj/structure/surface/table, /turf/open/floor{ dir = 5; @@ -17608,7 +17633,6 @@ }, /area/bigredv2/outside/admin_building) "aWD" = ( -/obj/structure/machinery/computer3/server, /turf/open/floor{ dir = 8; icon_state = "darkblue2" @@ -17628,7 +17652,9 @@ }, /area/bigredv2/outside/admin_building) "aWG" = ( -/obj/structure/machinery/computer/communications, +/obj/structure/machinery/computer/communications{ + dir = 8 + }, /obj/structure/surface/table, /turf/open/floor{ dir = 6; @@ -17636,10 +17662,10 @@ }, /area/bigredv2/outside/admin_building) "aWH" = ( -/obj/structure/surface/table/woodentable, -/obj/item/device/pinpointer, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "wood" + dir = 1; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aWI" = ( @@ -17797,6 +17823,10 @@ pixel_y = 32 }, /obj/effect/landmark/good_item, +/obj/structure/stairs/perspective{ + dir = 10; + icon_state = "p_stair_full" + }, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -17811,12 +17841,9 @@ }, /area/bigredv2/outside/admin_building) "aXk" = ( -/obj/structure/machinery/light{ - dir = 4 - }, +/obj/item/prop/alien/hugger, /turf/open/floor{ - dir = 4; - icon_state = "darkred2" + icon_state = "white" }, /area/bigredv2/outside/admin_building) "aXl" = ( @@ -17976,16 +18003,17 @@ /turf/open/floor/plating, /area/bigredv2/outside/cargo) "aXL" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 10; + dir = 8; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aXM" = ( -/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 8; - icon_state = "darkredcorners2" + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aXN" = ( @@ -17994,12 +18022,16 @@ density = 0; req_one_access_txt = "200" }, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor{ dir = 10; icon_state = "darkblue2" }, /area/bigredv2/outside/admin_building) "aXO" = ( +/obj/item/prop/alien/hugger, /turf/open/floor{ icon_state = "darkblue2" }, @@ -18082,22 +18114,23 @@ /area/bigredv2/outside/cargo) "aYh" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/light{ - dir = 8 - }, /turf/open/floor{ dir = 8; - icon_state = "darkred2" + icon_state = "darkredcorners2" }, /area/bigredv2/outside/admin_building) "aYi" = ( /obj/effect/spawner/random/toolbox, +/obj/structure/platform_decoration, /turf/open/floor{ icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aYk" = ( /obj/effect/landmark/survivor_spawner, +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor{ icon_state = "dark" }, @@ -18119,23 +18152,33 @@ }, /area/bigredv2/outside/admin_building) "aYo" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Operations Toilet" +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "delivery" + dir = 5; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aYp" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Operations Toilet" + }, /turf/open/floor{ - icon_state = "freezerfloor" + icon_state = "delivery" }, /area/bigredv2/outside/admin_building) "aYq" = ( -/obj/structure/machinery/light{ - dir = 1 - }, /obj/effect/landmark/objective_landmark/far, +/obj/structure/sink{ + pixel_x = 1; + pixel_y = 20 + }, +/obj/structure/mirror{ + pixel_y = 29 + }, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -18144,6 +18187,10 @@ /obj/structure/toilet{ dir = 8 }, +/obj/item/prop/alien/hugger, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -18263,21 +18310,25 @@ }, /area/bigredv2/outside/c) "aYL" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 8; - icon_state = "carpet6-2" + icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aYM" = ( +/obj/item/prop/alien/hugger, /turf/open/floor{ - dir = 8; - icon_state = "carpet14-10" + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aYN" = ( +/obj/structure/machinery/door/airlock/almayer/command/colony{ + dir = 1; + name = "\improper Operations Meeting Room" + }, /turf/open/floor{ - dir = 8; - icon_state = "carpet10-8" + icon_state = "delivery" }, /area/bigredv2/outside/admin_building) "aYO" = ( @@ -18294,6 +18345,7 @@ name = "Weyland-Yutani Automatic Teller Machine"; pixel_y = 30 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -18303,6 +18355,7 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 1; icon_state = "darkred2" @@ -18479,9 +18532,9 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/item/prop/alien/hugger, /turf/open/floor{ - dir = 8; - icon_state = "carpet7-3" + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "aZA" = ( @@ -18492,16 +18545,10 @@ /area/bigredv2/outside/admin_building) "aZB" = ( /obj/structure/bed/chair/comfy/black, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aZC" = ( -/turf/open/floor{ - dir = 8; - icon_state = "carpet11-12" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aZE" = ( /turf/open/floor{ @@ -18587,27 +18634,26 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "aZS" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/camera/autoname{ + dir = 1 + }, /turf/open/floor{ - dir = 8; - icon_state = "carpet7-3" + icon_state = "white" }, /area/bigredv2/outside/admin_building) "aZT" = ( /obj/structure/surface/table, -/obj/structure/machinery/computer3/laptop/secure_data, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/obj/structure/prop/server_equipment/laptop/on, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aZU" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 8 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aZW" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -18831,13 +18877,10 @@ }, /area/bigredv2/outside/cargo) "baG" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 4 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "baI" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/colony{ @@ -18849,6 +18892,7 @@ /area/bigredv2/outside/admin_building) "baJ" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/admin_building) "baK" = ( @@ -18989,10 +19033,7 @@ "bbj" = ( /obj/structure/surface/table, /obj/item/alienjar, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bbk" = ( /obj/structure/machinery/light{ @@ -19018,7 +19059,9 @@ /area/bigredv2/outside/admin_building) "bbm" = ( /obj/structure/surface/table, -/obj/structure/machinery/computer/med_data/laptop, +/obj/structure/machinery/computer/med_data/laptop{ + dir = 4 + }, /turf/open/floor{ dir = 8; icon_state = "carpet15-15" @@ -19033,11 +19076,14 @@ }, /area/bigredv2/outside/admin_building) "bbo" = ( -/obj/structure/bed/chair, +/obj/structure/bed/chair/comfy/blue, +/obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/admin_building) "bbp" = ( -/obj/structure/bed/chair, +/obj/structure/bed/sofa/south/grey/left{ + pixel_y = 6 + }, /obj/structure/machinery/atm{ name = "Weyland-Yutani Automatic Teller Machine"; pixel_y = 30 @@ -19045,7 +19091,9 @@ /turf/open/floor, /area/bigredv2/outside/admin_building) "bbq" = ( -/obj/structure/bed/chair, +/obj/structure/bed/sofa/south/grey{ + pixel_y = 6 + }, /obj/structure/machinery/light{ dir = 1 }, @@ -19055,6 +19103,7 @@ /obj/structure/surface/table, /obj/item/storage/photo_album, /obj/item/tool/pen/red, +/obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/admin_building) "bbs" = ( @@ -19276,14 +19325,16 @@ }, /area/bigredv2/outside/admin_building) "bbY" = ( -/obj/structure/bed/chair/office/dark, +/obj/structure/bed/chair/comfy/blue, /turf/open/floor{ icon_state = "wood" }, /area/bigredv2/outside/admin_building) "bbZ" = ( /obj/structure/surface/table, -/obj/structure/machinery/computer/cameras/wooden_tv, +/obj/structure/machinery/computer/cameras/wooden_tv{ + dir = 8 + }, /obj/structure/machinery/light{ dir = 4 }, @@ -19494,53 +19545,47 @@ /obj/structure/pipes/vents/pump{ dir = 4 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/obj/item/prop/alien/hugger, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bcF" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 8 }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bcG" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet11-12" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bcH" = ( /obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 + dir = 4 + }, +/turf/open/floor{ + icon_state = "wood" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "bcI" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ dir = 8; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bcJ" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 4; + dir = 8; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) @@ -19704,45 +19749,38 @@ }, /area/bigredv2/outside/c) "bdl" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 8; - icon_state = "carpet9-4" + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bdm" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 +/obj/structure/surface/table/woodentable, +/turf/open/floor{ + icon_state = "wood" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "bdn" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/command/colony{ - name = "\improper Operations Meeting Room" +/obj/structure/machinery/light{ + dir = 1 }, +/obj/structure/surface/table/woodentable, +/obj/item/device/camera, /turf/open/floor{ - icon_state = "delivery" + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "bdo" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 9 - }, /turf/open/floor{ - icon_state = "dark" + dir = 10; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bdp" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - frequency = 1469; - name = "General Listening Channel"; - pixel_x = 30 - }, +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/alien/hugger, /turf/open/floor{ - dir = 4; + dir = 6; icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) @@ -19755,6 +19793,7 @@ /area/bigredv2/outside/admin_building) "bdr" = ( /obj/structure/machinery/vending/snack, +/obj/effect/decal/cleanable/dirt, /turf/open/floor, /area/bigredv2/outside/admin_building) "bds" = ( @@ -19877,7 +19916,9 @@ /area/bigredv2/outside/cargo) "bdO" = ( /obj/structure/machinery/vending/coffee, -/turf/open/floor, +/turf/open/floor{ + icon_state = "wood" + }, /area/bigredv2/outside/admin_building) "bdP" = ( /obj/structure/machinery/photocopier, @@ -27127,6 +27168,15 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_se) +"bMa" = ( +/obj/structure/surface/rack, +/obj/item/weapon/gun/pistol/mod88, +/obj/item/weapon/gun/pistol/mod88, +/turf/open/floor{ + dir = 8; + icon_state = "redcorner" + }, +/area/bigredv2/outside/admin_building) "bMf" = ( /turf/open/floor{ icon_state = "asteroidwarning" @@ -27166,6 +27216,10 @@ icon_state = "mars_cave_18" }, /area/bigredv2/outside/lz2_west_cas) +"bQe" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor, +/area/bigredv2/outside/admin_building) "bQi" = ( /turf/open/floor{ icon_state = "darkish" @@ -27278,10 +27332,7 @@ "caN" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "ccP" = ( /obj/structure/surface/table, @@ -27489,6 +27540,10 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"czS" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/plating, +/area/bigredv2/outside/admin_building) "czV" = ( /obj/item/tool/pickaxe, /turf/open/mars_cave{ @@ -27588,6 +27643,23 @@ /obj/item/paper/bigred/smuggling, /turf/open/floor, /area/bigredv2/outside/cargo) +"cJa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1 + }, +/obj/structure/machinery/door/airlock/almayer/command/colony{ + dir = 1; + name = "\improper Operations" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/admin_building) "cJh" = ( /obj/structure/bed/chair{ dir = 8; @@ -27701,6 +27773,14 @@ "cVY" = ( /turf/open/mars, /area/bigredv2/outside/space_port_lz2) +"cXG" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "cYI" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -27770,6 +27850,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/outside/filtration_cave_cas) +"din" = ( +/obj/structure/machinery/blackbox_recorder, +/obj/item/prop/almayer/flight_recorder/colony{ + pixel_x = -6; + pixel_y = 10 + }, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/admin_building) "dlr" = ( /obj/effect/landmark/static_comms/net_two, /turf/open/floor, @@ -27921,6 +28011,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"dBm" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "dBE" = ( /obj/item/trash/cigbutt/cigarbutt{ pixel_x = 2; @@ -28354,6 +28452,12 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"eoU" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y2" + }, +/area/bigredv2/outside/admin_building) "epe" = ( /turf/open/floor{ dir = 1; @@ -28640,6 +28744,15 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"eSN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "eTj" = ( /obj/structure/reagent_dispensers/fueltank/gas, /turf/open/mars{ @@ -28773,6 +28886,15 @@ /obj/effect/landmark/static_comms/net_two, /turf/open/floor, /area/bigredv2/outside/engineering) +"fhy" = ( +/obj/structure/bed/chair/comfy/blue{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "carpet15-15" + }, +/area/bigredv2/outside/admin_building) "fhI" = ( /obj/effect/landmark/hunter_secondary, /turf/open/mars_cave{ @@ -29108,6 +29230,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"fPB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/bigredv2/outside/admin_building) "fQv" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -29382,8 +29508,8 @@ /area/bigredv2/caves/lambda/breakroom) "gvI" = ( /obj/structure/transmitter/colony_net{ - do_not_disturb = 1; dir = 4; + do_not_disturb = 1; phone_category = "Lambda Labs"; phone_color = "red"; phone_id = "Secure Storage"; @@ -29563,6 +29689,19 @@ icon_state = "darkblue2" }, /area/bigredv2/caves/eta/research) +"gWU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "gXp" = ( /turf/open/mars_cave{ icon_state = "mars_cave_6" @@ -29652,6 +29791,15 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/bigredv2/caves/eta/storage) +"hkY" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "hmm" = ( /turf/open/floor{ icon_state = "delivery" @@ -29757,6 +29905,13 @@ icon_state = "dark" }, /area/bigredv2/caves/lambda/research) +"hxs" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "hyv" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, @@ -30289,6 +30444,17 @@ icon_state = "darkgreencorners2" }, /area/bigredv2/caves/eta/research) +"iDT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkredcorners2" + }, +/area/bigredv2/outside/admin_building) "iDW" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -30455,6 +30621,14 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"iZc" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "iZh" = ( /obj/effect/decal/warning_stripes{ icon_state = "E-corner" @@ -30589,6 +30763,12 @@ /obj/structure/reagent_dispensers/fueltank/gas, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"jna" = ( +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "jnR" = ( /turf/open/floor{ dir = 9; @@ -30696,8 +30876,13 @@ }, /area/bigredv2/caves/lambda/virology) "jAm" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/effect/landmark/objective_landmark/far, +/obj/structure/coatrack{ + pixel_x = -8; + pixel_y = 16 + }, +/obj/item/clothing/shoes/black{ + pixel_y = -7 + }, /turf/open/floor{ icon_state = "wood" }, @@ -31192,6 +31377,14 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"khP" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "khR" = ( /obj/structure/machinery/floodlight, /turf/open/mars_cave{ @@ -31417,6 +31610,13 @@ icon_state = "asteroidfloor" }, /area/bigredv2/outside/space_port_lz2) +"kIv" = ( +/obj/structure/curtain/red, +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "kIW" = ( /obj/structure/fence, /turf/open/floor{ @@ -31510,6 +31710,10 @@ "kRo" = ( /turf/open/floor/plating, /area/bigredv2/outside/telecomm/warehouse) +"kRK" = ( +/obj/structure/window/framed/solaris/reinforced, +/turf/open/floor/plating, +/area/bigredv2/outside/admin_building) "kSm" = ( /obj/item/storage/belt/grenade, /obj/structure/closet/crate, @@ -32141,13 +32345,9 @@ }, /area/bigredv2/caves/mining) "mrH" = ( -/obj/structure/machinery/blackbox_recorder, -/obj/item/prop/almayer/flight_recorder/colony{ - pixel_x = -6; - pixel_y = 10 - }, +/obj/structure/machinery/computer3/server, /turf/open/floor{ - icon_state = "dark" + icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) "mrS" = ( @@ -32263,6 +32463,16 @@ icon_state = "mars_cave_15" }, /area/bigredv2/outside/lz1_north_cas) +"mEH" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "mFT" = ( /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, /obj/effect/landmark/corpsespawner/russian, @@ -32280,7 +32490,7 @@ "mGS" = ( /obj/effect/landmark/static_comms/net_one, /turf/open/floor{ - icon_state = "dark" + icon_state = "podhatchfloor" }, /area/bigredv2/outside/admin_building) "mHp" = ( @@ -32371,6 +32581,18 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/c) +"mST" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "mUy" = ( /turf/open/mars_cave{ icon_state = "mars_cave_7" @@ -32482,6 +32704,11 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/outside/lz2_south_cas) +"nky" = ( +/obj/structure/machinery/vending/coffee, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor, +/area/bigredv2/outside/admin_building) "nkQ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_23" @@ -32584,6 +32811,16 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"nuw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "nwS" = ( /obj/item/ore{ pixel_x = -7; @@ -32843,6 +33080,14 @@ /obj/item/tool/warning_cone, /turf/open/mars, /area/bigredv2/outside/s) +"nZD" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "nZK" = ( /obj/item/ore/diamond, /obj/item/stack/sheet/mineral/diamond{ @@ -32984,6 +33229,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"ole" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y0" + }, +/area/bigredv2/outside/admin_building) "olT" = ( /obj/effect/landmark/corpsespawner/engineer, /turf/open/shuttle/escapepod{ @@ -33204,12 +33455,30 @@ icon_state = "vault" }, /area/bigredv2/outside/general_offices) +"oDW" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "oEJ" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor, /area/bigredv2/outside/cargo) +"oFY" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/prop/alien/hugger, +/turf/open/floor{ + dir = 8; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "oIc" = ( /obj/effect/decal/cleanable/blood{ base_icon = 'icons/obj/items/weapons/grenade.dmi'; @@ -33378,6 +33647,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_sw) +"oWe" = ( +/obj/structure/machinery/photocopier{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkblue2" + }, +/area/bigredv2/outside/admin_building) "oWC" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -33500,6 +33779,12 @@ icon_state = "mars_dirt_10" }, /area/bigredv2/outside/filtration_plant) +"pdG" = ( +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "pdN" = ( /obj/effect/landmark/nightmare{ insert_tag = "lz1entrance" @@ -33653,6 +33938,31 @@ icon_state = "mars_cave_14" }, /area/bigredv2/caves/mining) +"pxH" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"pyU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "pBD" = ( /turf/open/floor{ dir = 4; @@ -33756,6 +34066,16 @@ icon_state = "darkred2" }, /area/bigredv2/caves/eta/research) +"pNU" = ( +/obj/structure/bed, +/obj/item/prop/alien/hugger, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "pOL" = ( /obj/structure/closet/crate/miningcar/yellow, /turf/open/mars_cave{ @@ -34060,6 +34380,12 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"qoN" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "qpn" = ( /obj/item/tool/warning_cone{ pixel_x = -6 @@ -34126,6 +34452,16 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"qyi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkredcorners2" + }, +/area/bigredv2/outside/admin_building) "qzO" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /obj/structure/machinery/door/poddoor/almayer/closed{ @@ -34332,6 +34668,13 @@ icon_state = "mars_cave_17" }, /area/bigredv2/caves/mining) +"qXi" = ( +/obj/structure/surface/table/woodentable, +/obj/item/device/pinpointer, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "qYY" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 8 @@ -34508,6 +34851,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"rpI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "rqa" = ( /obj/structure/tunnel{ id = "hole4" @@ -35229,6 +35582,15 @@ icon_state = "delivery" }, /area/bigredv2/caves_lambda) +"szi" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "szw" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_6" @@ -35351,7 +35713,7 @@ }, /area/bigredv2/caves_sw) "sLS" = ( -/obj/effect/landmark/objective_landmark/medium, +/obj/structure/machinery/suit_storage_unit/carbon_unit, /turf/open/floor/plating, /area/bigredv2/outside/admin_building) "sNQ" = ( @@ -35390,6 +35752,17 @@ icon_state = "mars_cave_23" }, /area/bigredv2/outside/lz1_telecomm_cas) +"sRy" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/command/colony{ + name = "\improper Operations Meeting Room" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/admin_building) "sSU" = ( /turf/open/mars_cave{ icon_state = "mars_cave_19" @@ -35460,6 +35833,12 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/xenobiology) +"tap" = ( +/obj/structure/machinery/message_server, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/admin_building) "tcb" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/pizzabox/meat, @@ -35625,6 +36004,11 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves_research) +"toA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/alien/hugger, +/turf/open/floor, +/area/bigredv2/outside/admin_building) "tpR" = ( /obj/structure/bed/chair{ dir = 4; @@ -35778,6 +36162,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"tBD" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y1" + }, +/area/bigredv2/outside/admin_building) "tBK" = ( /obj/structure/surface/rack, /obj/item/tool/pickaxe{ @@ -35871,6 +36261,19 @@ }, /turf/open/floor, /area/bigred/ground/garage_workshop) +"tJn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "tJv" = ( /obj/structure/tunnel{ id = "hole3" @@ -36173,6 +36576,7 @@ /area/bigred/ground/garage_workshop) "upV" = ( /obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "delivery" }, @@ -36381,6 +36785,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"uKH" = ( +/obj/structure/stairs/perspective{ + dir = 6; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) "uNW" = ( /obj/effect/decal/cleanable/blood{ dir = 8; @@ -36659,6 +37073,15 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"vpx" = ( +/obj/structure/platform, +/obj/structure/flora/jungle/planttop1{ + pixel_y = 10 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "vpY" = ( /obj/structure/machinery/door/poddoor/almayer/closed{ id = "eta"; @@ -36865,6 +37288,19 @@ icon_state = "mars_cave_5" }, /area/bigredv2/caves_virology) +"vOs" = ( +/obj/structure/coatrack{ + pixel_x = 12 + }, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/suit/storage/windbreaker/windbreaker_gray{ + pixel_x = 11; + pixel_y = 4 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "vPP" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = 6 @@ -37018,6 +37454,22 @@ /obj/effect/decal/cleanable/dirt, /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/mining) +"wfk" = ( +/obj/structure/filingcabinet/medical{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/obj/structure/filingcabinet/medical{ + density = 0; + pixel_x = 7; + pixel_y = 16 + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) "wfm" = ( /obj/structure/bed/chair{ buckling_y = 5; @@ -37223,6 +37675,12 @@ icon_state = "delivery" }, /area/bigredv2/caves/lambda/virology) +"wxo" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "asteroidwarning" + }, +/area/bigredv2/outside/c) "wBi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -37288,6 +37746,24 @@ /obj/structure/closet/firecloset/full, /turf/open/mars, /area/bigredv2/outside/c) +"wGD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/item/prop/alien/hugger, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "wGF" = ( /obj/item/tool/warning_cone, /turf/open/floor{ @@ -37301,6 +37777,16 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/c) +"wHx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkredcorners2" + }, +/area/bigredv2/outside/admin_building) "wIw" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -37503,6 +37989,15 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"xej" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "xeN" = ( /obj/effect/landmark/lv624/xeno_tunnel, /turf/open/mars_cave{ @@ -37803,6 +38298,14 @@ }, /turf/open/floor, /area/bigredv2/outside/engineering) +"xBn" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) "xBr" = ( /obj/item/ore{ pixel_x = 9 @@ -37889,6 +38392,13 @@ /obj/structure/prop/server_equipment/yutani_server, /turf/open/floor/greengrid, /area/bigredv2/caves/lambda/research) +"xKG" = ( +/obj/structure/bed/sofa/south/grey/right{ + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor, +/area/bigredv2/outside/admin_building) "xLM" = ( /obj/structure/machinery/light{ dir = 1 @@ -54602,7 +55112,7 @@ aHF aHF apC apC -apC +apJ apJ apJ apC @@ -54612,7 +55122,7 @@ apC apC apJ apJ -apC +apJ apC apC apC @@ -54825,19 +55335,19 @@ aRT aof aTV mGS -aTV +tap aof aNK aXL +bdo aof -aYL -aZz -aZS -aZS -aZS -aZS aZz -bcM +aOO +aOO +aOO +aOO +cXG +aOO apC apC aHD @@ -55038,23 +55548,23 @@ aGD aMf aPL aMf -aMf +aXk aof aTV -aOM aTV +din aof -aNL -aUb +aWH +aOM +jna asT -aYM -aZA -aZA +aZC +aZC baG -aZA +aZC baG -aZA -bcN +aZC +aOO bdO apC aHD @@ -55258,21 +55768,21 @@ aQW aRU aof aTU -aOM +wGD aTV aof aYU +aOM aUb asT -aYM aZB aZT aIY bbj caN bcE -bcN -aYO +aOO +aOO apC aHD aBR @@ -55466,7 +55976,7 @@ awQ aJl aKo aKo -aKo +aSX aMF aNz aKo @@ -55475,21 +55985,21 @@ aQX aRV aof aTV -aOM +gWU aVS aof aXg +aOM aUb -asT -aYM -aZA +aof +aZC aZU -aZA +aZC aZU -aZA +aZC bcF -bcN -aYO +aOO +aOO apD aHD aBR @@ -55683,7 +56193,7 @@ aDN ayN aKp aQW -aMf +aTb kmm aNA aMf @@ -55691,13 +56201,13 @@ aMf aQY aMf aSQ +tJn +pyU +tJn +cJa +iZc aOM aOM -aOM -aSQ -aNL -aUb -asT aYN aZC aZC @@ -55705,8 +56215,8 @@ aZC aZC aZC bcG -bdl -aYO +aOO +aOO apD aHD aBR @@ -55908,22 +56418,22 @@ aPM aQZ aRX aof -aTX +mrH aVj mrH aof -aNL +uKH +aOM aUb -asT -aYO -aYO -aYO -aYO -aYO -aYO +aof +aOO +aOO +aOO +aOO +aOO bcH -bdm -aYO +aOO +aOO apC aHD aBR @@ -56118,7 +56628,7 @@ alu aKq aHF aHF -apC +apD aNC aMf aPN @@ -56130,19 +56640,19 @@ aof aof aof aNL +aOM aUb aof -asT -asT -asT +aof asT asT asT aof -bdn +sRy +aof aof apC -aHD +wxo aBR aBR bhi @@ -56337,9 +56847,9 @@ aHF aHF apD aND +aXk aMf -aMf -aQZ +aZS aof aSR aTY @@ -56347,19 +56857,19 @@ aTY aTY aWC aXj -aXM +aOI aYh -aRd -aRd +oDW +oFY bcI -aRd +bcJ aRd aVl -bcI +qoN bdo -aXL -apC -aHD +apD +bhU +wxo aBR aBR bhi @@ -56561,21 +57071,21 @@ aof aSS aTZ aVk -aVk +bMa aof -aSV +mEH aOM aYi -aOM -aOM +xBn +nZD aPS aOM aOM aOM aPS -aOM -aUb -apC +bdl +apD +bhU aHD aBR aBR @@ -56780,19 +57290,19 @@ aof aof aof aof -aSV -aOM +mEH aOM +vpx aFd -aOM +khP aZW aOK bbk aOK -bcJ +aPS bdp -aUc -apC +apD +aHF aHD aBR aBR @@ -56996,12 +57506,12 @@ aST aRd aVl aRd -aRd +bcJ aSW aOM aYk -aOM -aOM +dBm +pxH aZX aof aof @@ -57211,11 +57721,11 @@ aRc aof aSU aUa +aXM aOK aOK aOK -aXk -aOK +hkY aYl aYS aOM @@ -57427,11 +57937,11 @@ aof aof aof aSV -aUb -aof -aof +bdl aof aof +kRK +kRK aof aof aYT @@ -57641,17 +58151,17 @@ apD aNI aRd bcI -aRd +bcJ aRY aSW -aUb -aof +bdl +kRK aVT aWD aWD aXN -aof -aYU +kRK +aWH aOM aZY aof @@ -57659,7 +58169,7 @@ bbm aJb bcN aof -aJT +wfk apC aHD aIn @@ -57855,27 +58365,27 @@ aBR aBR aMc apD -aNJ -aOK +aUd +aXM aPS aOM aOK aOK aUc -aof +aYm aVU aOM aOM aXO -aof +kRK aNL aOM aZX aof -aZU +fhy aZA bcN -aOO +kIv aOO apC aHD @@ -58290,21 +58800,21 @@ aBR aMc apD aNK -aOL +aXL aPS aOM aof wvK -aSX +wvK aof -aVU +oWe aOM aXl aXP aof aNL aOM -aZX +szi aof aNQ aOO @@ -58512,16 +59022,16 @@ aPS aOM aRZ aTa -aUd -aof +aTa +aRZ aVU aWE aXm aXQ -aof +kRK aYV aOM -aZX +szi aof aOO bbY @@ -58729,12 +59239,12 @@ aPS aUb aof aSZ -aTa +czS aof aVW aWF aof -aof +kRK aof aYU aOM @@ -58943,18 +59453,18 @@ apC aNN aOM aPS -aUb +bdl aof sLS aUe aof aVX aWG -aof +kRK aNK -aOL -aYW -aOM +mST +iDT +nuw aZX aof aof @@ -59157,7 +59667,7 @@ aBR aBR aMc apD -aNL +aWH aOM aPS aRh @@ -59165,20 +59675,20 @@ aof aof aof aof +kRK +kRK aof -aof -aof -aNL -aOM -aOM -aOM +aWH +xej +ole +eSN aPS baI aYO bca bcQ bdr -bdO +nky apC beC aNw @@ -59378,24 +59888,24 @@ aNL aOM aPV aRi -aOL -aOL +aXL +aXL aUf aVm aOL aOL aOL aYW -aOM -aOM -aOM +xej +tBD +eSN aZZ upV baJ bcb bcR bcc -aYO +toA apC aTh aIn @@ -59591,28 +60101,28 @@ aKr aBR aMc apC -aNJ -aOM -aOK +aUd +aYL +aYM aOK aOK aOM aOK aOK aOK -aOM -aOK -aOK -aOM +aYL +aXM aOK -aYS -aUb +wHx +eoU +eSN +bdl aof bbo bcc bcS bcc -aYO +bQe apD aTh aIn @@ -59821,9 +60331,9 @@ aON aof aof aYo -aof -aNL -aUb +rpI +qyi +bdl aof bbp bcc @@ -60029,17 +60539,17 @@ aNO aOO aPW aof -aNO +bdm aOO -aPW +vOs aof jAm aOO -aPW +hxs aof aYp aof -aNL +aWH aUb aof bbq @@ -60246,20 +60756,20 @@ aNP aOO aOO aof -aNP +bdn aOO aOO aof aNP -aOO -aOO +pdG +qXi aof aYq aof -aNL +aWH aUb aof -bbo +xKG aTa bcV bdt @@ -60463,12 +60973,12 @@ aNQ aGG aPX aof -aNQ -aTb +pNU +aOO aUg aof aNQ -aWH +aOO aXn aof aYr @@ -60477,10 +60987,10 @@ aNJ aUc aof bbr +toA aYO -aYO -aTa -aYO +fPB +bQe bek bjZ aMg diff --git a/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm b/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm index e2b3e939a2e6..7a66b2422807 100644 --- a/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm +++ b/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm @@ -2,10 +2,6 @@ "ab" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/admin_building) -"ac" = ( -/obj/effect/acid_hole, -/turf/closed/wall/solaris, -/area/bigredv2/outside/admin_building) "ad" = ( /obj/structure/window/framed/solaris, /turf/open/floor/plating, @@ -15,88 +11,68 @@ /area/bigredv2/outside/admin_building) "af" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/light{ - dir = 8 - }, /obj/effect/decal/cleanable/blood/xeno, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkredcorners2" }, /area/bigredv2/outside/admin_building) "ag" = ( /obj/effect/spawner/random/toolbox, +/obj/structure/platform_decoration, /turf/open/floor{ icon_state = "dark" }, /area/bigredv2/outside/admin_building) "ai" = ( /obj/effect/landmark/survivor_spawner, +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor{ icon_state = "dark" }, /area/bigredv2/outside/admin_building) "aj" = ( +/turf/open/floor{ + icon_state = "darkred2" + }, +/area/bigredv2/outside/admin_building) +"ak" = ( /obj/structure/window_frame/solaris, /obj/item/shard, /turf/open/floor/plating, /area/bigredv2/outside/admin_building) -"ak" = ( -/obj/structure/barricade/metal/wired{ - icon_state = "metal_2"; - dir = 1 - }, -/turf/open/floor{ - icon_state = "carpet14-10"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) "al" = ( -/obj/structure/barricade/metal/wired{ - dir = 1 +/obj/structure/machinery/door/airlock/almayer/command/colony{ + dir = 1; + name = "\improper Operations Meeting Room" }, /turf/open/floor{ - icon_state = "carpet10-8"; - dir = 8 + icon_state = "delivery" }, /area/bigredv2/outside/admin_building) "am" = ( -/obj/structure/barricade/metal/wired{ - dir = 1 - }, -/obj/structure/barricade/metal/wired{ - icon_state = "metal_2"; - dir = 4 +/obj/structure/platform, +/obj/structure/flora/jungle/planttop1{ + pixel_y = 10 }, -/obj/item/ammo_magazine/rifle{ - current_rounds = 0; - pixel_x = -9; - pixel_y = -4 +/turf/open/floor{ + icon_state = "dark" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "an" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "ap" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/jungle{ - bushes_spawn = 0; - icon_state = "grass_impenetrable" +/obj/structure/flora/jungle/plantbot1{ + pixel_y = 10 }, +/turf/open/jungle, /area/bigredv2/outside/admin_building) "ar" = ( /obj/structure/machinery/light{ @@ -106,38 +82,30 @@ icon_state = "gib6" }, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) -"as" = ( -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "at" = ( /obj/structure/bed/chair/comfy/black, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "au" = ( /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "av" = ( /obj/structure/barricade/metal/wired{ - icon_state = "metal_2"; - dir = 4 + dir = 4; + icon_state = "metal_2" + }, +/turf/open/floor{ + icon_state = "wood" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "aw" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, /obj/effect/decal/cleanable/blood/xeno, /turf/open/floor{ icon_state = "dark" @@ -151,33 +119,23 @@ "aA" = ( /obj/effect/landmark/corpsespawner/wygoon, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "aB" = ( /obj/structure/surface/table, -/obj/structure/machinery/computer3/laptop/secure_data, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/obj/structure/prop/server_equipment/laptop/on, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aC" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor{ - icon_state = "carpet15-15"; +/obj/structure/bed/chair/comfy/blue{ dir = 8 }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aD" = ( -/obj/item/stack/sheet/metal/small_stack, -/turf/open/floor{ - icon_state = "carpet6-2"; - dir = 8 - }, +/obj/effect/acid_hole, +/turf/closed/wall/solaris, /area/bigredv2/outside/admin_building) "aG" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -196,20 +154,11 @@ icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) -"aI" = ( -/turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) "aJ" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 4 }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aK" = ( /obj/structure/surface/table, @@ -219,54 +168,41 @@ name = "dented M4A3 service pistol" }, /obj/item/ammo_magazine/pistol/rubber, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aL" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aM" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/barricade/sandbags/wired, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aN" = ( /obj/structure/barricade/sandbags/wired, /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aO" = ( /obj/item/storage/secure/briefcase, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aP" = ( /obj/structure/barricade/metal/wired{ dir = 4 }, -/turf/open/floor, -/area/bigredv2/outside/admin_building) -"aQ" = ( /turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) -"aR" = ( -/turf/open/floor, +"aQ" = ( +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aS" = ( /obj/item/ammo_magazine/rifle/rubber{ @@ -274,10 +210,7 @@ pixel_x = -3; pixel_y = -6 }, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aT" = ( /obj/effect/decal/cleanable/blood, @@ -291,38 +224,32 @@ }, /obj/item/storage/toolbox/syndicate, /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aV" = ( /obj/structure/surface/table, /obj/item/ammo_magazine/rifle/rubber, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aW" = ( /obj/effect/decal/cleanable/blood, /obj/item/tool/weldingtool, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "aX" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/crap_item, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aY" = ( /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "aZ" = ( @@ -338,8 +265,7 @@ num_of_magazines = 2 }, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "ba" = ( @@ -348,52 +274,45 @@ dir = 4 }, /obj/item/clothing/head/helmet/marine/veteran/pmc/leader, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bb" = ( -/obj/structure/bed/chair/office/dark{ +/obj/structure/bed/chair/comfy/blue{ dir = 8 }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/landmark/corpsespawner/wygoon, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bc" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/blood, -/turf/open/floor{ - icon_state = "carpet11-12"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "bd" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, /obj/item/ammo_magazine/rifle{ current_rounds = 0; pixel_x = -8; pixel_y = 9 }, -/turf/open/floor, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "wood" + }, /area/bigredv2/outside/admin_building) "be" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, /turf/open/floor{ - icon_state = "darkred2"; - dir = 8 + dir = 8; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bf" = ( @@ -409,8 +328,8 @@ dir = 4 }, /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 4; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bh" = ( @@ -429,43 +348,28 @@ num_of_magazines = 1 }, /turf/open/floor{ - icon_state = "carpet5-1"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) -"bj" = ( -/turf/open/floor{ - icon_state = "carpet13-5"; - dir = 8 - }, -/area/bigredv2/outside/admin_building) -"bk" = ( -/turf/open/floor{ - icon_state = "carpet9-4"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "bl" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 5 +/turf/open/floor{ + icon_state = "wood" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "bm" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/machinery/light{ + dir = 8 }, -/obj/structure/machinery/door/airlock/almayer/command/colony{ - name = "\improper Operations Meeting Room" +/turf/open/floor{ + dir = 8; + icon_state = "darkred2" }, -/turf/open/floor, /area/bigredv2/outside/admin_building) "bn" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 9 - }, /turf/open/floor{ - icon_state = "dark" + dir = 10; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bo" = ( @@ -476,30 +380,21 @@ pixel_x = 30 }, /turf/open/floor{ - icon_state = "darkred2"; - dir = 4 + dir = 6; + icon_state = "darkred2" }, /area/bigredv2/outside/admin_building) "bp" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor, /area/bigredv2/outside/admin_building) -"bq" = ( -/turf/open/floor{ - icon_state = "darkred2"; - dir = 10 - }, -/area/bigredv2/outside/admin_building) -"br" = ( -/turf/open/floor{ - icon_state = "darkred2" - }, -/area/bigredv2/outside/admin_building) "bs" = ( -/turf/open/floor{ - icon_state = "darkred2"; - dir = 6 +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Operations"; + name = "\improper Operations Shutters" }, +/turf/open/floor/plating, /area/bigredv2/outside/admin_building) "dp" = ( /obj/item/ammo_magazine/rifle/rubber{ @@ -507,28 +402,24 @@ pixel_x = -6; pixel_y = -4 }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "is" = ( /obj/item/ammo_magazine/pistol/rubber{ current_rounds = 0 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "wood" + }, /area/bigredv2/outside/admin_building) "jq" = ( /obj/item/weapon/gun/rifle/m41a/corporate{ current_mag = /obj/item/ammo_magazine/rifle/rubber; + desc = "A Weyland-Yutani creation, this M41A MK2 comes equipped in corporate white. Uses 10x24mm caseless ammunition. It seems to be pretty battered and broken up."; name = "battered M41A pulse rifle MK2"; - pixel_x = 4; - desc = "A Weyland-Yutani creation, this M41A MK2 comes equipped in corporate white. Uses 10x24mm caseless ammunition. It seems to be pretty battered and broken up." - }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 + pixel_x = 4 }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "lz" = ( /obj/item/ammo_magazine/rifle/rubber{ @@ -536,8 +427,7 @@ pixel_y = 11 }, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "rv" = ( @@ -545,8 +435,7 @@ current_rounds = 0 }, /turf/open/floor{ - icon_state = "carpet7-3"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "si" = ( @@ -564,15 +453,52 @@ pixel_y = 17 }, /turf/open/floor{ - icon_state = "carpet13-5"; - dir = 8 + icon_state = "wood" }, /area/bigredv2/outside/admin_building) "uv" = ( /obj/item/ammo_magazine/rifle{ current_rounds = 0; - pixel_y = 7; - pixel_x = -9 + pixel_x = -9; + pixel_y = 7 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/admin_building) +"vH" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"vO" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"yf" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"za" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/command/colony{ + name = "\improper Operations Meeting Room" + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 }, /turf/open/floor, /area/bigredv2/outside/admin_building) @@ -580,17 +506,25 @@ /obj/item/ammo_magazine/pistol/rubber{ current_rounds = 0 }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) "Br" = ( /obj/structure/surface/table, /obj/item/storage/firstaid/regular/empty, +/turf/open/floor/carpet, +/area/bigredv2/outside/admin_building) +"ND" = ( +/obj/structure/pipes/standard/manifold/hidden/green, /turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 + icon_state = "dark" + }, +/area/bigredv2/outside/admin_building) +"Pk" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "dark" }, /area/bigredv2/outside/admin_building) "QR" = ( @@ -600,7 +534,9 @@ /obj/item/ammo_magazine/pistol/rubber{ current_rounds = 0 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "wood" + }, /area/bigredv2/outside/admin_building) "Sz" = ( /obj/item/ammo_magazine/rifle/rubber{ @@ -608,14 +544,11 @@ pixel_x = 5; pixel_y = -5 }, -/turf/open/floor{ - icon_state = "carpet15-15"; - dir = 8 - }, +/turf/open/floor/carpet, /area/bigredv2/outside/admin_building) (1,1,1) = {" -ab +aj ab ab ab @@ -627,12 +560,12 @@ ab ab "} (2,1,1) = {" -ac +aj aD ar aA lz -aI +bl rv aZ bi @@ -646,7 +579,7 @@ AC aJ aO aJ -as +aQ si bp "} @@ -659,23 +592,23 @@ aK Br aV ba -bj +bl uv "} (5,1,1) = {" aj -ak +ae jq aC -as +aQ aC Sz bb -bj -aR +bl +bl "} (6,1,1) = {" -ad +ay al au aW @@ -683,12 +616,12 @@ aL aS aQ bc -bk +bl is "} (7,1,1) = {" -ad -am +aj +ae av aP aP @@ -696,35 +629,35 @@ QR aP bd bl -aR +bl "} (8,1,1) = {" -ae -aj aj -ad +ae +ae ad ad ad ae -bm +za +ae ae "} (9,1,1) = {" af -an +bm an be aM an aX -be +ND bn -bq +bs "} (10,1,1) = {" ag -ay +vO aw bf ay @@ -732,12 +665,12 @@ aT ay bf ay -br +bs "} (11,1,1) = {" -ay +am ap -ay +Pk aG aN aU @@ -748,8 +681,8 @@ bs "} (12,1,1) = {" ai -ay -ay +vH +yf aH ae ae diff --git a/maps/map_files/BigRed/standalone/medbay-passage.dmm b/maps/map_files/BigRed/standalone/medbay-passage.dmm index 75d323f0116d..d5b7db11d82b 100644 --- a/maps/map_files/BigRed/standalone/medbay-passage.dmm +++ b/maps/map_files/BigRed/standalone/medbay-passage.dmm @@ -61,6 +61,31 @@ "m" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil, +/obj/structure/stairs/perspective{ + dir = 5; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) +"n" = ( +/obj/structure/stairs/perspective{ + dir = 9; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) +"w" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, /turf/open/floor{ dir = 1; icon_state = "asteroidfloor" @@ -83,6 +108,16 @@ icon_state = "white" }, /area/bigredv2/outside/admin_building) +"X" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/outside/c) (1,1,1) = {" a @@ -97,7 +132,7 @@ a a c h -l +n R "} (3,1,1) = {" @@ -105,7 +140,7 @@ a a d i -d +w S "} (4,1,1) = {" @@ -113,7 +148,7 @@ a a e l -l +X T "} (5,1,1) = {" From da03a5ba444c83e022f9f3fee9f123128bb238ca Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 05:46:11 +0000 Subject: [PATCH 32/51] Automatic changelog for PR #4838 [ci skip] --- html/changelogs/AutoChangeLog-pr-4838.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4838.yml diff --git a/html/changelogs/AutoChangeLog-pr-4838.yml b/html/changelogs/AutoChangeLog-pr-4838.yml new file mode 100644 index 000000000000..0bde8de19bd9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4838.yml @@ -0,0 +1,4 @@ +author: "SpartanBobby" +delete-after: True +changes: + - maptweak: "Alot of changes to big reds admin area, including new windows, prop placement, room detailing, new doors" \ No newline at end of file From 1e53b7d2622655a8619f7ba642e5071453e8b913 Mon Sep 17 00:00:00 2001 From: AndroBetel <44546836+AndroBetel@users.noreply.github.com> Date: Mon, 6 Nov 2023 06:02:15 +0300 Subject: [PATCH 33/51] fixes typo in ro sign (#4811) # About the pull request fixes a typo in req rules sign # Explain why it's good for the game typo fix also replaces deleted RO with QM # Testing Photographs and Procedure
Screenshots & Videos cyrosleep => cryosleep
# Changelog :cl: spellcheck: Fixed a typo in RO rules sign. spellcheck: RO mention is no more, replaced with QM. /:cl: --- code/game/objects/structures/signs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index ec277929facb..adabf0c54141 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -570,7 +570,7 @@ /obj/structure/sign/ROsign name = "\improper USCM Requisitions Office Guidelines" - desc = " 1. You are not entitled to service or equipment. Attachments are a privilege, not a right.\n 2. You must be fully dressed to obtain service. Cyrosleep underwear is non-permissible.\n 3. The Requsitions Officer has the final say and the right to decline service. Only the Acting Commanding Officer may override their decisions.\n 4. Please treat your Requsitions staff with respect. They work hard." + desc = " 1. You are not entitled to service or equipment. Attachments are a privilege, not a right.\n 2. You must be fully dressed to obtain service. Cryosleep underwear is non-permissible.\n 3. The Quartermaster has the final say and the right to decline service. Only the Acting Commanding Officer may override their decisions.\n 4. Please treat your Requsitions staff with respect. They work hard." icon_state = "roplaque" /obj/structure/sign/prop1 From 1bed6d5b12dd9914ce1d57792b65c31aca469b1b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 06:00:46 +0000 Subject: [PATCH 34/51] Automatic changelog for PR #4811 [ci skip] --- html/changelogs/AutoChangeLog-pr-4811.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4811.yml diff --git a/html/changelogs/AutoChangeLog-pr-4811.yml b/html/changelogs/AutoChangeLog-pr-4811.yml new file mode 100644 index 000000000000..c679e21335ac --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4811.yml @@ -0,0 +1,5 @@ +author: "AndroBetel" +delete-after: True +changes: + - spellcheck: "Fixed a typo in RO rules sign." + - spellcheck: "RO mention is no more, replaced with QM." \ No newline at end of file From b5123f5eee970af61b41063dbb0d1e8e2823a5b1 Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Mon, 6 Nov 2023 03:11:58 +0000 Subject: [PATCH 35/51] Nightmare Survivor Hostility Indicator (#4628) # About the pull request Adds a big bold message for Nightmare survivors to know if they're hostile to marines or not. This does not apply to natural map-specific survivors, only those in nightmare inserts. # Explain why it's good for the game Makes it clearer for nightmare inserts to indicate if survivors are hostile. Good example of this is UPP on trijent are non hostile but this isn't always clear. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Added a big line to Nightmare survivor spawns that indicates hostility. /:cl: --- .../jobs/job/civilians/other/survivors.dm | 29 +++++++++++++------ .../effects/landmarks/survivor_spawner.dm | 5 ++++ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/code/game/jobs/job/civilians/other/survivors.dm b/code/game/jobs/job/civilians/other/survivors.dm index 5c82241c47de..23097e139eda 100644 --- a/code/game/jobs/job/civilians/other/survivors.dm +++ b/code/game/jobs/job/civilians/other/survivors.dm @@ -10,6 +10,8 @@ job_options = SURVIVOR_VARIANT_LIST var/intro_text var/story_text + /// Whether or not the survivor is an inherently hostile to marines. + var/hostile = FALSE /datum/job/civilian/survivor/set_spawn_positions(count) spawn_positions = Clamp((round(count * SURVIVOR_TO_TOTAL_SPAWN_RATIO)), 2, 8) @@ -59,23 +61,32 @@ if(picked_spawner.story_text) story_text = picked_spawner.story_text + + if(picked_spawner.hostile) + hostile = TRUE + new /datum/cm_objective/move_mob/almayer/survivor(H) -/datum/job/civilian/survivor/generate_entry_message(mob/living/carbon/human/H) +/datum/job/civilian/survivor/generate_entry_message(mob/living/carbon/human/survivor) if(intro_text) for(var/line in intro_text) - to_chat(H, line) + to_chat(survivor, line) else - to_chat(H, "

You are a survivor!

") - to_chat(H, SPAN_NOTICE(SSmapping.configs[GROUND_MAP].survivor_message)) - to_chat(H, SPAN_NOTICE("You are fully aware of the xenomorph threat and are able to use this knowledge as you see fit.")) - to_chat(H, SPAN_NOTICE("You are NOT aware of the marines or their intentions. ")) + to_chat(survivor, "

You are a survivor!

") + to_chat(survivor, SPAN_NOTICE(SSmapping.configs[GROUND_MAP].survivor_message)) + to_chat(survivor, SPAN_NOTICE("You are fully aware of the xenomorph threat and are able to use this knowledge as you see fit.")) + to_chat(survivor, SPAN_NOTICE("You are NOT aware of the marines or their intentions. ")) if(story_text) - to_chat(H, story_text) - H.mind.memory += story_text + to_chat(survivor, story_text) + survivor.mind.memory += story_text + else + tell_survivor_story(survivor) + + if(hostile) + to_chat(survivor, SPAN_HIGHDANGER("You are HOSTILE to the USCM!")) else - tell_survivor_story(H) + to_chat(survivor, SPAN_XENOHIGHDANGER("You are NON-HOSTILE to the USCM!")) /datum/job/civilian/survivor/proc/tell_survivor_story(mob/living/carbon/human/H) var/list/survivor_story = list( diff --git a/code/game/objects/effects/landmarks/survivor_spawner.dm b/code/game/objects/effects/landmarks/survivor_spawner.dm index fe4254982d57..a53fead0d3bf 100644 --- a/code/game/objects/effects/landmarks/survivor_spawner.dm +++ b/code/game/objects/effects/landmarks/survivor_spawner.dm @@ -8,6 +8,8 @@ var/roundstart_damage_min = 0 var/roundstart_damage_max = 0 var/roundstart_damage_times = 1 + /// Whether or not the spawner is for an inherently hostile survivor subtype. + var/hostile = FALSE var/spawn_priority = LOWEST_SPAWN_PRIORITY @@ -27,6 +29,7 @@ return TRUE /obj/effect/landmark/survivor_spawner/lv624_crashed_clf + hostile = TRUE equipment = /datum/equipment_preset/survivor/clf synth_equipment = /datum/equipment_preset/clf/synth intro_text = list("

You are a survivor of a crash landing!

",\ @@ -40,6 +43,7 @@ spawn_priority = SPAWN_PRIORITY_HIGH /obj/effect/landmark/survivor_spawner/lv624_crashed_clf_engineer + hostile = TRUE equipment = /datum/equipment_preset/clf/engineer synth_equipment = /datum/equipment_preset/clf/synth intro_text = list("

You are a survivor of a crash landing!

",\ @@ -53,6 +57,7 @@ spawn_priority = SPAWN_PRIORITY_VERY_HIGH /obj/effect/landmark/survivor_spawner/lv624_crashed_clf_medic + hostile = TRUE equipment = /datum/equipment_preset/clf/medic synth_equipment = /datum/equipment_preset/clf/synth intro_text = list("

You are a survivor of a crash landing!

",\ From a6344b3382c359502434fba32a307279d55678f5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 06:18:19 +0000 Subject: [PATCH 36/51] Automatic changelog for PR #4628 [ci skip] --- html/changelogs/AutoChangeLog-pr-4628.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4628.yml diff --git a/html/changelogs/AutoChangeLog-pr-4628.yml b/html/changelogs/AutoChangeLog-pr-4628.yml new file mode 100644 index 000000000000..e00fa7383896 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4628.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Added a big line to Nightmare survivor spawns that indicates hostility." \ No newline at end of file From b421490d22d9e38f5d540af908e3889c0ffc2f0e Mon Sep 17 00:00:00 2001 From: fira Date: Mon, 6 Nov 2023 04:21:22 +0100 Subject: [PATCH 37/51] Reimplements halloween pumpkin helmets event (#4623) # About the pull request This reimplements the Halloween Pumpkins spawning on map and being carvable as helmets which was apparetnly a thing a number of years ago # Explain why it's good for the game Variety # Changelog :cl: Firartix and Frans_Feiffer add: Readded Halloween pumpkin helmets. /:cl: --------- Co-authored-by: harryob --- code/controllers/subsystem/game_decorator.dm | 35 ++++++ code/game/turfs/open.dm | 4 + code/modules/cm_aliens/weeds.dm | 2 +- code/modules/decorators/halloween.dm | 63 ---------- code/modules/holidays/halloween/decorators.dm | 108 ++++++++++++++++++ .../holidays/halloween/pumpkins/patches.dm | 65 +++++++++++ .../holidays/halloween/pumpkins/wearable.dm | 72 ++++++++++++ colonialmarines.dme | 5 +- icons/misc/events/pumpkins.dmi | Bin 0 -> 6867 bytes 9 files changed, 289 insertions(+), 65 deletions(-) create mode 100644 code/controllers/subsystem/game_decorator.dm delete mode 100644 code/modules/decorators/halloween.dm create mode 100644 code/modules/holidays/halloween/decorators.dm create mode 100644 code/modules/holidays/halloween/pumpkins/patches.dm create mode 100644 code/modules/holidays/halloween/pumpkins/wearable.dm create mode 100644 icons/misc/events/pumpkins.dmi diff --git a/code/controllers/subsystem/game_decorator.dm b/code/controllers/subsystem/game_decorator.dm new file mode 100644 index 000000000000..cfee0406f84a --- /dev/null +++ b/code/controllers/subsystem/game_decorator.dm @@ -0,0 +1,35 @@ +// Essentially the same as decorators but that apply to the whole game state instead of individual atoms +SUBSYSTEM_DEF(game_decorator) + name = "Game Decorator" + init_order = SS_INIT_DECORATOR + flags = SS_NO_FIRE + +/datum/controller/subsystem/game_decorator/Initialize() + . = ..() + for(var/decorator_type in subtypesof(/datum/game_decorator)) + var/datum/game_decorator/decorator = new decorator_type() + if(!decorator.is_active_decor()) + continue + if(!decorator.defer_decoration) + decorator.decorate() + CHECK_TICK + + return SS_INIT_SUCCESS + +/datum/game_decorator + var/defer_decoration = TRUE //! So map decoration is done post-setup after nightmare and spawners + +/datum/game_decorator/New() + if(defer_decoration) + RegisterSignal(SSdcs, COMSIG_GLOB_MODE_POSTSETUP, PROC_REF(defered_decoration)) + +/datum/game_decorator/proc/is_active_decor() + return FALSE + +/datum/game_decorator/proc/defered_decoration(dcs) + SIGNAL_HANDLER + decorate() + +/datum/game_decorator/proc/decorate() + set waitfor = FALSE + return diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index a4781e1a6609..93eb45c3b79c 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -185,6 +185,7 @@ name = "cave" icon = 'icons/turf/floors/bigred.dmi' icon_state = "mars_cave_1" + is_groundmap_turf = TRUE /turf/open/mars_cave/Initialize(mapload, ...) @@ -283,6 +284,7 @@ name = "ground dirt" icon = 'icons/turf/ground_map.dmi' icon_state = "desert" + is_groundmap_turf = TRUE /turf/open/gm/attackby(obj/item/I, mob/user) @@ -646,6 +648,7 @@ baseturfs = /turf/open/gm/riverdeep supports_surgery = FALSE minimap_color = MINIMAP_WATER + is_groundmap_turf = FALSE // Not real ground /turf/open/gm/riverdeep/Initialize(mapload, ...) @@ -724,6 +727,7 @@ allow_construction = FALSE var/bushes_spawn = 1 var/plants_spawn = 1 + is_groundmap_turf = TRUE name = "wet grass" desc = "Thick, long, wet grass." icon = 'icons/turf/floors/jungle.dmi' diff --git a/code/modules/cm_aliens/weeds.dm b/code/modules/cm_aliens/weeds.dm index eb4fc3cd6f09..736d4f947450 100644 --- a/code/modules/cm_aliens/weeds.dm +++ b/code/modules/cm_aliens/weeds.dm @@ -196,7 +196,7 @@ var/parent_type = /obj/effect/alien/weeds/node if(weed_strength >= WEED_LEVEL_HIVE) parent_type = /obj/effect/alien/weeds/node/pylon - + var/obj/effect/alien/weeds/node/found = locate(parent_type) in orange(node_range, get_turf(src)) if(found) found.add_child(src) diff --git a/code/modules/decorators/halloween.dm b/code/modules/decorators/halloween.dm deleted file mode 100644 index af19d80bbb23..000000000000 --- a/code/modules/decorators/halloween.dm +++ /dev/null @@ -1,63 +0,0 @@ -/datum/decorator/halloween - priority = DECORATOR_MONTH_SPECIFIC - -/datum/decorator/halloween/is_active_decor() - return (get_event_progress() != -1) - -/datum/decorator/halloween/proc/get_event_progress() - . = -1 - var/cur_day = text2num(time2text(world.timeofday, "DD")) - var/cur_mon = text2num(time2text(world.timeofday, "MM")) - if(cur_mon == 10) - return min(0, 31 - cur_day) - if(cur_mon == 11 && cur_day < 4) - return 0 - -/// Cobweb decorator: adds more and more cobwebs as you go through the month -/datum/decorator/halloween/cobwebs - /// How much prob() chance to put a cobweb during halloween proper - var/base_chance = 25 - /// How much to remove per day before date - var/ramp_chance = 0.3 - /// How much to scale cobwebs alpha down per day (1 - ramp_scale * days, affects alpha & size) - var/ramp_scale = 0.01 - /// Extra randomness removed onto scale before full blown halloween - var/scale_rand = 0.3 - -/datum/decorator/halloween/cobwebs/decorate(turf/closed/wall/almayer/T) - var/static/list/order = list(NORTHWEST, SOUTHEAST, NORTHEAST, SOUTHWEST) // Ordering of wall_connections - if(length(T.wall_connections) < 4) - return - - var/event_progress = get_event_progress() - var/placement_chance = base_chance - (event_progress * ramp_chance) - for(var/i = 1 to 4) - var/diag = order[i] - if(T.wall_connections[i] != "5") // CORNER_CLOCKWISE | CORNER_COUNTERCLOCKWISE as string - don't ask me - continue - if(!prob(placement_chance)) - continue - - // Skip this if this corner is result of a door connection (mostly for Almayer shutters) - var/valid = TRUE - for(var/a_cardinal in cardinal) - var/cardinal_dir = diag & a_cardinal - if(!a_cardinal) // We check cardinals contributing to that diagonal - continue - var/turf/target = get_step(T, cardinal_dir) - if(locate(/obj/structure/machinery/door) in target) - valid = FALSE - break - - if(valid) // Actually place cobweb - var/turf/target = get_step(T, diag) - if(istype(target, /turf/open)) - var/scale = 1 - ramp_scale * event_progress - scale -= scale_rand * rand() - new /obj/effect/decal/cleanable/cobweb2/dynamic(target, diag, scale) - -/// Ship specific cobweb decorator -/datum/decorator/halloween/cobwebs/ship - -/datum/decorator/halloween/cobwebs/ship/get_decor_types() - return typesof(/turf/closed/wall/almayer) diff --git a/code/modules/holidays/halloween/decorators.dm b/code/modules/holidays/halloween/decorators.dm new file mode 100644 index 000000000000..b25d6ff6b957 --- /dev/null +++ b/code/modules/holidays/halloween/decorators.dm @@ -0,0 +1,108 @@ +/datum/game_decorator/halloween + +/datum/game_decorator/halloween/is_active_decor() + return (get_days_remaining() != -1) + +/// Get the number of days remaining to event, or -1 if not applicable +/datum/game_decorator/halloween/proc/get_days_remaining() + . = -1 + var/cur_day = text2num(time2text(world.timeofday, "DD")) + var/cur_mon = text2num(time2text(world.timeofday, "MM")) + if(cur_mon == 10) + return max(0, 31 - cur_day) + if(cur_mon == 11 && cur_day < 4) + return 0 + +/// Pumpkins decorator: adds patches of carvable/wearable pumpkins around the ground level +/datum/game_decorator/halloween/pumpkins + var/pumpkin_count = 60 //! Amount of pumpkins to place + var/pumpkin_count_decrease = 1 //! Amount of pumpkins to remove per day to halloween + var/pumpkin_prob_corruption = 20 + var/pumpkin_prob_decrease = 0.5 //! Chance reduction per day before halloween + var/exclusion_range = 10 + +/datum/game_decorator/halloween/pumpkins/decorate() + var/list/turf/valid_turfs = list() + var/list/ground_levels = SSmapping.levels_by_trait(ZTRAIT_GROUND) + for(var/ground_z in ground_levels) + var/list/turf/all_turfs = block(locate(1, 1, ground_z), locate(world.maxx, world.maxy, ground_z)) + for(var/turf/open/turf in all_turfs) + if(turf.is_groundmap_turf) + var/valid = TRUE + for(var/atom/movable/movable as anything in turf.contents) + if(movable.density && movable.can_block_movement) + valid = FALSE + break + if(valid) + valid_turfs += turf + CHECK_TICK + + var/list/turf/picked_turfs = list() + for(var/step in 1 to (pumpkin_count - pumpkin_count_decrease * get_days_remaining())) + if(!length(valid_turfs)) + break + var/turf/considered_turf = pick(valid_turfs) + var/x_min = max(1, considered_turf.x - exclusion_range) + var/y_min = max(1, considered_turf.y - exclusion_range) + var/x_max = min(world.maxx, considered_turf.x + exclusion_range) + var/y_max = min(world.maxy, considered_turf.y + exclusion_range) + var/list/turf/denied_turfs = block(locate(x_min, y_min, considered_turf.z), locate(x_max, y_max, considered_turf.z)) + valid_turfs -= denied_turfs + picked_turfs += considered_turf + + var/corruption_chance = pumpkin_prob_corruption - (get_days_remaining() * pumpkin_prob_decrease) + for(var/turf/target in picked_turfs) + if(prob(corruption_chance)) + new /obj/structure/pumpkin_patch/corrupted(target) + else + new /obj/structure/pumpkin_patch(target) + +/// Cobweb decorator: adds more and more cobwebs as you go through the month +/datum/game_decorator/halloween/cobwebs + /// How much prob() chance to put a cobweb during halloween proper + var/base_chance = 25 + /// How much to remove per day before date + var/ramp_chance = 0.5 + /// How much to scale cobwebs alpha down per day (1 - ramp_scale * days, affects alpha & size) + var/ramp_scale = 0.01 + /// Extra randomness removed onto scale before full blown halloween + var/scale_rand = 0.3 + +/datum/game_decorator/halloween/cobwebs/decorate() + for(var/turf/closed/wall/almayer/turf in world) + if(is_mainship_level(turf.z)) + decorate_turf(turf) + CHECK_TICK + +/datum/game_decorator/halloween/cobwebs/proc/decorate_turf(turf/closed/wall/almayer/turf) + var/static/list/order = list(NORTHWEST, SOUTHEAST, NORTHEAST, SOUTHWEST) // Ordering of wall_connections + if(length(turf.wall_connections) < 4) + return + + var/event_progress = get_days_remaining() + var/placement_chance = base_chance - (event_progress * ramp_chance) + for(var/i = 1 to 4) + var/diag = order[i] + if(turf.wall_connections[i] != "5") // CORNER_CLOCKWISE | CORNER_COUNTERCLOCKWISE as string - don't ask me + continue + if(!prob(placement_chance)) + continue + + // Skip this if this corner is result of a door connection (mostly for Almayer shutters) + var/valid = TRUE + for(var/a_cardinal in cardinal) + var/cardinal_dir = diag & a_cardinal + if(!a_cardinal) // We check cardinals contributing to that diagonal + continue + var/turf/target = get_step(turf, cardinal_dir) + if(locate(/obj/structure/machinery/door) in target) + valid = FALSE + break + + if(valid) // Actually place cobweb + var/turf/target = get_step(turf, diag) + if(istype(target, /turf/open)) + var/scale = 1 - ramp_scale * event_progress + scale -= scale_rand * rand() + new /obj/effect/decal/cleanable/cobweb2/dynamic(target, diag, scale) + diff --git a/code/modules/holidays/halloween/pumpkins/patches.dm b/code/modules/holidays/halloween/pumpkins/patches.dm new file mode 100644 index 000000000000..b84ba24ef4e6 --- /dev/null +++ b/code/modules/holidays/halloween/pumpkins/patches.dm @@ -0,0 +1,65 @@ +/// Patches of pumpkins spawned at roundstart from where marines can get their carvable pumpkins +/obj/structure/pumpkin_patch + icon = 'icons/misc/events/pumpkins.dmi' + name = "patch of pumpkins" + var/empty_name = "\proper vines" + + can_block_movement = FALSE + unslashable = TRUE + health = 400 // To avoid explosions and stray gunfire destroying them too easily + layer = LOWER_ITEM_LAYER + + var/has_vines = TRUE //! Whether there's still vines to display or not + var/pumpkin_count = 3 //! Amount of pumpkins currently in the patch + var/icon_prefix //! Prefix to prepend to icon states, for corrupted pumpkins + var/pumpkin_type = /obj/item/clothing/head/pumpkin + +/obj/structure/pumpkin_patch/Initialize(mapload, ...) + . = ..() + update_icon() + +/obj/structure/pumpkin_patch/update_icon() + overlays?.Cut() + . = ..() + switch(pumpkin_count) + if(3) icon_state = "[icon_prefix]pumpkins_full" + if(2) icon_state = "[icon_prefix]pumpkins_half" + if(1) icon_state = "[icon_prefix]pumpkin" + else icon_state = "empty" + if(has_vines) + overlays += image(icon, loc, "[icon_prefix]vines") + +/obj/structure/pumpkin_patch/attack_hand(mob/user) + if(pumpkin_count < 1) + to_chat(user, SPAN_WARNING("No more pumpkins here...")) + return + if(!user.get_active_hand()) //if active hand is empty + pumpkin_count-- + var/obj/item/clothing/head/pumpkin/pumpkin = new pumpkin_type(loc) + user.put_in_hands(pumpkin) + playsound(loc, 'sound/effects/vegetation_hit.ogg', 25, 1) + update_icon() + if(pumpkin_count < 1) + if(!has_vines) + qdel(src) + else + name = empty_name + return + return ..() + +/obj/structure/pumpkin_patch/attackby(obj/item/tool, mob/user) + if(has_vines && (tool.sharp == IS_SHARP_ITEM_ACCURATE || tool.sharp == IS_SHARP_ITEM_BIG)) + to_chat(user, SPAN_NOTICE("You cut down the vines.")) + playsound(loc, "alien_resin_break", 25) + has_vines = FALSE + update_icon() + if(pumpkin_count < 1 && !has_vines) + qdel(src) + return + return ..() + +/obj/structure/pumpkin_patch/corrupted + icon_prefix = "cor_" + name = "patch of corrupted pumpkins" + empty_name = "\proper corrupted vines" + pumpkin_type = /obj/item/clothing/head/pumpkin/corrupted diff --git a/code/modules/holidays/halloween/pumpkins/wearable.dm b/code/modules/holidays/halloween/pumpkins/wearable.dm new file mode 100644 index 000000000000..74db2b4c85ef --- /dev/null +++ b/code/modules/holidays/halloween/pumpkins/wearable.dm @@ -0,0 +1,72 @@ +/// Carved Pumpkin from the Halloween event +/obj/item/clothing/head/pumpkin + name = "pumpkin" + icon = 'icons/misc/events/pumpkins.dmi' + item_icons = list( + WEAR_HEAD = 'icons/misc/events/pumpkins.dmi', + ) + desc = "An ominous looking pumpkin. Would look pretty spooky if worn on your head..." + w_class = SIZE_MEDIUM + flags_inv_hide = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEALLHAIR + flags_armor_protection = BODY_FLAG_HEAD|BODY_FLAG_EYES + flags_inventory = COVEREYES|BLOCKSHARPOBJ|COVERMOUTH + flags_cold_protection = BODY_FLAG_HEAD + flags_heat_protection = BODY_FLAG_HEAD + min_cold_protection_temperature = HELMET_MIN_COLD_PROT + max_heat_protection_temperature = HELMET_MAX_HEAT_PROT + armor_melee = CLOTHING_ARMOR_MEDIUM + armor_bullet = CLOTHING_ARMOR_MEDIUM + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_NONE + armor_bomb = CLOTHING_ARMOR_LOW + armor_bio = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_LOW + armor_internaldamage = CLOTHING_ARMOR_MEDIUM + health = 5 + force = 15 + var/prefix = "" //! Icon state prefix for corrupted pumpkin variants + var/carved_icon = "" //! Currently carved pumpkin overlay + var/carvable_icons = list("smile", "cheeky", "bugeyes", "upside_down_smile", "skelly", "ff") + +/obj/item/clothing/head/pumpkin/Initialize(mapload, ...) + . = ..() + update_icon() + +/obj/item/clothing/head/pumpkin/update_icon() + . = ..() + if(carved_icon) + icon_state = "[prefix]pumpkin_carved" + else + icon_state = "[prefix]pumpkin" + item_state_slots = list( + WEAR_HEAD = "[prefix]pumpkin_onmob", + ) + +/obj/item/clothing/head/pumpkin/mob_can_equip(mob/user, slot, disable_warning) + if(slot == WEAR_HEAD && !carved_icon) + to_chat(user, SPAN_WARNING("You can't put on a full pumpkin! Empty and carve it with a sharp object first.")) + return FALSE + . = ..() + +/obj/item/clothing/head/pumpkin/attackby(obj/item/tool, mob/user) + if(!carved_icon && (tool.sharp == IS_SHARP_ITEM_ACCURATE || tool.sharp == IS_SHARP_ITEM_BIG)) + var/choice = tgui_input_list(user, "Select the pattern to carve on your pumpkin!", "Pumpkin Carving", carvable_icons) + if(choice) + playsound(loc, 'sound/effects/vegetation_hit.ogg', 25, 1) + carved_icon = choice + name = "carved pumpkin" + update_icon() + else + return ..() + +/obj/item/clothing/head/pumpkin/get_mob_overlay(mob/user_mob, slot) + var/image/pumpkin = ..() + if(carved_icon && slot == WEAR_HEAD) + var/image/overlay = overlay_image(icon, "[prefix]pumpkin_[carved_icon]") + pumpkin.overlays += overlay + return pumpkin + +/obj/item/clothing/head/pumpkin/corrupted + name = "corrupted pumpkin" + prefix = "cor_" + carvable_icons = list("cry", "sob", "sad", "why", "spooky", "ff") diff --git a/colonialmarines.dme b/colonialmarines.dme index 37c34d443c1b..25aa4df30a09 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -238,6 +238,7 @@ #include "code\controllers\subsystem\disease.dm" #include "code\controllers\subsystem\events.dm" #include "code\controllers\subsystem\fz_transitions.dm" +#include "code\controllers\subsystem\game_decorator.dm" #include "code\controllers\subsystem\garbage.dm" #include "code\controllers\subsystem\human.dm" #include "code\controllers\subsystem\inactivity.dm" @@ -1627,7 +1628,6 @@ #include "code\modules\decorators\admin_runtime_decorator.dm" #include "code\modules\decorators\cassette_decorator.dm" #include "code\modules\decorators\christmas.dm" -#include "code\modules\decorators\halloween.dm" #include "code\modules\decorators\mass_xeno_decorator.dm" #include "code\modules\decorators\weapon_decorator.dm" #include "code\modules\decorators\weapon_map_decorator.dm" @@ -1723,6 +1723,9 @@ #include "code\modules\gear_presets\survivors\sorokyne_strata\preset_sorokyne_strata.dm" #include "code\modules\gear_presets\survivors\trijent\crashlanding_upp_bar_insert_trijent.dm" #include "code\modules\gear_presets\survivors\trijent\preset_trijent.dm" +#include "code\modules\holidays\halloween\decorators.dm" +#include "code\modules\holidays\halloween\pumpkins\patches.dm" +#include "code\modules\holidays\halloween\pumpkins\wearable.dm" #include "code\modules\hydroponics\botany_disks.dm" #include "code\modules\hydroponics\grown_inedible.dm" #include "code\modules\hydroponics\hydro_tools.dm" diff --git a/icons/misc/events/pumpkins.dmi b/icons/misc/events/pumpkins.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e3087e7c444c1220f013aaa279769d06ab851bf7 GIT binary patch literal 6867 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 Date: Mon, 6 Nov 2023 06:33:33 +0000 Subject: [PATCH 38/51] Automatic changelog for PR #4623 [ci skip] --- html/changelogs/AutoChangeLog-pr-4623.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4623.yml diff --git a/html/changelogs/AutoChangeLog-pr-4623.yml b/html/changelogs/AutoChangeLog-pr-4623.yml new file mode 100644 index 000000000000..d79a53a45b70 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4623.yml @@ -0,0 +1,4 @@ +author: "Firartix and Frans_Feiffer" +delete-after: True +changes: + - rscadd: "Readded Halloween pumpkin helmets." \ No newline at end of file From 0991f38801d9fc5c7b7e073cb5788ef42822ad08 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Mon, 6 Nov 2023 01:37:36 -0800 Subject: [PATCH 39/51] Hijack Objectives & Self Destruct (#4699) # About the pull request This PR adds hijack objectives to be held for lifeboats to safely launch and lifepods to have a better chance not to crash. These objectives are currently: https://cdn.discordapp.com/attachments/604397850675380234/1150809693556592711/image.png This PR removes the auto launch of lifepods/boats after 10 minutes This PR adds red alert sentries at fuel pumps This PR adds Corporate liaison evac shuttle now can be launched at any time even if evac has not been called This PR kills EvacuationAuthority This PR adds an optional self destruct method once fuel is at 100%. Should the marines be confident in their hold, they can move to engineering and hold it for 5-15 minutes (time dependent on how many fusion reactors are overloaded, use a multitiool on them to do so) to manually melt down the fusion reactors, detonating the accumulated fuel and acting as a self destruct. # Explain why it's good for the game Hijack is stale, let's work on making it not stale. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Morrow, Zonespace add: Added objectives to hijack. You now must hold different sections of the ship to successfully launch lifeboats or pods add: The areas that contribute to hijack objectives are the lifeboat pumps, astronav, and engineering add: Fuel pumps now have red alert sentries add: Corporate liaison evac shuttle now can be launched at any time even if evac has not been called add: You can now self-destruct the ship by overloading the fusion generators in engineering once lifeboat fuel is at 100%. del: Removed auto launch of lifeboats and pods code: Refactored EvacuationAuthority into SShijack /:cl: --------- Co-authored-by: Morrow Co-authored-by: fira --- code/__DEFINES/atmospherics.dm | 2 + code/__DEFINES/dcs/signals/signals_global.dm | 9 +- code/__DEFINES/hijack.dm | 13 + code/__DEFINES/subsystems.dm | 2 + code/controllers/subsystem/hijack.dm | 429 ++++ code/game/area/almayer.dm | 24 + code/game/gamemodes/cm_self_destruct.dm | 478 ----- .../colonialmarines/colonialmarines.dm | 34 +- code/game/gamemodes/extended/infection.dm | 2 +- code/game/gamemodes/game_mode.dm | 7 +- code/game/machinery/ARES/ARES_interface.dm | 6 +- .../machinery/computer/almayer_control.dm | 21 +- .../game/machinery/computer/communications.dm | 41 +- code/game/machinery/fusion_engine.dm | 139 +- code/game/machinery/nuclearbomb.dm | 33 +- code/game/machinery/sentry_holder.dm | 62 +- code/game/machinery/status_display.dm | 11 +- code/game/objects/items/devices/cictablet.dm | 6 +- code/game/world.dm | 2 - .../admin/player_panel/player_panel.dm | 26 +- code/modules/admin/tabs/event_tab.dm | 4 +- code/modules/admin/topic/topic.dm | 38 +- code/modules/defenses/sentry.dm | 4 + code/modules/mob/dead/observer/observer.dm | 9 +- code/modules/mob/living/carbon/human/human.dm | 8 +- code/modules/mob/living/silicon/silicon.dm | 6 +- code/modules/mob/new_player/new_player.dm | 12 +- .../security_levels/security_levels.dm | 1 - code/modules/shuttle/computer.dm | 6 +- .../shuttle/computers/escape_pod_computer.dm | 14 +- code/modules/shuttle/dropship_hijack.dm | 1 + .../shuttles/crashable/escape_shuttle.dm | 8 +- .../shuttle/shuttles/crashable/lifeboats.dm | 4 +- code/modules/shuttles/marine_ferry.dm | 12 - colonialmarines.dme | 3 +- icons/obj/structures/machinery/fusion_eng.dmi | Bin 2209 -> 2388 bytes maps/map_files/USS_Almayer/USS_Almayer.dmm | 1763 +++++++++-------- maps/shuttles/escape_shuttle_e_cl.dmm | 7 +- sound/effects/creak1.ogg | Bin 0 -> 125071 bytes sound/effects/creak2.ogg | Bin 0 -> 102788 bytes sound/effects/creak3.ogg | Bin 0 -> 52507 bytes .../tgui/interfaces/EscapePodConsole.tsx | 4 + 42 files changed, 1681 insertions(+), 1570 deletions(-) create mode 100644 code/__DEFINES/hijack.dm create mode 100644 code/controllers/subsystem/hijack.dm delete mode 100644 code/game/gamemodes/cm_self_destruct.dm create mode 100644 sound/effects/creak1.ogg create mode 100644 sound/effects/creak2.ogg create mode 100644 sound/effects/creak3.ogg diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 3abd79708f7a..de7eb672e87b 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -23,6 +23,8 @@ #define T0C 273.15 // 0degC #define T20C 293.15 // 20degC +#define T90C 363.15 // 90degC +#define T120C 393.15 // 120degC #define TCMB 2.7 // -270.3degC #define ICE_COLONY_TEMPERATURE 223 //-50degC #define SOROKYNE_TEMPERATURE 223 // Same as Ice for now diff --git a/code/__DEFINES/dcs/signals/signals_global.dm b/code/__DEFINES/dcs/signals/signals_global.dm index 032a1891a808..dc5e70fcd5ec 100644 --- a/code/__DEFINES/dcs/signals/signals_global.dm +++ b/code/__DEFINES/dcs/signals/signals_global.dm @@ -60,8 +60,11 @@ #define COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING "!groundside_forsaken_handling" /// From -#define COMSIG_GLOB_YAUTJA_ARMORY_OPENED "yautja_armory_opened" +#define COMSIG_GLOB_YAUTJA_ARMORY_OPENED "!yautja_armory_opened" /// From /proc/biohazard_lockdown() -#define COMSIG_GLOB_RESEARCH_LOCKDOWN "research_lockdown_closed" -#define COMSIG_GLOB_RESEARCH_LIFT "research_lockdown_opened" +#define COMSIG_GLOB_RESEARCH_LOCKDOWN "!research_lockdown_closed" +#define COMSIG_GLOB_RESEARCH_LIFT "!research_lockdown_opened" + +/// From /obj/structure/machinery/power/fusion_engine/proc/set_overloading() : (set_overloading) +#define COMSIG_GLOB_GENERATOR_SET_OVERLOADING "!generator_set_overloading" diff --git a/code/__DEFINES/hijack.dm b/code/__DEFINES/hijack.dm new file mode 100644 index 000000000000..85d4c227ae70 --- /dev/null +++ b/code/__DEFINES/hijack.dm @@ -0,0 +1,13 @@ +#define EVACUATION_TYPE_NONE 0 +#define EVACUATION_TYPE_ADDITIVE 1 +#define EVACUATION_TYPE_MULTIPLICATIVE 2 + +#define HIJACK_ANNOUNCE "ARES Emergency Procedures" +#define XENO_HIJACK_ANNOUNCE "You sense something unusual..." + +#define EVACUATION_STATUS_NOT_INITIATED 0 +#define EVACUATION_STATUS_INITIATED 1 + +#define HIJACK_OBJECTIVES_NOT_STARTED 0 +#define HIJACK_OBJECTIVES_STARTED 1 +#define HIJACK_OBJECTIVES_COMPLETE 2 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index ac9cfd3e12d2..301ca0409655 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -115,6 +115,7 @@ #define SS_INIT_INFLUXDRIVER 28 #define SS_INIT_GARBAGE 24 #define SS_INIT_EVENTS 23.5 +#define SS_INIT_HIJACK 22.6 #define SS_INIT_REDIS 22.5 #define SS_INIT_REAGENTS 22.1 #define SS_INIT_MAPPING 22 @@ -177,6 +178,7 @@ #define SS_PRIORITY_FAST_OBJECTS 105 #define SS_PRIORITY_OBJECTS 104 #define SS_PRIORITY_DECORATOR 99 +#define SS_PRIORITY_HIJACK 97 #define SS_PRIORITY_POWER 95 #define SS_PRIORITY_EFFECTS 92 #define SS_PRIORITY_MACHINERY 90 diff --git a/code/controllers/subsystem/hijack.dm b/code/controllers/subsystem/hijack.dm new file mode 100644 index 000000000000..55b5aa75caf8 --- /dev/null +++ b/code/controllers/subsystem/hijack.dm @@ -0,0 +1,429 @@ +SUBSYSTEM_DEF(hijack) + name = "Hijack" + wait = 2 SECONDS + flags = SS_KEEP_TIMING + priority = SS_PRIORITY_HIJACK + init_order = SS_INIT_HIJACK + + ///Required progress to evacuate safely via lifeboats + var/required_progress = 100 + + ///Current progress towards evacuating safely via lifeboats + var/current_progress = 0 + + /// How much progress is required to early launch + var/early_launch_required_progress = 25 + + ///The estimated time left to get to the safe evacuation point + var/estimated_time_left = 0 + + ///Areas that are marked as having progress, assoc list that is progress_area = boolean, the boolean indicating if it was progressing or not on the last fire() + var/list/area/progress_areas = list() + + ///The areas that need cycled through currently + var/list/area/current_run = list() + + ///The progress of the current run that needs to be added at the end of the current run + var/current_run_progress_additive = 0 + + ///Holds what the current_run_progress_additive should be multiplied by at the end of the current run + var/current_run_progress_multiplicative = 1 + + ///Holds the progress change from last run + var/last_run_progress_change = 0 + + ///Holds the next % point progress should be announced, increments on itself + var/announce_checkpoint = 25 + + ///What stage of evacuation we are currently on + var/evac_status = EVACUATION_STATUS_NOT_INITIATED + + ///What stage of hijack are we currently on + var/hijack_status = HIJACK_OBJECTIVES_NOT_STARTED + + ///Whether or not evacuation has been disabled by admins + var/evac_admin_denied = FALSE + + /// If TRUE, self destruct has been unlocked and is possible with a hold of reactor + var/sd_unlocked = FALSE + + /// Admin var to manually prevent self destruct from occurring + var/admin_sd_blocked = FALSE + + /// Maximum amount of fusion generators that can be overloaded at once for a time benefit + var/maximum_overload_generators = 18 + + /// How many generators are currently overloaded + var/overloaded_generators = 0 + + /// How long the manual self destruct will take on the high end + var/sd_max_time = 15 MINUTES + + /// How long the manual self destruct will take on the low end + var/sd_min_time = 5 MINUTES + + /// How much time left until SD detonates + var/sd_time_remaining = 0 + + /// Roughly what % of the SD countdown remains + var/percent_completion_remaining = 100 + + /// If the engine room has been heated, occurs at 33% SD completion + var/engine_room_heated = FALSE + + /// If the engine room has been superheated, occurs at 66% SD completion + var/engine_room_superheated = FALSE + + /// If the self destruct has/is detonating + var/sd_detonated = FALSE + + /// If a generator has ever been overloaded in the past this round + var/generator_ever_overloaded = FALSE + + /// If ARES has announced the 50% point yet for SD + var/ares_sd_announced = FALSE + +/datum/controller/subsystem/hijack/Initialize(timeofday) + RegisterSignal(SSdcs, COMSIG_GLOB_GENERATOR_SET_OVERLOADING, PROC_REF(on_generator_overload)) + return SS_INIT_SUCCESS + +/datum/controller/subsystem/hijack/stat_entry(msg) + if(!SSticker?.mode?.is_in_endgame) + msg = " Not Hijack" + return ..() + + if(current_progress >= required_progress) + msg = " Complete" + return ..() + + msg = " Progress: [current_progress]% | Last run: [last_run_progress_change]" + return ..() + +/datum/controller/subsystem/hijack/fire(resumed = FALSE) + if(!SSticker?.mode?.is_in_endgame) + return + + if(hijack_status < HIJACK_OBJECTIVES_STARTED) + hijack_status = HIJACK_OBJECTIVES_STARTED + + if(current_progress >= required_progress) + if(hijack_status < HIJACK_OBJECTIVES_COMPLETE) + hijack_status = HIJACK_OBJECTIVES_COMPLETE + + if(sd_unlocked && overloaded_generators) + sd_time_remaining -= wait + if(!engine_room_heated && (sd_time_remaining <= (max((1 - round(overloaded_generators / maximum_overload_generators, 0.01)) * sd_max_time, sd_min_time) * 0.66))) + heat_engine_room() + + if(!ares_sd_announced && (sd_time_remaining <= (max((1 - round(overloaded_generators / maximum_overload_generators, 0.01)) * sd_max_time, sd_min_time) * 0.5))) + announce_sd_halfway() + + if(!engine_room_superheated && (sd_time_remaining <= (max((1 - round(overloaded_generators / maximum_overload_generators, 0.01)) * sd_max_time, sd_min_time) * 0.33))) + superheat_engine_room() + + if((sd_time_remaining <= 0) && !sd_detonated) + detonate_sd() + + return + + if(!resumed) + current_run = progress_areas.Copy() + + for(var/area/almayer/cycled_area as anything in current_run) + current_run -= cycled_area + + if(progress_areas[cycled_area] != cycled_area.power_equip) + progress_areas[cycled_area] = !progress_areas[cycled_area] + announce_area_power_change(cycled_area) + + if(progress_areas[cycled_area]) + switch(cycled_area.hijack_evacuation_type) + if(EVACUATION_TYPE_ADDITIVE) + current_run_progress_additive += cycled_area.hijack_evacuation_weight + if(EVACUATION_TYPE_MULTIPLICATIVE) + current_run_progress_multiplicative *= cycled_area.hijack_evacuation_weight + + if (MC_TICK_CHECK) + return + + last_run_progress_change = current_run_progress_additive * current_run_progress_multiplicative + current_progress += last_run_progress_change + + if(last_run_progress_change) + estimated_time_left = ((required_progress - current_progress) / last_run_progress_change) * wait + else + estimated_time_left = INFINITY + + if(current_progress >= announce_checkpoint) + announce_progress() + announce_checkpoint += initial(announce_checkpoint) + + current_run_progress_additive = 0 + current_run_progress_multiplicative = 1 + +///Called when the xeno dropship crashes into the Almayer and announces the current status of various objectives to marines +/datum/controller/subsystem/hijack/proc/announce_status_on_crash() + var/message = "" + + for(var/area/cycled_area as anything in progress_areas) + message += "[cycled_area] - [cycled_area.power_equip ? "Online" : "Offline"]\n" + progress_areas[cycled_area] = cycled_area.power_equip + + message += "\nDue to low orbit, extra fuel is required for non-surface evacuations.\nMaintain fueling functionality for optimal evacuation conditions." + + marine_announcement(message, HIJACK_ANNOUNCE) + +///Called when an area power status is changed to announce that it has been changed +/datum/controller/subsystem/hijack/proc/announce_area_power_change(area/changed_area) + var/message = "[changed_area] - [changed_area.power_equip ? "Online" : "Offline"]" + + marine_announcement(message, HIJACK_ANNOUNCE) + +///Called to announce to xenos the state of evacuation progression +/datum/controller/subsystem/hijack/proc/announce_progress() + var/announce = announce_checkpoint / initial(announce_checkpoint) + + var/marine_warning_areas = "" + var/xeno_warning_areas = "" + + for(var/area/cycled_area as anything in progress_areas) + if(cycled_area.power_equip) + xeno_warning_areas += "[cycled_area], " + continue + marine_warning_areas += "[cycled_area], " + + if(xeno_warning_areas) + xeno_warning_areas = copytext(xeno_warning_areas, 1, -2) + + if(marine_warning_areas) + marine_warning_areas = copytext(marine_warning_areas, 1, -2) + + var/datum/hive_status/hive + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(!length(hive.totalXenos)) + continue + + switch(announce) + if(1) + xeno_announcement(SPAN_XENOANNOUNCE("The talls are a quarter of the way towards their goals. Disable the following areas: [xeno_warning_areas]"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + if(2) + xeno_announcement(SPAN_XENOANNOUNCE("The talls are half way towards their goals. Disable the following areas: [xeno_warning_areas]"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + if(3) + xeno_announcement(SPAN_XENOANNOUNCE("The talls are three quarters of the way towards their goals. Disable the following areas: [xeno_warning_areas]"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + if(4) + xeno_announcement(SPAN_XENOANNOUNCE("The talls have completed their goals!"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + + switch(announce) + if(1) + marine_announcement("Emergency fuel replenishment at 25 percent. Lifeboat emergency early launch now available.[marine_warning_areas ? "\nTo increase speed restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) + if(2) + marine_announcement("Emergency fuel replenishment at 50 percent.[marine_warning_areas ? "\nTo increase speed restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) + if(3) + marine_announcement("Emergency fuel replenishment at 75 percent.[marine_warning_areas ? "\nTo increase speed restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) + if(4) + marine_announcement("Emergency fuel replenishment at 100 percent. Safe utilization of lifeboats now possible.", HIJACK_ANNOUNCE) + if(!admin_sd_blocked) + addtimer(CALLBACK(src, PROC_REF(unlock_self_destruct)), 8 SECONDS) + +/// Passes the ETA for status panels +/datum/controller/subsystem/hijack/proc/get_evac_eta() + switch(hijack_status) + if(HIJACK_OBJECTIVES_STARTED) + if(estimated_time_left == INFINITY) + return "Never" + return "[duration2text_sec(estimated_time_left)]" + + if(HIJACK_OBJECTIVES_COMPLETE) + return "Complete" + +/datum/controller/subsystem/hijack/proc/get_sd_eta() + if(!sd_time_remaining) + return "Complete" + + if(overloaded_generators <= 0) + return "Never" + + return "[duration2text_sec(sd_time_remaining)]" + +//~~~~~~~~~~~~~~~~~~~~~~~~ EVAC STUFF ~~~~~~~~~~~~~~~~~~~~~~~~// + +/// Initiates evacuation by announcing and then prepping all lifepods/lifeboats +/datum/controller/subsystem/hijack/proc/initiate_evacuation() + if(evac_status == EVACUATION_STATUS_NOT_INITIATED && !(evac_admin_denied & FLAGS_EVACUATION_DENY)) + evac_status = EVACUATION_STATUS_INITIATED + ai_announcement("Attention. Emergency. All personnel must evacuate immediately.", 'sound/AI/evacuate.ogg') + + for(var/obj/structure/machinery/status_display/cycled_status_display in machines) + if(is_mainship_level(cycled_status_display.z)) + cycled_status_display.set_picture("evac") + for(var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle in SSshuttle.mobile) + shuttle.prepare_evac() + activate_lifeboats() + return TRUE + +/// Cancels evacuation, tells lifepods/lifeboats and status_displays +/datum/controller/subsystem/hijack/proc/cancel_evacuation() + if(evac_status == EVACUATION_STATUS_INITIATED) + evac_status = EVACUATION_STATUS_NOT_INITIATED + deactivate_lifeboats() + ai_announcement("Evacuation has been cancelled.", 'sound/AI/evacuate_cancelled.ogg') + + for(var/obj/structure/machinery/status_display/cycled_status_display in machines) + if(is_mainship_level(cycled_status_display.z)) + cycled_status_display.set_sec_level_picture() + + for(var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle in SSshuttle.mobile) + shuttle.cancel_evac() + return TRUE + +/// Opens the lifeboat doors and gets them ready to launch +/datum/controller/subsystem/hijack/proc/activate_lifeboats() + for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) + var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = lifeboat_dock.get_docked() + if(lifeboat && lifeboat.available) + lifeboat.status = LIFEBOAT_ACTIVE + lifeboat_dock.open_dock() + +/// Turns off ability to manually take off lifeboats +/datum/controller/subsystem/hijack/proc/deactivate_lifeboats() + for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) + var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = lifeboat_dock.get_docked() + if(lifeboat && lifeboat.available) + lifeboat.status = LIFEBOAT_INACTIVE + + +/// Once refueling is done, marines can optionally hold SD for a time for a stalemate instead of a xeno minor +/datum/controller/subsystem/hijack/proc/unlock_self_destruct() + sd_time_remaining = sd_max_time + sd_unlocked = TRUE + marine_announcement("Fuel reserves full. Manual detonation of fuel reserves by overloading the on-board fusion reactors now possible.", HIJACK_ANNOUNCE) + +/datum/controller/subsystem/hijack/proc/on_generator_overload(obj/structure/machinery/power/fusion_engine/source, new_overloading) + SIGNAL_HANDLER + + if(!generator_ever_overloaded) + generator_ever_overloaded = TRUE + var/datum/hive_status/hive + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(!length(hive.totalXenos)) + continue + + xeno_announcement(SPAN_XENOANNOUNCE("The talls may be attempting to take their ship down with them in Engineering, stop them!"), hive.hivenumber, XENO_HIJACK_ANNOUNCE) + + adjust_generator_overload_count(new_overloading ? 1 : -1) + +/datum/controller/subsystem/hijack/proc/adjust_generator_overload_count(amount = 1) + var/generator_overload_percent = round(overloaded_generators / maximum_overload_generators, 0.01) + var/old_required_time = sd_min_time + ((1 - generator_overload_percent) * (sd_max_time - sd_min_time)) + percent_completion_remaining = sd_time_remaining / old_required_time + overloaded_generators = clamp(overloaded_generators + amount, 0, maximum_overload_generators) + generator_overload_percent = round(overloaded_generators / maximum_overload_generators, 0.01) + var/new_required_time = sd_min_time + ((1 - generator_overload_percent) * (sd_max_time - sd_min_time)) + sd_time_remaining = percent_completion_remaining * new_required_time + +/datum/controller/subsystem/hijack/proc/heat_engine_room() + engine_room_heated = TRUE + var/area/engine_room = GLOB.areas_by_type[/area/almayer/engineering/engine_core] + engine_room.firealert() + engine_room.temperature = T90C + for(var/mob/current_mob as anything in GLOB.mob_list) + var/area/mob_area = get_area(current_mob) + if(istype(mob_area, /area/almayer/engineering/engine_core)) + to_chat(current_mob, SPAN_BOLDWARNING("You feel the heat of the room increase as the fusion engines whirr louder.")) + +/datum/controller/subsystem/hijack/proc/superheat_engine_room() + engine_room_superheated = TRUE + var/area/engine_room = GLOB.areas_by_type[/area/almayer/engineering/engine_core] + engine_room.firealert() + engine_room.temperature = T120C //slowly deals burn at this temp + for(var/mob/current_mob as anything in GLOB.mob_list) + var/area/mob_area = get_area(current_mob) + if(istype(mob_area, /area/almayer/engineering/engine_core)) + to_chat(current_mob, SPAN_BOLDWARNING("The room feels incredibly hot, you can't take much more of this!")) + +/datum/controller/subsystem/hijack/proc/announce_sd_halfway() + ares_sd_announced = TRUE + marine_announcement("ALERT: Fusion reactor meltdown has reached fifty percent.", HIJACK_ANNOUNCE) + +/datum/controller/subsystem/hijack/proc/detonate_sd() + set waitfor = FALSE + sd_detonated = TRUE + var/creak_picked = pick('sound/effects/creak1.ogg', 'sound/effects/creak2.ogg', 'sound/effects/creak3.ogg') + for(var/mob/current_mob as anything in GLOB.mob_list) + var/turf/current_turf = get_turf(current_mob) + if(!current_mob?.loc || !current_mob.client || !current_turf || !is_mainship_level(current_turf.z)) + continue + + to_chat(current_mob, SPAN_BOLDWARNING("The ship's deck worryingly creaks underneath you.")) + playsound_client(current_mob.client, creak_picked, vol = 50) + + sleep(7 SECONDS) + shakeship(2, 10, TRUE) + + marine_announcement("ALERT: Fusion reactors dangerously overloaded. Runaway meltdown in reactor core imminent.", HIJACK_ANNOUNCE) + sleep(5 SECONDS) + + var/sound_picked = pick('sound/theme/nuclear_detonation1.ogg','sound/theme/nuclear_detonation2.ogg') + for(var/client/player as anything in GLOB.clients) + playsound_client(player, sound_picked, 90) + + var/list/alive_mobs = list() //Everyone who will be destroyed on the zlevel(s). + var/list/dead_mobs = list() //Everyone who only needs to see the cinematic. + for(var/mob/current_mob as anything in GLOB.mob_list) //This only does something cool for the people about to die, but should prove pretty interesting. + var/turf/current_turf = get_turf(current_mob) + if(!current_mob?.loc || !current_turf) + continue + + if(current_mob.stat == DEAD) + dead_mobs |= current_mob + continue + + if(is_mainship_level(current_turf.z)) + alive_mobs |= current_mob + shake_camera(current_mob, 110, 4) + + + sleep(10 SECONDS) + /*Hardcoded for now, since this was never really used for anything else. + Would ideally use a better system for showing cutscenes.*/ + var/atom/movable/screen/cinematic/explosion/explosive_cinematic = new() + + for(var/mob/current_mob as anything in (alive_mobs + dead_mobs)) + if(current_mob?.loc && current_mob.client) + current_mob.client.add_to_screen(explosive_cinematic) //They may have disconnected in the mean time. + + sleep(1.5 SECONDS) //Extra 1.5 seconds to look at the ship. + flick("intro_nuke", explosive_cinematic) + + sleep(3.5 SECONDS) + for(var/mob/current_mob as anything in alive_mobs) + var/turf/current_mob_turf = get_turf(current_mob) + if(!current_mob?.loc || !current_mob_turf) //Who knows, maybe they escaped, or don't exist anymore. + continue + + if(is_mainship_level(current_mob_turf.z)) + if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) + continue + + current_mob.death(create_cause_data("nuclear explosion")) + else + current_mob.client.remove_from_screen(explosive_cinematic) //those who managed to escape the z level at last second shouldn't have their view obstructed. + + flick("ship_destroyed", explosive_cinematic) + explosive_cinematic.icon_state = "summary_destroyed" + + for(var/client/player as anything in GLOB.clients) + playsound_client(player, 'sound/effects/explosionfar.ogg', 90) + + + sleep(0.5 SECONDS) + if(SSticker.mode) + SSticker.mode.check_win() + + if(!SSticker.mode) //Just a safety, just in case a mode isn't running, somehow. + to_world(SPAN_ROUNDBODY("Resetting in 30 seconds!")) + sleep(30 SECONDS) + log_game("Rebooting due to nuclear detonation.") + world.Reboot() diff --git a/code/game/area/almayer.dm b/code/game/area/almayer.dm index 6ced81a22b15..742ae7a1addb 100644 --- a/code/game/area/almayer.dm +++ b/code/game/area/almayer.dm @@ -13,6 +13,21 @@ ambience_exterior = AMBIENCE_ALMAYER ceiling_muffle = FALSE + ///Whether this area is used for hijack evacuation progress + var/hijack_evacuation_area = FALSE + + ///The weight this area gives towards hijack evacuation progress + var/hijack_evacuation_weight = 0 + + ///Whether this area is additive or multiplicative towards evacuation progress + var/hijack_evacuation_type = EVACUATION_TYPE_NONE + +/area/almayer/Initialize(mapload, ...) + . = ..() + + if(hijack_evacuation_area) + SShijack.progress_areas[src] = power_equip + /area/shuttle/almayer/elevator_maintenance/upperdeck name = "\improper Maintenance Elevator" icon_state = "shuttle" @@ -160,6 +175,9 @@ fake_zlevel = 2 // lowerdeck soundscape_playlist = SCAPE_PL_ENG soundscape_interval = 15 + hijack_evacuation_area = TRUE + hijack_evacuation_weight = 0.2 + hijack_evacuation_type = EVACUATION_TYPE_ADDITIVE /area/almayer/engineering/starboard_atmos name = "\improper Atmospherics Starboard" @@ -183,6 +201,9 @@ name = "\improper Astronavigational Deck" icon_state = "astronavigation" fake_zlevel = 2 // lowerdeck + hijack_evacuation_area = TRUE + hijack_evacuation_weight = 1.1 + hijack_evacuation_type = EVACUATION_TYPE_MULTIPLICATIVE /area/almayer/shipboard/panic name = "\improper Hangar Panic Room" @@ -712,6 +733,9 @@ icon_state = "lifeboat_pump" requires_power = 1 fake_zlevel = 1 + hijack_evacuation_area = TRUE + hijack_evacuation_weight = 0.1 + hijack_evacuation_type = EVACUATION_TYPE_ADDITIVE /area/almayer/lifeboat_pumps/north1 name = "North West Lifeboat Fuel Pump" diff --git a/code/game/gamemodes/cm_self_destruct.dm b/code/game/gamemodes/cm_self_destruct.dm deleted file mode 100644 index 07c9c43a4768..000000000000 --- a/code/game/gamemodes/cm_self_destruct.dm +++ /dev/null @@ -1,478 +0,0 @@ -/* -TODO -Look into animation screen not showing on self-destruct and other weirdness -Intergrate distress into this controller. -Finish nanoui conversion for comm console. -Make sure people who get nuked and wake up from SSD don't live. -Add flashing lights to evac. //DEFERRED TO BETTER LIGHTING -Finish the game mode announcement thing. -Fix escape doors to work properly. -*/ - -/* -How this works: - -First: All of the linking is done automatically on world start, so nothing needs to be done on that end other than making -sure that objects are actually placed in the game world. If not, the game will error and let you know about it. But you -don't need to modify variables or worry about area placement. It's all done for you. -The rods, for example, configure the time per activation based on their number. Shuttles link their own machines via area. -Nothing in this controller is linked to game mode, so it's stand alone, more or less, but it's best used during a game mode. -Admins have a lot of tools in their disposal via the check antagonist panel, and devs can access the VV of this controller -through that panel. - -Second: The communication console handles most of the IC triggers for activating these functions, the rest is handled elsewhere. -Check communications.dm for that. shuttle_controller.dm handles the set up for the escape pods. escape_pods.dm handles most of the -functions of the escape pods themselves. This file would likely need to be broken down into individual parts at some point in the -future. - -Evacuation takes place when sufficient alert level is reaised and a distress beacon was launched. All of the evac pods come online -and open their doors to allow entry inside. Characters may then get inside of the cryo units to before the shuttles automatically launch. -If wanted, a nearby controller object may launch each individual shuttle early. Only three people may ride on a shuttle to escape, -otherwise the launch will fail and the shuttle will become inoperable. -Any launched shuttles are taken out of the game. If the evacuation is canceled, any persons inside of the cryo tubes will be ejected. -They may temporarily open the door to exit if they are stuck inside after evac is canceled. - -When the self-destruct is enabled, the console comes online. This usually happens during an evacuation. Once the console is -interacted with, it fires up the self-destruct sequence. Several rods rise and must be interacted with in order to arm the system. -Once that happens, the console must be interacted with again to trigger the self-destruct. The self-destruct may also be -canceled from the console. - -The self-destruct may also happen if a nuke is detonated on the ship's zlevel; if it is detonated elsewhere, the ship will not blow up. -Regardless of where it's detonated, or how, a successful detonation will end the round or automatically restart the game. - -All of the necessary difines are stored under mode.dm in defines. -*/ - -var/global/datum/authority/branch/evacuation/EvacuationAuthority //This is initited elsewhere so that the world has a chance to load in. - -/datum/authority/branch/evacuation - var/name = "Evacuation Authority" - var/evac_time //Time the evacuation was initiated. - var/evac_status = EVACUATION_STATUS_STANDING_BY //What it's doing now? It can be standing by, getting ready to launch, or finished. - - var/obj/structure/machinery/self_destruct/console/dest_master //The main console that does the brunt of the work. - var/dest_rods[] //Slave devices to make the explosion work. - var/dest_cooldown //How long it takes between rods, determined by the amount of total rods present. - var/dest_index = 1 //What rod the thing is currently on. - var/dest_status = NUKE_EXPLOSION_INACTIVE - var/dest_started_at = 0 - - var/flags_scuttle = NO_FLAGS - -/datum/authority/branch/evacuation/New() - ..() - dest_master = locate() - if(!dest_master) - log_debug("ERROR CODE SD1: could not find master self-destruct console") - to_world(SPAN_DEBUG("ERROR CODE SD1: could not find master self-destruct console")) - return FALSE - dest_rods = new - for(var/obj/structure/machinery/self_destruct/rod/I in dest_master.loc.loc) dest_rods += I - if(!dest_rods.len) - log_debug("ERROR CODE SD2: could not find any self-destruct rods") - to_world(SPAN_DEBUG("ERROR CODE SD2: could not find any self-destruct rods")) - QDEL_NULL(dest_master) - return FALSE - dest_cooldown = SELF_DESTRUCT_ROD_STARTUP_TIME / dest_rods.len - dest_master.desc = "The main operating panel for a self-destruct system. It requires very little user input, but the final safety mechanism is manually unlocked.\nAfter the initial start-up sequence, [dest_rods.len] control rods must be armed, followed by manually flipping the detonation switch." - -/** - * This proc returns the ship's z level list (or whatever specified), - * when an evac/self-destruct happens. - */ -/datum/authority/branch/evacuation/proc/get_affected_zlevels() - //Nuke is not in progress, end the round on ship only. - if(dest_status < NUKE_EXPLOSION_IN_PROGRESS && SSticker?.mode.is_in_endgame) - . = SSmapping.levels_by_any_trait(list(ZTRAIT_MARINE_MAIN_SHIP)) - return - -//========================================================================================= -//========================================================================================= -//=====================================EVACUATION========================================== -//========================================================================================= -//========================================================================================= - - -/datum/authority/branch/evacuation/proc/initiate_evacuation(force=0) //Begins the evacuation procedure. - if(force || (evac_status == EVACUATION_STATUS_STANDING_BY && !(flags_scuttle & FLAGS_EVACUATION_DENY))) - evac_time = world.time - evac_status = EVACUATION_STATUS_INITIATING - ai_announcement("Attention. Emergency. All personnel must evacuate immediately. You have [round(EVACUATION_ESTIMATE_DEPARTURE/60,1)] minute\s until departure.", 'sound/AI/evacuate.ogg') - xeno_message_all("A wave of adrenaline ripples through the hive. The fleshy creatures are trying to escape!") - - for(var/obj/structure/machinery/status_display/SD in machines) - if(is_mainship_level(SD.z)) - SD.set_picture("evac") - for(var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle in SSshuttle.mobile) - shuttle.prepare_evac() - activate_lifeboats() - process_evacuation() - return TRUE - -/datum/authority/branch/evacuation/proc/cancel_evacuation() //Cancels the evac procedure. Useful if admins do not want the marines leaving. - if(evac_status == EVACUATION_STATUS_INITIATING) - evac_time = null - evac_status = EVACUATION_STATUS_STANDING_BY - deactivate_lifeboats() - ai_announcement("Evacuation has been cancelled.", 'sound/AI/evacuate_cancelled.ogg') - - if(get_security_level() == "red") - for(var/obj/structure/machinery/status_display/SD in machines) - if(is_mainship_level(SD.z)) - SD.set_picture("redalert") - - for(var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle in SSshuttle.mobile) - shuttle.cancel_evac() - return TRUE - -/datum/authority/branch/evacuation/proc/begin_launch() //Launches the pods. - if(evac_status == EVACUATION_STATUS_INITIATING) - evac_status = EVACUATION_STATUS_IN_PROGRESS //Cannot cancel at this point. All shuttles are off. - spawn() //One of the few times spawn() is appropriate. No need for a new proc. - ai_announcement("WARNING: Evacuation order confirmed. Launching escape pods.", 'sound/AI/evacuation_confirmed.ogg') - addtimer(CALLBACK(src, PROC_REF(launch_lifeboats)), 10 SECONDS) // giving some time to board lifeboats - - for(var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle in SSshuttle.mobile) - shuttle.evac_launch() - sleep(50) - - sleep(300) //Sleep 30 more seconds to make sure everyone had a chance to leave. - var/lifesigns = 0 - // lifesigns += P.passengers - var/obj/docking_port/mobile/crashable/lifeboat/lifeboat1 = SSshuttle.getShuttle(MOBILE_SHUTTLE_LIFEBOAT_PORT) - lifeboat1.check_for_survivors() - lifesigns += lifeboat1.survivors - var/obj/docking_port/mobile/crashable/lifeboat/lifeboat2 = SSshuttle.getShuttle(MOBILE_SHUTTLE_LIFEBOAT_STARBOARD) - lifeboat2.check_for_survivors() - lifesigns += lifeboat2.survivors - ai_announcement("ATTENTION: Evacuation complete. Outbound lifesigns detected: [lifesigns ? lifesigns : "none"].", 'sound/AI/evacuation_complete.ogg') - evac_status = EVACUATION_STATUS_COMPLETE - return TRUE - -/datum/authority/branch/evacuation/proc/process_evacuation() //Process the timer. - set background = 1 - - spawn while(evac_status == EVACUATION_STATUS_INITIATING) //If it's not departing, no need to process. - if(world.time >= evac_time + EVACUATION_AUTOMATIC_DEPARTURE) begin_launch() - sleep(10) //One second. - -/datum/authority/branch/evacuation/proc/get_status_panel_eta() - switch(evac_status) - if(EVACUATION_STATUS_INITIATING) - var/eta = EVACUATION_ESTIMATE_DEPARTURE - . = "[(eta / 60) % 60]:[add_zero(num2text(eta % 60), 2)]" - if(EVACUATION_STATUS_IN_PROGRESS) . = "NOW" - -// LIFEBOATS CORNER -/datum/authority/branch/evacuation/proc/activate_lifeboats() - for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) - var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = lifeboat_dock.get_docked() - if(lifeboat && lifeboat.available) - lifeboat.status = LIFEBOAT_ACTIVE - lifeboat_dock.open_dock() - - -/datum/authority/branch/evacuation/proc/deactivate_lifeboats() - for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) - var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = lifeboat_dock.get_docked() - if(lifeboat && lifeboat.available) - lifeboat.status = LIFEBOAT_INACTIVE - -/datum/authority/branch/evacuation/proc/launch_lifeboats() - for(var/obj/docking_port/stationary/lifeboat_dock/lifeboat_dock in GLOB.lifeboat_almayer_docks) - var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = lifeboat_dock.get_docked() - if(lifeboat && lifeboat.available) - lifeboat.evac_launch() - -//========================================================================================= -//========================================================================================= -//=====================================SELF DETRUCT======================================== -//========================================================================================= -//========================================================================================= - -/datum/authority/branch/evacuation/proc/enable_self_destruct(force=0) - if(force || (dest_status == NUKE_EXPLOSION_INACTIVE && !(flags_scuttle & FLAGS_SELF_DESTRUCT_DENY))) - dest_status = NUKE_EXPLOSION_ACTIVE - dest_master.lock_or_unlock() - dest_started_at = world.time - set_security_level(SEC_LEVEL_DELTA) //also activate Delta alert, to open the SD shutters. - spawn(0) - for(var/obj/structure/machinery/door/poddoor/shutters/almayer/D in machines) - if(D.id == "sd_lockdown") - D.open() - return TRUE - -//Override is for admins bypassing normal player restrictions. -/datum/authority/branch/evacuation/proc/cancel_self_destruct(override) - if(dest_status == NUKE_EXPLOSION_ACTIVE) - var/obj/structure/machinery/self_destruct/rod/I - var/i - for(i in EvacuationAuthority.dest_rods) - I = i - if(I.active_state == SELF_DESTRUCT_MACHINE_ARMED && !override) - dest_master.state(SPAN_WARNING("WARNING: Unable to cancel detonation. Please disarm all control rods.")) - return FALSE - - dest_status = NUKE_EXPLOSION_INACTIVE - dest_master.in_progress = 1 - dest_started_at = 0 - for(i in dest_rods) - I = i - if(I.active_state == SELF_DESTRUCT_MACHINE_ACTIVE || (I.active_state == SELF_DESTRUCT_MACHINE_ARMED && override)) I.lock_or_unlock(1) - dest_master.lock_or_unlock(1) - dest_index = 1 - ai_announcement("The emergency destruct system has been deactivated.", 'sound/AI/selfdestruct_deactivated.ogg') - if(evac_status == EVACUATION_STATUS_STANDING_BY) //the evac has also been cancelled or was never started. - set_security_level(SEC_LEVEL_RED, TRUE) //both SD and evac are inactive, lowering the security level. - return TRUE - -/datum/authority/branch/evacuation/proc/initiate_self_destruct(override) - if(dest_status < NUKE_EXPLOSION_IN_PROGRESS) - var/obj/structure/machinery/self_destruct/rod/I - var/i - for(i in dest_rods) - I = i - if(I.active_state != SELF_DESTRUCT_MACHINE_ARMED && !override) - dest_master.state(SPAN_WARNING("WARNING: Unable to trigger detonation. Please arm all control rods.")) - return FALSE - dest_master.in_progress = !dest_master.in_progress - for(i in EvacuationAuthority.dest_rods) - I = i - I.in_progress = 1 - ai_announcement("DANGER. DANGER. Self-destruct system activated. DANGER. DANGER. Self-destruct in progress. DANGER. DANGER.") - trigger_self_destruct(,,override) - return TRUE - -/datum/authority/branch/evacuation/proc/trigger_self_destruct(list/z_levels = SSmapping.levels_by_trait(ZTRAIT_MARINE_MAIN_SHIP), origin = dest_master, override = FALSE, end_type = NUKE_EXPLOSION_FINISHED, play_anim = TRUE, end_round = TRUE) - set waitfor = 0 - if(dest_status < NUKE_EXPLOSION_IN_PROGRESS) //One more check for good measure, in case it's triggered through a bomb instead of the destruct mechanism/admin panel. - dest_status = NUKE_EXPLOSION_IN_PROGRESS - playsound(origin, 'sound/machines/Alarm.ogg', 75, 0, 30) - world << pick('sound/theme/nuclear_detonation1.ogg','sound/theme/nuclear_detonation2.ogg') - - var/ship_status = 1 - for(var/i in z_levels) - if(is_mainship_level(i)) - ship_status = 0 //Destroyed. - break - - var/list/alive_mobs = list() //Everyone who will be destroyed on the zlevel(s). - var/list/dead_mobs = list() //Everyone who only needs to see the cinematic. - for(var/mob/current_mob as anything in GLOB.mob_list) //This only does something cool for the people about to die, but should prove pretty interesting. - var/turf/current_turf = get_turf(current_mob) - if(!current_mob || !current_mob.loc || !current_turf) - continue //In case something changes when we sleep(). - if(current_mob.stat == DEAD) - dead_mobs |= current_mob - continue - if(current_turf.z in z_levels) - alive_mobs |= current_mob - shake_camera(current_mob, 110, 4) - - - sleep(100) - /*Hardcoded for now, since this was never really used for anything else. - Would ideally use a better system for showing cutscenes.*/ - var/atom/movable/screen/cinematic/explosion/C = new - - if(play_anim) - for(var/mob/current_mob as anything in alive_mobs + dead_mobs) - if(current_mob && current_mob.loc && current_mob.client) - current_mob.client.add_to_screen(C) //They may have disconnected in the mean time. - - sleep(15) //Extra 1.5 seconds to look at the ship. - flick(override ? "intro_override" : "intro_nuke", C) - sleep(35) - for(var/mob/current_mob in alive_mobs) - if(current_mob && current_mob.loc) //Who knows, maybe they escaped, or don't exist anymore. - var/turf/current_mob_turf = get_turf(current_mob) - if(!current_mob_turf) - continue - if(current_mob_turf.z in z_levels) - if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) - continue - current_mob.death(create_cause_data("nuclear explosion")) - else - if(play_anim) - current_mob.client.remove_from_screen(C) //those who managed to escape the z level at last second shouldn't have their view obstructed. - if(play_anim) - flick(ship_status ? "ship_spared" : "ship_destroyed", C) - C.icon_state = ship_status ? "summary_spared" : "summary_destroyed" - world << sound('sound/effects/explosionfar.ogg') - - if(end_round) - dest_status = end_type - - sleep(5) - if(SSticker.mode) - SSticker.mode.check_win() - - if(!SSticker.mode) //Just a safety, just in case a mode isn't running, somehow. - to_world(SPAN_ROUNDBODY("Resetting in 30 seconds!")) - sleep(300) - log_game("Rebooting due to nuclear detonation.") - world.Reboot() - return TRUE - -/datum/authority/branch/evacuation/proc/process_self_destruct() - set background = 1 - - spawn while(dest_master && dest_master.loc && dest_master.active_state == SELF_DESTRUCT_MACHINE_ARMED && dest_status == NUKE_EXPLOSION_ACTIVE && dest_index <= dest_rods.len) - var/obj/structure/machinery/self_destruct/rod/I = dest_rods[dest_index] - if(world.time >= dest_cooldown + I.activate_time) - I.lock_or_unlock() //Unlock it. - if(++dest_index <= dest_rods.len) - I = dest_rods[dest_index]//Start the next sequence. - I.activate_time = world.time - sleep(10) //Checks every second. Could integrate into another controller for better tracking. - -//Generic parent base for the self_destruct items. -/obj/structure/machinery/self_destruct - icon = 'icons/obj/structures/machinery/self_destruct.dmi' - icon_state = "console_1" - var/base_icon_state = "console" - use_power = USE_POWER_NONE //Runs unpowered, may need to change later. - density = FALSE - anchored = TRUE //So it doesn't go anywhere. - unslashable = TRUE - unacidable = TRUE //Cannot C4 it either. - mouse_opacity = FALSE //No need to click or interact with this initially. - var/in_progress = 0 //Cannot interact with while it's doing something, like an animation. - var/active_state = SELF_DESTRUCT_MACHINE_INACTIVE //What step of the process it's on. - -/obj/structure/machinery/self_destruct/Initialize(mapload, ...) - . = ..() - icon_state = "[base_icon_state]_1" - -/obj/structure/machinery/self_destruct/Destroy() - . = ..() - machines -= src - operator = null - -/obj/structure/machinery/self_destruct/ex_act(severity) - return FALSE - -/obj/structure/machinery/self_destruct/attack_hand() - if(..() || in_progress) - return FALSE //This check is backward, ugh. - return TRUE - -//Add sounds. -/obj/structure/machinery/self_destruct/proc/lock_or_unlock(lock) - set waitfor = 0 - in_progress = 1 - flick("[base_icon_state]" + (lock? "_5" : "_2"),src) - sleep(9) - mouse_opacity = !mouse_opacity - icon_state = "[base_icon_state]" + (lock? "_1" : "_3") - in_progress = 0 - active_state = active_state > SELF_DESTRUCT_MACHINE_INACTIVE ? SELF_DESTRUCT_MACHINE_INACTIVE : SELF_DESTRUCT_MACHINE_ACTIVE - -/obj/structure/machinery/self_destruct/console - name = "self-destruct control panel" - icon_state = "console_1" - base_icon_state = "console" - req_one_access = list(ACCESS_MARINE_CO, ACCESS_MARINE_SENIOR) - -/obj/structure/machinery/self_destruct/console/Destroy() - . = ..() - EvacuationAuthority.dest_master = null - EvacuationAuthority.dest_rods = null - -/obj/structure/machinery/self_destruct/console/lock_or_unlock(lock) - playsound(src, 'sound/machines/hydraulics_1.ogg', 25, 1) - ..() - -//TODO: Add sounds. -/obj/structure/machinery/self_destruct/console/attack_hand(mob/user) - if(inoperable()) - return - - tgui_interact(user) - -/obj/structure/machinery/self_destruct/console/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "SelfDestructConsole", name) - ui.open() - -/obj/structure/machinery/sleep_console/ui_status(mob/user, datum/ui_state/state) - . = ..() - if(inoperable()) - return UI_CLOSE - - -/obj/structure/machinery/self_destruct/console/ui_data(mob/user) - var/list/data = list() - - data["dest_status"] = active_state - - return data - -/obj/structure/machinery/self_destruct/console/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) - . = ..() - if(.) - return - - switch(action) - if("dest_start") - to_chat(usr, SPAN_NOTICE("You press a few keys on the panel.")) - to_chat(usr, SPAN_NOTICE("The system must be booting up the self-destruct sequence now.")) - playsound(src.loc, 'sound/items/rped.ogg', 25, TRUE) - sleep(2 SECONDS) - ai_announcement("Danger. The emergency destruct system is now activated. The ship will detonate in T-minus 20 minutes. Automatic detonation is unavailable. Manual detonation is required.", 'sound/AI/selfdestruct.ogg') - active_state = SELF_DESTRUCT_MACHINE_ARMED //Arm it here so the process can execute it later. - var/obj/structure/machinery/self_destruct/rod/I = EvacuationAuthority.dest_rods[EvacuationAuthority.dest_index] - I.activate_time = world.time - EvacuationAuthority.process_self_destruct() - . = TRUE - - if("dest_trigger") - EvacuationAuthority.initiate_self_destruct() - . = TRUE - - if("dest_cancel") - if(!allowed(usr)) - to_chat(usr, SPAN_WARNING("You don't have the necessary clearance to cancel the emergency destruct system!")) - return - EvacuationAuthority.cancel_self_destruct() - . = TRUE - -/obj/structure/machinery/self_destruct/rod - name = "self-destruct control rod" - desc = "It is part of a complicated self-destruct sequence, but relatively simple to operate. Twist to arm or disarm." - icon_state = "rod_1" - base_icon_state = "rod" - layer = BELOW_OBJ_LAYER - var/activate_time - -/obj/structure/machinery/self_destruct/rod/Destroy() - . = ..() - if(EvacuationAuthority && EvacuationAuthority.dest_rods) - EvacuationAuthority.dest_rods -= src - -/obj/structure/machinery/self_destruct/rod/lock_or_unlock(lock) - playsound(src, 'sound/machines/hydraulics_2.ogg', 25, 1) - ..() - if(lock) - activate_time = null - density = FALSE - layer = initial(layer) - else - density = TRUE - layer = ABOVE_OBJ_LAYER - -/obj/structure/machinery/self_destruct/rod/attack_hand(mob/user) - if(..()) - switch(active_state) - if(SELF_DESTRUCT_MACHINE_ACTIVE) - to_chat(user, SPAN_NOTICE("You twist and release the control rod, arming it.")) - playsound(src, 'sound/machines/switch.ogg', 25, 1) - icon_state = "rod_4" - active_state = SELF_DESTRUCT_MACHINE_ARMED - if(SELF_DESTRUCT_MACHINE_ARMED) - to_chat(user, SPAN_NOTICE("You twist and release the control rod, disarming it.")) - playsound(src, 'sound/machines/switch.ogg', 25, 1) - icon_state = "rod_3" - active_state = SELF_DESTRUCT_MACHINE_ACTIVE - else to_chat(user, SPAN_WARNING("The control rod is not ready.")) diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index df04873ac140..7b1c695ade2b 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -297,29 +297,25 @@ if(SSticker.current_state != GAME_STATE_PLAYING) return - var/living_player_list[] = count_humans_and_xenos(EvacuationAuthority.get_affected_zlevels()) + var/living_player_list[] = count_humans_and_xenos(get_affected_zlevels()) var/num_humans = living_player_list[1] var/num_xenos = living_player_list[2] if(force_end_at && world.time > force_end_at) round_finished = MODE_INFESTATION_X_MINOR - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_FINISHED) - round_finished = MODE_GENERIC_DRAW_NUKE //Nuke went off, ending the round. - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_GROUND_FINISHED) - round_finished = MODE_INFESTATION_M_MINOR //Nuke went off, ending the round. - if(EvacuationAuthority.dest_status < NUKE_EXPLOSION_IN_PROGRESS) //If the nuke ISN'T in progress. We do not want to end the round before it detonates. - if(!num_humans && num_xenos) //No humans remain alive. - round_finished = MODE_INFESTATION_X_MAJOR //Evacuation did not take place. Everyone died. - else if(num_humans && !num_xenos) - if(SSticker.mode && SSticker.mode.is_in_endgame) - round_finished = MODE_INFESTATION_X_MINOR //Evacuation successfully took place. - else - SSticker.roundend_check_paused = TRUE - round_finished = MODE_INFESTATION_M_MAJOR //Humans destroyed the xenomorphs. - ares_conclude() - addtimer(VARSET_CALLBACK(SSticker, roundend_check_paused, FALSE), MARINE_MAJOR_ROUND_END_DELAY) - else if(!num_humans && !num_xenos) - round_finished = MODE_INFESTATION_DRAW_DEATH //Both were somehow destroyed. + + if(!num_humans && num_xenos) //No humans remain alive. + round_finished = MODE_INFESTATION_X_MAJOR //Evacuation did not take place. Everyone died. + else if(num_humans && !num_xenos) + if(SSticker.mode && SSticker.mode.is_in_endgame) + round_finished = MODE_INFESTATION_X_MINOR //Evacuation successfully took place. + else + SSticker.roundend_check_paused = TRUE + round_finished = MODE_INFESTATION_M_MAJOR //Humans destroyed the xenomorphs. + ares_conclude() + addtimer(VARSET_CALLBACK(SSticker, roundend_check_paused, FALSE), MARINE_MAJOR_ROUND_END_DELAY) + else if(!num_humans && !num_xenos) + round_finished = MODE_INFESTATION_DRAW_DEATH //Both were somehow destroyed. /datum/game_mode/colonialmarines/check_queen_status(hivenumber) set waitfor = 0 @@ -367,7 +363,7 @@ round_statistics.current_map.total_marine_victories++ round_statistics.current_map.total_marine_majors++ if(MODE_INFESTATION_X_MINOR) - var/list/living_player_list = count_humans_and_xenos(EvacuationAuthority.get_affected_zlevels()) + var/list/living_player_list = count_humans_and_xenos(get_affected_zlevels()) if(living_player_list[1] && !living_player_list[2]) // If Xeno Minor but Xenos are dead and Humans are alive, see which faction is the last standing var/headcount = count_per_faction() var/living = headcount["total_headcount"] diff --git a/code/game/gamemodes/extended/infection.dm b/code/game/gamemodes/extended/infection.dm index 04e0545361aa..a6b909022aef 100644 --- a/code/game/gamemodes/extended/infection.dm +++ b/code/game/gamemodes/extended/infection.dm @@ -95,7 +95,7 @@ possible_survivors -= new_survivor //either we drafted a survivor, or we're skipping over someone, either or - remove them /datum/game_mode/infection/check_win() - var/living_player_list[] = count_humans_and_xenos(EvacuationAuthority.get_affected_zlevels()) + var/list/living_player_list = count_humans_and_xenos(get_affected_zlevels()) var/num_humans = living_player_list[1] var/zed = living_player_list[2] diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 5382d80f37a2..e467631c915e 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -111,6 +111,10 @@ var/global/cas_tracking_id_increment = 0 //this var used to assign unique tracki log_game("Server IP: [world.internet_address]:[world.port]") return TRUE +/datum/game_mode/proc/get_affected_zlevels() + if(is_in_endgame) + . = SSmapping.levels_by_any_trait(list(ZTRAIT_MARINE_MAIN_SHIP)) + return ///process() ///Called by the gameticker @@ -119,8 +123,7 @@ var/global/cas_tracking_id_increment = 0 //this var used to assign unique tracki /datum/game_mode/proc/check_finished() //to be called by ticker - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_FINISHED || EvacuationAuthority.dest_status == NUKE_EXPLOSION_GROUND_FINISHED ) - return TRUE + return /datum/game_mode/proc/cleanup() //This is called when the round has ended but not the game, if any cleanup would be necessary in that case. return diff --git a/code/game/machinery/ARES/ARES_interface.dm b/code/game/machinery/ARES/ARES_interface.dm index 64755897bc8e..0e45d5ee171b 100644 --- a/code/game/machinery/ARES/ARES_interface.dm +++ b/code/game/machinery/ARES/ARES_interface.dm @@ -79,7 +79,7 @@ data["access_level"] = authentication data["alert_level"] = security_level - data["evac_status"] = EvacuationAuthority.evac_status + data["evac_status"] = SShijack.evac_status data["worldtime"] = world.time data["access_log"] = datacore.interface_access_list @@ -397,12 +397,12 @@ playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE - if(EvacuationAuthority.flags_scuttle & FLAGS_EVACUATION_DENY) + if(SShijack.evac_admin_denied) to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE - if(!EvacuationAuthority.initiate_evacuation()) + if(!SShijack.initiate_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE diff --git a/code/game/machinery/computer/almayer_control.dm b/code/game/machinery/computer/almayer_control.dm index 145d0d278cb6..fb9f7a0375d9 100644 --- a/code/game/machinery/computer/almayer_control.dm +++ b/code/game/machinery/computer/almayer_control.dm @@ -81,9 +81,9 @@ data["worldtime"] = world.time - data["evac_status"] = EvacuationAuthority.evac_status - if(EvacuationAuthority.evac_status == EVACUATION_STATUS_INITIATING) - data["evac_eta"] = EvacuationAuthority.get_status_panel_eta() + data["evac_status"] = SShijack.evac_status + if(SShijack.evac_status == EVACUATION_STATUS_INITIATED) + data["evac_eta"] = SShijack.get_evac_eta() if(!messagetitle.len) data["messages"] = null @@ -120,11 +120,11 @@ to_chat(usr, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures.")) return FALSE - if(EvacuationAuthority.flags_scuttle & FLAGS_EVACUATION_DENY) + if(SShijack.evac_admin_denied) to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) return FALSE - if(!EvacuationAuthority.initiate_evacuation()) + if(!SShijack.initiate_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) return FALSE @@ -134,12 +134,10 @@ . = TRUE if("evacuation_cancel") - if(!EvacuationAuthority.cancel_evacuation()) + if(!SShijack.cancel_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to cancel the evacuation right now!")) return FALSE - addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/machinery/computer/almayer_control, cancel_evac)), 4 SECONDS) - log_game("[key_name(usr)] has canceled the emergency evacuation.") message_admins("[key_name_admin(usr)] has canceled the emergency evacuation.") log_ares_security("Cancel Evacuation", "[usr] has cancelled the emergency evacuation.") @@ -276,10 +274,3 @@ // end tgui interact \\ // end tgui \\ - -/obj/structure/machinery/computer/almayer_control/proc/cancel_evac() - if(EvacuationAuthority.evac_status == EVACUATION_STATUS_STANDING_BY)//nothing changed during the wait - //if the self_destruct is active we try to cancel it (which includes lowering alert level to red) - if(!EvacuationAuthority.cancel_self_destruct(1)) - //if SD wasn't active (likely canceled manually in the SD room), then we lower the alert level manually. - set_security_level(SEC_LEVEL_RED, TRUE) //both SD and evac are inactive, lowering the security level. diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index d4d45de8db4e..3332577683fe 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -138,11 +138,11 @@ to_chat(usr, SPAN_WARNING("The ship must be under delta alert in order to enact evacuation procedures.")) return FALSE - if(EvacuationAuthority.flags_scuttle & FLAGS_EVACUATION_DENY) + if(SShijack.evac_admin_denied) to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) return FALSE - if(!EvacuationAuthority.initiate_evacuation()) + if(!SShijack.initiate_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) return FALSE @@ -155,17 +155,10 @@ if("evacuation_cancel") if(state == STATE_EVACUATION_CANCEL) - if(!EvacuationAuthority.cancel_evacuation()) + if(!SShijack.cancel_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to cancel the evacuation right now!")) return FALSE - spawn(35)//some time between AI announcements for evac cancel and SD cancel. - if(EvacuationAuthority.evac_status == EVACUATION_STATUS_STANDING_BY)//nothing changed during the wait - //if the self_destruct is active we try to cancel it (which includes lowering alert level to red) - if(!EvacuationAuthority.cancel_self_destruct(1)) - //if SD wasn't active (likely canceled manually in the SD room), then we lower the alert level manually. - set_security_level(SEC_LEVEL_RED, TRUE) //both SD and evac are inactive, lowering the security level. - log_game("[key_name(usr)] has canceled the emergency evacuation.") message_admins("[key_name_admin(usr)] has canceled the emergency evacuation.") log_ares_security("Cancel Evacuation", "[usr] has cancelled the emergency evacuation.") @@ -327,8 +320,8 @@ user.set_interaction(src) var/dat = "Communications Console" - if(EvacuationAuthority.evac_status == EVACUATION_STATUS_INITIATING) - dat += "Evacuation in Progress\n
\nETA: [EvacuationAuthority.get_status_panel_eta()]
" + if(SShijack.evac_status == EVACUATION_STATUS_INITIATED) + dat += "Evacuation in Progress\n
\nETA: [SShijack.get_evac_eta()]
" switch(state) if(STATE_DEFAULT) if(authenticated) @@ -351,9 +344,11 @@ dat += "
Award a medal" dat += "
Send Distress Beacon" dat += "
Activate Self-Destruct" - switch(EvacuationAuthority.evac_status) - if(EVACUATION_STATUS_STANDING_BY) dat += "
Initiate emergency evacuation" - if(EVACUATION_STATUS_INITIATING) dat += "
Cancel emergency evacuation" + switch(SShijack.evac_status) + if(EVACUATION_STATUS_NOT_INITIATED) + dat += "
Initiate emergency evacuation" + if(EVACUATION_STATUS_INITIATED) + dat += "
Cancel emergency evacuation" else dat += "
LOG IN" @@ -408,20 +403,8 @@ if(STATE_ALERT_LEVEL) dat += "Current alert level: [get_security_level()]
" - if(security_level == SEC_LEVEL_DELTA) - if(EvacuationAuthority.dest_status >= NUKE_EXPLOSION_ACTIVE) - dat += SET_CLASS("The self-destruct mechanism is active. [EvacuationAuthority.evac_status != EVACUATION_STATUS_INITIATING ? "You have to manually deactivate the self-destruct mechanism." : ""]", INTERFACE_RED) - dat += "
" - switch(EvacuationAuthority.evac_status) - if(EVACUATION_STATUS_INITIATING) - dat += SET_CLASS("Evacuation initiated. Evacuate or rescind evacuation orders.", INTERFACE_RED) - if(EVACUATION_STATUS_IN_PROGRESS) - dat += SET_CLASS("Evacuation in progress.", INTERFACE_RED) - if(EVACUATION_STATUS_COMPLETE) - dat += SET_CLASS("Evacuation complete.", INTERFACE_RED) - else - dat += "Blue
" - dat += "Green" + dat += "Blue
" + dat += "Green" if(STATE_CONFIRM_LEVEL) dat += "Current alert level: [get_security_level()]
" diff --git a/code/game/machinery/fusion_engine.dm b/code/game/machinery/fusion_engine.dm index 4158727e3745..8e3097ef52d1 100644 --- a/code/game/machinery/fusion_engine.dm +++ b/code/game/machinery/fusion_engine.dm @@ -15,6 +15,7 @@ unacidable = TRUE //NOPE.jpg anchored = TRUE density = TRUE + power_machine = TRUE var/power_gen_percent = 0 //50,000W at full capacity var/buildstate = 0 //What state of building it are we on, 0-3, 1 is "broken", the default @@ -24,7 +25,8 @@ var/obj/item/fuelCell/fusion_cell = new //Starts with a fuel cell loaded in. Maybe replace with the plasma tanks in the future and have it consume plasma? Possibly remove this later if it's irrelevent... var/fuel_rate = 0 //Rate at which fuel is used. Based mostly on how long the generator has been running. - power_machine = TRUE + /// If the generator is overloaded. Only possible during hijack once fuel is at 100%. + var/overloaded = FALSE /obj/structure/machinery/power/fusion_engine/Initialize(mapload, ...) . = ..() @@ -35,11 +37,25 @@ /obj/structure/machinery/power/fusion_engine/Destroy() QDEL_NULL(fusion_cell) - . = ..() + return ..() +/obj/structure/machinery/power/fusion_engine/attack_alien(mob/living/carbon/xenomorph/xeno) + if(!overloaded) + to_chat(xeno, SPAN_WARNING("You see no reason to attack [src].")) + return XENO_NO_DELAY_ACTION + + xeno.animation_attack_on(src) + playsound(src, 'sound/effects/metalhit.ogg', 25, 1) + xeno.visible_message(SPAN_DANGER("[xeno] [xeno.slashes_verb] [src], stopping its overload process!"), \ + SPAN_DANGER("You [xeno.slash_verb] [src], stopping its overload process!"), null, 5, CHAT_TYPE_XENO_COMBAT) + set_overloading(FALSE) + return XENO_ATTACK_ACTION /obj/structure/machinery/power/fusion_engine/power_change() - return + . = ..() + if(overloaded) + set_overloading(FALSE) + visible_message("[icon2html(src, viewers(src))] [src]'s overload suddenly ceases as primary power is lost.") /obj/structure/machinery/power/fusion_engine/process() if(!is_on || buildstate || !anchored || !powernet || !fusion_cell) //Default logic checking @@ -60,9 +76,18 @@ stop_processing() return FALSE - if(!check_failure()) + if(overloaded && prob(1)) // up to 18 generators at 1% every 3.5 seconds means that every ~21 seconds or so, one generator will make noise assuming all are overloaded + switch(rand(1, 2)) + if(1) + visible_message("[icon2html(src, viewers(src))] [SPAN_NOTICE("[src] loudly hums.")]") + playsound(src, 'sound/machines/resource_node/node_idle.ogg', 60, TRUE) + if(2) + visible_message("[icon2html(src, viewers(src))] [SPAN_NOTICE("[src] makes a worrying hiss.")]") + playsound(src, 'sound/machines/hiss.ogg', 60, TRUE) - if(power_gen_percent < 100) power_gen_percent++ + if(!check_failure()) + if(power_gen_percent < 100) + power_gen_percent++ switch(power_gen_percent) //Flavor text! if(10) @@ -96,6 +121,10 @@ to_chat(user, SPAN_NOTICE("Use a wrench to repair it.")) return FALSE if(is_on) + if(overloaded) + to_chat(user, SPAN_WARNING("You can't shut off [src] while it's overloaded!")) + return + visible_message("[icon2html(src, viewers(src))] [SPAN_WARNING("[src] beeps softly and the humming stops as [usr] shuts off the generator.")]") is_on = 0 power_gen_percent = 0 @@ -208,11 +237,18 @@ if(buildstate) to_chat(user, SPAN_WARNING("You must repair the generator before working with its fuel cell.")) return + + if(overloaded) + to_chat(user, SPAN_WARNING("You must restore the safeties on the generator before working with its fuel cell.")) + return + if(is_on) to_chat(user, SPAN_WARNING("You must turn off the generator before working with its fuel cell.")) return + if(!fusion_cell) to_chat(user, SPAN_WARNING("There is no cell to remove.")) + else if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) user.visible_message(SPAN_WARNING("[user] fumbles around figuring out [src]'s fuel receptacle."), @@ -232,23 +268,73 @@ fusion_cell = null update_icon() return TRUE + + else if(HAS_TRAIT(O, TRAIT_TOOL_MULTITOOL)) + if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) + to_chat(user, SPAN_WARNING("You have no idea what to do with [src].")) + return + + if(!overloaded) + if(!SShijack.sd_unlocked) + to_chat(user, SPAN_WARNING("You consider overloading [src]'s safeties, but you decide against it.")) + return + + if(inoperable()) + to_chat(user, SPAN_WARNING("[src] needs to be working and have external power in order to overload it!")) + return + + to_chat(user, SPAN_WARNING("You start overloading the safeties on [src]...")) + if(!do_after(user, 1.5 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + return + + if(inoperable()) + return + + to_chat(user, SPAN_WARNING("You finish overloading the safeties on [src].")) + set_overloading(TRUE) + log_game("[key_name(user)] has overloaded a generator.") + + else + to_chat(user, SPAN_WARNING("You start restoring the safeties on [src]...")) + if(!do_after(user, 1.5 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + return + + if(inoperable()) + return + + to_chat(user, SPAN_WARNING("You finish restoring the safeties on [src].")) + log_game("[key_name(user)] has restored the safeties of a generator.") + set_overloading(FALSE) + + return TRUE + else return ..() /obj/structure/machinery/power/fusion_engine/get_examine_text(mob/user) . = ..() - if(ishuman(user)) + if(isxeno(user)) + if(overloaded) + . += SPAN_INFO("You could attack this to stop the overload process.") + + else if(ishuman(user)) if(buildstate) . += SPAN_INFO("It's broken.") switch(buildstate) if(1) - . += SPAN_INFO("Use a blowtorch, then wirecutters, then wrench to repair it.") + . += SPAN_INFO("Use a blowtorch, then wirecutters, then wrench to repair it.") if(2) - . += SPAN_INFO("Use a wirecutters, then wrench to repair it.") + . += SPAN_INFO("Use a wirecutters, then wrench to repair it.") if(3) - . += SPAN_INFO("Use a wrench to repair it.") + . += SPAN_INFO("Use a wrench to repair it.") return FALSE + if(SShijack.sd_unlocked && skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) + if(!overloaded) + . += SPAN_INFO("You could overload this with a multitool.") + else + . += SPAN_INFO("You could restore its safeties with a multitool.") + if(!is_on) . += SPAN_INFO("It looks offline.") else @@ -274,18 +360,21 @@ switch(buildstate) if(0) if(fusion_cell) - var/pstatus = is_on ? "on" : "off" - switch(fusion_cell.get_fuel_percent()) - if(0 to 10) - icon_state = "[pstatus]-10" - if(10 to 25) - icon_state = "[pstatus]-25" - if(25 to 50) - icon_state = "[pstatus]-50" - if(50 to 75) - icon_state = "[pstatus]-75" - if(75 to INFINITY) - icon_state = "[pstatus]-100" + if(overloaded) + icon_state = "overloaded" + else + var/pstatus = is_on ? "on" : "off" + switch(fusion_cell.get_fuel_percent()) + if(0 to 10) + icon_state = "[pstatus]-10" + if(10 to 25) + icon_state = "[pstatus]-25" + if(25 to 50) + icon_state = "[pstatus]-50" + if(50 to 75) + icon_state = "[pstatus]-75" + if(75 to INFINITY) + icon_state = "[pstatus]-100" else icon_state = "off" @@ -317,9 +406,13 @@ else return 0 +/obj/structure/machinery/power/fusion_engine/proc/set_overloading(new_overloading) + if(overloaded == new_overloading) + return - - + overloaded = new_overloading + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_GENERATOR_SET_OVERLOADING, overloaded) + update_icon() diff --git a/code/game/machinery/nuclearbomb.dm b/code/game/machinery/nuclearbomb.dm index 743f53e4f03b..28ebbecc7552 100644 --- a/code/game/machinery/nuclearbomb.dm +++ b/code/game/machinery/nuclearbomb.dm @@ -394,7 +394,38 @@ var/bomb_set = FALSE update_icon() safety = TRUE - EvacuationAuthority.trigger_self_destruct(list(z), src, FALSE, NUKE_EXPLOSION_GROUND_FINISHED, FALSE, end_round) + playsound(src, 'sound/machines/Alarm.ogg', 75, 0, 30) + world << pick('sound/theme/nuclear_detonation1.ogg','sound/theme/nuclear_detonation2.ogg') + + var/list/alive_mobs = list() //Everyone who will be destroyed on the zlevel(s). + var/list/dead_mobs = list() //Everyone who only needs to see the cinematic. + for(var/mob/current_mob as anything in GLOB.mob_list) + if(!current_mob?.loc) + continue + if(current_mob.stat == DEAD) + dead_mobs |= current_mob + continue + var/turf/current_turf = get_turf(current_mob) + if(z == current_turf.z) + alive_mobs |= current_mob + shake_camera(current_mob, 110, 4) + + for(var/mob/current_mob in alive_mobs) + if(current_mob && current_mob.loc) + var/turf/current_mob_turf = get_turf(current_mob) + if(z == current_mob_turf.z) + if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) + continue + current_mob.death(create_cause_data("nuclear explosion")) + + for(var/mob/current_mob in (alive_mobs + dead_mobs)) + if(current_mob && current_mob.loc) + var/turf/current_mob_turf = get_turf(current_mob) + if(z == current_mob_turf.z) + if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) + continue + for(var/obj/item/alien_embryo/embryo in current_mob) + qdel(embryo) sleep(100) cell_explosion(loc, 500, 150, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name))) diff --git a/code/game/machinery/sentry_holder.dm b/code/game/machinery/sentry_holder.dm index 61f87251282d..fe676e9103d2 100644 --- a/code/game/machinery/sentry_holder.dm +++ b/code/game/machinery/sentry_holder.dm @@ -10,13 +10,12 @@ idle_power_usage = 1000 power_channel = 1 use_power = USE_POWER_IDLE - machine_processing = 1 var/deployment_cooldown var/turret_path = /obj/structure/machinery/defenses/sentry/premade/deployable // Path of the turret used var/obj/structure/machinery/defenses/sentry/premade/deployable/deployed_turret var/ox = 0 var/oy = 0 - var/ind = FALSE + var/require_red_alert = FALSE /obj/structure/machinery/sentry_holder/Initialize() . = ..() @@ -36,34 +35,38 @@ . += "It's offline." /obj/structure/machinery/sentry_holder/attack_hand(mob/user) - if(deployed_turret) - if(deployment_cooldown > world.time) - to_chat(user, SPAN_WARNING("[src] is busy.")) - return //prevents spamming deployment/undeployment - if(deployed_turret.loc == src) //not deployed - if(stat & NOPOWER) - to_chat(user, SPAN_WARNING("[src] is non-functional.")) - else - to_chat(user, SPAN_NOTICE("You deploy [src].")) - deploy_sentry() - else - to_chat(user, SPAN_NOTICE("You retract [src].")) - undeploy_sentry() - else + if(!deployed_turret) to_chat(user, SPAN_WARNING("[src] is unresponsive.")) + return -/obj/structure/machinery/sentry_holder/process() - if(stat & NOPOWER) - if(deployed_turret) - undeploy_sentry() - ind = FALSE - else - icon_state = "sentry_system_destroyed" - else - update_use_power(USE_POWER_IDLE) - if(!ind) - deploy_sentry() - ind = TRUE + if(deployment_cooldown > world.time) + to_chat(user, SPAN_WARNING("[src] is busy.")) + return + + if(deployed_turret.loc == src) //not deployed + if(stat & NOPOWER) + to_chat(user, SPAN_WARNING("[src] is non-functional.")) + return + + if(require_red_alert && (seclevel2num(get_security_level()) < SEC_LEVEL_RED)) + to_chat(user, SPAN_WARNING("[src] can only be activated in emergencies.")) + return + + to_chat(user, SPAN_NOTICE("You deploy [src].")) + deploy_sentry() + return + + to_chat(user, SPAN_NOTICE("You retract [src].")) + undeploy_sentry() + return + +/obj/structure/machinery/sentry_holder/update_use_power(new_use_power) + ..() + + if(!(stat & NOPOWER)) + return + + undeploy_sentry() /obj/structure/machinery/sentry_holder/proc/deploy_sentry() if(!deployed_turret) @@ -111,3 +114,6 @@ desc = "A box that deploys a sentry turret for protection of the residents in the area." turret_path = /obj/structure/machinery/defenses/sentry/premade/deployable/colony +/obj/structure/machinery/sentry_holder/almayer + turret_path = /obj/structure/machinery/defenses/sentry/premade/deployable/almayer + require_red_alert = TRUE diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 6c6d2bda8b07..c56f8da36150 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -78,7 +78,7 @@ return 1 if(STATUS_DISPLAY_TRANSFER_SHUTTLE_TIME) //emergency shuttle timer message1 = "EVAC" - message2 = EvacuationAuthority.get_status_panel_eta() + message2 = SShijack.get_evac_eta() if(message2) if(length(message2) > CHARS_PER_LINE) message2 = "Error" update_display(message1, message2) @@ -163,6 +163,15 @@ if(maptext) maptext = "" +/obj/structure/machinery/status_display/proc/set_sec_level_picture() + switch(security_level) + if(SEC_LEVEL_GREEN) + set_picture("default") + if(SEC_LEVEL_BLUE) + set_picture("bluealert") + if(SEC_LEVEL_RED, SEC_LEVEL_DELTA) + set_picture("redalert") + /obj/structure/machinery/ai_status_display icon = 'icons/obj/structures/machinery/status_display.dmi' icon_state = "frame" diff --git a/code/game/objects/items/devices/cictablet.dm b/code/game/objects/items/devices/cictablet.dm index f355b39c468a..6abd70980136 100644 --- a/code/game/objects/items/devices/cictablet.dm +++ b/code/game/objects/items/devices/cictablet.dm @@ -61,7 +61,7 @@ var/list/data = list() data["alert_level"] = security_level - data["evac_status"] = EvacuationAuthority.evac_status + data["evac_status"] = SShijack.evac_status data["endtime"] = announcement_cooldown data["distresstime"] = distress_cooldown data["worldtime"] = world.time @@ -135,11 +135,11 @@ to_chat(usr, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures.")) return FALSE - if(EvacuationAuthority.flags_scuttle & FLAGS_EVACUATION_DENY) + if(SShijack.evac_admin_denied) to_chat(usr, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) return FALSE - if(!EvacuationAuthority.initiate_evacuation()) + if(!SShijack.initiate_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) return FALSE diff --git a/code/game/world.dm b/code/game/world.dm index 82a9ae45de12..f5388ed6fd52 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -71,8 +71,6 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") RoleAuthority = new /datum/authority/branch/role() to_world(SPAN_DANGER("\b Job setup complete")) - if(!EvacuationAuthority) EvacuationAuthority = new - initiate_minimap_icons() change_tick_lag(CONFIG_GET(number/ticklag)) diff --git a/code/modules/admin/player_panel/player_panel.dm b/code/modules/admin/player_panel/player_panel.dm index 12686e683521..4b79c8c91569 100644 --- a/code/modules/admin/player_panel/player_panel.dm +++ b/code/modules/admin/player_panel/player_panel.dm @@ -389,15 +389,15 @@ dat += "Round Duration: [round(world.time / 36000)]:[add_zero(world.time / 600 % 60, 2)]:[world.time / 100 % 6][world.time / 100 % 10]
" if(check_rights(R_DEBUG, 0)) - dat += "
VV Evacuation Controller
" dat += "VV Shuttle Controller

" if(check_rights(R_MOD, 0)) - dat += "Evacuation: " - switch(EvacuationAuthority.evac_status) - if(EVACUATION_STATUS_STANDING_BY) dat += "STANDING BY" - if(EVACUATION_STATUS_INITIATING) dat += "IN PROGRESS: [EvacuationAuthority.get_status_panel_eta()]" - if(EVACUATION_STATUS_COMPLETE) dat += "COMPLETE" + dat += "Evacuation Goals: " + switch(SShijack.evac_status) + if(EVACUATION_STATUS_NOT_INITIATED) + dat += "STANDING BY" + if(EVACUATION_STATUS_INITIATED) + dat += "IN PROGRESS" dat += "
" dat += "Initiate Evacuation
" @@ -405,20 +405,6 @@ dat += "Toggle Evacuation Permission (does not affect evac in progress)
" if(check_rights(R_ADMIN, 0)) dat += "Force Evacuation Now
" - if(check_rights(R_ADMIN, 0)) - dat += "Self-Destruct: " - switch(EvacuationAuthority.dest_status) - if(NUKE_EXPLOSION_INACTIVE) dat += "INACTIVE" - if(NUKE_EXPLOSION_ACTIVE) dat += "ACTIVE" - if(NUKE_EXPLOSION_IN_PROGRESS) dat += "IN PROGRESS" - if(NUKE_EXPLOSION_FINISHED, NUKE_EXPLOSION_GROUND_FINISHED) dat += "FINISHED" - dat += "
" - - dat += "Unlock Self-Destruct control panel for humans
" - dat += "Lock Self-Destruct control panel for humans
" - dat += "Destruct the [MAIN_SHIP_NAME] NOW
" - dat += "Toggle Self-Destruct Permission (does not affect evac in progress)
" - dat += "
[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]
" dat += "" show_browser(usr, dat, "Round Status", "roundstatus", "size=600x500") diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index 8bcd15cb04a9..fcc604c9cfa8 100644 --- a/code/modules/admin/tabs/event_tab.dm +++ b/code/modules/admin/tabs/event_tab.dm @@ -250,7 +250,7 @@ if(!SSticker.mode || !check_rights(R_ADMIN)) return set_security_level(SEC_LEVEL_RED) - EvacuationAuthority.initiate_evacuation() + SShijack.initiate_evacuation() message_admins("[key_name_admin(usr)] forced an emergency evacuation.") @@ -261,7 +261,7 @@ if(!SSticker.mode || !check_rights(R_ADMIN)) return - EvacuationAuthority.cancel_evacuation() + SShijack.cancel_evacuation() message_admins("[key_name_admin(usr)] canceled an emergency evacuation.") diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index f78b6a844d4b..d60377123c49 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -131,50 +131,20 @@ if(href_list["evac_authority"]) switch(href_list["evac_authority"]) if("init_evac") - if(!EvacuationAuthority.initiate_evacuation()) + if(!SShijack.initiate_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to initiate an evacuation right now!")) else message_admins("[key_name_admin(usr)] called an evacuation.") if("cancel_evac") - if(!EvacuationAuthority.cancel_evacuation()) + if(!SShijack.cancel_evacuation()) to_chat(usr, SPAN_WARNING("You are unable to cancel an evacuation right now!")) else message_admins("[key_name_admin(usr)] canceled an evacuation.") if("toggle_evac") - EvacuationAuthority.flags_scuttle ^= FLAGS_EVACUATION_DENY - message_admins("[key_name_admin(usr)] has [EvacuationAuthority.flags_scuttle & FLAGS_EVACUATION_DENY ? "forbidden" : "allowed"] ship-wide evacuation.") - - if("force_evac") - if(!EvacuationAuthority.begin_launch()) - to_chat(usr, SPAN_WARNING("You are unable to launch the pods directly right now!")) - else - message_admins("[key_name_admin(usr)] force-launched the escape pods.") - - if("init_dest") - if(!EvacuationAuthority.enable_self_destruct()) - to_chat(usr, SPAN_WARNING("You are unable to authorize the self-destruct right now!")) - else - message_admins("[key_name_admin(usr)] force-enabled the self-destruct system.") - - if("cancel_dest") - if(!EvacuationAuthority.cancel_self_destruct(1)) - to_chat(usr, SPAN_WARNING("You are unable to cancel the self-destruct right now!")) - else - message_admins("[key_name_admin(usr)] canceled the self-destruct system.") - - if("use_dest") - - var/confirm = alert("Are you sure you want to self-destruct the Almayer?", "Self-Destruct", "Yes", "Cancel") - if(confirm != "Yes") - return - message_admins("[key_name_admin(usr)] forced the self-destrust system, destroying the [MAIN_SHIP_NAME].") - EvacuationAuthority.trigger_self_destruct() - - if("toggle_dest") - EvacuationAuthority.flags_scuttle ^= FLAGS_SELF_DESTRUCT_DENY - message_admins("[key_name_admin(usr)] has [EvacuationAuthority.flags_scuttle & FLAGS_SELF_DESTRUCT_DENY ? "forbidden" : "allowed"] the self-destruct system.") + SShijack.evac_admin_denied = !SShijack.evac_admin_denied + message_admins("[key_name_admin(usr)] has [SShijack.evac_admin_denied ? "forbidden" : "allowed"] ship-wide evacuation.") //====================================================== //====================================================== diff --git a/code/modules/defenses/sentry.dm b/code/modules/defenses/sentry.dm index 10d1b16dd9c3..999df7c22579 100644 --- a/code/modules/defenses/sentry.dm +++ b/code/modules/defenses/sentry.dm @@ -526,6 +526,10 @@ choice_categories[SENTRY_CATEGORY_IFF] = list(FACTION_COLONY, FACTION_WEYLAND) selected_categories[SENTRY_CATEGORY_IFF] = FACTION_COLONY +/obj/structure/machinery/defenses/sentry/premade/deployable/almayer + fire_delay = 4 + omni_directional = TRUE + //the turret inside the shuttle sentry deployment system /obj/structure/machinery/defenses/sentry/premade/dropship density = TRUE diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 4d06d1e07142..ee8b69415003 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -1200,10 +1200,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp else . += "Hijack Over" - if(EvacuationAuthority) - var/eta_status = EvacuationAuthority.get_status_panel_eta() + if(SShijack) + var/eta_status = SShijack.get_evac_eta() if(eta_status) - . += "Evacuation: [eta_status]" + . += "Evacuation Goal: [eta_status]" + + if(SShijack.sd_unlocked) + . += "Self Destruct Goal: [SShijack.get_sd_eta()]" if(client.prefs?.be_special & BE_ALIEN_AFTER_DEATH) if(larva_queue_cached_message) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index c9092ed479b9..6bceb994a2a1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -123,10 +123,12 @@ if(marksman_aura) . += "Active Order: FOCUS" - if(EvacuationAuthority) - var/eta_status = EvacuationAuthority.get_status_panel_eta() + if(SShijack) + var/eta_status = SShijack.get_evac_eta() if(eta_status) - . += "Evacuation: [eta_status]" + . += "Evacuation Goals: [eta_status]" + if(SShijack.sd_unlocked) + . += "Self Destruct Status: [SShijack.get_sd_eta()]" /mob/living/carbon/human/ex_act(severity, direction, datum/cause_data/cause_data) if(lying) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index b0f08acc33fa..bccd74036658 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -83,10 +83,10 @@ // 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(EvacuationAuthority) - var/eta_status = EvacuationAuthority.get_status_panel_eta() + if(SShijack) + var/eta_status = SShijack.get_evac_eta() if(eta_status) - stat(null, "Evacuation: [eta_status]") + stat(null, "Evacuation Goal: [eta_status]") // this function displays the stations manifest in a separate window diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index dda2487c24d9..a6b654ba2da1 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -248,8 +248,8 @@ RoleAuthority.equip_role(character, player_rank, late_join = TRUE) EquipCustomItems(character) - if((security_level > SEC_LEVEL_BLUE || EvacuationAuthority.evac_status) && player_rank.gets_emergency_kit) - to_chat(character, SPAN_HIGHDANGER("As you stagger out of hypersleep, the sleep bay blares: '[EvacuationAuthority.evac_status ? "VESSEL UNDERGOING EVACUATION PROCEDURES, SELF DEFENSE KIT PROVIDED" : "VESSEL IN HEIGHTENED ALERT STATUS, SELF DEFENSE KIT PROVIDED"]'.")) + if((security_level > SEC_LEVEL_BLUE || SShijack.hijack_status) && player_rank.gets_emergency_kit) + to_chat(character, SPAN_HIGHDANGER("As you stagger out of hypersleep, the sleep bay blares: '[SShijack.evac_status ? "VESSEL UNDERGOING EVACUATION PROCEDURES, SELF DEFENSE KIT PROVIDED" : "VESSEL IN HEIGHTENED ALERT STATUS, SELF DEFENSE KIT PROVIDED"]'.")) character.put_in_hands(new /obj/item/storage/box/kit/cryo_self_defense(character.loc)) GLOB.data_core.manifest_inject(character) @@ -295,10 +295,10 @@ var/dat = "
" dat += "Round Duration: [round(hours)]h [round(mins)]m
" - if(EvacuationAuthority) - switch(EvacuationAuthority.evac_status) - if(EVACUATION_STATUS_INITIATING) dat += "The [MAIN_SHIP_NAME] is being evacuated.
" - if(EVACUATION_STATUS_COMPLETE) dat += "The [MAIN_SHIP_NAME] has undergone evacuation.
" + if(SShijack) + switch(SShijack.evac_status) + if(EVACUATION_STATUS_INITIATED) + dat += "The [MAIN_SHIP_NAME] is being evacuated.
" dat += "Choose from the following open positions:
" var/roles_show = FLAG_SHOW_ALL_JOBS diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index ba842fb0bfb9..8221b8771c88 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -43,7 +43,6 @@ var/input = "DANGER, THE EMERGENCY DESTRUCT SYSTEM IS NOW ACTIVATED. PROCEED TO THE SELF-DESTRUCT CHAMBER FOR CONTROL ROD INSERTION." marine_announcement(input, name, 'sound/AI/selfdestruct_short.ogg', logging = log) security_level = SEC_LEVEL_DELTA - EvacuationAuthority.enable_self_destruct() /proc/get_security_level() switch(security_level) diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 26869cfcf448..3d0c8fca142d 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -297,10 +297,14 @@ return var/mob/living/carbon/human/human_user = user - if(!(ACCESS_MARINE_SENIOR in human_user.wear_id?.access)) + if(!(ACCESS_MARINE_COMMAND in human_user.wear_id?.access)) to_chat(user, SPAN_NOTICE("[src]'s screen says \"Awaiting confirmation of the evacuation order\".")) return + if(SShijack.current_progress < SShijack.early_launch_required_progress) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unable to launch, fuel insufficient\".")) + return + if(tgui_alert(user, "Early launch the lifeboat?", "Confirm", list("Yes", "No"), 10 SECONDS) == "Yes") to_chat(user, SPAN_NOTICE("[src]'s screen blinks and says \"Early launch accepted\".")) lifeboat.evac_launch() diff --git a/code/modules/shuttle/computers/escape_pod_computer.dm b/code/modules/shuttle/computers/escape_pod_computer.dm index 6f9292cfc048..eb81a4a98a8a 100644 --- a/code/modules/shuttle/computers/escape_pod_computer.dm +++ b/code/modules/shuttle/computers/escape_pod_computer.dm @@ -12,6 +12,7 @@ unslashable = TRUE unacidable = TRUE var/pod_state = STATE_IDLE + var/launch_without_evac = FALSE /obj/structure/machinery/computer/shuttle/escape_pod_panel/ex_act(severity) return FALSE @@ -56,6 +57,7 @@ .["door_state"] = door.density .["door_lock"] = shuttle.door_handler.is_locked .["can_delay"] = TRUE//launch_status[2] + .["launch_without_evac"] = launch_without_evac /obj/structure/machinery/computer/shuttle/escape_pod_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) @@ -66,7 +68,7 @@ var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle = SSshuttle.getShuttle(shuttleId) switch(action) if("force_launch") - if(pod_state != STATE_READY && pod_state != STATE_DELAYED) + if(!launch_without_evac && pod_state != STATE_READY && pod_state != STATE_DELAYED) return shuttle.evac_launch() @@ -83,6 +85,9 @@ shuttle.door_handler.control_doors("force-lock-launch") . = TRUE +/obj/structure/machinery/computer/shuttle/escape_pod_panel/liaison + launch_without_evac = TRUE + //========================================================================================= //================================Evacuation Sleeper======================================= //========================================================================================= @@ -208,10 +213,12 @@ unslashable = TRUE unacidable = TRUE var/obj/docking_port/mobile/crashable/escape_shuttle/linked_shuttle + var/start_locked = TRUE /obj/structure/machinery/door/airlock/evacuation/Initialize() . = ..() - INVOKE_ASYNC(src, PROC_REF(lock)) + if(start_locked) + INVOKE_ASYNC(src, PROC_REF(lock)) /obj/structure/machinery/door/airlock/evacuation/Destroy() if(linked_shuttle) @@ -250,3 +257,6 @@ if(!density) return -1 return ..() + +/obj/structure/machinery/door/airlock/evacuation/liaison + start_locked = FALSE diff --git a/code/modules/shuttle/dropship_hijack.dm b/code/modules/shuttle/dropship_hijack.dm index 7796ed0510c8..36bc879ace46 100644 --- a/code/modules/shuttle/dropship_hijack.dm +++ b/code/modules/shuttle/dropship_hijack.dm @@ -72,6 +72,7 @@ break sleep(10) + SShijack.announce_status_on_crash() SSticker.hijack_ocurred() /datum/dropship_hijack/almayer/proc/fire() diff --git a/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm b/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm index 6029d345b6d7..1f0a8fd502cf 100644 --- a/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm +++ b/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm @@ -11,7 +11,7 @@ /// The % chance of the escape pod crashing into the groundmap before lifeboats leaving var/early_crash_land_chance = 75 /// The % chance of the escape pod crashing into the groundmap - var/crash_land_chance = 25 + var/crash_land_chance = 0 /// How many people can be in the escape pod before it crashes var/max_capacity = 3 @@ -103,7 +103,7 @@ /obj/docking_port/mobile/crashable/escape_shuttle/crash_check() . = ..() - if(prob((EvacuationAuthority.evac_status >= EVACUATION_STATUS_IN_PROGRESS ? crash_land_chance : early_crash_land_chance))) + if(prob((SShijack.hijack_status >= HIJACK_OBJECTIVES_COMPLETE ? crash_land_chance : early_crash_land_chance))) return TRUE /obj/docking_port/mobile/crashable/escape_shuttle/open_doors() @@ -124,8 +124,8 @@ id = ESCAPE_SHUTTLE_EAST_CL width = 4 height = 5 - early_crash_land_chance = 25 - crash_land_chance = 5 + early_crash_land_chance = 0 + crash_land_chance = 0 /obj/docking_port/mobile/crashable/escape_shuttle/w id = ESCAPE_SHUTTLE_WEST diff --git a/code/modules/shuttle/shuttles/crashable/lifeboats.dm b/code/modules/shuttle/shuttles/crashable/lifeboats.dm index 93489ee4a359..11b376563d64 100644 --- a/code/modules/shuttle/shuttles/crashable/lifeboats.dm +++ b/code/modules/shuttle/shuttles/crashable/lifeboats.dm @@ -51,10 +51,10 @@ /obj/docking_port/mobile/crashable/lifeboat/crash_check() . = ..() - if(EvacuationAuthority.evac_status >= EVACUATION_STATUS_IN_PROGRESS) + if(SShijack.hijack_status >= HIJACK_OBJECTIVES_COMPLETE) return FALSE - if(prob(abs(((world.time - EvacuationAuthority.evac_time) / EVACUATION_AUTOMATIC_DEPARTURE) - 1) * 100)) + if(prob(abs((SShijack.current_progress - SShijack.required_progress) / SShijack.required_progress) * 100)) return TRUE /obj/docking_port/mobile/crashable/lifeboat/open_doors() diff --git a/code/modules/shuttles/marine_ferry.dm b/code/modules/shuttles/marine_ferry.dm index 6d84881fe9bf..032294a45b39 100644 --- a/code/modules/shuttles/marine_ferry.dm +++ b/code/modules/shuttles/marine_ferry.dm @@ -267,17 +267,11 @@ in_transit_time_left = 0 - if(EvacuationAuthority.dest_status >= NUKE_EXPLOSION_IN_PROGRESS) - return FALSE //If a nuke is in progress, don't attempt a landing. - playsound_area(get_area(turfs_int[sound_target]), sound_landing, 100) playsound(turfs_trg[sound_target], sound_landing, 100) playsound_area(get_area(turfs_int[sound_target]), channel = SOUND_CHANNEL_AMBIENCE, status = SOUND_UPDATE) sleep(100) //Wait for it to finish. - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_FINISHED) - return FALSE //If a nuke finished, don't land. - target_turf = T_trg target_rotation = trg_rot shuttle_turfs = turfs_int @@ -434,9 +428,6 @@ in_transit_time_left = 0 - if(EvacuationAuthority.dest_status >= NUKE_EXPLOSION_IN_PROGRESS) - return FALSE //If a nuke is in progress, don't attempt a landing. - //This is where things change and shit gets real marine_announcement("DROPSHIP ON COLLISION COURSE. CRASH IMMINENT." , "EMERGENCY", 'sound/AI/dropship_emergency.ogg', logging = ARES_LOG_SECURITY) @@ -449,9 +440,6 @@ sleep(85) - if(EvacuationAuthority.dest_status == NUKE_EXPLOSION_FINISHED) - return FALSE //If a nuke finished, don't land. - if(security_level < SEC_LEVEL_RED) //automatically set security level to red. set_security_level(SEC_LEVEL_RED, TRUE) diff --git a/colonialmarines.dme b/colonialmarines.dme index 25aa4df30a09..9c3a5868d693 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -61,6 +61,7 @@ #include "code\__DEFINES\fonts.dm" #include "code\__DEFINES\generators.dm" #include "code\__DEFINES\guns.dm" +#include "code\__DEFINES\hijack.dm" #include "code\__DEFINES\html.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\human.dm" @@ -240,6 +241,7 @@ #include "code\controllers\subsystem\fz_transitions.dm" #include "code\controllers\subsystem\game_decorator.dm" #include "code\controllers\subsystem\garbage.dm" +#include "code\controllers\subsystem\hijack.dm" #include "code\controllers\subsystem\human.dm" #include "code\controllers\subsystem\inactivity.dm" #include "code\controllers\subsystem\influxdriver.dm" @@ -699,7 +701,6 @@ #include "code\game\cas_manager\datums\cas_signal.dm" #include "code\game\gamemodes\cm_initialize.dm" #include "code\game\gamemodes\cm_process.dm" -#include "code\game\gamemodes\cm_self_destruct.dm" #include "code\game\gamemodes\events.dm" #include "code\game\gamemodes\game_mode.dm" #include "code\game\gamemodes\colonialmarines\colonialmarines.dm" diff --git a/icons/obj/structures/machinery/fusion_eng.dmi b/icons/obj/structures/machinery/fusion_eng.dmi index 038fae342b64884d6717eda5eff480f2ddb8dd58..4d42baac72556c79fcf7fbd7dcb738214fb6497b 100644 GIT binary patch delta 2250 zcmYjTcTm%b5{@E8B!C3r7n&j*f>Hi%no?( zk*%0tv0-Ljq2OZJ| zzN{DCzsm@78U2_TJoZM=lt8TKMs6vME37Z>#|HTP$ZS_tC(E3w6aE;;JjSw@OPZrjV?ql><#2uXgrSrXTY` zAJ$aArNaMGc{jt`I6Er@h1!5BO7=HF;suH(j!;*+X7X!P_EIJpHLM3Dfu#tk^j@S=x+^v_*&cOkbbPmS{ZeI6hU9LDq-Ehb zo0}b4_mdxrpno>Qbrpts)oqWm) z@uWiTbx`qCDN@%i1>vTtQizPGf3>>&^Cu3djUtu^EFfYSEB9A{n;PrGHH9u~m9Z{P z?l;8Q14{mAQ6av%lU*QWp+^VmC5v?KcXDd1b7m)sum_0HuPur7E7dS0xw6kcvnJK} zNlp$kcm#{yrijn*(J7_#@CfVTfM-2nbrlF3rZW zcYB>u(&gIK4(!A&r!!2$t}|YQCcv0OV+u2>C)q<9G@4-wQHwx-s`JuH3n4n+a=RnL z!Fy2&*+-J7%G+2m*F>fZWX!7wd@v*;Bg!A#s%cj93n#cNa+|Z*YHaFWoaGGlu>z?W z07kYPe%@?VXq+-ao&xkAgiu1055g}8d5Ks(ZzPwDDsZEHz zTK@excD^~jE(zM!Df{eeWEa3a<45uAW4IAorGeUj%l)I7V&ASfmD7oUtfffUa1Jv_ z=0ECs&a^wn_1WKQTvG3s>Po;W*Hhwyt2Mj8w*&IytePrj?}9|_gzV$<;O{kcG$}r| zOg(+`)!@tFq6e6=iL8=#^Twbj+Mfj}z zZ0UN&2pI(2We`BUhTe9wUIWuSt>jTDq1!f3ZQ8?3VZ(+X#HLzES^zxN>cN*sS<~TV z^F{lp8MpairrI2vR*6~?xA}B9A!DFE6-=`66#$+>AFlqKe1uhBJ*L#4O@1}##OviV zZh|@3NVylcZOROi`%P5))s~JOfTE@;h; z;N(EQY8Kt{=69#^YNc&Ic+>>OX4^d(9w!&!dziCw zCPr)-!QQ!C%B@40*!IX@9vWG2{FltP>v{Rxl^Brdo$3-PSAILUQabn5-#P7y)!-pp zuGP>lHbcJbg&U4w+Hki$EYy=F){unGqQ8>PP2;|Qf3Ci3AsJM6o|7e#?-fqhO!=}M z_Ld`)^<3H_oRj*Xpj+NjC&M{Xu9Ie`F&d(&(l2j`oZS*)=tf7%{k#me0qh@q#+Ns^ zq%>BYHdyUqL`p;zY)%Q0;LDk!yreaEAC;=Ow4n%*tt*K9!uZ~q{<)w&fE^@wR8YpO zqA?@nnsyMiGA<^X7#)LmPiHQzqY;5!GXV$nF}pXd4Lzvw&bycVQ{bmNe?pIEgk(t? zAlSYjzy7+0kwC*&@g6?fYX6+^On7|CpcYi&&YU*#s)a>a{YbGEH-dlejczLG zN-Z1J`p1tcTfSj=F%@rFo&?X#Jz!v(FY29>44Xvzq&Q8qRtlr3&xX(j>l4LV3a(N5 zda}djkx~Ry-04DT1rF^)okzmGFW)R}Wt`7HWJ0K@205!mt${MM@#AEs_#PdxrM%Z3 z$nWKgb&~VE9=B`{gr7gx&wSg`k2@j=w|%m8_wx-<`)d6{@W)7nw+F^m9qT6Xw5Xhw zF$$)YKx|r}LP4Rw4!Dq+lUZXRaG-DBTu=jaD(B?K~6)2B{KLJ-_PmTZp delta 2070 zcmY+AdpOgJAIGO6q14Y>JDXCmximC)qmo-_SfXbx311`Ypo1u3a#;>TB+V@5M?1%5 zG=z!HsBM|K9MrJajA58n%2~Cl;yB%O zzo76yE`7%!JZAB()&a7!B1SE>u}Viry-%CH1ExQof7O>ZRw9P1?Xq&MVmR+LsZ2&r z)HzRU2KQm*R@CgC$v-$9EqUR&b&52;o zRKthPJnffvJj%-*!)hNKU{!2A_Wo+|`@7O*`If2zL_unx0tlqg=xl%1^CtZZO_}u0 z49p8Z0fp0e(GaHrlsqr6;A+8O6!^*s)259SYdnUlz(D3 z_Ux;k&gKIi3DsDVqwujtm7YRgE2d+pA=s!MwTT-wy)>M}EYW@eTMWBkFlFQKI5tYB z*0P5?`+JB_KV`Gdj0^9?Q(%&32}vq8h{UEU;$!0L_L`bEac$@yf0}72q}_@5zK#an zAkvsjcz8{fus-cJ0zNqa4Trt#ZFw$jI$`X6LD$rEIDc`%RI`oU|gX~{g20ws#>rb#Ju&nV;xM(Tz}+QO~Z;}<=yWj_k|+-pMiD=x#` z-hMJ_oouGM>gw9$>v1OKCZJ&txck;>X9ZT{a*ur!+4O{A~=yoZpLnhu?$qt>?cRn4?8 zCI})xH^C>NbLx`=wd3{Zs~(t;u8({Rek`C4SgkA?K6%>L=Q}G^SP16?RtHt8Z>;Tt z)60F2Z#IuZyYLZ|;8;cp&}evdo-<(`bM5p{gRbuc8naJBQfUQ*oAZB$lc2-+T8+#a zwD|2Nxd6)&Lm#5;X4^-Pmul?HKGl$2X$ALv+{@MTU~#Sc#;Nwi zcjpDLrkNk~>7^A*Y2T+Jia!p^e>>uD5<3@(I^?i%scJv-nP^}pSJ)q|;$|@UenGmx zK(CecqJJoDx_#&E$Rul!h>&w=`-Feziu(C5ytdEgzEjSttzPW1x_&9Hj;@c+0-z7! zXlRq3S)yR&uK|brs)N-*gK?UDya0Rk)j~i{)}D?^WQ}wr$$h&+s}^wmuvf=NMSKI5 z%xMJ35>u>2Y_+b*RVM?j}hs>_q8>yvT^uMtXIQTiRs8zb;*;_%TcLz%bk=O*TdzgJ z41XPK);w?FqwvV+kQ?pnAENY&M&3d{3&edB0+x1_FHD%`iz1lim=Nc=_uG(=_t*j1 zG1a!rpsrx_Hw;ghU`MTRp($&JqX-7{R(3Gw>p>Fi{C#EZ2-IZ*dJDQ1%(?D@=t;kC zCjOzw0Gl3K+48E^hN$T;?hVN38}dmU%HXMlx(-GKE`LFttf-o(%B-uq?7)T^AGY47 zm4Qvwopb{z(!sE^JYTuy)~&;4>&cKMz3tteU?i&Va36G!B6x{^=F@Zbo=M6hjU(F-G9+#FJh3_0*dt%_3E=qIC3S{?mwfOJ z?twClDT1iED(9<;4jL+{6;3+_k=*?7%QBdJ6`dmgoaS7r_C_K7#c=N02kmPP z=YsOZot1E_N-F2%(d#*C0{3!>j;z_1wt#;vyAQh`=a`p&FoXuuu{5h8BPa0dwHfV zxcu+Ea2a2A+~%5z(kN<8&3H|Dl|?tW-A~Iu&i^h`!}Q0T?H8grp2?;>e=t-vUXHaT v|7e)H@ec(8I}N#fkC_RBBmeWP^oC?#BGwDXaQGmQ5(wn%;AUTI8<6rJ%BS-7 diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 1f61d2d99a78..95352008b2ae 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -529,17 +529,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"abQ" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "abR" = ( /obj/item/tank/phoron, /turf/open/floor/almayer{ @@ -1650,10 +1639,6 @@ icon_state = "outerhull_dir" }, /area/space) -"afo" = ( -/obj/structure/safe/co_office, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "afq" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -2761,12 +2746,6 @@ "ajl" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/upper_medical) -"ajm" = ( -/obj/structure/closet/secure_closet/securecom, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "ajp" = ( /obj/structure/surface/table/almayer, /obj/structure/dropship_equipment/fuel/cooling_system{ @@ -3706,15 +3685,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"amE" = ( -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "amF" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -3937,47 +3907,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) -"anp" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) -"anq" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/structure/surface/rack, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) -"anr" = ( -/obj/structure/sign/safety/intercom{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "ans" = ( /turf/open/floor/almayer{ dir = 8; @@ -5613,16 +5542,6 @@ /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) -"asu" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "asv" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/machinery/light{ @@ -6040,12 +5959,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) -"atx" = ( -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "aty" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -6645,12 +6558,6 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/command/cic) -"auR" = ( -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "auS" = ( /obj/item/tool/warning_cone, /obj/item/tool/warning_cone, @@ -8022,12 +7929,6 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"azp" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "azq" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -9831,6 +9732,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) +"aGi" = ( +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "aGj" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 2; @@ -10181,6 +10088,12 @@ }, /turf/open/floor/engine, /area/almayer/engineering/airmix) +"aHT" = ( +/obj/structure/bed/chair/wood/normal, +/obj/item/bedsheet/brown, +/obj/item/toy/plush/farwa, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/cells) "aHU" = ( /obj/structure/platform{ dir = 1 @@ -10407,12 +10320,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"aIV" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "aIX" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -12770,11 +12677,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"aUb" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "aUd" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ @@ -15417,10 +15319,6 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"bhM" = ( -/obj/structure/safe/cl_office, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bhT" = ( /obj/structure/cargo_container/lockmart/mid{ layer = 3.1; @@ -17195,28 +17093,6 @@ /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, /area/almayer/command/corporateliason) -"bsd" = ( -/obj/item/device/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/structure/machinery/door_control{ - id = "cl_shutters"; - name = "Privacy Shutters"; - pixel_x = -5; - pixel_y = 6; - req_access_txt = "200" - }, -/obj/structure/machinery/door_control{ - id = "RoomDivider"; - name = "Room Divider"; - pixel_x = -5; - pixel_y = -3; - req_access_txt = "200" - }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "bse" = ( /obj/structure/machinery/computer/arcade, /turf/open/floor/wood/ship, @@ -20184,16 +20060,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"bGz" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "green" - }, -/area/almayer/squads/req) "bGF" = ( /obj/structure/machinery/landinglight/ds2{ dir = 1 @@ -21054,52 +20920,6 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"bKg" = ( -/obj/item/bedsheet/blue{ - layer = 3.2 - }, -/obj/item/bedsheet/blue{ - pixel_y = 13 - }, -/obj/item/toy/plush/therapy/red{ - desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; - force = 15; - layer = 4.1; - name = "Sergeant Huggs"; - pixel_y = 15; - throwforce = 15 - }, -/obj/item/clothing/head/cmcap{ - layer = 4.1; - pixel_x = -1; - pixel_y = 22 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj{ - name = "---Merge conflict marker---" - }, -/obj/structure/bed/chair/comfy/charlie, -/turf/open/floor/almayer{ - icon_state = "emeraldfull" - }, -/area/almayer/living/briefing) "bKh" = ( /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) @@ -22185,14 +22005,6 @@ icon_state = "emeraldcorner" }, /area/almayer/hallways/port_hallway) -"bOw" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "bOx" = ( /obj/structure/machinery/door/airlock/almayer/marine/charlie/tl, /turf/open/floor/almayer{ @@ -22728,12 +22540,6 @@ }, /turf/closed/wall/almayer, /area/almayer/squads/req) -"bQS" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, -/turf/open/floor/almayer{ - icon_state = "green" - }, -/area/almayer/squads/req) "bQU" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -23503,19 +23309,6 @@ icon_state = "blue" }, /area/almayer/squads/charlie_delta_shared) -"bUo" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = -32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = -32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/squads/req) "bUp" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -24337,13 +24130,6 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"bYa" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "green" - }, -/area/almayer/squads/req) "bYc" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -26314,6 +26100,12 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) +"cij" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "cil" = ( /obj/structure/machinery/light, /obj/structure/sign/safety/waterhazard{ @@ -26700,6 +26492,42 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_a_s) +"ckE" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/yellow{ + layer = 3.2 + }, +/obj/item/bedsheet/yellow{ + pixel_y = 13 + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = -16; + pixel_y = 8 + }, +/obj/item/toy/plush/barricade, +/obj{ + name = "---Merge conflict marker---" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/living/briefing) "ckI" = ( /obj/structure/disposalpipe/segment, /obj/item/device/radio/intercom{ @@ -29057,15 +28885,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) -"cVu" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "cVw" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -29527,6 +29346,12 @@ icon_state = "plating" }, /area/almayer/engineering/engine_core) +"ddN" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/squads/req) "deb" = ( /obj/structure/bed, /obj/structure/machinery/flasher{ @@ -29765,6 +29590,14 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) +"diM" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "djm" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -31066,19 +30899,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"dGS" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "dHd" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -31416,28 +31236,6 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) -"dQx" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/camera{ - pixel_x = -8; - pixel_y = 12 - }, -/obj/item/paper_bin/uscm{ - pixel_y = 6; - pixel_x = 6 - }, -/obj/item/tool/pen{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = -8; - pixel_y = -1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "dQE" = ( /obj/structure/machinery/light{ dir = 1 @@ -31790,16 +31588,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"dXs" = ( -/obj/structure/sign/safety/terminal{ - pixel_x = 7; - pixel_y = 29 - }, -/obj/structure/filingcabinet, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "dXy" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, @@ -31961,6 +31749,26 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"ebt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) +"ebz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "ebD" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -32167,12 +31975,6 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"eeB" = ( -/obj/structure/bed/chair/wood/normal, -/obj/item/bedsheet/brown, -/obj/item/toy/plush/farwa, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/cells) "eeN" = ( /obj/structure/bed/chair, /turf/open/floor/almayer{ @@ -33187,6 +32989,12 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cryo) +"eyv" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "eyG" = ( /obj/structure/platform, /turf/open/floor/almayer{ @@ -33339,24 +33147,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_umbilical) -"eBE" = ( -/obj/structure/surface/table/almayer, -/obj/effect/landmark/map_item{ - pixel_x = -8 - }, -/obj/item/toy/plush/therapy/red{ - desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; - force = 15; - layer = 4.1; - name = "Sergeant Huggs"; - pixel_x = 7; - pixel_y = -1; - throwforce = 15 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/briefing) "eBO" = ( /obj/structure/bed, /turf/open/floor/almayer{ @@ -34002,6 +33792,19 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"eRt" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hull/lower_hull/l_f_s) "eRu" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -34079,6 +33882,27 @@ /obj/effect/landmark/crap_item, /turf/open/floor/almayer, /area/almayer/living/briefing) +"eTh" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/surface/rack, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "eTo" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -34092,6 +33916,13 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"eTx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "eTO" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -35141,20 +34972,6 @@ icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"frJ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "frM" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -35265,42 +35082,6 @@ icon_state = "plating_striped" }, /area/almayer/living/cryo_cells) -"ftg" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj/item/bedsheet/yellow{ - layer = 3.2 - }, -/obj/item/bedsheet/yellow{ - pixel_y = 13 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = -16; - pixel_y = 8 - }, -/obj/item/toy/plush/barricade, -/obj{ - name = "---Merge conflict marker---" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/living/briefing) "fti" = ( /obj/structure/machinery/door/poddoor/railing{ dir = 2; @@ -35791,6 +35572,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) +"fFq" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "fFD" = ( /obj/structure/window/reinforced{ dir = 4; @@ -36243,6 +36034,13 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"fOh" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4; + icon_state = "exposed01-supply" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/combat_correspondent) "fOk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -36400,14 +36198,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"fTh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "fTi" = ( /obj/structure/largecrate/supply/floodlights, /turf/open/floor/almayer{ @@ -36531,6 +36321,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) +"fXt" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "green" + }, +/area/almayer/squads/req) "fXx" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -37187,23 +36987,10 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) -"gka" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "gks" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) -"gkv" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/taperecorder, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "gkJ" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -37419,6 +37206,15 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) +"gqF" = ( +/obj/structure/machinery/photocopier, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "gqK" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -38120,6 +37916,36 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"gEI" = ( +/obj/item/device/flashlight/lamp/green{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/structure/machinery/door_control{ + id = "cl_shutters"; + name = "Privacy Shutters"; + pixel_x = -5; + pixel_y = 8; + req_access_txt = "200" + }, +/obj/structure/machinery/door_control{ + id = "RoomDivider"; + name = "Room Divider"; + pixel_x = -5; + pixel_y = -4; + req_access_txt = "200" + }, +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/door_control{ + pixel_x = -5; + pixel_y = 2; + req_access_txt = "200"; + name = "Evac Pod Door Control"; + id = "cl_evac"; + normaldoorcontrol = 1 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliason) "gEK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -38167,6 +37993,31 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"gGl" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/taperecorder, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) +"gGo" = ( +/obj/structure/surface/table/almayer, +/obj/effect/landmark/map_item{ + pixel_x = -8 + }, +/obj/item/toy/plush/therapy/red{ + desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; + force = 15; + layer = 4.1; + name = "Sergeant Huggs"; + pixel_x = 7; + pixel_y = -1; + throwforce = 15 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "gGr" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -38299,6 +38150,12 @@ icon_state = "orange" }, /area/almayer/engineering/lower_engineering) +"gJs" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, +/turf/open/floor/almayer{ + icon_state = "green" + }, +/area/almayer/squads/req) "gJP" = ( /obj/structure/machinery/light, /obj/structure/disposalpipe/segment{ @@ -38754,6 +38611,14 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"gUr" = ( +/obj/item/stack/folding_barricade/three, +/obj/item/stack/folding_barricade/three, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hull/lower_hull/l_f_s) "gUv" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -39094,16 +38959,6 @@ icon_state = "silver" }, /area/almayer/living/auxiliary_officer_office) -"hbI" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "hbZ" = ( /obj/structure/surface/table/almayer, /obj/structure/sign/safety/terminal{ @@ -39269,6 +39124,13 @@ icon_state = "plate" }, /area/almayer/engineering/engine_core) +"hey" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "heH" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -39737,19 +39599,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) -"hnI" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ - access_modified = 1; - name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/pilotbunks) "hnV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -40495,6 +40344,14 @@ /obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"hGa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "hGB" = ( /obj/structure/machinery/light, /turf/open/floor/wood/ship, @@ -40620,6 +40477,19 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) +"hJh" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "hJk" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -41611,6 +41481,15 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) +"ift" = ( +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "ifR" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -41713,6 +41592,19 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_m_p) +"iii" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = -32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = -32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/squads/req) "iit" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -41917,6 +41809,14 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/offices/flight) +"imW" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "ina" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -43432,6 +43332,14 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"iUC" = ( +/obj/structure/machinery/faxmachine, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "iUW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -43494,6 +43402,16 @@ }, /turf/open/floor/carpet, /area/almayer/living/commandbunks) +"iWb" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "iWc" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -44553,6 +44471,20 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/command/cic) +"jog" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/photo_album{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/folder/black{ + pixel_y = -3; + pixel_x = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "jox" = ( /obj/structure/machinery/brig_cell/cell_3{ pixel_x = -32 @@ -44717,6 +44649,12 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) +"juf" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "jup" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -45634,6 +45572,15 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"jRZ" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "jSo" = ( /obj/item/tool/warning_cone, /turf/open/floor/almayer{ @@ -46128,6 +46075,14 @@ icon_state = "bluefull" }, /area/almayer/squads/charlie_delta_shared) +"kaJ" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "kaN" = ( /obj/structure/platform{ dir = 1 @@ -46594,6 +46549,10 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"knT" = ( +/obj/structure/safe/cl_office, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "koc" = ( /obj/structure/machinery/status_display{ pixel_y = -30 @@ -46847,6 +46806,12 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"ksv" = ( +/obj/structure/closet/secure_closet/securecom, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "ksA" = ( /obj/structure/closet/secure_closet/freezer/fridge/groceries, /obj/structure/machinery/light{ @@ -46892,17 +46857,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/evidence_storage) -"ktn" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/shipboard/brig/armory) "ktB" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ @@ -48089,16 +48043,6 @@ icon_state = "plating" }, /area/almayer/squads/req) -"kTc" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "kTq" = ( /obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/almayer{ @@ -48154,18 +48098,23 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"kUh" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ - access_modified = 1; - dir = 1; - name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22" - }, +"kUb" = ( +/obj/structure/closet/secure_closet, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/obj/item/storage/box/tapes, +/obj/item/clothing/head/fedora, +/obj/item/clothing/suit/storage/marine/light/reporter, +/obj/item/clothing/head/helmet/marine/reporter, +/obj/item/clothing/head/cmcap/reporter, +/obj/item/device/flashlight, +/obj/item/device/toner, +/obj/item/device/toner, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/living/pilotbunks) +/area/almayer/command/combat_correspondent) "kUt" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -48952,6 +48901,22 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"llt" = ( +/obj/structure/machinery/conveyor{ + id = "req_belt" + }, +/obj/structure/plasticflaps, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/squads/req) +"llD" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/combat_correspondent) "llM" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -49795,6 +49760,20 @@ icon_state = "plate" }, /area/almayer/engineering/engineering_workshop/hangar) +"lCn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "lCt" = ( /turf/open/floor/almayer{ dir = 10; @@ -50267,6 +50246,20 @@ /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/squads/charlie) +"lLN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = -30 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/brig/armory) "lLS" = ( /obj/structure/sign/safety/galley{ pixel_x = 32 @@ -50431,15 +50424,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) -"lOR" = ( -/obj/structure/machinery/photocopier, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "lPB" = ( /obj/structure/surface/table/almayer, /obj/item/device/lightreplacer, @@ -50618,6 +50602,12 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"lUv" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hull/lower_hull/l_f_s) "lVl" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer, @@ -51642,13 +51632,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"mtX" = ( -/obj/structure/machinery/light, -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "mub" = ( /obj/structure/barricade/handrail{ dir = 4 @@ -51664,6 +51647,48 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"mus" = ( +/obj/item/bedsheet/blue{ + layer = 3.2 + }, +/obj/item/bedsheet/blue{ + pixel_y = 13 + }, +/obj/item/toy/plush/therapy/red{ + desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; + force = 15; + layer = 4.1; + name = "Sergeant Huggs"; + pixel_y = 15; + throwforce = 15 + }, +/obj/item/clothing/head/cmcap{ + layer = 4.1; + pixel_x = -1; + pixel_y = 22 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "blue" + }, +/area/almayer/living/port_emb) "mux" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -51883,13 +51908,6 @@ /obj/effect/spawner/random/tool, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"mAr" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "mAT" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 8; @@ -53169,6 +53187,15 @@ icon_state = "test_floor4" }, /area/almayer/living/gym) +"nbr" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "nbB" = ( /obj/structure/closet/secure_closet/freezer/fridge/full, /turf/open/floor/almayer{ @@ -54086,14 +54113,6 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"nuL" = ( -/obj/structure/machinery/faxmachine, -/obj/structure/surface/table/almayer, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "nuN" = ( /obj/effect/landmark/start/marine/medic/alpha, /obj/effect/landmark/late_join/alpha, @@ -54161,6 +54180,17 @@ /obj/item/tool/lighter/zippo/gold, /turf/open/floor/carpet, /area/almayer/living/commandbunks) +"nww" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "nwx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ @@ -54442,19 +54472,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"nDd" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "nDh" = ( /obj/structure/transmitter/rotary{ name = "CL Office Telephone"; @@ -54927,6 +54944,52 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"nMM" = ( +/obj/item/bedsheet/blue{ + layer = 3.2 + }, +/obj/item/bedsheet/blue{ + pixel_y = 13 + }, +/obj/item/toy/plush/therapy/red{ + desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; + force = 15; + layer = 4.1; + name = "Sergeant Huggs"; + pixel_y = 15; + throwforce = 15 + }, +/obj/item/clothing/head/cmcap{ + layer = 4.1; + pixel_x = -1; + pixel_y = 22 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj{ + name = "---Merge conflict marker---" + }, +/obj/structure/bed/chair/comfy/charlie, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "nMV" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -55148,6 +55211,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering) +"nSj" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "green" + }, +/area/almayer/squads/req) "nSG" = ( /obj/structure/machinery/door_control{ id = "tcomms"; @@ -55747,54 +55817,22 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) -"ogZ" = ( -/obj/item/bedsheet/blue{ - layer = 3.2 - }, -/obj/item/bedsheet/blue{ - pixel_y = 13 - }, -/obj/item/toy/plush/therapy/red{ - desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; - force = 15; - layer = 4.1; - name = "Sergeant Huggs"; - pixel_y = 15; - throwforce = 15 - }, -/obj/item/clothing/head/cmcap{ - layer = 4.1; - pixel_x = -1; - pixel_y = 22 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "blue" - }, -/area/almayer/living/port_emb) "ohj" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ icon_state = "cargo" }, /area/almayer/squads/charlie) +"ohl" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, +/area/almayer/squads/req) "ohA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -56112,13 +56150,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"omu" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "omy" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -56332,16 +56363,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"oqY" = ( -/obj/structure/machinery/conveyor{ - id = "req_belt" - }, -/obj/structure/plasticflaps, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/squads/req) "oqZ" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/microwave{ @@ -56492,6 +56513,18 @@ "otu" = ( /turf/closed/wall/almayer/research/containment/wall/connect_w, /area/almayer/medical/containment/cell) +"otK" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + dir = 1; + name = "\improper Flight Crew Quarters"; + req_one_access_txt = "19;22" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/pilotbunks) "otX" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -56895,22 +56928,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"oDk" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/mask/cigarette/pipe{ - pixel_x = 8 - }, -/obj/structure/transmitter/rotary{ - name = "Reporter Telephone"; - phone_category = "Almayer"; - phone_id = "Reporter"; - pixel_x = -4; - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "oDv" = ( /turf/open/floor/almayer{ dir = 9; @@ -56953,6 +56970,12 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"oDO" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "oDR" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -57378,14 +57401,6 @@ icon_state = "mono" }, /area/almayer/engineering/ce_room) -"oNf" = ( -/obj/item/stack/folding_barricade/three, -/obj/item/stack/folding_barricade/three, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "oNj" = ( /obj/structure/sign/prop1{ pixel_x = -32; @@ -57905,6 +57920,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"pbl" = ( +/obj/structure/bed, +/obj/item/toy/plush/farwa{ + pixel_x = 5 + }, +/obj/item/clothing/under/redpyjamas, +/obj/item/bedsheet/orange, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "pbp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -59822,12 +59846,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) -"pVx" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/squads/req) "pVA" = ( /obj/item/trash/cigbutt/ucigbutt{ pixel_x = 2; @@ -60151,6 +60169,15 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"qbh" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "qbt" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -60484,15 +60511,6 @@ icon_state = "plate" }, /area/almayer/hallways/stern_hallway) -"qhl" = ( -/obj/structure/bed, -/obj/item/toy/plush/farwa{ - pixel_x = 5 - }, -/obj/item/clothing/under/redpyjamas, -/obj/item/bedsheet/orange, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "qhx" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" @@ -60942,15 +60960,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"qqr" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "qqu" = ( /turf/open/floor/almayer{ dir = 1; @@ -61335,6 +61344,28 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"qyJ" = ( +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) +"qyM" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/mask/cigarette/pipe{ + pixel_x = 8 + }, +/obj/structure/transmitter/rotary{ + name = "Reporter Telephone"; + phone_category = "Almayer"; + phone_id = "Reporter"; + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "qyW" = ( /obj/structure/bed/chair{ dir = 4 @@ -61706,15 +61737,6 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"qJf" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "qJj" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -62163,6 +62185,19 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) +"qRL" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + name = "\improper Flight Crew Quarters"; + req_one_access_txt = "19;22" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/pilotbunks) "qRT" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -62863,6 +62898,17 @@ icon_state = "emeraldcorner" }, /area/almayer/living/briefing) +"rhD" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "rhO" = ( /obj/structure/machinery/vending/cola/research{ pixel_x = 4 @@ -63568,6 +63614,12 @@ /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"rwT" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "rwY" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -63628,12 +63680,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"ryR" = ( -/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "rzf" = ( /obj/effect/landmark/late_join/working_joe, /obj/effect/landmark/start/working_joe, @@ -64236,6 +64282,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"rJg" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "rJh" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -64360,23 +64411,6 @@ dir = 8 }, /area/almayer/medical/containment/cell/cl) -"rNg" = ( -/obj/structure/closet/secure_closet, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/obj/item/storage/box/tapes, -/obj/item/clothing/head/fedora, -/obj/item/clothing/suit/storage/marine/light/reporter, -/obj/item/clothing/head/helmet/marine/reporter, -/obj/item/clothing/head/cmcap/reporter, -/obj/item/device/flashlight, -/obj/item/device/toner, -/obj/item/device/toner, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "rNF" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -65694,15 +65728,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"ssW" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "ssX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -66097,14 +66122,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"sDm" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "sDu" = ( /obj/item/clothing/under/marine/dress, /turf/open/floor/almayer{ @@ -66614,15 +66631,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"sOZ" = ( -/obj/structure/sign/safety/ammunition{ - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "sPc" = ( /obj/structure/machinery/light{ dir = 1 @@ -67047,14 +67055,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) -"sYB" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "sYC" = ( /obj/structure/machinery/door/airlock/almayer/maint, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -67910,6 +67910,12 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_m_s) +"tpt" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "tpD" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -69126,6 +69132,10 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"tQM" = ( +/obj/structure/safe/co_office, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "tQV" = ( /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/south1) @@ -69214,6 +69224,28 @@ icon_state = "orangecorner" }, /area/almayer/living/briefing) +"tSF" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/camera{ + pixel_x = -8; + pixel_y = 12 + }, +/obj/item/paper_bin/uscm{ + pixel_y = 6; + pixel_x = 6 + }, +/obj/item/tool/pen{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -8; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "tTp" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/sriracha{ @@ -69628,14 +69660,6 @@ /obj/item/frame/table, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_a_p) -"ubf" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "ubA" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -69677,6 +69701,15 @@ icon_state = "plate" }, /area/almayer/command/cic) +"udb" = ( +/obj/structure/sign/safety/ammunition{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "udi" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -69843,6 +69876,16 @@ icon_state = "cargo" }, /area/almayer/squads/req) +"ufS" = ( +/obj/structure/sign/safety/terminal{ + pixel_x = 7; + pixel_y = 29 + }, +/obj/structure/filingcabinet, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "ugs" = ( /obj/structure/surface/table/almayer, /obj/item/book/manual/marine_law{ @@ -70202,6 +70245,40 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"uoh" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/yellow{ + layer = 3.2 + }, +/obj/item/bedsheet/yellow{ + pixel_y = 13 + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = -16; + pixel_y = 8 + }, +/obj/item/toy/plush/barricade, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/port_emb) "uoi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -71983,13 +72060,6 @@ icon_state = "tcomms" }, /area/almayer/engineering/upper_engineering/starboard) -"uXW" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4; - icon_state = "exposed01-supply" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/combat_correspondent) "uYa" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -72026,16 +72096,6 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/hallways/repair_bay) -"uZY" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "uZZ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Basketball Court" @@ -72083,16 +72143,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"vbR" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "green" - }, -/area/almayer/squads/req) "vbS" = ( /obj/structure/closet/secure_closet/personal/patient{ name = "morgue closet" @@ -73045,16 +73095,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"vsI" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "vsJ" = ( /obj/structure/machinery/door/airlock/almayer/maint{ access_modified = 1; @@ -74058,6 +74098,14 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"vMC" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "vME" = ( /turf/open/floor/almayer{ dir = 9; @@ -74785,6 +74833,16 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull) +"vZJ" = ( +/obj/structure/sign/safety/intercom{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "wan" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/brown, @@ -74997,6 +75055,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"wdv" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "wdz" = ( /obj/effect/landmark/start/marine/engineer/charlie, /obj/effect/landmark/late_join/charlie, @@ -76071,6 +76138,13 @@ icon_state = "sterile_green" }, /area/almayer/medical/lower_medical_medbay) +"wAd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "wAR" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -76150,12 +76224,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"wDl" = ( -/obj/effect/decal/cleanable/blood/oil/streak, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "wDm" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -76350,13 +76418,6 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"wGI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "wGX" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -76757,6 +76818,16 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"wQa" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "wQg" = ( /turf/open/floor/almayer{ dir = 1; @@ -77018,17 +77089,6 @@ "wVb" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/lower_hull/l_a_s) -"wVw" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "wVy" = ( /obj/structure/window/reinforced{ dir = 8 @@ -77957,20 +78017,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"xoS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -30 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/shipboard/brig/armory) "xpd" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -78149,6 +78195,12 @@ icon_state = "cargo" }, /area/almayer/hallways/vehiclehangar) +"xtg" = ( +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "xtD" = ( /obj/structure/surface/table/almayer, /obj/item/tool/weldpack, @@ -78166,6 +78218,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"xub" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/brig/armory) "xuc" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, @@ -78614,12 +78677,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"xBb" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/combat_correspondent) "xBe" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/engineering/upper_engineering) @@ -79024,40 +79081,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"xKt" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj/item/bedsheet/yellow{ - layer = 3.2 - }, -/obj/item/bedsheet/yellow{ - pixel_y = 13 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = -16; - pixel_y = 8 - }, -/obj/item/toy/plush/barricade, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/port_emb) "xKM" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -79805,6 +79828,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering) +"xZf" = ( +/obj/structure/machinery/light, +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "xZz" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine/uscm/command/capt, @@ -80126,6 +80156,13 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) +"yeX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "yfm" = ( /obj/effect/landmark/start/marine/delta, /obj/effect/landmark/late_join/delta, @@ -80209,6 +80246,16 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"ygM" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "yhI" = ( /turf/open/floor/almayer{ dir = 4; @@ -80256,20 +80303,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) -"yiL" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/photo_album{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/folder/black{ - pixel_y = -3; - pixel_x = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "yiW" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -91259,7 +91292,7 @@ eZH ohJ thL thL -eeB +aHT liZ rUk jVa @@ -91841,9 +91874,9 @@ pCi rPC rwS lrq -kTc +fFq uqo -wVw +rhD cqn gTx eRL @@ -92044,9 +92077,9 @@ ahE rPC nfI lrq -omu +eTx uqo -sYB +hGa cqn ldu eRL @@ -92247,9 +92280,9 @@ ahE rPC heV lrq -frJ +lCn uqo -ktn +xub cqn nBb mdS @@ -92450,9 +92483,9 @@ ahE wcn nBc lrq -vsI +ebt uqo -xoS +lLN lrq mAT lrq @@ -92653,7 +92686,7 @@ pCi wcn wcn lrq -mAr +yeX uqo fsT jnA @@ -92856,7 +92889,7 @@ pCi oCL wcn lrq -uZY +ebz uqo uqo uqo @@ -93059,7 +93092,7 @@ pCi rPC aou lrq -mAr +yeX uqo uvy tfO @@ -97215,7 +97248,7 @@ aaa nXP ndx uNL -nDd +eRt soS sgy nsu @@ -97418,9 +97451,9 @@ aaa nXP hJp uNL -gka +lUv bwQ -oNf +gUr uNL aNw kXJ @@ -97762,7 +97795,7 @@ ukU bfP fvv vcK -wGI +wAd tuA tuA tuA @@ -101187,7 +101220,7 @@ sBF amY vtT wVW -abQ +nww atN cEl sOi @@ -101390,9 +101423,9 @@ agj aic aov wVW -atx +qyJ qEk -ajm +ksv wVW arP alX @@ -101404,7 +101437,7 @@ hkG wVW fvB qEk -auR +aGi wVW aKn aKz @@ -101593,7 +101626,7 @@ agj aic aov wVW -atx +qyJ qEk ato wVW @@ -101607,7 +101640,7 @@ aEB wVW fvB qEk -auR +aGi wVW aKn aKz @@ -101796,7 +101829,7 @@ agj aic aov wVW -ssW +nbr qEk hrm wVW @@ -101810,7 +101843,7 @@ aEC wVW dNZ qEk -mtX +xZf wVW aKn aKz @@ -101988,7 +102021,7 @@ cnX lIh agj mXj -afo +tQM lue ahw aiG @@ -101999,7 +102032,7 @@ agj aic aoA wVW -atx +qyJ jvX ato wVW @@ -102011,9 +102044,9 @@ alX aIf aED wVW -ryR +xtg jvX -auR +aGi wVW aKn aKy @@ -103810,7 +103843,7 @@ awW add add add -add +juf add add add @@ -103856,7 +103889,7 @@ baw aJU aJU aJU -wDl +hey aJU aJU aJU @@ -104440,7 +104473,7 @@ umS yjM qbO aqw -hnI +qRL bYe amO wZM @@ -105231,7 +105264,7 @@ aoC add add add -add +juf add add add @@ -105277,7 +105310,7 @@ baw aJU aJU aJU -aJU +eyv aJU aJU aJU @@ -106060,7 +106093,7 @@ aiX aiX aiX sHM -kUh +otK aiX aiX aiX @@ -108697,7 +108730,7 @@ dtM akU ajC sqf -anp +wQa wjz fnA jZY @@ -108900,7 +108933,7 @@ dtM aii ajC sqf -sOZ +udb oNJ eDo eDo @@ -109103,7 +109136,7 @@ dtM ajt aik sqf -anq +eTh awn xsz jTj @@ -109306,11 +109339,11 @@ dtM aii ajC sqf -anr +vZJ awn tEi -asu -hbI +iWb +ygM sqf ajl vtx @@ -112377,7 +112410,7 @@ awE bqy bYj eUR -bsd +gEI nDh bYj xne @@ -114205,7 +114238,7 @@ rne rne fAo awE -bhM +knT wQv bBi awE @@ -114612,7 +114645,7 @@ rne wft awE hpf -qhl +pbl igp awE hoX @@ -115883,7 +115916,7 @@ wNl nGh fPp lqN -xKt +uoh nsY xCN pOB @@ -115896,7 +115929,7 @@ aLJ eBg dAO cEG -ftg +ckE dYX tBF lBz @@ -116537,7 +116570,7 @@ bJz bdg wLV wLV -bKg +nMM wLV wLV wNT @@ -116550,7 +116583,7 @@ uVh nsY kzK lFh -ogZ +mus pVA mzV pML @@ -116702,7 +116735,7 @@ aLf tRc qEW bdd -eBE +gGo mLb wmz vpt @@ -120783,7 +120816,7 @@ rbY gwD bOK bPD -bYa +nSj bPD jOk bNB @@ -120986,7 +121019,7 @@ rbY bEc bKA bCA -bQS +gJs bCA bKA bEc @@ -121064,7 +121097,7 @@ aeA aeC aeC aeC -aeC +tpt aeC aeC aeC @@ -121112,7 +121145,7 @@ lJY vcE vcE vcE -vcE +oDO vcE vcE vcE @@ -122485,7 +122518,7 @@ amH aeC aeC aeC -aeC +tpt aeC aeC aeC @@ -122533,7 +122566,7 @@ kKR vcE vcE vcE -vcE +oDO vcE vcE vcE @@ -122618,7 +122651,7 @@ bZr bNQ bNQ bNQ -bGz +ohl hMs cbw iEb @@ -122821,7 +122854,7 @@ bZr krN krN krN -oqY +llt can buH iEb @@ -122927,9 +122960,9 @@ alG anG apf oIB -dQx -oDk -yiL +tSF +qyM +jog oIB sFR vuv @@ -123024,7 +123057,7 @@ bZr ibc uly bNN -vbR +fXt pky cbv cbS @@ -123130,9 +123163,9 @@ alG aYD uPI oIB -dGS -bOw -nuL +hJh +vMC +iUC oIB sFR vuv @@ -123333,9 +123366,9 @@ sUF anG apd oIB -dXs +ufS bZw -sDm +kaJ oIB sFR hPo @@ -123430,7 +123463,7 @@ bZr bKA dyx eYr -bUo +iii uys cbz cbU @@ -123537,8 +123570,8 @@ aYD aTS qgK tEB -xBb -gkv +llD +gGl oIB lBR nVu @@ -123633,7 +123666,7 @@ bmD bKA dyx hGN -pVx +ddN uys ttM iEb @@ -123740,8 +123773,8 @@ anG mPX oIB wKF -uXW -ubf +fOh +diM oIB fbx cFA @@ -123942,9 +123975,9 @@ aSC aZH iAB oIB -lOR -fTh -cVu +gqF +imW +qbh oIB fbx cxo @@ -124145,8 +124178,8 @@ rFY ctC gPF oIB -rNg -aUb +kUb +rJg pxj oIB fbx @@ -126167,8 +126200,8 @@ auu aoT aFm xBe -aIV -qqr +cij +jRZ arH xBe alG @@ -126575,7 +126608,7 @@ anO nFX atv auV -amE +ift xBe alG aDZ @@ -126778,7 +126811,7 @@ atc nFX atv auV -amE +ift xBe alG aYj @@ -127182,8 +127215,8 @@ atq aDr aFu xBe -azp -qJf +rwT +wdv anV xBe alG diff --git a/maps/shuttles/escape_shuttle_e_cl.dmm b/maps/shuttles/escape_shuttle_e_cl.dmm index df10125c3a3a..490f0abdfa95 100644 --- a/maps/shuttles/escape_shuttle_e_cl.dmm +++ b/maps/shuttles/escape_shuttle_e_cl.dmm @@ -42,7 +42,7 @@ /turf/open/shuttle/escapepod, /area/shuttle/escape_pod) "v" = ( -/obj/structure/machinery/computer/shuttle/escape_pod_panel{ +/obj/structure/machinery/computer/shuttle/escape_pod_panel/liaison{ pixel_y = 30 }, /turf/open/shuttle/escapepod{ @@ -50,8 +50,9 @@ }, /area/shuttle/escape_pod) "y" = ( -/obj/structure/machinery/door/airlock/evacuation{ - name = "\improper Evacuation Airlock CL-1" +/obj/structure/machinery/door/airlock/evacuation/liaison{ + name = "\improper Evacuation Airlock CL-1"; + id_tag = "cl_evac" }, /turf/open/floor/almayer{ icon_state = "test_floor4" diff --git a/sound/effects/creak1.ogg b/sound/effects/creak1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0cad4802ffa95dbf56228e95ce6ecafcf78c9f1a GIT binary patch literal 125071 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°%C$)iBM+kCr0ubHuqeVx2_YWYAj4e{bj9uPEyPg3XZis{*d zUx8?TqfOmMK4yQ{JNBENT-v#W{x$!({D-z1az~IXpM0*o=@s*DM?asvt+!B3;V#e4 z*%M+M7J#aFrY+BNHP^St!agaCk>UHuxl-NpZ{4SrPA^Dsj<>}Io)o;wF@duI&?LO; zzBd95fDgxVk$~7qPh8l0EqN<$>2@rDQA#PjjEr!aQl-oQ005wP=1WYl{xr^2nDMHh zZsKCQRF2EAYgH{b8^^W%&F`;x)3V=n`{(NutMPi%>W1hUr1p84-H`kFweDS4+o8Na z``J+2%Xl2z<7rIjEPf|8=ybk--rRC+PmR6m{oT#S=l1pshoW9?Iqz3{naznYKJh)X zgdz63x+=!K>KI+W4=`$X=MHqzb03H>yYyodj~Y~HUqCW z-YYie=+R{6Vg>V0-upQ(0Ql11XZ~WTuU|F?G9U9iUsM@%pM8$(lSfa>zSx_oTAz%L zDxQ`|sk-DPAD7+FvTw8O_whWsyjR~b&>&y!?;rAPfwq`!IsNBreZsRTYg(C%O@F`W zoSpslm|?MjnbGEiXL0;sdj zI~%D~>YhegPlmjUwR7FIo>X`Hpa1}#C486ZTsQ}W22H}d8Mh!XKnY&#Q!pU7fAnz3 zWlj40{aTm3wzioV&m{N4x_~mu$PM5EJ%yQeNTqCL5&!^zQiE`y3WrtTtOKlM%D?zXVpUGPQgWZ&-SR=Kt zA8cAWl+-8QPptGO=4(lQxyb#mS@N9t_xHo&pVI51`T6u0hm7}`{MrxQZPTmlX>{)& zn%x(^Ep$0qS^7pl={raji;A`715cJ+;>_%JT9&T2*|b=W(>}=G=})Kg?HBa09n0zF zx`}G(MfP1Og}G&p*P)GM#m@X6tS_&wb#gnsWekkZ@Sm6P-aEGBtK*JSPr5yKXv)Ye zP5rKK_lW*h0|(Wc{6z*e?v#(FE*Br~%KJR#70;|{QuL+Y?)lQhxwQ8LJG#g1mpnB=Wu;jb5Jo==AqN>@Bl>9@J74@(X(rv)UjIUUQeR55ZyL9VZ$&nor!K zdE^WxWFy|JNS_B4AxJZ;`!Cm!{$4fxJI%j?actWC7Cg3~*-z5^Q2kTMH@Ci<>Z=Z- zy^3_)Z_lN44%qX$U*MkH^l@AZ-fJP@0sv2EXHx(KK#PKPd0f4LEYo1P*MgpON7vlk)k^KGfnwzDK=a#EW-=p;~ z&^H$sSO7}_7QmPRHUL1+(pvyaTh)@80RR91?9kx0Jx|YAs|qqM(S6S#_}~0q@7u%A zFGLIJpLyRcEf2}oZnDeJpNcXW0w+;iCfnqPh~K#$zoHcEt+*G9%{LsWi5FUdN?be3 z{c9__M%6^0kg$Mt#}@VDhAzx1K`~+=)Xt?cZ$E7~Td^%(9UW_2e9HWF@;BZ0dG)A< z`$AKB*6YX2{(VN_!}Dv*!Q$X@|A6+U;(J>0Kd*;*Xy!``aj^mG zw&B4*ZJ!uGQ%QdttY%9{vZrFcRHOOb5h?GS350k^{d�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

k`qm`WvGx`rAwpGozW0a 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 literal 0 HcmV?d00001 diff --git a/sound/effects/creak3.ogg b/sound/effects/creak3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..88ff37a339ed5b1f068d3e874d5b0f724aaa968a GIT binary patch literal 52507 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 { @@ -21,6 +22,9 @@ export const EscapePodConsole = (_props, context) => { case 4: statusMessage = 'NO EVACUATION'; buttonColor = 'neutral'; + if (data.launch_without_evac) { + operable = 1; + } break; case 5: statusMessage = 'SYSTEMS DOWN'; From 467d441244c4dc8594349b3d3bcb909c0a16c966 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 09:50:49 +0000 Subject: [PATCH 40/51] Automatic changelog for PR #4699 [ci skip] --- html/changelogs/AutoChangeLog-pr-4699.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4699.yml diff --git a/html/changelogs/AutoChangeLog-pr-4699.yml b/html/changelogs/AutoChangeLog-pr-4699.yml new file mode 100644 index 000000000000..691f38c5f4e4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4699.yml @@ -0,0 +1,10 @@ +author: "Morrow, Zonespace" +delete-after: True +changes: + - rscadd: "Added objectives to hijack. You now must hold different sections of the ship to successfully launch lifeboats or pods" + - rscadd: "The areas that contribute to hijack objectives are the lifeboat pumps, astronav, and engineering" + - rscadd: "Fuel pumps now have red alert sentries" + - rscadd: "Corporate liaison evac shuttle now can be launched at any time even if evac has not been called" + - rscadd: "You can now self-destruct the ship by overloading the fusion generators in engineering once lifeboat fuel is at 100%." + - rscdel: "Removed auto launch of lifeboats and pods" + - code_imp: "Refactored EvacuationAuthority into SShijack" \ No newline at end of file From 21d1d10f28dbf6c29e5da2f9d318918c2b11caa6 Mon Sep 17 00:00:00 2001 From: 567Turtle <91508746+567Turtle@users.noreply.github.com> Date: Mon, 6 Nov 2023 03:39:00 -0600 Subject: [PATCH 41/51] new whistle (#4847) # About the pull request This replaces the normal whistle sound (lame) with the sound of a WW1 era trench whistle (cool). It's just a sound change, nothing more nothing less. # Explain why it's good for the game The sound of a trench whistle fucks hard for signaling pushes. Plus, the old one was really lame (lame). # Testing Photographs and Procedure

Screenshots & Videos https://voca.ro/1i3RumMIm8qm
# Changelog :cl: soundadd: New whistle sound effect /:cl: --- sound/items/whistle.ogg | Bin 23959 -> 33015 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sound/items/whistle.ogg b/sound/items/whistle.ogg index 8e276d522669a55f4cbde4ef11c71da717dfa4f4..3223f52cae3699044a36a33b40c68a6e715da48b 100644 GIT binary patch literal 33015 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 literal 23959 zcmeFYcUV(R_b56ENeB=yfdoP|^bi8l1#AhuO9>c25JHhEQtcY5p-PvgLg-amP_YFB z1Vp5RV8x2Pz4lkmM&Iu{-~HX+bIyI9^W6W=u(O#xZS7fQ)|xeIZ{NM!4Zy)aX+Pml zX7uL{BuoL85Ea7;ja@5(TeSSsB>GR|^RVq}J^!87dcvTmM6CRG@lC7$CFKeH8A=ms z!3^CSqP;z4Hz^{Ne!{vdAQ2$?Q0ekAY>%#YpYp9|{J(1A70nJ7+ z74N!sV{sJIh|ul0T+FayeMO8grJ*uOSZ|n=?4Y+&Q{ZH}(omga`hwg&VJ4#0J!R*h zJL?h9b{XY!ICk9RS;ap$q2Kc$LGNOQk`Bb0q1T4zXw;R&KtuhR774JSX#(p!yln^m zMu*(ZNtNv%s4fzQllqo!3`ch;#ry0?2%1lbpHDdAS(55~{)p%KRPTjUpD(HY#I%2| zuSf2GS-XBuodg4w$|l8+G`LDK++`E4KuTH*90abRgd~)&q>*23TNfPG7FymD(%chy zqmz206Z5+XL{-Gv+knc@vbz7*73^6Y^uNDoA;T0vgK&90TJCzZilwW{^%$z)ZwwCu zh^91G>R^n4b*#bl*v-&o9cM98=y3Cs!@7SFVU6qn&~)Vnqvb{*Y`AJo#~AL2-7+8R zI1iy>4I}^Sl=z!ppou7+3N8*~qxEzBf1`yB4NI&-n`8b!f*NqD9+S!@%0AvS5i5IA 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

46Vl;`K2^sR{?_s2W;t)p))3h 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 Date: Mon, 6 Nov 2023 10:21:56 +0000 Subject: [PATCH 42/51] Automatic changelog for PR #4847 [ci skip] --- html/changelogs/AutoChangeLog-pr-4847.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4847.yml diff --git a/html/changelogs/AutoChangeLog-pr-4847.yml b/html/changelogs/AutoChangeLog-pr-4847.yml new file mode 100644 index 000000000000..492ab7973cb1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4847.yml @@ -0,0 +1,4 @@ +author: "567Turtle" +delete-after: True +changes: + - soundadd: "New whistle sound effect" \ No newline at end of file From 38a22b8e7c08160c29d27ed8d5116dc9ea36d883 Mon Sep 17 00:00:00 2001 From: fira Date: Mon, 6 Nov 2023 10:40:08 +0100 Subject: [PATCH 43/51] Hotfixes being able to put anything in your boots (#4845) ![](https://cdn.discordapp.com/attachments/862155128441012234/1170748366125277214/dreamseeker_Akwa4enIMm.gif) # About the pull request Typechecks weren't actually acted upon, letting you put anything in your boots. Like, anything. It's funny but it's both breaking things and problematic for balance # Explain why it's good for the game Self evident i think # Testing Photographs and Procedure Can only put knives in now, as CM Dev intended # Changelog :cl: fix: Fixed being able to put anything in your boots. You're not wizards! /:cl: --- code/modules/clothing/clothing.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index a8f2a1776733..bffbda9f538a 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -341,9 +341,13 @@ return if(stored_item) return + var/allowed = FALSE for(var/allowed_item in items_allowed) - if(!istype(attacking_item, allowed_item)) - continue + if(istype(attacking_item, allowed_item)) + allowed = TRUE + break + if(!allowed) + return if(!insert_after) return TRUE insert_item(user, attacking_item) From b35b658d99534b8a48aa8117bfa42e837ed788bd Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:44:56 +0000 Subject: [PATCH 44/51] Automatic changelog for PR #4845 [ci skip] --- html/changelogs/AutoChangeLog-pr-4845.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4845.yml diff --git a/html/changelogs/AutoChangeLog-pr-4845.yml b/html/changelogs/AutoChangeLog-pr-4845.yml new file mode 100644 index 000000000000..6f72d4bf6272 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4845.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fixed being able to put anything in your boots. You're not wizards!" \ No newline at end of file From 28f373823043b3eecd21e722212a1efed3bbc470 Mon Sep 17 00:00:00 2001 From: tool mind <106038874+toolmind@users.noreply.github.com> Date: Mon, 6 Nov 2023 03:43:01 -0600 Subject: [PATCH 45/51] Xeno Tunnel and Shuttle Building/Anchoring Changes (#4831) # About the pull request This PR removes the ability to build walls (and other ground structures) on top of xeno tunnels, and removes the ability to anchor wall girders on shuttle tiles and tunnels. Barricades can still be moved on top of the tunnel's tile and anchored, though they can't be built while standing on it. # Explain why it's good for the game Being able to build walls on top of a gaping hole in the ground is pretty dumb, and results in weird interactions like having to right click to use the tunnel that's currently being covered up by a wall. The shuttle tiles were changed because, while you can't complete the girders if they're in a shuttle, you can still anchor them down. That doesn't seem intended since you can't build them while in a shuttle, and you also can't build/anchor barricades in shuttles. # Testing Photographs and Procedure

Screenshots & Videos
# Changelog :cl:IowaPotatoFarmer del: Removed the ability to build ground structures or anchor wall girders on top of xeno tunnels. fix: Fixed wall girders being anchorable on shuttle tiles. /:cl: --- code/game/objects/items/stacks/stack.dm | 5 +++++ code/game/objects/structures/girders.dm | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index d85e615bc1c8..3912e2d64165 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -182,6 +182,11 @@ Also change the icon to reflect the amount of sheets, if possible.*/ to_chat(usr, SPAN_WARNING("The [R.title] cannot be built here!")) //might cause some friendly fire regarding other items like barbed wire, shouldn't be a problem? return + var/obj/structure/tunnel/tunnel = locate(/obj/structure/tunnel) in usr.loc + if(tunnel) + to_chat(usr, SPAN_WARNING("The [R.title] cannot be constructed on a tunnel!")) + return + if((R.flags & RESULT_REQUIRES_SNOW) && !(istype(usr.loc, /turf/open/snow) || istype(usr.loc, /turf/open/auto_turf/snow))) to_chat(usr, SPAN_WARNING("The [R.title] must be built on snow!")) return diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index e719359ab439..6cd6a5cd0300 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -173,6 +173,14 @@ return do_reinforced_wall(W, user) if(STATE_DISPLACED) if(HAS_TRAIT(W, TRAIT_TOOL_CROWBAR)) + var/turf/open/floor = loc + if(!floor.allow_construction) + to_chat(user, SPAN_WARNING("The girder must be secured on a proper surface!")) + return + var/obj/structure/tunnel/tunnel = locate(/obj/structure/tunnel) in loc + if(tunnel) + to_chat(user, SPAN_WARNING("The girder cannot be secured on a tunnel!")) + return playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) to_chat(user, SPAN_NOTICE("Now securing the girder...")) if(!do_after(user, 40 * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) From 7244b0f13bdba38bec45e61005f8b548bda67a4a Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 11:05:55 +0000 Subject: [PATCH 46/51] Automatic changelog for PR #4831 [ci skip] --- html/changelogs/AutoChangeLog-pr-4831.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4831.yml diff --git a/html/changelogs/AutoChangeLog-pr-4831.yml b/html/changelogs/AutoChangeLog-pr-4831.yml new file mode 100644 index 000000000000..f405e983a48b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4831.yml @@ -0,0 +1,5 @@ +author: "IowaPotatoFarmer" +delete-after: True +changes: + - rscdel: "Removed the ability to build ground structures or anchor wall girders on top of xeno tunnels." + - bugfix: "Fixed wall girders being anchorable on shuttle tiles." \ No newline at end of file From 8e7909df0e4d860bcfc3baff8679207ab53b93ef Mon Sep 17 00:00:00 2001 From: Doubleumc Date: Mon, 6 Nov 2023 04:43:29 -0500 Subject: [PATCH 47/51] Vehicles hear exterior audio (#4815) # About the pull request As described in issue #4777 while vehicle interiors are intended to hear external sounds, it is largely nonfunctional. Sounds are either not heard or are inaudibly quiet. This is due to several smaller issues working together. First, interiors are not detected as interiors. In commit https://github.com/cmss13-devs/cmss13/commit/0808500777f390bbe1d59142e955678344ef6d3e the types stored in the `used_turfs` list were changed to weakrefs, but the `is_interior()` function still checked for the old type, causing it to always return `FALSE`: https://github.com/cmss13-devs/cmss13/blob/5fbe14390f80225a5d295f07b9acf781fb8aa2b2/code/controllers/subsystem/interior.dm#L54-L58 Fixed by checking for the correct type. Second, the `get_interior_by_coords()` function returned an object on success, but returned `FALSE` on failure - which still counted as an object. Since shuttles add turfs to `used_turfs` but don't have actual interiors, they would pass `is_interior()` but fail `get_interior_by_coords()`. The sound code expected any object received at this point to be valid, but using `FALSE` would thrown an error: https://github.com/cmss13-devs/cmss13/blob/5fbe14390f80225a5d295f07b9acf781fb8aa2b2/code/game/sound.dm#L82-L84 Fixed by returning `null` on failure. Third, the audio was now playing but in the wrong part of the interior. It was offset to the top-right corner because `get_middle_coords()` got the difference between the bounds, but never actually averaged them: https://github.com/cmss13-devs/cmss13/blob/5fbe14390f80225a5d295f07b9acf781fb8aa2b2/code/modules/vehicles/interior/interior.dm#L321 Fixed by dividing the difference by two. Fourth, the sound playback zone was oriented incorrectly because the width and height were transposed when creating the zone. Rectangles were defined as width then height, but the sound subsystem was passing height then width: https://github.com/cmss13-devs/cmss13/blob/5fbe14390f80225a5d295f07b9acf781fb8aa2b2/code/controllers/subsystem/sound.dm#L44 Fixed by passing width then height. # Explain why it's good for the game Vehicle interiors were intended to hear external sounds. This restores that functionality. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: vehicle interiors can hear exterior noises /:cl: --------- Co-authored-by: harryob --- code/controllers/subsystem/interior.dm | 4 ++-- code/controllers/subsystem/sound.dm | 2 +- code/modules/vehicles/interior/interior.dm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/controllers/subsystem/interior.dm b/code/controllers/subsystem/interior.dm index 389e95fe6022..8fb7ffbfeee7 100644 --- a/code/controllers/subsystem/interior.dm +++ b/code/controllers/subsystem/interior.dm @@ -42,7 +42,7 @@ SUBSYSTEM_DEF(interior) continue if(x >= bounds[1].x && x <= bounds[2].x && y >= bounds[1].y && y <= bounds[2].y) return current_interior - return FALSE + return /// Checks if an atom is in an interior /datum/controller/subsystem/interior/proc/in_interior(loc) @@ -51,7 +51,7 @@ SUBSYSTEM_DEF(interior) if(!isturf(loc)) loc = get_turf(loc) - var/datum/turf_reservation/interior/reservation = SSmapping.used_turfs[loc] + var/datum/weakref/reservation = SSmapping.used_turfs[loc] if(!istype(reservation)) return FALSE diff --git a/code/controllers/subsystem/sound.dm b/code/controllers/subsystem/sound.dm index 1935294394e7..4fdfd7935349 100644 --- a/code/controllers/subsystem/sound.dm +++ b/code/controllers/subsystem/sound.dm @@ -41,5 +41,5 @@ SUBSYSTEM_DEF(sound) if(VI?.ready) var/list/bounds = VI.get_middle_coords() if(bounds.len >= 2) - hearers |= SSquadtree.players_in_range(RECT(bounds[1], bounds[2], VI.map_template.height, VI.map_template.width), bounds[3]) + hearers |= SSquadtree.players_in_range(RECT(bounds[1], bounds[2], VI.map_template.width, VI.map_template.height), bounds[3]) template_queue[template] = hearers diff --git a/code/modules/vehicles/interior/interior.dm b/code/modules/vehicles/interior/interior.dm index 046b42495ac7..f2afcd5ae5f7 100644 --- a/code/modules/vehicles/interior/interior.dm +++ b/code/modules/vehicles/interior/interior.dm @@ -318,7 +318,7 @@ var/turf/min = reservation.bottom_left_coords var/turf/max = reservation.top_right_coords - return list(Floor(min[1] + (max[1] - min[1])), Floor(min[2] + (max[2] - min[2])), min[3]) + return list(Floor(min[1] + (max[1] - min[1])/2), Floor(min[2] + (max[2] - min[2])/2), min[3]) /datum/interior/proc/get_middle_turf() var/list/turf/bounds = get_bound_turfs() From c05a9cb0f521efac20b07f9566929bfb3a267e25 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 11:23:48 +0000 Subject: [PATCH 48/51] Automatic changelog for PR #4815 [ci skip] --- html/changelogs/AutoChangeLog-pr-4815.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4815.yml diff --git a/html/changelogs/AutoChangeLog-pr-4815.yml b/html/changelogs/AutoChangeLog-pr-4815.yml new file mode 100644 index 000000000000..029707a4b807 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4815.yml @@ -0,0 +1,4 @@ +author: "Doubleumc" +delete-after: True +changes: + - bugfix: "vehicle interiors can hear exterior noises" \ No newline at end of file From 2bf2540ce3ac14b2845f16a340f3d6028f976e9b Mon Sep 17 00:00:00 2001 From: Blundir <100090741+Blundir@users.noreply.github.com> Date: Tue, 7 Nov 2023 01:03:00 +0200 Subject: [PATCH 49/51] Shotgun tube toggle hotkey (#4794) # About the pull request Adds hotkey to toggling multi magazine on multi tube shotgun. # Explain why it's good for the game Having hotkeys for combat related actions is very important.
# Changelog :cl: add: added shotgun tube toggle hotkey /:cl: --------- Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com> --- code/__DEFINES/keybinding.dm | 1 + code/datums/keybinding/human_combat.dm | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/code/__DEFINES/keybinding.dm b/code/__DEFINES/keybinding.dm index 88f194bb33df..5a0809d83ac1 100644 --- a/code/__DEFINES/keybinding.dm +++ b/code/__DEFINES/keybinding.dm @@ -87,6 +87,7 @@ #define COMSIG_KB_HUMAN_WEAPON_UNLOAD "keybinding_human_weapon_unload" #define COMSIG_KB_HUMAN_WEAPON_ATTACHMENT "keybinding_human_weapon_attachment" #define COMSIG_KB_HUMAN_WEAPON_ATTACHMENT_RAIL "keybinding_human_weapon_attachment_rail" +#define COMSIG_KB_HUMAN_WEAPON_SHOTGUN_TUBE "keybinding_human_weapon_shotgun_tube" #define COMSIG_KB_HUMAN_WEAPON_TOGGLE_IFF "keybinding_human_weapon_toggle_iff" diff --git a/code/datums/keybinding/human_combat.dm b/code/datums/keybinding/human_combat.dm index 2f37efc61438..d30414d68563 100644 --- a/code/datums/keybinding/human_combat.dm +++ b/code/datums/keybinding/human_combat.dm @@ -190,3 +190,20 @@ var/obj/item/weapon/gun/rifle/m46c/COgun = held_item COgun.toggle_iff(human) return TRUE + +/datum/keybinding/human/combat/toggle_shotgun_tube + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") + name = "toggle_shotgun_tube" + full_name = "Toggle Shotgun Tube" + keybind_signal = COMSIG_KB_HUMAN_WEAPON_SHOTGUN_TUBE + +/datum/keybinding/human/combat/toggle_shotgun_tube/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/human = user.mob + var/obj/item/weapon/gun/shotgun/pump/dual_tube/held_item = human.get_held_item() + if(istype(held_item)) + held_item.toggle_tube() + return TRUE From ca2ccf345cb2a1826ff4f2619a77afc52047a779 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 6 Nov 2023 23:15:31 +0000 Subject: [PATCH 50/51] Automatic changelog for PR #4794 [ci skip] --- html/changelogs/AutoChangeLog-pr-4794.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4794.yml diff --git a/html/changelogs/AutoChangeLog-pr-4794.yml b/html/changelogs/AutoChangeLog-pr-4794.yml new file mode 100644 index 000000000000..2cfd2f357e4b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4794.yml @@ -0,0 +1,4 @@ +author: "Blundir" +delete-after: True +changes: + - rscadd: "added shotgun tube toggle hotkey" \ No newline at end of file From 329074ce3fdca18d25252537c226064209d6e6c1 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 7 Nov 2023 01:09:53 +0000 Subject: [PATCH 51/51] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4572.yml | 5 -- html/changelogs/AutoChangeLog-pr-4623.yml | 4 -- html/changelogs/AutoChangeLog-pr-4628.yml | 4 -- html/changelogs/AutoChangeLog-pr-4699.yml | 10 ---- html/changelogs/AutoChangeLog-pr-4794.yml | 4 -- html/changelogs/AutoChangeLog-pr-4796.yml | 5 -- html/changelogs/AutoChangeLog-pr-4811.yml | 5 -- html/changelogs/AutoChangeLog-pr-4815.yml | 4 -- html/changelogs/AutoChangeLog-pr-4819.yml | 4 -- html/changelogs/AutoChangeLog-pr-4823.yml | 4 -- html/changelogs/AutoChangeLog-pr-4825.yml | 4 -- html/changelogs/AutoChangeLog-pr-4826.yml | 4 -- html/changelogs/AutoChangeLog-pr-4830.yml | 4 -- html/changelogs/AutoChangeLog-pr-4831.yml | 5 -- html/changelogs/AutoChangeLog-pr-4832.yml | 4 -- html/changelogs/AutoChangeLog-pr-4834.yml | 4 -- html/changelogs/AutoChangeLog-pr-4835.yml | 4 -- html/changelogs/AutoChangeLog-pr-4838.yml | 4 -- html/changelogs/AutoChangeLog-pr-4841.yml | 4 -- html/changelogs/AutoChangeLog-pr-4845.yml | 4 -- html/changelogs/AutoChangeLog-pr-4847.yml | 4 -- html/changelogs/archive/2023-11.yml | 60 +++++++++++++++++++++++ 22 files changed, 60 insertions(+), 94 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4572.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4623.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4628.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4699.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4794.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4796.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4811.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4815.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4819.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4823.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4825.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4826.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4830.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4831.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4832.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4834.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4835.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4838.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4841.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4845.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4847.yml diff --git a/html/changelogs/AutoChangeLog-pr-4572.yml b/html/changelogs/AutoChangeLog-pr-4572.yml deleted file mode 100644 index 5dd4e07a3200..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4572.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "TopHatPenguin" -delete-after: True -changes: - - rscadd: "Adds a mostly built communications office nightmare insert to Kutjevo which attaches onto the sensor tower." - - rscadd: "Re-adds the Kutjevo blackbox." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4623.yml b/html/changelogs/AutoChangeLog-pr-4623.yml deleted file mode 100644 index d79a53a45b70..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4623.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Firartix and Frans_Feiffer" -delete-after: True -changes: - - rscadd: "Readded Halloween pumpkin helmets." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4628.yml b/html/changelogs/AutoChangeLog-pr-4628.yml deleted file mode 100644 index e00fa7383896..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4628.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - rscadd: "Added a big line to Nightmare survivor spawns that indicates hostility." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4699.yml b/html/changelogs/AutoChangeLog-pr-4699.yml deleted file mode 100644 index 691f38c5f4e4..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4699.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Morrow, Zonespace" -delete-after: True -changes: - - rscadd: "Added objectives to hijack. You now must hold different sections of the ship to successfully launch lifeboats or pods" - - rscadd: "The areas that contribute to hijack objectives are the lifeboat pumps, astronav, and engineering" - - rscadd: "Fuel pumps now have red alert sentries" - - rscadd: "Corporate liaison evac shuttle now can be launched at any time even if evac has not been called" - - rscadd: "You can now self-destruct the ship by overloading the fusion generators in engineering once lifeboat fuel is at 100%." - - rscdel: "Removed auto launch of lifeboats and pods" - - code_imp: "Refactored EvacuationAuthority into SShijack" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4794.yml b/html/changelogs/AutoChangeLog-pr-4794.yml deleted file mode 100644 index 2cfd2f357e4b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4794.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Blundir" -delete-after: True -changes: - - rscadd: "added shotgun tube toggle hotkey" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4796.yml b/html/changelogs/AutoChangeLog-pr-4796.yml deleted file mode 100644 index b314142a6e81..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4796.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "BeagleGaming1" -delete-after: True -changes: - - code_imp: "Tents now hold the datum directly, instead of the typepath" - - admin: "Added a proc for staff to change tent dmm's" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4811.yml b/html/changelogs/AutoChangeLog-pr-4811.yml deleted file mode 100644 index c679e21335ac..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4811.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "AndroBetel" -delete-after: True -changes: - - spellcheck: "Fixed a typo in RO rules sign." - - spellcheck: "RO mention is no more, replaced with QM." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4815.yml b/html/changelogs/AutoChangeLog-pr-4815.yml deleted file mode 100644 index 029707a4b807..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4815.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Doubleumc" -delete-after: True -changes: - - bugfix: "vehicle interiors can hear exterior noises" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4819.yml b/html/changelogs/AutoChangeLog-pr-4819.yml deleted file mode 100644 index 48abe6072890..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4819.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "IowaPotatoFarmer" -delete-after: True -changes: - - rscadd: "Added new survivor presets for New Varadero to make them more visually distinct and unique to the map." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4823.yml b/html/changelogs/AutoChangeLog-pr-4823.yml deleted file mode 100644 index 75e0f5807495..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4823.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed various job's entry messages having broken links to the wiki" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4825.yml b/html/changelogs/AutoChangeLog-pr-4825.yml deleted file mode 100644 index a63550514e3b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4825.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xander3359" -delete-after: True -changes: - - bugfix: "Fixes being able to create ghost tanks from a Broiler-T unit." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4826.yml b/html/changelogs/AutoChangeLog-pr-4826.yml deleted file mode 100644 index b06b575cb81d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4826.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Steelpoint" -delete-after: True -changes: - - rscadd: "Corpsman can chose to optionally vend a set of armoured sterile gloves as a alternative to regular gloves. They provide full glove protection, but are otherwise an aesthetic choice." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4830.yml b/html/changelogs/AutoChangeLog-pr-4830.yml deleted file mode 100644 index 2eaaf3f2081f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4830.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - admin: "Added better logging for orbital bombardment." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4831.yml b/html/changelogs/AutoChangeLog-pr-4831.yml deleted file mode 100644 index f405e983a48b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4831.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "IowaPotatoFarmer" -delete-after: True -changes: - - rscdel: "Removed the ability to build ground structures or anchor wall girders on top of xeno tunnels." - - bugfix: "Fixed wall girders being anchorable on shuttle tiles." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4832.yml b/html/changelogs/AutoChangeLog-pr-4832.yml deleted file mode 100644 index 9f9570a6cc47..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4832.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "blackdragonTOW" -delete-after: True -changes: - - imageadd: "Changed nanotrasen cashcard icon to W-Y" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4834.yml b/html/changelogs/AutoChangeLog-pr-4834.yml deleted file mode 100644 index 7778f38607b4..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4834.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Alexguinea" -delete-after: True -changes: - - rscadd: "Added toners to the rec vendor" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4835.yml b/html/changelogs/AutoChangeLog-pr-4835.yml deleted file mode 100644 index 6fcce13e1ece..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4835.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - rscdel: "Removed unused magnet and mass driver legacy SS13 machinery." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4838.yml b/html/changelogs/AutoChangeLog-pr-4838.yml deleted file mode 100644 index 0bde8de19bd9..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4838.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SpartanBobby" -delete-after: True -changes: - - maptweak: "Alot of changes to big reds admin area, including new windows, prop placement, room detailing, new doors" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4841.yml b/html/changelogs/AutoChangeLog-pr-4841.yml deleted file mode 100644 index d6f6b2fae886..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4841.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Releasethesea" -delete-after: True -changes: - - balance: "Makes it so that Pill packets fit in helmets" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4845.yml b/html/changelogs/AutoChangeLog-pr-4845.yml deleted file mode 100644 index 6f72d4bf6272..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4845.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed being able to put anything in your boots. You're not wizards!" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4847.yml b/html/changelogs/AutoChangeLog-pr-4847.yml deleted file mode 100644 index 492ab7973cb1..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4847.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "567Turtle" -delete-after: True -changes: - - soundadd: "New whistle sound effect" \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 2d89cade6388..18b35afdd339 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -48,3 +48,63 @@ you pack and send crates and items via disposals again. - balance: Whiskey Outpost supply drops should now be more interesting and impactful. - rscadd: Added missing Synth vendors on WO. +2023-11-07: + 567Turtle: + - soundadd: New whistle sound effect + Alexguinea: + - rscadd: Added toners to the rec vendor + AndroBetel: + - spellcheck: Fixed a typo in RO rules sign. + - spellcheck: RO mention is no more, replaced with QM. + BeagleGaming1: + - code_imp: Tents now hold the datum directly, instead of the typepath + - admin: Added a proc for staff to change tent dmm's + Blundir: + - rscadd: added shotgun tube toggle hotkey + Doubleumc: + - bugfix: vehicle interiors can hear exterior noises + Drathek: + - bugfix: Fixed various job's entry messages having broken links to the wiki + Firartix and Frans_Feiffer: + - rscadd: Readded Halloween pumpkin helmets. + IowaPotatoFarmer: + - rscadd: Added new survivor presets for New Varadero to make them more visually + distinct and unique to the map. + - rscdel: Removed the ability to build ground structures or anchor wall girders + on top of xeno tunnels. + - bugfix: Fixed wall girders being anchorable on shuttle tiles. + Morrow, Zonespace: + - rscadd: Added objectives to hijack. You now must hold different sections of the + ship to successfully launch lifeboats or pods + - rscadd: The areas that contribute to hijack objectives are the lifeboat pumps, + astronav, and engineering + - rscadd: Fuel pumps now have red alert sentries + - rscadd: Corporate liaison evac shuttle now can be launched at any time even if + evac has not been called + - rscadd: You can now self-destruct the ship by overloading the fusion generators + in engineering once lifeboat fuel is at 100%. + - rscdel: Removed auto launch of lifeboats and pods + - code_imp: Refactored EvacuationAuthority into SShijack + Releasethesea: + - balance: Makes it so that Pill packets fit in helmets + SpartanBobby: + - maptweak: Alot of changes to big reds admin area, including new windows, prop + placement, room detailing, new doors + Steelpoint: + - rscadd: Corpsman can chose to optionally vend a set of armoured sterile gloves + as a alternative to regular gloves. They provide full glove protection, but + are otherwise an aesthetic choice. + TopHatPenguin: + - rscadd: Adds a mostly built communications office nightmare insert to Kutjevo + which attaches onto the sensor tower. + - rscadd: Re-adds the Kutjevo blackbox. + Xander3359: + - bugfix: Fixes being able to create ghost tanks from a Broiler-T unit. + blackdragonTOW: + - imageadd: Changed nanotrasen cashcard icon to W-Y + fira: + - rscdel: Removed unused magnet and mass driver legacy SS13 machinery. + - bugfix: Fixed being able to put anything in your boots. You're not wizards! + - admin: Added better logging for orbital bombardment. + realforest2001: + - rscadd: Added a big line to Nightmare survivor spawns that indicates hostility.