Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions code/controllers/subsystem/shuttle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
14 changes: 13 additions & 1 deletion code/modules/cargo/goodies.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand All @@ -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"
Expand All @@ -75,55 +79,63 @@
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"
desc = "Contains one Type 5 laser gun, the lethal workhorse of Nanotrasen security everywhere."
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"
desc = "Contains one laser carbine. Fires a rapid burst of slightly weaker laser projectiles."
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"
desc = "Contains one Type 5C laser pistol in an energy shoulder holster. Groovy."
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"
desc = "Contains one Type 3 laser gun. They don't make 'em like they used to."
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"
desc = "Contains one hellgun degradation kit, an old pattern of laser gun infamous for its ability to horribly disfigure targets with burns. Technically violates the Space Geneva Convention when used on humanoids."
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"
desc = "Contains twinned thermal pistols in a holster, ready for use in the field."
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"
Expand Down
7 changes: 7 additions & 0 deletions code/modules/cargo/orderconsole.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions code/modules/cargo/packs/_packs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
179 changes: 83 additions & 96 deletions code/modules/cargo/packs/science.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Loading
Loading