diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 5cce2d161146..d8522d6139f0 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -177,6 +177,11 @@ SUBSYSTEM_DEF(shuttle) else if(pack.access_view) pack.desc += " Requires [SSid_access.get_access_desc(pack.access_view)] access to purchase." + if(pack.goody) + var/datum/supply_pack/goody/goody_to_check = pack + if(goody_to_check.restricted_green) + pack.desc += " Requires an alert level above [/datum/security_level/green::name] alert to purchase." + supply_packs[pack.id] = pack for (var/obj/machinery/computer/cargo/express/console as anything in express_consoles) diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm index 055e13493ddf..74e92624190b 100644 --- a/code/modules/cargo/goodies.dm +++ b/code/modules/cargo/goodies.dm @@ -4,6 +4,8 @@ group = "Goodies" goody = TRUE discountable = SUPPLY_PACK_STD_DISCOUNTABLE + /// If true, can't be ordered on green alert, used for things like armory weapons + var/restricted_green = FALSE /datum/supply_pack/goody/clear_pda name = "Mint Condition Nanotrasen Clear PDA" @@ -45,6 +47,7 @@ cost = PAYCHECK_COMMAND * 2.5 access_view = ACCESS_WEAPONS contains = list(/obj/item/grenade/stingbang) + restricted_green = TRUE /datum/supply_pack/goody/Survivalknives_single name = "Survival Knife Single-Pack" @@ -61,6 +64,7 @@ /obj/item/gun/ballistic/shotgun/automatic/combat, /obj/item/storage/belt/bandolier ) + restricted_green = TRUE /datum/supply_pack/goody/disabler_single name = "Disabler Single-Pack" @@ -75,6 +79,7 @@ cost = PAYCHECK_COMMAND * 12 access_view = ACCESS_WEAPONS contains = list(/obj/item/gun/energy/e_gun) + restricted_green = TRUE /datum/supply_pack/goody/laser_single name = "Type 5 Laser Gun Single-Pack" @@ -82,6 +87,7 @@ cost = PAYCHECK_COMMAND * 6 access_view = ACCESS_WEAPONS contains = list(/obj/item/gun/energy/laser) + restricted_green = TRUE /datum/supply_pack/goody/carbine_single name = "Type 5R Laser Carbine Single_Pack" @@ -89,6 +95,7 @@ cost = PAYCHECK_COMMAND * 8 access_view = ACCESS_WEAPONS contains = list(/obj/item/gun/energy/laser/carbine) + restricted_green = TRUE /datum/supply_pack/goody/laser_pistol_single name = "Type 5C Laser Pistol Single-Pack" @@ -96,6 +103,7 @@ cost = PAYCHECK_COMMAND * 2 access_view = ACCESS_WEAPONS contains = list(/obj/item/storage/belt/holster/energy/laser_pistol) + restricted_green = TRUE /datum/supply_pack/goody/laser_single_soul name = "Type 3 Laser Gun Single-Pack" @@ -103,13 +111,15 @@ cost = PAYCHECK_COMMAND * 6 access_view = ACCESS_WEAPONS contains = list(/obj/item/gun/energy/laser/soul) + restricted_green = TRUE /datum/supply_pack/goody/smg_single - name = "Disabler SMG Single_Pack" + name = "Disabler SMG Single-Pack" desc = "Contains one disabler SMGs, capable of rapidly firing weak disabler beams." cost = PAYCHECK_COMMAND * 6 access_view = ACCESS_WEAPONS contains = list(/obj/item/gun/energy/disabler/smg) + restricted_green = TRUE /datum/supply_pack/goody/hell_single name = "Hellgun Kit Single-Pack" @@ -117,6 +127,7 @@ cost = PAYCHECK_CREW * 2 access_view = ACCESS_WEAPONS contains = list(/obj/item/weaponcrafting/gunkit/hellgun) + restricted_green = TRUE /datum/supply_pack/goody/thermal_single name = "Thermal Pistol Holster Single-Pack" @@ -124,6 +135,7 @@ cost = PAYCHECK_COMMAND * 15 access_view = ACCESS_WEAPONS contains = list(/obj/item/storage/belt/holster/energy/thermal) + restricted_green = TRUE /datum/supply_pack/goody/sologamermitts name = "Insulated Gloves Single-Pack" diff --git a/code/modules/cargo/orderconsole.dm b/code/modules/cargo/orderconsole.dm index bf137549f513..dd8abb83df61 100644 --- a/code/modules/cargo/orderconsole.dm +++ b/code/modules/cargo/orderconsole.dm @@ -271,6 +271,13 @@ say("ERROR: Small crates may only be purchased by private accounts.") return + if(pack.goody) + var/datum/supply_pack/goody/goody_to_check = pack + if(goody_to_check.restricted_green && SSsecurity_level.get_current_level_as_number() == SEC_LEVEL_GREEN) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) + say("ERROR: This pack cannot be purchased unless the station is at [/datum/security_level/blue::name] alert or higher.") + return + var/similar_count = SSshuttle.supply.get_order_count(pack) if(similar_count == OVER_ORDER_LIMIT) playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) diff --git a/code/modules/cargo/packs/_packs.dm b/code/modules/cargo/packs/_packs.dm index 6fb489e31293..b6a1f168cf39 100644 --- a/code/modules/cargo/packs/_packs.dm +++ b/code/modules/cargo/packs/_packs.dm @@ -43,6 +43,8 @@ var/discountable = SUPPLY_PACK_NOT_DISCOUNTABLE /// NON-MODULE CHANGE : Does this override departmental orders to be unavailable from them? var/no_departmental_orders = FALSE + /// NON-MODULE CHANGE : An override to where the departmental order area for this item goes, assign this as a list, priority from first to last element + var/departmental_order_area_override /datum/supply_pack/New() id = type diff --git a/code/modules/cargo/packs/science.dm b/code/modules/cargo/packs/science.dm index f0de463c4490..3aa271fbdc0d 100644 --- a/code/modules/cargo/packs/science.dm +++ b/code/modules/cargo/packs/science.dm @@ -3,177 +3,164 @@ access_view = ACCESS_RESEARCH crate_type = /obj/structure/closet/crate/science -/datum/supply_pack/science/plasma +/datum/supply_pack/science/rped + name = "RPED crate" + desc = "Need to rebuild the ORM but science got annihialted after a bomb test? \ + Buy this for the most advanced parts NT can give you." + cost = CARGO_CRATE_VALUE * 3 + contains = list(/obj/item/storage/part_replacer/cargo) + crate_name = "\improper RPED crate" + +/datum/supply_pack/science/shieldwalls + name = "Shield Generator Crate" + desc = "These high powered Shield Wall Generators are guaranteed to keep any unwanted \ + lifeforms on the outside, where they belong! Contains four shield wall generators." + cost = CARGO_CRATE_VALUE * 4 + access = ACCESS_TELEPORTER + access_view = ACCESS_TELEPORTER + contains = list(/obj/machinery/power/shieldwallgen = 4) + crate_name = "shield generators crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/monkey_helmets + name = "Monkey Mind Magnification Helmet crate" + desc = "Some research is best done with monkeys, yet sometimes they're \ + just too dumb to complete more complicated tasks. These two helmets should help." + cost = CARGO_CRATE_VALUE * 3 + contains = list(/obj/item/clothing/head/helmet/monkey_sentience = 2) + crate_name = "monkey mind magnification crate" + +/datum/supply_pack/science/cytology + name = "Cytology supplies crate" + desc = "Did out-of-control specimens pulverize xenobiology? Here's some more \ + supplies for further testing. Contains a microscope, biopsy tool, two petri dishes, \ + a box of swabs, and a plumbing tool." + cost = CARGO_CRATE_VALUE * 3 + access_view = ACCESS_XENOBIOLOGY + contains = list(/obj/structure/microscope, + /obj/item/biopsy_tool, + /obj/item/storage/box/petridish = 2, + /obj/item/storage/box/swab, + /obj/item/construction/plumbing/research, + ) + crate_name = "cytology supplies crate" + +// NON-MODULE CHANGE : everything for ordnance put under ordnance for an easier time giving them a departmental order area override. also these have a lot of shared variables so ??? +/datum/supply_pack/science/ordnance + access = ACCESS_ORDNANCE + access_view = ACCESS_ORDNANCE + crate_type = /obj/structure/closet/crate/secure/science + departmental_order_area_override = list( + /area/station/science/ordnance, + /area/station/science/ordnance/office, + /area/station/science/ordnance/testlab, + ) + +/datum/supply_pack/science/ordnance/plasma name = "Plasma Assembly Crate" desc = "Everything you need to burn something to the ground, this contains three \ plasma assembly sets. Each set contains a plasma tank, igniter, proximity sensor, \ and timer! Warranty void if exposed to high temperatures." cost = CARGO_CRATE_VALUE * 2 - access = ACCESS_ORDNANCE - access_view = ACCESS_ORDNANCE contains = list(/obj/item/tank/internals/plasma = 3, /obj/item/assembly/igniter = 3, /obj/item/assembly/prox_sensor = 3, /obj/item/assembly/timer = 3, ) crate_name = "plasma assembly crate" - crate_type = /obj/structure/closet/crate/secure/plasma -/datum/supply_pack/science/raw_flux_anomaly +/datum/supply_pack/science/ordnance/raw_flux_anomaly name = "Raw Flux Anomaly" desc = "Contains the raw core of a flux anomaly, ready to be implosion-compressed into a powerful artifact." cost = CARGO_CRATE_VALUE * 10 - access = ACCESS_ORDNANCE - access_view = ACCESS_ORDNANCE contains = list(/obj/item/raw_anomaly_core/flux) crate_name = "raw flux anomaly" - crate_type = /obj/structure/closet/crate/secure/science -/datum/supply_pack/science/raw_hallucination_anomaly +/datum/supply_pack/science/ordnance/raw_hallucination_anomaly name = "Raw Hallucination Anomaly" desc = "Contains the raw core of a hallucination anomaly, ready to be implosion-compressed into a powerful artifact." cost = CARGO_CRATE_VALUE * 10 - access = ACCESS_ORDNANCE - access_view = ACCESS_ORDNANCE contains = list(/obj/item/raw_anomaly_core/hallucination) crate_name = "raw hallucination anomaly" - crate_type = /obj/structure/closet/crate/secure/science -/datum/supply_pack/science/raw_grav_anomaly +/datum/supply_pack/science/ordnance/raw_grav_anomaly name = "Raw Gravitational Anomaly" desc = "Contains the raw core of a gravitational anomaly, ready to be implosion-compressed into a powerful artifact." cost = CARGO_CRATE_VALUE * 10 - access = ACCESS_ORDNANCE - access_view = ACCESS_ORDNANCE contains = list(/obj/item/raw_anomaly_core/grav) crate_name = "raw gravitational anomaly" - crate_type = /obj/structure/closet/crate/secure/science -/datum/supply_pack/science/raw_vortex_anomaly +/datum/supply_pack/science/ordnance/raw_vortex_anomaly name = "Raw Vortex Anomaly" desc = "Contains the raw core of a vortex anomaly, ready to be implosion-compressed into a powerful artifact." cost = CARGO_CRATE_VALUE * 10 - access = ACCESS_ORDNANCE - access_view = ACCESS_ORDNANCE contains = list(/obj/item/raw_anomaly_core/vortex) crate_name = "raw vortex anomaly" - crate_type = /obj/structure/closet/crate/secure/science -/datum/supply_pack/science/raw_bluespace_anomaly +/datum/supply_pack/science/ordnance/raw_bluespace_anomaly name = "Raw Bluespace Anomaly" desc = "Contains the raw core of a bluespace anomaly, ready to be implosion-compressed into a powerful artifact." cost = CARGO_CRATE_VALUE * 10 - access = ACCESS_ORDNANCE - access_view = ACCESS_ORDNANCE contains = list(/obj/item/raw_anomaly_core/bluespace) crate_name = "raw bluespace anomaly" - crate_type = /obj/structure/closet/crate/secure/science -/datum/supply_pack/science/raw_pyro_anomaly +/datum/supply_pack/science/ordnance/raw_pyro_anomaly name = "Raw Pyro Anomaly" desc = "Contains the raw core of a pyro anomaly, ready to be implosion-compressed into a powerful artifact." cost = CARGO_CRATE_VALUE * 10 - access = ACCESS_ORDNANCE - access_view = ACCESS_ORDNANCE contains = list(/obj/item/raw_anomaly_core/pyro) crate_name = "raw pyro anomaly" - crate_type = /obj/structure/closet/crate/secure/science -/datum/supply_pack/science/raw_bioscrambler_anomaly +/datum/supply_pack/science/ordnance/raw_bioscrambler_anomaly name = "Raw Bioscrambler Anomaly" desc = "Contains the raw core of a bioscrambler anomaly, ready to be implosion-compressed into a powerful artifact." cost = CARGO_CRATE_VALUE * 10 - access = ACCESS_ORDNANCE - access_view = ACCESS_ORDNANCE contains = list(/obj/item/raw_anomaly_core/bioscrambler) crate_name = "raw bioscrambler anomaly" - crate_type = /obj/structure/closet/crate/secure/science -/datum/supply_pack/science/raw_dimensional_anomaly +/datum/supply_pack/science/ordnance/raw_dimensional_anomaly name = "Raw Dimensional Anomaly" desc = "Contains the raw core of a dimensional anomaly, ready to be implosion-compressed into a powerful artifact." cost = CARGO_CRATE_VALUE * 10 - access = ACCESS_ORDNANCE - access_view = ACCESS_ORDNANCE contains = list(/obj/item/raw_anomaly_core/dimensional) crate_name = "raw dimensional anomaly" - crate_type = /obj/structure/closet/crate/secure/science +/datum/supply_pack/science/ordnance/transfer_valves + name = "Tank Transfer Valves Crate" + desc = "The key ingredient for making a lot of people very angry very fast. \ + Contains two tank transfer valves." + cost = CARGO_CRATE_VALUE * 12 + access = ACCESS_RD + contains = list(/obj/item/transfer_valve = 2) + crate_name = "tank transfer valves crate" + dangerous = TRUE +// NON-MODULE CHANGE : same change as for ordnance but this time for robotics and there was an original crate using this typepath so that's repathed /datum/supply_pack/science/robotics + access = ACCESS_ROBOTICS + access_view = ACCESS_ROBOTICS + crate_type = /obj/structure/closet/crate/secure/science/robo + departmental_order_area_override = list( + /area/station/science/robotics, + /area/station/science/robotics/lab, + /area/station/science/robotics/mechbay, + ) + +/datum/supply_pack/science/robotics/assembly name = "Robotics Assembly Crate" desc = "The tools you need to replace those finicky humans with a loyal robot army! \ Contains four proximity sensors, two empty first aid kits, two health analyzers, \ two red hardhats, two mechanical toolboxes, and two cleanbot assemblies!" cost = CARGO_CRATE_VALUE * 3 - access = ACCESS_ROBOTICS - access_view = ACCESS_ROBOTICS contains = list(/obj/item/assembly/prox_sensor = 5, /obj/item/healthanalyzer = 2, /obj/item/clothing/head/utility/hardhat/red = 2, /obj/item/storage/medkit = 2) crate_name = "robotics assembly crate" - crate_type = /obj/structure/closet/crate/secure/science/robo - -/datum/supply_pack/science/rped - name = "RPED crate" - desc = "Need to rebuild the ORM but science got annihialted after a bomb test? \ - Buy this for the most advanced parts NT can give you." - cost = CARGO_CRATE_VALUE * 3 - contains = list(/obj/item/storage/part_replacer/cargo) - crate_name = "\improper RPED crate" - -/datum/supply_pack/science/shieldwalls - name = "Shield Generator Crate" - desc = "These high powered Shield Wall Generators are guaranteed to keep any unwanted \ - lifeforms on the outside, where they belong! Contains four shield wall generators." - cost = CARGO_CRATE_VALUE * 4 - access = ACCESS_TELEPORTER - access_view = ACCESS_TELEPORTER - contains = list(/obj/machinery/power/shieldwallgen = 4) - crate_name = "shield generators crate" - crate_type = /obj/structure/closet/crate/secure/science -/datum/supply_pack/science/transfer_valves - name = "Tank Transfer Valves Crate" - desc = "The key ingredient for making a lot of people very angry very fast. \ - Contains two tank transfer valves." - cost = CARGO_CRATE_VALUE * 12 - access = ACCESS_RD - contains = list(/obj/item/transfer_valve = 2) - crate_name = "tank transfer valves crate" - crate_type = /obj/structure/closet/crate/secure/science - dangerous = TRUE - -/datum/supply_pack/science/monkey_helmets - name = "Monkey Mind Magnification Helmet crate" - desc = "Some research is best done with monkeys, yet sometimes they're \ - just too dumb to complete more complicated tasks. These two helmets should help." - cost = CARGO_CRATE_VALUE * 3 - contains = list(/obj/item/clothing/head/helmet/monkey_sentience = 2) - crate_name = "monkey mind magnification crate" - -/datum/supply_pack/science/cytology - name = "Cytology supplies crate" - desc = "Did out-of-control specimens pulverize xenobiology? Here's some more \ - supplies for further testing. Contains a microscope, biopsy tool, two petri dishes, \ - a box of swabs, and a plumbing tool." - cost = CARGO_CRATE_VALUE * 3 - access_view = ACCESS_XENOBIOLOGY - contains = list(/obj/structure/microscope, - /obj/item/biopsy_tool, - /obj/item/storage/box/petridish = 2, - /obj/item/storage/box/swab, - /obj/item/construction/plumbing/research, - ) - crate_name = "cytology supplies crate" - -/datum/supply_pack/science/mod_core +/datum/supply_pack/science/robotics/mod_core name = "MOD core Crate" desc = "Three cores, perfect for any MODsuit construction! Naturally Harvested™, of course." cost = CARGO_CRATE_VALUE * 3 - access = ACCESS_ROBOTICS - access_view = ACCESS_ROBOTICS contains = list(/obj/item/mod/core/standard = 3) crate_name = "\improper MOD core crate" - crate_type = /obj/structure/closet/crate/secure/science/robo diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index 019f1011787b..7d53dca873cb 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -73,14 +73,6 @@ contains = list(/obj/item/clothing/head/helmet/sec = 3) crate_name = "helmet crate" -/datum/supply_pack/security/laser - name = "Lasers Crate" - desc = "Contains three lethal, high-energy laser guns." - cost = CARGO_CRATE_VALUE * 4 - access_view = ACCESS_ARMORY - contains = list(/obj/item/gun/energy/laser = 3) - crate_name = "laser crate" - /datum/supply_pack/security/securitybarriers name = "Security Barrier Grenades" desc = "Stem the tide with four Security Barrier grenades." @@ -108,6 +100,7 @@ ) crate_name = "security clothing crate" +/* NON-MODULE CHANGE : Moved to Armory /datum/supply_pack/security/stingpack name = "Stingbang Grenade Pack" desc = "Contains five \"stingbang\" grenades, perfect for stopping \ @@ -116,12 +109,14 @@ access_view = ACCESS_ARMORY contains = list(/obj/item/storage/box/stingbangs) crate_name = "stingbang grenade pack crate" +*/ /datum/supply_pack/security/supplies name = "Security Supplies Crate" desc = "Contains seven flashbangs, seven teargas grenades, six flashes, and seven handcuffs." cost = CARGO_CRATE_VALUE * 3.5 - access_view = ACCESS_ARMORY + //access_view = ACCESS_ARMORY // NON-MODULE CHANGE : This is just regular security equipment they get in vending machines + access_view = ACCESS_SECURITY contains = list(/obj/item/storage/box/flashbangs, /obj/item/storage/box/teargas, /obj/item/storage/box/flashes, @@ -129,6 +124,7 @@ ) crate_name = "security supply crate" +/* NON-MODULE CHANGE : Moved to Armory /datum/supply_pack/security/firingpins name = "Standard Firing Pins Crate" desc = "Upgrade your arsenal with 10 standard firing pins." @@ -144,6 +140,7 @@ access_view = ACCESS_ARMORY contains = list(/obj/item/storage/box/firingpins/paywall = 2) crate_name = "paywall firing pins crate" +*/ /datum/supply_pack/security/justiceinbound name = "Standard Justice Enforcer Crate" @@ -195,6 +192,10 @@ access = ACCESS_ARMORY access_view = ACCESS_ARMORY crate_type = /obj/structure/closet/crate/secure/weapon + departmental_order_area_override = list( + /area/station/ai_monitored/security/armory, + /area/station/ai_monitored/security/armory/upper + ) /datum/supply_pack/security/armory/bulletarmor name = "Bulletproof Armor Crate" @@ -382,3 +383,25 @@ cost = CARGO_CRATE_VALUE * 7 contains = list(/obj/item/storage/box/teleport_blocker) crate_name = "bluespace grounding implant crate" + +/datum/supply_pack/security/armory/stingpack + name = "Stingbang Grenade Pack" + desc = "Contains five \"stingbang\" grenades, perfect for stopping \ + riots and playing morally unthinkable pranks." + cost = CARGO_CRATE_VALUE * 5 + contains = list(/obj/item/storage/box/stingbangs) + crate_name = "stingbang grenade pack crate" + +/datum/supply_pack/security/armory/firingpins + name = "Standard Firing Pins Crate" + desc = "Upgrade your arsenal with 10 standard firing pins." + cost = CARGO_CRATE_VALUE * 4 + contains = list(/obj/item/storage/box/firingpins = 2) + crate_name = "firing pins crate" + +/datum/supply_pack/security/armory/firingpins/paywall + name = "Paywall Firing Pins Crate" + desc = "Specialized firing pins with a built-in configurable paywall." + cost = CARGO_CRATE_VALUE * 2 + contains = list(/obj/item/storage/box/firingpins/paywall = 2) + crate_name = "paywall firing pins crate" diff --git a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm index 706274dfd85b..94567b292949 100644 --- a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm +++ b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm @@ -66,8 +66,8 @@ /datum/supply_pack/emergency/weedcontrol, /datum/supply_pack/engineering/tools, /datum/supply_pack/engineering/engiequipment, - /datum/supply_pack/science/robotics, - /datum/supply_pack/science/plasma, + /datum/supply_pack/science/robotics/assembly, + /datum/supply_pack/science/ordnance/plasma, /datum/supply_pack/medical/supplies ) for(var/crate in crate_types) diff --git a/code/modules/modular_computers/file_system/programs/budgetordering.dm b/code/modules/modular_computers/file_system/programs/budgetordering.dm index ff42b5555294..51e9d0e49ab1 100644 --- a/code/modules/modular_computers/file_system/programs/budgetordering.dm +++ b/code/modules/modular_computers/file_system/programs/budgetordering.dm @@ -254,6 +254,13 @@ computer.say("ERROR: Small crates may only be purchased by private accounts.") return + if(pack.goody) + var/datum/supply_pack/goody/goody_to_check = pack + if(goody_to_check.restricted_green && SSsecurity_level.get_current_level_as_number() == SEC_LEVEL_GREEN) + playsound(computer, 'sound/machines/buzz-sigh.ogg', 50, FALSE) + computer.say("ERROR: This pack cannot be purchased unless the station is at [/datum/security_level/blue::name] alert or higher.") + return + if(SSshuttle.supply.get_order_count(pack) == OVER_ORDER_LIMIT) playsound(computer, 'sound/machines/buzz-sigh.ogg', 50, FALSE) computer.say("ERROR: No more then [CARGO_MAX_ORDER] of any pack may be ordered at once") diff --git a/code/modules/modular_computers/file_system/programs/dept_order.dm b/code/modules/modular_computers/file_system/programs/dept_order.dm index bf264e48b3ae..d1a023a07090 100644 --- a/code/modules/modular_computers/file_system/programs/dept_order.dm +++ b/code/modules/modular_computers/file_system/programs/dept_order.dm @@ -204,10 +204,18 @@ rank = "Silicon" var/already_signalled = !!department_order var/chosen_delivery_area - for(var/delivery_area_type in linked_department_real.department_delivery_areas) - if(GLOB.areas_by_type[delivery_area_type]) - chosen_delivery_area = delivery_area_type - break + + if(pack.departmental_order_area_override) + for(var/delivery_area_type in pack.departmental_order_area_override) + if(GLOB.areas_by_type[delivery_area_type]) + chosen_delivery_area = delivery_area_type + break + + else + for(var/delivery_area_type in linked_department_real.department_delivery_areas) + if(GLOB.areas_by_type[delivery_area_type]) + chosen_delivery_area = delivery_area_type + break if(SSshuttle.supply.get_order_count(pack) == OVER_ORDER_LIMIT) playsound(computer, 'sound/machines/buzz-sigh.ogg', 50, FALSE)