diff --git a/citadel.dme b/citadel.dme index 5e6bab492d87..bfd5e95fda18 100644 --- a/citadel.dme +++ b/citadel.dme @@ -88,6 +88,7 @@ #include "code\__DEFINES\spells.dm" #include "code\__DEFINES\stat_tracking.dm" #include "code\__DEFINES\statpanel.dm" +#include "code\__DEFINES\supply.dm" #include "code\__DEFINES\targeting.dm" #include "code\__DEFINES\text.dm" #include "code\__DEFINES\tgs.config.dm" @@ -201,7 +202,8 @@ #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_organs.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_perspectiive.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_simple.dm" -#include "code\__DEFINES\economy\economy.dm" +#include "code\__DEFINES\economy\category.dm" +#include "code\__DEFINES\economy\currency.dm" #include "code\__DEFINES\economy\payment.dm" #include "code\__DEFINES\economy\payscale.dm" #include "code\__DEFINES\economy\worth.dm" @@ -1034,11 +1036,31 @@ #include "code\game\click\reachability.dm" #include "code\game\click\rig.dm" #include "code\game\click\telekinesis.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-faction.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\animals.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\atmospherics.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\contraband.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\costumes.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\engineering.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\hospitality.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\hydroponics.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\materials.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\medical.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\miscellaneous.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\munitions.dm" #include "code\game\content\enigmas\unsorted\cursedform.dm" #include "code\game\content\enigmas\unsorted\deadringer.dm" #include "code\game\content\enigmas\unsorted\telecube.dm" #include "code\game\content\factions\corporations\corporation.dm" -#include "code\game\content\factions\corporations\nanotrasen\faction.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\reagents.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\recreation.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\robotics.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\science.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\security.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\supplies.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\vehicles.dm" +#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\voidsuits.dm" #include "code\game\content\locations\frontier.dm" #include "code\game\dna\dna2.dm" #include "code\game\dna\dna2_domutcheck.dm" @@ -1747,8 +1769,9 @@ #include "code\game\objects\items\weapons\melee\melee.dm" #include "code\game\objects\items\weapons\melee\misc.dm" #include "code\game\objects\items\weapons\tanks\jetpack.dm" +#include "code\game\objects\items\weapons\tanks\tank.dm" #include "code\game\objects\items\weapons\tanks\tank_types.dm" -#include "code\game\objects\items\weapons\tanks\tanks.dm" +#include "code\game\objects\items\weapons\tanks\tank_types\shipment.dm" #include "code\game\objects\random\_random.dm" #include "code\game\objects\random\books.dm" #include "code\game\objects\random\guns_and_ammo.dm" @@ -2354,24 +2377,6 @@ #include "code\modules\bodysets\synthetic\oss_tajaran.dm" #include "code\modules\bodysets\synthetic\oss_vulpkanin.dm" #include "code\modules\busy_space\organizations.dm" -#include "code\modules\cargo\supplypacks\_supplypacks.dm" -#include "code\modules\cargo\supplypacks\atmospherics.dm" -#include "code\modules\cargo\supplypacks\contraband.dm" -#include "code\modules\cargo\supplypacks\costumes.dm" -#include "code\modules\cargo\supplypacks\engineering.dm" -#include "code\modules\cargo\supplypacks\hospitality.dm" -#include "code\modules\cargo\supplypacks\hydroponics.dm" -#include "code\modules\cargo\supplypacks\materials.dm" -#include "code\modules\cargo\supplypacks\medical.dm" -#include "code\modules\cargo\supplypacks\misc.dm" -#include "code\modules\cargo\supplypacks\munitions.dm" -#include "code\modules\cargo\supplypacks\recreation.dm" -#include "code\modules\cargo\supplypacks\robotics.dm" -#include "code\modules\cargo\supplypacks\science.dm" -#include "code\modules\cargo\supplypacks\security.dm" -#include "code\modules\cargo\supplypacks\supply.dm" -#include "code\modules\cargo\supplypacks\vehicles.dm" -#include "code\modules\cargo\supplypacks\voidsuits.dm" #include "code\modules\catalogue\atoms.dm" #include "code\modules\catalogue\catalogue_data.dm" #include "code\modules\catalogue\cataloguer.dm" @@ -2476,6 +2481,13 @@ #include "code\modules\clothing\spacesuits\void\void_vr.dm" #include "code\modules\clothing\spacesuits\void\wizard.dm" #include "code\modules\clothing\spacesuits\void\zaddat.dm" +#include "code\modules\clothing\spacesuits\void\station\command.dm" +#include "code\modules\clothing\spacesuits\void\station\engineering.dm" +#include "code\modules\clothing\spacesuits\void\station\exploration.dm" +#include "code\modules\clothing\spacesuits\void\station\medical.dm" +#include "code\modules\clothing\spacesuits\void\station\operations.dm" +#include "code\modules\clothing\spacesuits\void\station\security.dm" +#include "code\modules\clothing\spacesuits\void\station\supply.dm" #include "code\modules\clothing\suits\_suit.dm" #include "code\modules\clothing\suits\armor.dm" #include "code\modules\clothing\suits\bio.dm" @@ -4419,7 +4431,6 @@ #include "code\modules\reagents\machinery\dispenser\cartridge.dm" #include "code\modules\reagents\machinery\dispenser\dispenser.dm" #include "code\modules\reagents\machinery\dispenser\dispenser_presets.dm" -#include "code\modules\reagents\machinery\dispenser\supply.dm" #include "code\modules\reagents\machinery\dispenser\synthesizer.dm" #include "code\modules\reagents\machinery\reagent_dispenser\acid.dm" #include "code\modules\reagents\machinery\reagent_dispenser\beer.dm" @@ -4766,6 +4777,7 @@ #include "code\modules\stockmarket\logs.dm" #include "code\modules\stockmarket\stockmarket.dm" #include "code\modules\stockmarket\stocks.dm" +#include "code\modules\supply\supply_pack.dm" #include "code\modules\surgery\_defines.dm" #include "code\modules\surgery\bones.dm" #include "code\modules\surgery\encased.dm" diff --git a/code/__DEFINES/_bitfields.dm b/code/__DEFINES/_bitfields.dm index 853add07cc91..598b3209cc15 100644 --- a/code/__DEFINES/_bitfields.dm +++ b/code/__DEFINES/_bitfields.dm @@ -14,10 +14,12 @@ #define BITFIELD(thing) #thing = thing #define BITFIELD_NAMED(name, thing) name = thing +// todo: impl /// KEY: must be unique, may be arbitrary; not a string, as it's used in typepath generation /// CONSTRAINTS: list(/type = list(varname, ...), ...) /// BITFIELDS: list of BITFIELD_NEW(). #define DEFINE_BITFIELD_NEW(KEY, CONSTRAINTS, BITFIELDS) +// todo: impl /// NAME: must be a string /// VALUE: the actual enum value, whatever it is #define BITFIELD_NEW(NAME, VALUE) ##NAME = ##VALUE diff --git a/code/__DEFINES/dcs/signals/signals_item/signals_item_economy.dm b/code/__DEFINES/dcs/signals/signals_item/signals_item_economy.dm index d372469e4175..da5d08b913b6 100644 --- a/code/__DEFINES/dcs/signals/signals_item/signals_item_economy.dm +++ b/code/__DEFINES/dcs/signals/signals_item/signals_item_economy.dm @@ -1,3 +1,5 @@ +// todo: this is all bad. + /// sent on attempt_dynamic_currency: (list/query) - register on the list to be dynamic_currency_call signal'd #define COMSIG_ITEM_DYNAMIC_CURRENCY_QUERY "dynamic_currency_query" /// sent on attempt_dynamic_currency: (mob/user, atom/movable/predicate, amount, force, prevent_types, list/data, silent, visual_range = 7) diff --git a/code/__DEFINES/economy/category.dm b/code/__DEFINES/economy/category.dm new file mode 100644 index 000000000000..2e57c65231f1 --- /dev/null +++ b/code/__DEFINES/economy/category.dm @@ -0,0 +1,226 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +//* economic_category_obj *// + +#define ECONOMIC_CATEGORY_OBJ_DEFAULT (NONE) + +/// hazardous materials +#define ECONOMIC_CATEGORY_OBJ_HAZARD (1<<0) +/// alien tech / anomalous tech +#define ECONOMIC_CATEGORY_OBJ_ALIEN (1<<1) +/// occultist +#define ECONOMIC_CATEGORY_OBJ_OCCULT (1<<2) +/// exotic tech / goods +#define ECONOMIC_CATEGORY_OBJ_EXOTIC (1<<3) +/// engineering / industrial equipment +#define ECONOMIC_CATEGORY_OBJ_INDUSTRIAL (1<<4) +/// makeshift items; still useful +#define ECONOMIC_CATEGORY_OBJ_MAKESHIFT (1<<5) +/// literally scrap +#define ECONOMIC_CATEGORY_OBJ_SCRAP (1<<6) + +/// ordered list; keep it ordered to bit index! +GLOBAL_REAL_LIST(economic_category_obj_names) = list( + "Hazardous Materials", + "Alien Technology", + "Occult Debris", + "Exotic Goods", + "Industrial Equipment", + "Makeshift Equipment", + "Junk", +) + +#define ECONOMIC_CATEGORY_OBJ_BIT_TO_NAME(CAT) economic_category_obj_to_name(CAT) +/proc/economic_category_obj_bit_to_name(bit) + var/index = log(2, bit) + if(index > length(global.economic_category_obj_names)) + return "Miscellaneous" + return global.economic_category_obj_names[index] + +DEFINE_BITFIELD(economic_category_obj, list( + BITFIELD(ECONOMIC_CATEGORY_OBJ_HAZARD), + BITFIELD(ECONOMIC_CATEGORY_OBJ_ALIEN), + BITFIELD(ECONOMIC_CATEGORY_OBJ_OCCULT), + BITFIELD(ECONOMIC_CATEGORY_OBJ_EXOTIC), + BITFIELD_NEW("Industrial Equipment", ECONOMIC_CATEGORY_OBJ_INDUSTRIAL), + BITFIELD_NEW("Makeshift Equipment", ECONOMIC_CATEGORY_OBJ_MAKESHIFT), + BITFIELD_NEW("Junk", ECONOMIC_CATEGORY_OBJ_SCRAP), +)) + +// todo: everything below shoudl follow the above example of structure (replace switch with global list and log, etc) + +//? categories for items + +#define ECONOMIC_CATEGORY_ITEM_DEFAULT (NONE) + +/// basic fashion +#define ECONOMIC_CATEGORY_ITEM_CLOTHING (1<<0) +/// non-basic fashion +#define ECONOMIC_CATEGORY_ITEM_FASHION (1<<1) +/// ranged weapons +#define ECONOMIC_CATEGORY_ITEM_GUN (1<<2) +/// melee weapons +#define ECONOMIC_CATEGORY_ITEM_MELEE (1<<3) +/// armor, shields ,etc +#define ECONOMIC_CATEGORY_ITEM_ARMOR (1<<4) +/// basic tools / engineering equipment +#define ECONOMIC_CATEGORY_ITEM_TOOL (1<<5) +/// engineering equipment / advanced tools +#define ECONOMIC_CATEGORY_ITEM_ENGINEERING (1<<6) +/// medical equipment / tools +#define ECONOMIC_CATEGORY_ITEM_MEDICAL (1<<7) +/// advanced medical equpiment / tools +#define ECONOMIC_CATEGORY_ITEM_SURGICAL (1<<8) +/// recreational / toys +#define ECONOMIC_CATEGORY_ITEM_TOY (1<<9) +/// collectable items, trading cards, etc +#define ECONOMIC_CATEGORY_ITEM_COLLECTABLE (1<<10) +/// paperwork, camera, etc +#define ECONOMIC_CATEGORY_ITEM_PAPERWORK (1<<11) +/// advanced electronics like pda, tablets, computers, etc +#define ECONOMIC_CATEGORY_ITEM_ELECTRONICS (1<<12) + +/proc/economic_category_item_name(cat) + switch(cat) + if(ECONOMIC_CATEGORY_ITEM_CLOTHING) + return "Clothing" + if(ECONOMIC_CATEGORY_ITEM_FASHION) + return "Fashion" + if(ECONOMIC_CATEGORY_ITEM_GUN) + return "Ranged Weaponry" + if(ECONOMIC_CATEGORY_ITEM_MELEE) + return "Melee Weaponry" + if(ECONOMIC_CATEGORY_ITEM_ARMOR) + return "Defense Equipment" + if(ECONOMIC_CATEGORY_ITEM_TOOL) + return "Tools" + if(ECONOMIC_CATEGORY_ITEM_ENGINEERING) + return "Engineering Equipment" + if(ECONOMIC_CATEGORY_ITEM_MEDICAL) + return "Medicine" + if(ECONOMIC_CATEGORY_ITEM_SURGICAL) + return "Medical Equipment" + if(ECONOMIC_CATEGORY_ITEM_TOY) + return "Toys" + if(ECONOMIC_CATEGORY_ITEM_COLLECTABLE) + return "Collectables" + if(ECONOMIC_CATEGORY_ITEM_PAPERWORK) + return "Recordkeeping" + if(ECONOMIC_CATEGORY_ITEM_ELECTRONICS) + return "Information Technology" + else + return "Miscellaneous" + +DEFINE_BITFIELD(economic_category_item, list( + BITFIELD(ECONOMIC_CATEGORY_ITEM_CLOTHING), + BITFIELD(ECONOMIC_CATEGORY_ITEM_FASHION), + BITFIELD(ECONOMIC_CATEGORY_ITEM_GUN), + BITFIELD(ECONOMIC_CATEGORY_ITEM_MELEE), + BITFIELD(ECONOMIC_CATEGORY_ITEM_ARMOR), + BITFIELD(ECONOMIC_CATEGORY_ITEM_TOOL), + BITFIELD(ECONOMIC_CATEGORY_ITEM_ENGINEERING), + BITFIELD(ECONOMIC_CATEGORY_ITEM_MEDICAL), + BITFIELD(ECONOMIC_CATEGORY_ITEM_SURGICAL), + BITFIELD(ECONOMIC_CATEGORY_ITEM_TOY), + BITFIELD(ECONOMIC_CATEGORY_ITEM_COLLECTABLE), + BITFIELD(ECONOMIC_CATEGORY_ITEM_PAPERWORK), + BITFIELD(ECONOMIC_CATEGORY_ITEM_ELECTRONICS), +)) + +//? categories for materials + +#define ECONOMIC_CATEGORY_MATERIAL_DEFAULT (NONE) + +/// staple bulk construction materials +#define ECONOMIC_CATEGORY_MATERIAL_CONSTRUCTION (1<<0) +/// luxury goods like exotic animal furs or whatever +#define ECONOMIC_CATEGORY_MATERIAL_LUXURY (1<<1) +/// industrial stuff +#define ECONOMIC_CATEGORY_MATERIAL_INDUSTRIAL (1<<2) +/// rare earth stuff like diamonds +#define ECONOMIC_CATEGORY_MATERIAL_RARE (1<<3) +/// extremely rare stuff like morphium +#define ECONOMIC_CATEGORY_MATERIAL_EXOTIC (1<<4) +/// biological like wood or whatever +#define ECONOMIC_CATEGORY_MATERIAL_ORGANIC (1<<5) + +/proc/economic_category_material_name(cat) + switch(cat) + if(ECONOMIC_CATEGORY_MATERIAL_CONSTRUCTION) + return "Bulk Construction" + if(ECONOMIC_CATEGORY_MATERIAL_LUXURY) + return "Luxury Materials" + if(ECONOMIC_CATEGORY_MATERIAL_INDUSTRIAL) + return "Industrial Resources" + if(ECONOMIC_CATEGORY_MATERIAL_RARE) + return "Rare Elements" + if(ECONOMIC_CATEGORY_MATERIAL_EXOTIC) + return "Exotic Matter" + if(ECONOMIC_CATEGORY_MATERIAL_ORGANIC) + return "Organic Products" + +DEFINE_BITFIELD(economic_category_material, list( + BITFIELD(ECONOMIC_CATEGORY_MATERIAL_CONSTRUCTION), + BITFIELD(ECONOMIC_CATEGORY_MATERIAL_LUXURY), + BITFIELD(ECONOMIC_CATEGORY_MATERIAL_INDUSTRIAL), + BITFIELD(ECONOMIC_CATEGORY_MATERIAL_RARE), + BITFIELD(ECONOMIC_CATEGORY_MATERIAL_EXOTIC), + BITFIELD(ECONOMIC_CATEGORY_MATERIAL_ORGANIC), +)) + +//? categories for reagents + +#define ECONOMIC_CATEGORY_REAGENT_DEFAULT (NONE) + +/// medicine +#define ECONOMIC_CATEGORY_REAGENT_MEDICINE (1<<0) +/// raw materials like iron / gold / phoron /etc +#define ECONOMIC_CATEGORY_REAGENT_RAW (1<<1) +/// drugs :devil: +#define ECONOMIC_CATEGORY_REAGENT_NARCOTICS (1<<2) +/// poisons, lethal or otherwise +#define ECONOMIC_CATEGORY_REAGENT_POISON (1<<3) +/// explosives, chlorine triflouride-like fire, etc +#define ECONOMIC_CATEGORY_REAGENT_PYROTECHNICS (1<<4) +/// exotic / rare reagents +#define ECONOMIC_CATEGORY_REAGENT_EXOTIC (1<<5) +/// agricultural +#define ECONOMIC_CATEGORY_REAGENT_AGRICULTURAL (1<<6) +/// food / whatever +#define ECONOMIC_CATEGORY_REAGENT_FOOD (1<<7) +/// crayon powder, recreational coloring, etc +#define ECONOMIC_CATEGORY_REAGENT_TOYS (1<<8) + +DEFINE_BITFIELD(economic_category_reagent, list( + BITFIELD(ECONOMIC_CATEGORY_REAGENT_MEDICINE), + BITFIELD(ECONOMIC_CATEGORY_REAGENT_RAW), + BITFIELD(ECONOMIC_CATEGORY_REAGENT_NARCOTICS), + BITFIELD(ECONOMIC_CATEGORY_REAGENT_POISON), + BITFIELD(ECONOMIC_CATEGORY_REAGENT_PYROTECHNICS), + BITFIELD(ECONOMIC_CATEGORY_REAGENT_EXOTIC), + BITFIELD(ECONOMIC_CATEGORY_REAGENT_AGRICULTURAL), + BITFIELD(ECONOMIC_CATEGORY_REAGENT_FOOD), + BITFIELD(ECONOMIC_CATEGORY_REAGENT_TOYS), +)) + +/proc/economic_category_reagent_name(cat) + switch(cat) + if(ECONOMIC_CATEGORY_REAGENT_MEDICINE) + return "Medicine" + if(ECONOMIC_CATEGORY_REAGENT_RAW) + return "Raw Reagents" + if(ECONOMIC_CATEGORY_REAGENT_NARCOTICS) + return "Drugs" + if(ECONOMIC_CATEGORY_REAGENT_POISON) + return "Toxins" + if(ECONOMIC_CATEGORY_REAGENT_PYROTECHNICS) + return "Explosives" + if(ECONOMIC_CATEGORY_REAGENT_EXOTIC) + return "Exotic" + if(ECONOMIC_CATEGORY_REAGENT_AGRICULTURAL) + return "Hydroponics" + if(ECONOMIC_CATEGORY_REAGENT_FOOD) + return "Catering" + if(ECONOMIC_CATEGORY_REAGENT_TOYS) + return "Toy Products" diff --git a/code/__DEFINES/economy/economy.dm b/code/__DEFINES/economy/currency.dm similarity index 59% rename from code/__DEFINES/economy/economy.dm rename to code/__DEFINES/economy/currency.dm index bb07abe0d094..16d619e03e5e 100644 --- a/code/__DEFINES/economy/economy.dm +++ b/code/__DEFINES/economy/currency.dm @@ -1,3 +1,6 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + /// currency name singular #define CURRENCY_NAME_SINGULAR "thaler" /// currency name singular capitalized @@ -5,4 +8,4 @@ /// currency name plural #define CURRENCY_NAME_PLURAL "thalers" /// currency name plural capitalized -#define CURRENCY_NAME_PLURAL_PROPERR "Thalers" +#define CURRENCY_NAME_PLURAL_PROPER "Thalers" diff --git a/code/__DEFINES/economy/worth.dm b/code/__DEFINES/economy/worth.dm index 430266c2dca9..ea5806f0de3e 100644 --- a/code/__DEFINES/economy/worth.dm +++ b/code/__DEFINES/economy/worth.dm @@ -1,246 +1,23 @@ -//? op flags for /atom/proc/worth +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +//* op flags for /atom/proc/worth *// + /// consider intrinsic value #define GET_WORTH_INTRINSIC (1<<0) /// consider raw materials value of the item itself #define GET_WORTH_MATERIALS (1<<1) /// consider value of what's inside the item #define GET_WORTH_CONTAINING (1<<2) +/// currently using get worth to detect entity buy price for something like supply +#define GET_WORTH_DETECTING_PRICE (1<<3) /// default flags for /atom/proc/get_worth -#define GET_WORTH_DEFAULT (GET_WORTH_INTRINSIC | GET_WORTH_MATERIALS | GET_WORTH_CONTAINING) - -//? factors for worth_buy_factor - multiplier for core worth system - -/// 1.05x intrinsic markup default -#define WORTH_BUY_FACTOR_DEFAULT 1.05 +#define GET_WORTH_FLAGS_DEFAULT (GET_WORTH_INTRINSIC | GET_WORTH_CONTAINING) +/// flags for get worth for supply detection +#define GET_WORTH_FLAGS_SUPPLY_DETECTION (GET_WORTH_INTRINSIC | GET_WORTH_CONTAINING | GET_WORTH_DETECTING_PRICE) -//? elasticities for worth_elasticity - arbitrary multipliers +//* elasticities for worth_elasticity - arbitrary multipliers *// /// default 1x elasticitiy #define WORTH_ELASTICITY_DEFAULT 1 - -//? categories for objs - -#define ECONOMIC_CATEGORY_OBJ_DEFAULT (NONE) - -/// hazardous materials -#define ECONOMIC_CATEGORY_OBJ_HAZARD (1<<0) -/// alien tech / anomalous tech -#define ECONOMIC_CATEGORY_OBJ_ALIEN (1<<1) -/// occultist -#define ECONOMIC_CATEGORY_OBJ_OCCULT (1<<2) -/// exotic tech / goods -#define ECONOMIC_CATEGORY_OBJ_EXOTIC (1<<3) - -/proc/economic_category_obj_name(cat) - switch(cat) - if(ECONOMIC_CATEGORY_OBJ_HAZARD) - return "Hazardous Materials" - if(ECONOMIC_CATEGORY_OBJ_ALIEN) - return "Alien Technology" - if(ECONOMIC_CATEGORY_OBJ_OCCULT) - return "Occult Debris" - if(ECONOMIC_CATEGORY_OBJ_EXOTIC) - return "Exotic Goods" - else - return "Miscellaneous" - -DEFINE_BITFIELD(economic_category_obj, list( - BITFIELD(ECONOMIC_CATEGORY_OBJ_HAZARD), - BITFIELD(ECONOMIC_CATEGORY_OBJ_ALIEN), - BITFIELD(ECONOMIC_CATEGORY_OBJ_OCCULT), - BITFIELD(ECONOMIC_CATEGORY_OBJ_EXOTIC), -)) - -//? categories for items - -#define ECONOMIC_CATEGORY_ITEM_DEFAULT (NONE) - -/// basic fashion -#define ECONOMIC_CATEGORY_ITEM_CLOTHING (1<<0) -/// non-basic fashion -#define ECONOMIC_CATEGORY_ITEM_FASHION (1<<1) -/// ranged weapons -#define ECONOMIC_CATEGORY_ITEM_GUN (1<<2) -/// melee weapons -#define ECONOMIC_CATEGORY_ITEM_MELEE (1<<3) -/// armor, shields ,etc -#define ECONOMIC_CATEGORY_ITEM_ARMOR (1<<4) -/// basic tools / engineering equipment -#define ECONOMIC_CATEGORY_ITEM_TOOL (1<<5) -/// engineering equipment / advanced tools -#define ECONOMIC_CATEGORY_ITEM_ENGINEERING (1<<6) -/// medical equipment / tools -#define ECONOMIC_CATEGORY_ITEM_MEDICAL (1<<7) -/// advanced medical equpiment / tools -#define ECONOMIC_CATEGORY_ITEM_SURGICAL (1<<8) -/// recreational / toys -#define ECONOMIC_CATEGORY_ITEM_TOY (1<<9) -/// collectable items, trading cards, etc -#define ECONOMIC_CATEGORY_ITEM_COLLECTABLE (1<<10) -/// paperwork, camera, etc -#define ECONOMIC_CATEGORY_ITEM_PAPERWORK (1<<11) -/// advanced electronics like pda, tablets, computers, etc -#define ECONOMIC_CATEGORY_ITEM_ELECTRONICS (1<<12) - -/proc/economic_category_item_name(cat) - switch(cat) - if(ECONOMIC_CATEGORY_ITEM_CLOTHING) - return "Clothing" - if(ECONOMIC_CATEGORY_ITEM_FASHION) - return "Fashion" - if(ECONOMIC_CATEGORY_ITEM_GUN) - return "Ranged Weaponry" - if(ECONOMIC_CATEGORY_ITEM_MELEE) - return "Melee Weaponry" - if(ECONOMIC_CATEGORY_ITEM_ARMOR) - return "Defense Equipment" - if(ECONOMIC_CATEGORY_ITEM_TOOL) - return "Tools" - if(ECONOMIC_CATEGORY_ITEM_ENGINEERING) - return "Engineering Equipment" - if(ECONOMIC_CATEGORY_ITEM_MEDICAL) - return "Medicine" - if(ECONOMIC_CATEGORY_ITEM_SURGICAL) - return "Medical Equipment" - if(ECONOMIC_CATEGORY_ITEM_TOY) - return "Toys" - if(ECONOMIC_CATEGORY_ITEM_COLLECTABLE) - return "Collectables" - if(ECONOMIC_CATEGORY_ITEM_PAPERWORK) - return "Recordkeeping" - if(ECONOMIC_CATEGORY_ITEM_ELECTRONICS) - return "Information Technology" - else - return "Miscellaneous" - -DEFINE_BITFIELD(economic_category_item, list( - BITFIELD(ECONOMIC_CATEGORY_ITEM_CLOTHING), - BITFIELD(ECONOMIC_CATEGORY_ITEM_FASHION), - BITFIELD(ECONOMIC_CATEGORY_ITEM_GUN), - BITFIELD(ECONOMIC_CATEGORY_ITEM_MELEE), - BITFIELD(ECONOMIC_CATEGORY_ITEM_ARMOR), - BITFIELD(ECONOMIC_CATEGORY_ITEM_TOOL), - BITFIELD(ECONOMIC_CATEGORY_ITEM_ENGINEERING), - BITFIELD(ECONOMIC_CATEGORY_ITEM_MEDICAL), - BITFIELD(ECONOMIC_CATEGORY_ITEM_SURGICAL), - BITFIELD(ECONOMIC_CATEGORY_ITEM_TOY), - BITFIELD(ECONOMIC_CATEGORY_ITEM_COLLECTABLE), - BITFIELD(ECONOMIC_CATEGORY_ITEM_PAPERWORK), - BITFIELD(ECONOMIC_CATEGORY_ITEM_ELECTRONICS), -)) - -//? categories for mobs - -#define ECONOMIC_CATEGORY_MOB_DEFAULT (NONE) - -/// "normal" livestock -#define ECONOMIC_CATEGORY_MOB_LIVESTOCK (1<<0) - -/proc/economic_category_mob_name(cat) - switch(cat) - if(ECONOMIC_CATEGORY_MOB_LIVESTOCK) - return "Livestock" - else - return "Miscellaneous" - -DEFINE_BITFIELD(economic_category_mob, list( - BITFIELD(ECONOMIC_CATEGORY_MOB_LIVESTOCK), -)) - -//? categories for materials - -#define ECONOMIC_CATEGORY_MATERIAL_DEFAULT (NONE) - -/// staple bulk construction materials -#define ECONOMIC_CATEGORY_MATERIAL_CONSTRUCTION (1<<0) -/// luxury goods like exotic animal furs or whatever -#define ECONOMIC_CATEGORY_MATERIAL_LUXURY (1<<1) -/// industrial stuff -#define ECONOMIC_CATEGORY_MATERIAL_INDUSTRIAL (1<<2) -/// rare earth stuff like diamonds -#define ECONOMIC_CATEGORY_MATERIAL_RARE (1<<3) -/// extremely rare stuff like morphium -#define ECONOMIC_CATEGORY_MATERIAL_EXOTIC (1<<4) -/// biological like wood or whatever -#define ECONOMIC_CATEGORY_MATERIAL_ORGANIC (1<<5) - -/proc/economic_category_material_name(cat) - switch(cat) - if(ECONOMIC_CATEGORY_MATERIAL_CONSTRUCTION) - return "Bulk Construction" - if(ECONOMIC_CATEGORY_MATERIAL_LUXURY) - return "Luxury Materials" - if(ECONOMIC_CATEGORY_MATERIAL_INDUSTRIAL) - return "Industrial Resources" - if(ECONOMIC_CATEGORY_MATERIAL_RARE) - return "Rare Elements" - if(ECONOMIC_CATEGORY_MATERIAL_EXOTIC) - return "Exotic Matter" - if(ECONOMIC_CATEGORY_MATERIAL_ORGANIC) - return "Organic Products" - -DEFINE_BITFIELD(economic_category_material, list( - BITFIELD(ECONOMIC_CATEGORY_MATERIAL_CONSTRUCTION), - BITFIELD(ECONOMIC_CATEGORY_MATERIAL_LUXURY), - BITFIELD(ECONOMIC_CATEGORY_MATERIAL_INDUSTRIAL), - BITFIELD(ECONOMIC_CATEGORY_MATERIAL_RARE), - BITFIELD(ECONOMIC_CATEGORY_MATERIAL_EXOTIC), - BITFIELD(ECONOMIC_CATEGORY_MATERIAL_ORGANIC), -)) - -//? categories for reagents - -#define ECONOMIC_CATEGORY_REAGENT_DEFAULT (NONE) - -/// medicine -#define ECONOMIC_CATEGORY_REAGENT_MEDICINE (1<<0) -/// raw materials like iron / gold / phoron /etc -#define ECONOMIC_CATEGORY_REAGENT_RAW (1<<1) -/// drugs :devil: -#define ECONOMIC_CATEGORY_REAGENT_NARCOTICS (1<<2) -/// poisons, lethal or otherwise -#define ECONOMIC_CATEGORY_REAGENT_POISON (1<<3) -/// explosives, chlorine triflouride-like fire, etc -#define ECONOMIC_CATEGORY_REAGENT_PYROTECHNICS (1<<4) -/// exotic / rare reagents -#define ECONOMIC_CATEGORY_REAGENT_EXOTIC (1<<5) -/// agricultural -#define ECONOMIC_CATEGORY_REAGENT_AGRICULTURAL (1<<6) -/// food / whatever -#define ECONOMIC_CATEGORY_REAGENT_FOOD (1<<7) -/// crayon powder, recreational coloring, etc -#define ECONOMIC_CATEGORY_REAGENT_TOYS (1<<8) - -DEFINE_BITFIELD(economic_category_reagent, list( - BITFIELD(ECONOMIC_CATEGORY_REAGENT_MEDICINE), - BITFIELD(ECONOMIC_CATEGORY_REAGENT_RAW), - BITFIELD(ECONOMIC_CATEGORY_REAGENT_NARCOTICS), - BITFIELD(ECONOMIC_CATEGORY_REAGENT_POISON), - BITFIELD(ECONOMIC_CATEGORY_REAGENT_PYROTECHNICS), - BITFIELD(ECONOMIC_CATEGORY_REAGENT_EXOTIC), - BITFIELD(ECONOMIC_CATEGORY_REAGENT_AGRICULTURAL), - BITFIELD(ECONOMIC_CATEGORY_REAGENT_FOOD), - BITFIELD(ECONOMIC_CATEGORY_REAGENT_TOYS), -)) - -/proc/economic_category_reagent_name(cat) - switch(cat) - if(ECONOMIC_CATEGORY_REAGENT_MEDICINE) - return "Medicine" - if(ECONOMIC_CATEGORY_REAGENT_RAW) - return "Raw Reagents" - if(ECONOMIC_CATEGORY_REAGENT_NARCOTICS) - return "Drugs" - if(ECONOMIC_CATEGORY_REAGENT_POISON) - return "Toxins" - if(ECONOMIC_CATEGORY_REAGENT_PYROTECHNICS) - return "Explosives" - if(ECONOMIC_CATEGORY_REAGENT_EXOTIC) - return "Exotic" - if(ECONOMIC_CATEGORY_REAGENT_AGRICULTURAL) - return "Hydroponics" - if(ECONOMIC_CATEGORY_REAGENT_FOOD) - return "Catering" - if(ECONOMIC_CATEGORY_REAGENT_TOYS) - return "Toy Products" diff --git a/code/__DEFINES/materials/parts.dm b/code/__DEFINES/materials/parts.dm index ba97d7aea545..52231c093861 100644 --- a/code/__DEFINES/materials/parts.dm +++ b/code/__DEFINES/materials/parts.dm @@ -1,13 +1,21 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2023 Citadel Station developers. *// +//* material part enums *// + /// material part key that a single-material-part object is treated as having #define MATERIAL_PART_DEFAULT "structure" + +//* material id enums for lookups during materials init of an entity *// + +/// material ID to pass to Initialize() procs for "erase the default material of this slot" +#define MATERIAL_ID_ERASE "___ERASE___" + +//* material_parts var - defaults *// + /// material_parts value for object does not use material parts system #define MATERIAL_DEFAULT_DISABLED "DISABLED" /// material_parts value for object uses hardcoded vars / overrides the abstraction API #define MATERIAL_DEFAULT_ABSTRACTED "ABSTRACTED" /// material_parts value for object has a single material but it's absent #define MATERIAL_DEFAULT_NONE null -/// material ID to pass to Initialize() procs for "erase the default material of this slot" -#define MATERIAL_ID_ERASE "___ERASE___" diff --git a/code/__DEFINES/supply.dm b/code/__DEFINES/supply.dm new file mode 100644 index 000000000000..b0a694f14957 --- /dev/null +++ b/code/__DEFINES/supply.dm @@ -0,0 +1,31 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +//* Supply Packs - Flags *// + +/// prevent private orders from overriding access locks +/// +/// * for things that are somewhat dangerous and should require access +#define SUPPLY_PACK_LOCK_PRIVATE_ORDERS (1<<0) +/// private orders are subject to approval queues rather than being automatically approved once paid +/// +/// * for things that are too dangerous to allow random ordering +#define SUPPLY_PACK_RESTRICT_PRIVATE_ORDERS (1<<1) + +DEFINE_BITFIELD_NEW(supply_pack_flags, list( + /datum/supply_pack = list( + "supply_pack_flags", + ), +), list( + BITFIELD_NEW("Always Access Restricted", SUPPLY_PACK_LOCK_PRIVATE_ORDERS), + BITFIELD_NEW("Restricted Private Orders", SUPPLY_PACK_RESTRICT_PRIVATE_ORDERS), +)) + +//* Supply Entity Descriptors *// + +/// decode as material +#define SUPPLY_DESCRIPTOR_HINT_MATERIAL "material" +/// decode as gas +#define SUPPLY_DESCRIPTOR_HINT_GAS "gas" +/// decode as prototype (SSpersistence prototype descriptors) +#define SUPPLY_DESCRIPTOR_HINT_PROTOTYPE "prototype" diff --git a/code/controllers/subsystem/supply.dm b/code/controllers/subsystem/supply.dm index 9c66ec44443e..241e804d829c 100644 --- a/code/controllers/subsystem/supply.dm +++ b/code/controllers/subsystem/supply.dm @@ -1,16 +1,19 @@ SUBSYSTEM_DEF(supply) name = "Supply" wait = 300 + + // Supply Points var/points = 50 var/points_per_second = 1.5 / 30 var/points_per_slip = 2 - var/points_per_money = 0.02 // 1 point for $50 + var/points_per_money = 0.06 // 1 point for $50 var/points_per_trash = 0.1 // Weighted value, tentative. // Control var/ordernum var/list/shoppinglist = list() // Approved orders - var/list/supply_pack = list() // All supply packs + var/list/legacy_supply_packs = list() // All supply packs + var/static/list/legacy_supply_categories = list() var/list/exported_crates = list() // Crates sent from the station var/list/order_history = list() // History of orders, showing edits made by users var/list/adm_order_history = list() // Complete history of all orders, for admin use @@ -18,13 +21,6 @@ SUBSYSTEM_DEF(supply) // Shuttle Movement var/movetime = 1200 var/datum/shuttle/autodock/ferry/supply/shuttle - var/list/material_points_conversion = list( // Any materials not named in this list are worth 0 points - MAT_PHORON = 5, - MAT_PLATINUM = 5, - MAT_GOLD = 2, // CIT CHANGE: Gold is now worth 2 cargo points per sheet - MAT_SILVER = 2, // CIT CHANGE: Silver is now worth 2 cargo points per sheet - MAT_URANIUM = 1 // CIT CHANGE: Uranium is now worth 1 cargo point per sheet - ) // TODO - Refactor to use the Supply Subsystem (SSsupply) @@ -54,7 +50,15 @@ SUBSYSTEM_DEF(supply) for(var/typepath in subtypesof(/datum/supply_pack)) var/datum/supply_pack/P = new typepath() - supply_pack[P.name] = P + if(!P.legacy) + continue + legacy_supply_packs[P.name] = P + legacy_supply_categories[P.category] = TRUE + P.initialize() + var/list/flattened = list() + for(var/key in legacy_supply_categories) + flattened += key + legacy_supply_categories = flattened return ..() // Supply shuttle SSticker - handles supply point regeneration @@ -99,9 +103,7 @@ SUBSYSTEM_DEF(supply) var/obj/structure/closet/crate/CR = MA callHook("sell_crate", list(CR, subarea)) - points += CR.points_per_crate - if(CR.points_per_crate) - base_value = CR.points_per_crate + points += points_per_money * CR.get_worth(GET_WORTH_FLAGS_SUPPLY_DETECTION) var/find_slip = 1 for(var/atom/A in CR) @@ -123,10 +125,13 @@ SUBSYSTEM_DEF(supply) // Sell phoron and platinum if(istype(A, /obj/item/stack/material)) var/obj/item/stack/material/P = A - if(material_points_conversion[P.material.name]) - EC.contents[EC.contents.len]["value"] = P.get_amount() * material_points_conversion[P.material.name] - EC.contents[EC.contents.len]["quantity"] = P.get_amount() - EC.value += EC.contents[EC.contents.len]["value"] + if(istype(P.material)) + var/thaler_per_sheet = P.material.worth + var/total_thaler = thaler_per_sheet * P.amount + var/total_points = total_thaler * points_per_money + EC.contents[EC.contents.len]["value"] = total_points + EC.contents[EC.contents.len]["quantity"] = P.amount + EC.value += EC.contents[EC.contents.len]["value"] // Sell spacebucks if(istype(A, /obj/item/spacecash)) @@ -197,13 +202,16 @@ SUBSYSTEM_DEF(supply) SO.status = SUP_ORDER_SHIPPED var/datum/supply_pack/SP = SO.object - var/atom/movable/container = SP.Instantiate(T) + var/atom/movable/container = SP.instantiate_pack_at(T) + // todo: containerless support + if(!container) + continue if(SO.comment) - container.name += " [SO.comment]" + container.name += " ([SO.comment])" // Supply manifest generation begin var/obj/item/paper/manifest/slip - if(!SP.contraband) + if(!SP.legacy_contraband) slip = new /obj/item/paper/manifest(container) slip.is_copy = 0 // save the trip to the string tree @@ -225,7 +233,7 @@ SUBSYSTEM_DEF(supply) if(O.status != SUP_ORDER_REQUESTED) return FALSE // Not enough points to purchase the crate - if(SSsupply.points <= O.object.cost) + if(SSsupply.points <= O.object.legacy_cost) return FALSE // Based on the current model, there shouldn't be any entries in order_history, requestlist, or shoppinglist, that aren't matched in adm_order_history @@ -252,7 +260,7 @@ SUBSYSTEM_DEF(supply) adm_order.approved_at = stationdate2text() + " - " + stationtime2text() // Deduct cost - SSsupply.points -= O.object.cost + SSsupply.points -= O.object.legacy_cost return TRUE // Will deny the specified order. Only useful if the order is currently requested, but available at any status @@ -312,7 +320,7 @@ SUBSYSTEM_DEF(supply) new_order.index = new_order.ordernum // Index can be fabricated, or falsified. Ordernum is a permanent marker used to track the order new_order.object = S new_order.name = S.name - new_order.cost = S.cost + new_order.cost = S.legacy_cost new_order.ordered_by = idname new_order.comment = reason new_order.ordered_at = stationdate2text() + " - " + stationtime2text() @@ -359,3 +367,211 @@ SUBSYSTEM_DEF(supply) "quantity" = new_quantity, "value" = new_value ) + +//* Estimation *// + +//* Entity Descriptors *// + +/** + * Resolves an entity descriptor, and instantiates it + * + * directly instantiated: + * * typepath + * * ~~anonymous typepath~~ Waiting on BYOND fix. + * + * clone(include_contents = TRUE)'d + * * an /atom/movable + * + * instantiated with special handling + * * /datum/material typepath or instance + * * /obj/item/stack typepath or instance + * * /datum/gas typepath or instance - container_hint can be: + * ** /obj/machinery/portable_atmospherics/canister + * ** /obj/item/tank + * + * translated, when `descriptor_hint` is specified. + * * material id + * * gas id - container_hint can be: + * ** /obj/machinery/portable_atmospherics/canister + * ** /obj/item/tank + * * entity id as string (SSpersistence entity IDs) + * + * @params + * * location - where to spawn it. null is valid! + * * descriptor - the descriptor + * * amount - amount to spawn + * * descriptor_hint - SUPPLY_DESCRIPTOR_HINT_* to tell us what to translate the descriptor as; this forces the descriptor to be processed as text id lookup! + * * container_hint - container hint, if allowed; using an invalid one will runtime. + */ +/datum/controller/subsystem/supply/proc/instantiate_entity_via_descriptor(descriptor, amount = 1, descriptor_hint, container_hint, atom/location) + RETURN_TYPE(/atom/movable) + if(!location || isarea(location)) + CRASH("invalid location") + // todo: byond cannot introspect anonymous typepaths so just ignore it + if(IS_ANONYMOUS_TYPEPATH(descriptor)) + return + // handle instance + if(istype(descriptor, /atom/movable)) + var/atom/movable/cloning_instance = descriptor + if(istype(cloning_instance, /obj/item/stack)) + // lol no + descriptor = cloning_instance.type + else + // actually clone + for(var/i in 1 to min(amount, 50)) + cloning_instance.clone(location, TRUE) + return + // handle material stack + if(ispath(descriptor, /obj/item/stack/material)) + var/obj/item/stack/material/casted_material_stack = descriptor + descriptor = initial(casted_material_stack.material) + // handle material + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_MATERIAL || ispath(descriptor, /datum/material)) + var/datum/material/resolved_material = SSmaterials.resolve_material(descriptor) + resolved_material.place_sheet(location, amount) + return + // handle gas + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_GAS || ispath(descriptor, /datum/gas)) + var/datum/gas/resolved_gas + if(ispath(descriptor)) + var/datum/gas/casted_gas = descriptor + resolved_gas = global.gas_data.gases[initial(casted_gas.id)] + else + resolved_gas = global.gas_data.gases[resolved_gas] + // todo: temperature support, for now everything ships at 273.15K + switch(container_hint) + if(/obj/item/tank) + // tank, if possible + var/obj/item/tank/tank_type = /obj/item/tank/shipment + var/tank_pressure = initial(tank_type.volume) + var/estimated_pressure = (R_IDEAL_GAS_EQUATION * 273.15 * amount) / tank_pressure + if(estimated_pressure > TANK_LEAK_PRESSURE) + stack_trace("tried to shove [amount] mols of [resolved_gas] into a shipment tank, which would result in a detonation") + else + var/obj/item/tank/created_tank = new /obj/item/tank/shipment(location) + created_tank.air_contents.adjust_gas_temp(resolved_gas.id, amount, 273.15) + return + var/obj/machinery/portable_atmospherics/canister/created_canister = new(location) + created_canister.air_contents.adjust_gas_temp(resolved_gas.id, amount, 273.15) + return + // translate to path + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_PROTOTYPE) + var/entity_type = SSpersistence.prototype_id_to_path[descriptor] + descriptor = entity_type + // this point onwards: handle path + if(ispath(descriptor, /obj/item/stack)) + var/obj/item/stack/casted_stack_path = descriptor + var/stack_safety = 50 + var/amount_per_stack = initial(casted_stack_path.max_amount) + while(amount > 0) + var/amount_to_make = min(amount_per_stack, amount) + new casted_stack_path(location, amount_to_make) + amount -= amount_to_make + if(--stack_safety < 0) + break + return + for(var/i in 1 to min(amount, 50)) + new descriptor(location) + +/** + * Resolves an entity descriptor, and describes it with a string + * + * @return string + */ +/datum/controller/subsystem/supply/proc/describe_entity_via_descriptor(descriptor, amount = 1, descriptor_hint, container_hint) + RETURN_TYPE(/atom/movable) + // todo: byond cannot introspect anonymous typepaths so just ignore it + if(IS_ANONYMOUS_TYPEPATH(descriptor)) + return + // handle instance + if(istype(descriptor, /atom/movable)) + var/atom/movable/cloning_instance = descriptor + if(istype(cloning_instance, /obj/item/stack)) + // lol no + descriptor = cloning_instance.type + else + return "[amount] [cloning_instance](s)" + // handle material stack + if(ispath(descriptor, /obj/item/stack/material)) + var/obj/item/stack/material/casted_material_stack = descriptor + descriptor = initial(casted_material_stack.material) + // handle material + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_MATERIAL || ispath(descriptor, /datum/material)) + var/datum/material/resolved_material = SSmaterials.resolve_material(descriptor) + return "[amount] [resolved_material.sheet_plural_name] of [resolved_material.display_name]" + // handle gas + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_GAS || ispath(descriptor, /datum/gas)) + var/datum/gas/resolved_gas + if(ispath(descriptor)) + var/datum/gas/casted_gas = descriptor + resolved_gas = global.gas_data.gases[initial(casted_gas.id)] + else + resolved_gas = global.gas_data.gases[resolved_gas] + // todo: display_name for gas + return "[amount] mol(s) of [resolved_gas]" + // translate to path + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_PROTOTYPE) + var/entity_type = SSpersistence.prototype_id_to_path[descriptor] + descriptor = entity_type + // this point onwards: handle path + if(ispath(descriptor, /obj/item/stack)) + var/obj/item/stack/casted_stack_path = descriptor + return "[amount] [initial(casted_stack_path.name)]" + var/atom/movable/casted_movable_path = descriptor + return "[amount] [initial(casted_movable_path.name)](s)" + +/** + * Resolves an entity descriptor, and estimates its worth + * + * @return number (thalers) + */ +/datum/controller/subsystem/supply/proc/value_entity_via_descriptor(descriptor, amount = 1, descriptor_hint, container_hint) + RETURN_TYPE(/atom/movable) + // todo: byond cannot introspect anonymous typepaths so just ignore it + if(IS_ANONYMOUS_TYPEPATH(descriptor)) + return + // handle instance + if(istype(descriptor, /atom/movable)) + var/atom/movable/cloning_instance = descriptor + if(istype(cloning_instance, /obj/item/stack)) + // lol no + descriptor = cloning_instance.type + else + return amount * cloning_instance.worth(GET_WORTH_FLAGS_SUPPLY_DETECTION) + // handle material stack + if(ispath(descriptor, /obj/item/stack/material)) + var/obj/item/stack/material/casted_material_stack = descriptor + descriptor = initial(casted_material_stack.material) + // handle material + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_MATERIAL || ispath(descriptor, /datum/material)) + var/datum/material/resolved_material = SSmaterials.resolve_material(descriptor) + return amount * resolved_material.worth + // handle gas + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_GAS || ispath(descriptor, /datum/gas)) + var/datum/gas/resolved_gas + if(ispath(descriptor)) + var/datum/gas/casted_gas = descriptor + resolved_gas = global.gas_data.gases[initial(casted_gas.id)] + else + resolved_gas = global.gas_data.gases[resolved_gas] + // todo: temperature support, for now everything ships at 273.15K + switch(container_hint) + if(/obj/item/tank) + // tank, if possible + var/obj/item/tank/tank_type = /obj/item/tank/shipment + var/tank_pressure = initial(tank_type.volume) + var/estimated_pressure = (R_IDEAL_GAS_EQUATION * 273.15 * amount) / tank_pressure + if(estimated_pressure > TANK_LEAK_PRESSURE) + stack_trace("tried to shove [amount] mols of [resolved_gas] into a shipment tank, which would result in a detonation") + return amount * resolved_gas.worth + // translate to path + if(descriptor_hint == SUPPLY_DESCRIPTOR_HINT_PROTOTYPE) + var/entity_type = SSpersistence.prototype_id_to_path[descriptor] + descriptor = entity_type + // this point onwards: handle path + if(ispath(descriptor, /obj/item/stack)) + var/obj/item/stack/casted_stack_path = descriptor + return amount * initial(casted_stack_path.worth_intrinsic) + var/atom/movable/creating = new descriptor(null) + . = creating.worth(GET_WORTH_FLAGS_SUPPLY_DETECTION) * amount + qdel(creating) diff --git a/code/datums/armor/station/armor.dm b/code/datums/armor/station/armor.dm index 6fb9ef70bb12..5c6080a7e2a1 100644 --- a/code/datums/armor/station/armor.dm +++ b/code/datums/armor/station/armor.dm @@ -82,7 +82,7 @@ rad = 0.1 /datum/armor/station/combat - melee = 0.15 + melee = 0.35 bullet = 0.5 bullet_soak = 2 laser = 0.5 diff --git a/code/game/atoms/atom.dm b/code/game/atoms/atom.dm index 498c75b1ecd5..b9bcee5fe40d 100644 --- a/code/game/atoms/atom.dm +++ b/code/game/atoms/atom.dm @@ -51,31 +51,6 @@ /// * this variable is not visible and should not be edited in the map editor. var/tmp/list/context_menus - //? Economy - // todo: move all this to obj level, you aren't going to sell a fucking turf. - // the procs can however stay. - /// intrinsic worth without accounting containing reagents / materials - applies in static and dynamic mode. - var/worth_intrinsic = 0 - /// static worth of contents - only read if getting a static worth from typepath. - var/worth_containing = 0 - /// static worth of raw materials - only read if getting a static worth from typepath. - var/worth_materials = 0 - /// intrinsic worth default markup when buying as factor (2 for 2x) - var/worth_buy_factor = WORTH_BUY_FACTOR_DEFAULT - /// intrinsic elasticity as factor, 2 = 2x easy to inflate market - var/worth_elasticity = WORTH_ELASTICITY_DEFAULT - /** - * * DANGER * - do not touch this variable unless you know what you are doing. - * - * This signifies that procs have a non-negligible randomization on a *freshly-spawned* instance of this object. - * This is not the case for most closets / lockers / crates / storage that spawn with items. - * In those cases, use the other variables to control its static worth. - * - * This means that things like cargo should avoid "intuiting" the value of this object - * through initial()'s alone. - */ - var/worth_dynamic = FALSE - //? Integrity /// max health var/integrity_max diff --git a/code/game/content/factions/corporations/nanotrasen/faction.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-faction.dm similarity index 100% rename from code/game/content/factions/corporations/nanotrasen/faction.dm rename to code/game/content/factions/corporations/nanotrasen/nanotrasen-faction.dm diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply.dm new file mode 100644 index 000000000000..a7b7800463ec --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply.dm @@ -0,0 +1,6 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +// todo: supply system +/datum/supply_pack/nanotrasen + legacy = TRUE diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/animals.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/animals.dm new file mode 100644 index 000000000000..340f893757a3 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/animals.dm @@ -0,0 +1,125 @@ + +/datum/supply_pack/nanotrasen/animals + category = "Animals" + container_type = /obj/structure/largecrate + +/datum/supply_pack/nanotrasen/animals/monkey + name = "Monkey crate" + contains = list( + /obj/item/storage/box/monkeycubes, + ) + worth = 200 + container_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/nanotrasen/animals/farwa + name = "Farwa crate" + contains = list( + /obj/item/storage/box/monkeycubes/farwacubes, + ) + worth = 350 + container_name = "Farwa crate" + container_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/nanotrasen/animals/neara + name = "Neaera crate" + contains = list( + /obj/item/storage/box/monkeycubes/neaeracubes, + ) + worth = 350 + container_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/nanotrasen/animals/stok + name = "Stok crate" + contains = list( + /obj/item/storage/box/monkeycubes/stokcubes, + ) + worth = 350 + container_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/nanotrasen/animals/lisa + name = "Corgi Crate" + worth = 350 // DOGGIE :D + container_type = /obj/structure/largecrate/animal/corgi + +/datum/supply_pack/nanotrasen/animals/cat + name = "Cat Crate" + worth = 350 // KIBBY :D + container_type = /obj/structure/largecrate/animal/cat + +/datum/supply_pack/nanotrasen/animals/cow + name = "Cow crate" + worth = 350 + container_type = /obj/structure/largecrate/animal/cow + +/datum/supply_pack/nanotrasen/animals/goat + name = "Goat crate" + worth = 350 + container_type = /obj/structure/largecrate/animal/goat + +/datum/supply_pack/nanotrasen/animals/chicken + name = "Chicken crate" + worth = 350 + container_type = /obj/structure/largecrate/animal/chick + +/datum/supply_pack/nanotrasen/animals/diycarpotox + name = "Gather-It-Yourself Carpotoxin" + worth = 500 // grr powergamers + container_type = /obj/structure/largecrate/animal/carp + +/datum/supply_pack/nanotrasen/animals/diyspidertox + name = "Gather-It-Yourself Spider Toxin" + worth = 500 // grr powergamers + container_type = /obj/structure/largecrate/animal/spiders + +/datum/supply_pack/nanotrasen/animals/birds + name = "Birds Crate" + worth = 4000 // dear lord there's a lot of birds in here + container_type = /obj/structure/largecrate/birds + +/datum/supply_pack/nanotrasen/animals/sobaka + name = "Sobaka crate" + contains = list( + /obj/item/storage/box/monkeycubes/sobakacubes, + ) + worth = 350 + +/datum/supply_pack/nanotrasen/animals/saru + name = "Saru crate" + contains = list( + /obj/item/storage/box/monkeycubes/sarucubes, + ) + worth = 350 + +/datum/supply_pack/nanotrasen/animals/sparra + name = "Sparra crate" + contains = list( + /obj/item/storage/box/monkeycubes/sparracubes, + ) + worth = 350 + +/datum/supply_pack/nanotrasen/animals/wolpin + name = "Wolpin crate" + contains = list( + /obj/item/storage/box/monkeycubes/wolpincubes, + ) + worth = 350 + +/datum/supply_pack/nanotrasen/animals/fennec + name = "Fennec crate" + worth = 500 // FOX :D + container_type = /obj/structure/largecrate/animal/fennec + +/datum/supply_pack/nanotrasen/animals/woolie + name = "Woolie crate" + worth = 500 + container_type = /obj/structure/largecrate/animal/woolie + +/datum/supply_pack/nanotrasen/animals/icegoat + name = "Glacicorn crate" + worth = 500 + container_type = /obj/structure/largecrate/animal/icegoat + +/datum/supply_pack/nanotrasen/animals/furnacegrub + name = "Furnace Grub crate" + worth = 500 + container_type = /obj/structure/largecrate/animal/furnacegrub diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/atmospherics.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/atmospherics.dm new file mode 100644 index 000000000000..71a4fea064e2 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/atmospherics.dm @@ -0,0 +1,122 @@ +/* +* Here is where any supply packs related +* to being atmospherics tasks live. +*/ + + +/datum/supply_pack/nanotrasen/atmospherics + category = "Atmospherics" + +/datum/supply_pack/nanotrasen/atmospherics/inflatable + name = "Inflatable barriers" + contains = list( + /obj/item/storage/briefcase/inflatable = 3, + ) + container_type = /obj/structure/closet/crate/engineering + container_name = "Inflatable Barrier Crate" + +/datum/supply_pack/nanotrasen/atmospherics/canister_empty + name = "Empty gas canister" + container_name = "Empty gas canister crate" + container_type = /obj/structure/largecrate + contains = list( + /obj/machinery/portable_atmospherics/canister = 1, + ) + +/datum/supply_pack/nanotrasen/atmospherics/canister_air + name = "Air canister" + container_name = "Air canister crate" + container_type = /obj/structure/largecrate + contains = list( + /obj/machinery/portable_atmospherics/canister/air, + ) + +/datum/supply_pack/nanotrasen/atmospherics/canister_helium + name = "Helium canister" + container_name = "Helium canister crate" + container_type = /obj/structure/largecrate + contains = list( + /obj/machinery/portable_atmospherics/canister/helium, + ) + +/datum/supply_pack/nanotrasen/atmospherics/canister_oxygen + name = "Oxygen canister" + container_name = "Oxygen canister crate" + container_type = /obj/structure/largecrate + contains = list( + /obj/machinery/portable_atmospherics/canister/oxygen, + ) + +/datum/supply_pack/nanotrasen/atmospherics/canister_nitrogen + name = "Nitrogen canister" + container_name = "Nitrogen canister crate" + container_type = /obj/structure/largecrate + contains = list( + /obj/machinery/portable_atmospherics/canister/nitrogen, + ) + +/datum/supply_pack/nanotrasen/atmospherics/canister_phoron + name = "Phoron gas canister" + container_name = "Phoron gas canister crate" + container_type = /obj/structure/closet/crate/secure/large + container_access = list( + ACCESS_ENGINEERING_ATMOS, + ) + contains = list( + /obj/machinery/portable_atmospherics/canister/phoron, + ) + +/datum/supply_pack/nanotrasen/atmospherics/canister_nitrous_oxide + name = "N2O gas canister" + container_name = "N2O gas canister crate" + container_type = /obj/structure/closet/crate/secure/large + contains = list( + /obj/machinery/portable_atmospherics/canister/nitrous_oxide, + ) + +/datum/supply_pack/nanotrasen/atmospherics/canister_carbon_dioxide + name = "Carbon dioxide gas canister" + container_name = "CO2 canister crate" + container_type = /obj/structure/closet/crate/secure/large + contains = list( + /obj/machinery/portable_atmospherics/canister/carbon_dioxide, + ) + +/datum/supply_pack/nanotrasen/atmospherics/air_dispenser + name = "Pipe Dispenser" + container_type = /obj/structure/closet/crate/secure/large + container_name = "Pipe Dispenser Crate" + contains = list( + /obj/machinery/pipedispenser/orderable, + ) + +/datum/supply_pack/nanotrasen/atmospherics/disposals_dispenser + name = "Disposals Pipe Dispenser" + container_type = /obj/structure/closet/crate/secure/large + container_name = "Disposal Dispenser Crate" + contains = list( + /obj/machinery/pipedispenser/disposal/orderable, + ) + +/datum/supply_pack/nanotrasen/atmospherics/internals + name = "Internals crate" + contains = list( + /obj/item/clothing/mask/gas = 3, + /obj/item/tank/air = 3, + ) + container_type = /obj/structure/closet/crate/internals + container_name = "Internals crate" + +/datum/supply_pack/nanotrasen/atmospherics/evacuation + name = "Emergency equipment" + contains = list( + /obj/item/storage/toolbox/emergency = 2, + /obj/item/clothing/suit/storage/hazardvest = 2, + /obj/item/clothing/suit/storage/vest = 2, + /obj/item/tank/emergency/oxygen/engi = 4, + /obj/item/clothing/suit/space/emergency = 4, + /obj/item/clothing/head/helmet/space/emergency = 4, + /obj/item/clothing/mask/gas = 4, + ) + container_type = /obj/structure/closet/crate/internals + container_name = "Emergency crate" diff --git a/code/modules/cargo/supplypacks/contraband.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/contraband.dm similarity index 52% rename from code/modules/cargo/supplypacks/contraband.dm rename to code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/contraband.dm index ca97a98b13b6..bed7fbd69281 100644 --- a/code/modules/cargo/supplypacks/contraband.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/contraband.dm @@ -3,60 +3,67 @@ * and require modification of the supply controller live. */ +// todo: wow this sucks +/datum/supply_pack/nanotrasen/contraband + contains_some = list( + list( + "amount" = 5, + "entities" = list( + /obj/item/seeds/bloodtomatoseed, + /obj/item/storage/pill_bottle/zoom, + /obj/item/storage/pill_bottle/happy, + /obj/item/reagent_containers/food/drinks/bottle/pwine, + /obj/item/reagent_containers/food/drinks/cans/geometer = 2, + ), + ), + ) -/datum/supply_pack/randomised/contraband - num_contained = 5 - contains = list( - /obj/item/seeds/bloodtomatoseed, - /obj/item/storage/pill_bottle/zoom, - /obj/item/storage/pill_bottle/happy, - /obj/item/reagent_containers/food/drinks/bottle/pwine, - /obj/item/reagent_containers/food/drinks/cans/geometer = 2 - ) + worth = 250 name = "Contraband crate" - cost = 25 container_type = /obj/structure/closet/crate container_name = "Unlabeled crate" - contraband = 1 - group = "Supplies" + legacy_contraband = 1 + category = "Supplies" -/datum/supply_pack/security/specialops +/datum/supply_pack/nanotrasen/security/specialops name = "Special Ops supplies" contains = list( /obj/item/storage/box/emps, /obj/item/grenade/smokebomb = 4, - /obj/item/grenade/chem_grenade/incendiary + /obj/item/grenade/chem_grenade/incendiary, ) - cost = 25 container_type = /obj/structure/closet/crate container_name = "Special Ops crate" - contraband = 1 + legacy_contraband = 1 -/datum/supply_pack/munitions/bolt_rifles_militia +/datum/supply_pack/nanotrasen/munitions/bolt_rifles_militia name = "Weapon - Misplaced militia rifles" contains = list( - /obj/item/gun/ballistic/shotgun/pump/rifle = 3, - /obj/item/ammo_magazine/clip/c762 = 6 - ) - cost = 50 - contraband = 1 + /obj/item/gun/ballistic/shotgun/pump/rifle = 3, + /obj/item/ammo_magazine/clip/c762 = 6, + ) + legacy_contraband = 1 container_type = /obj/structure/closet/crate/secure/weapon container_name = "Ballistic weapons crate" - access = ACCESS_SECURITY_ARMORY + container_access = ACCESS_SECURITY_ARMORY -/datum/supply_pack/randomised/misc/telecrate //you get something awesome, a couple of decent things, and a few weak/filler things +/datum/supply_pack/nanotrasen/misc/telecrate //you get something awesome, a couple of decent things, and a few weak/filler things name = "ERR_NULL_ENTRY" //null crate! also dream maker is hell, - num_contained = 1 - contains = list( - /obj/item/storage/box/cargo_null_entry_kit/ops, - /obj/item/storage/box/cargo_null_entry_kit/doctor, - /obj/item/storage/box/cargo_null_entry_kit/sapper, - /obj/item/storage/box/cargo_null_entry_kit/spy, - /obj/item/storage/box/cargo_null_entry_kit/pro + contains_some = list( + list( + "entities" = list( + /obj/item/storage/box/cargo_null_entry_kit/ops, + /obj/item/storage/box/cargo_null_entry_kit/doctor, + /obj/item/storage/box/cargo_null_entry_kit/sapper, + /obj/item/storage/box/cargo_null_entry_kit/spy, + /obj/item/storage/box/cargo_null_entry_kit/pro, + ), + "amount" = 1, + ), ) - cost = 250 //more than a hat crate!, - contraband = 1 + worth = 5000 + legacy_contraband = 1 container_type = /obj/structure/largecrate container_name = "Suspicious crate" @@ -119,107 +126,113 @@ new /obj/item/material/knife/tacknife/combatknife(src) new /obj/item/clothing/mask/balaclava(src) -/datum/supply_pack/supply/stolen +/datum/supply_pack/nanotrasen/supply/stolen name = "Stolen Supply Crate" - contains = list(/obj/item/stolenpackage = 1) - cost = 75 + contains = list( + /obj/item/stolenpackage = 1, + ) container_type = /obj/structure/closet/crate container_name = "shady crate" - contraband = 1 + legacy_contraband = 1 -/datum/supply_pack/randomised/stolenplus +/datum/supply_pack/nanotrasen/stolenplus name = "Bulk Stolen Supply Crate" - num_contained = 4 - contains = list( - /obj/item/stolenpackage, - /obj/item/stolenpackageplus, - ) // uh oh - cost = 375 //slight discount? still contraband tho glhf + contains_some = list( + list( + "amount" = 4, + "entities" = list( + /obj/item/stolenpackage, + /obj/item/stolenpackageplus, + ), + ), + ) + worth = /obj/item/stolenpackageplus::worth_intrinsic * 4 container_type = /obj/structure/closet/crate container_name = "shadier crate" - contraband = 1 - group = "Supplies" + legacy_contraband = 1 + category = "Supplies" -/datum/supply_pack/supply/medieval +/datum/supply_pack/nanotrasen/supply/medieval name = "Knight set crate" contains = list( - /obj/item/clothing/head/helmet/medieval/red = 1, - /obj/item/clothing/head/helmet/medieval/green = 1, - /obj/item/clothing/head/helmet/medieval/blue = 1, - /obj/item/clothing/head/helmet/medieval/orange = 1, - /obj/item/clothing/suit/armor/medieval/red = 1, - /obj/item/clothing/suit/armor/medieval/green = 1, - /obj/item/clothing/suit/armor/medieval/blue = 1, - /obj/item/clothing/suit/armor/medieval/orange = 1 - ) - cost = 120 + /obj/item/clothing/head/helmet/medieval/red = 1, + /obj/item/clothing/head/helmet/medieval/green = 1, + /obj/item/clothing/head/helmet/medieval/blue = 1, + /obj/item/clothing/head/helmet/medieval/orange = 1, + /obj/item/clothing/suit/armor/medieval/red = 1, + /obj/item/clothing/suit/armor/medieval/green = 1, + /obj/item/clothing/suit/armor/medieval/blue = 1, + /obj/item/clothing/suit/armor/medieval/orange = 1, + ) container_type = /obj/structure/closet/crate container_name = "knight set crate" - contraband = 1 + legacy_contraband = 1 -/datum/supply_pack/supply/deusvult_templar +/datum/supply_pack/nanotrasen/supply/deusvult_templar name = "Templar set crate" contains = list( - /obj/item/clothing/head/helmet/medieval/crusader/templar, - /obj/item/clothing/suit/armor/medieval/crusader/cross/templar, - /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade/templar - ) - cost = 30 + /obj/item/clothing/head/helmet/medieval/crusader/templar, + /obj/item/clothing/suit/armor/medieval/crusader/cross/templar, + /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade/templar, + ) container_type = /obj/structure/closet/crate container_name = "templar armor crate" - contraband = 1 + legacy_contraband = 1 -/datum/supply_pack/supply/deusvult_hospitaller +/datum/supply_pack/nanotrasen/supply/deusvult_hospitaller name = "Hospitaller set crate" contains = list( - /obj/item/clothing/head/helmet/medieval/crusader, - /obj/item/clothing/suit/armor/medieval/crusader/cross/hospitaller, - /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade/hospitaller - ) - cost = 30 + /obj/item/clothing/head/helmet/medieval/crusader, + /obj/item/clothing/suit/armor/medieval/crusader/cross/hospitaller, + /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade/hospitaller, + ) container_type = /obj/structure/closet/crate container_name = "hospitaller armor crate" - contraband = 1 + legacy_contraband = 1 -/datum/supply_pack/supply/deusvult_teutonic +/datum/supply_pack/nanotrasen/supply/deusvult_teutonic name = "Teutonic set crate" contains = list( - /obj/item/clothing/head/helmet/medieval/crusader/horned, - /obj/item/clothing/head/helmet/medieval/crusader/winged, - /obj/item/clothing/suit/armor/medieval/crusader/cross, - /obj/item/clothing/suit/armor/medieval/crusader/cross/teutonic, - /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade, - /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade/teutonic - ) - cost = 40 + /obj/item/clothing/head/helmet/medieval/crusader/horned, + /obj/item/clothing/head/helmet/medieval/crusader/winged, + /obj/item/clothing/suit/armor/medieval/crusader/cross, + /obj/item/clothing/suit/armor/medieval/crusader/cross/teutonic, + /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade, + /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade/teutonic, + ) container_type = /obj/structure/closet/crate container_name = "teutonic armor crate" - contraband = 1 + legacy_contraband = 1 -/datum/supply_pack/robotics/salvage +/datum/supply_pack/nanotrasen/robotics/salvage name = "Redirected Mech Salvage" - contains = list(/obj/item/mechasalvage = 6) - cost = 400 //High End Mech Parts, Direct To You, at an extreme markup! + contains = list( + /obj/item/mechasalvage = 6, + ) container_type = /obj/structure/closet/crate container_name = "oil-stained crate" - contraband = 1 + legacy_contraband = 1 -/datum/supply_pack/randomised/material/rareores +/datum/supply_pack/nanotrasen/material/rareores name = "Smuggled Ores and Materials" - num_contained = 20 - contains = list( - /obj/item/stack/material/bananium, - /obj/item/stack/material/diamond, - /obj/item/stack/material/durasteel, - /obj/item/stack/material/morphium, - /obj/item/stack/material/platinum, - /obj/item/stack/material/verdantium, - /obj/item/stack/material/mhydrogen, - /obj/item/stack/material/silencium, - /obj/item/stack/material/valhollide - ) - cost = 350 + contains_some = list( + list( + "amount" = 20, + "entities" = list( + /obj/item/stack/material/bananium, + /obj/item/stack/material/diamond, + /obj/item/stack/material/durasteel, + /obj/item/stack/material/morphium, + /obj/item/stack/material/platinum, + /obj/item/stack/material/verdantium, + /obj/item/stack/material/mhydrogen, + /obj/item/stack/material/silencium, + /obj/item/stack/material/valhollide, + ), + ), + ) + worth = 1000 container_type = /obj/structure/closet/crate container_name = "dented mining crate" - contraband = 1 - group = "Materials" + legacy_contraband = 1 + category = "Materials" diff --git a/code/modules/cargo/supplypacks/costumes.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/costumes.dm similarity index 55% rename from code/modules/cargo/supplypacks/costumes.dm rename to code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/costumes.dm index fa0d3816e145..782a2e66f39f 100644 --- a/code/modules/cargo/supplypacks/costumes.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/costumes.dm @@ -4,125 +4,124 @@ */ -/datum/supply_pack/costumes - group = "Costumes" +/datum/supply_pack/nanotrasen/costume + abstract_type = /datum/supply_pack/nanotrasen/costume + category = "Costumes" -/datum/supply_pack/randomised/costumes - group = "Costumes" - -/datum/supply_pack/costumes/wizard +/datum/supply_pack/nanotrasen/costume/wizard name = "Wizard costume" contains = list( - /obj/item/staff, - /obj/item/clothing/suit/wizrobe/fake, - /obj/item/clothing/shoes/sandal, - /obj/item/clothing/head/wizard/fake - ) - cost = 20 + /obj/item/staff, + /obj/item/clothing/suit/wizrobe/fake, + /obj/item/clothing/shoes/sandal, + /obj/item/clothing/head/wizard/fake, + ) + worth = 200 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Wizard costume crate" -/datum/supply_pack/costumes/techpriest +/datum/supply_pack/nanotrasen/costume/techpriest name = "Tech Priest robes" contains = list( - /obj/item/clothing/suit/storage/hooded/techpriest = 2) - cost = 150 + /obj/item/clothing/suit/storage/hooded/techpriest = 2, + ) + worth = 350 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Tech Priest crate" -/datum/supply_pack/randomised/costumes/hats - num_contained = 4 - contains = list( - /obj/item/clothing/head/collectable/chef, - /obj/item/clothing/head/collectable/paper, - /obj/item/clothing/head/collectable/tophat, - /obj/item/clothing/head/collectable/captain, - /obj/item/clothing/head/collectable/beret, - /obj/item/clothing/head/collectable/welding, - /obj/item/clothing/head/collectable/flatcap, - /obj/item/clothing/head/collectable/pirate, - /obj/item/clothing/head/collectable/kitty, - /obj/item/clothing/head/collectable/rabbitears, - /obj/item/clothing/head/collectable/wizard, - /obj/item/clothing/head/collectable/hardhat, - /obj/item/clothing/head/collectable/HoS, - /obj/item/clothing/head/collectable/thunderdome, - /obj/item/clothing/head/collectable/swat, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/police, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/xenom, - /obj/item/clothing/head/collectable/petehat - ) +/datum/supply_pack/nanotrasen/costume/hats + lazy_gacha_amount = 4 + lazy_gacha_contained = list( + /obj/item/clothing/head/collectable/chef, + /obj/item/clothing/head/collectable/paper, + /obj/item/clothing/head/collectable/tophat, + /obj/item/clothing/head/collectable/captain, + /obj/item/clothing/head/collectable/beret, + /obj/item/clothing/head/collectable/welding, + /obj/item/clothing/head/collectable/flatcap, + /obj/item/clothing/head/collectable/pirate, + /obj/item/clothing/head/collectable/kitty, + /obj/item/clothing/head/collectable/rabbitears, + /obj/item/clothing/head/collectable/wizard, + /obj/item/clothing/head/collectable/hardhat, + /obj/item/clothing/head/collectable/HoS, + /obj/item/clothing/head/collectable/thunderdome, + /obj/item/clothing/head/collectable/swat, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/police, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/xenom, + /obj/item/clothing/head/collectable/petehat, + ) name = "Collectable hat crate!" - cost = 200 + worth = 1500 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Collectable hats crate! Brought to you by Bass.inc!" -/datum/supply_pack/randomised/costumes/costume - num_contained = 3 - contains = list( - /obj/item/clothing/suit/pirate, - /obj/item/clothing/suit/judgerobe, - /obj/item/clothing/accessory/wcoat, - /obj/item/clothing/suit/hastur, - /obj/item/clothing/suit/holidaypriest, - /obj/item/clothing/suit/nun, - /obj/item/clothing/suit/imperium_monk, - /obj/item/clothing/suit/ianshirt, - /obj/item/clothing/under/gimmick/rank/captain/suit, - /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit, - /obj/item/clothing/under/lawyer/purpsuit, - /obj/item/clothing/under/rank/mailman, - /obj/item/clothing/under/dress/dress_saloon, - /obj/item/clothing/suit/suspenders, - /obj/item/clothing/suit/storage/toggle/labcoat/mad, - /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, - /obj/item/clothing/under/schoolgirl, - /obj/item/clothing/under/owl, - /obj/item/clothing/under/waiter, - /obj/item/clothing/under/gladiator, - /obj/item/clothing/under/soviet, - /obj/item/clothing/under/scratch, - /obj/item/clothing/under/wedding/bride_white, - /obj/item/clothing/suit/chef, - /obj/item/clothing/suit/storage/apron/overalls, - /obj/item/clothing/under/redcoat, - /obj/item/clothing/under/kilt, - /obj/item/clothing/suit/storage/hooded/techpriest - ) +/datum/supply_pack/nanotrasen/costume/costume + lazy_gacha_amount = 3 + lazy_gacha_contained = list( + /obj/item/clothing/suit/pirate, + /obj/item/clothing/suit/judgerobe, + /obj/item/clothing/accessory/wcoat, + /obj/item/clothing/suit/hastur, + /obj/item/clothing/suit/holidaypriest, + /obj/item/clothing/suit/nun, + /obj/item/clothing/suit/imperium_monk, + /obj/item/clothing/suit/ianshirt, + /obj/item/clothing/under/gimmick/rank/captain/suit, + /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit, + /obj/item/clothing/under/lawyer/purpsuit, + /obj/item/clothing/under/rank/mailman, + /obj/item/clothing/under/dress/dress_saloon, + /obj/item/clothing/suit/suspenders, + /obj/item/clothing/suit/storage/toggle/labcoat/mad, + /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, + /obj/item/clothing/under/schoolgirl, + /obj/item/clothing/under/owl, + /obj/item/clothing/under/waiter, + /obj/item/clothing/under/gladiator, + /obj/item/clothing/under/soviet, + /obj/item/clothing/under/scratch, + /obj/item/clothing/under/wedding/bride_white, + /obj/item/clothing/suit/chef, + /obj/item/clothing/suit/storage/apron/overalls, + /obj/item/clothing/under/redcoat, + /obj/item/clothing/under/kilt, + /obj/item/clothing/suit/storage/hooded/techpriest, + ) name = "Costumes crate" - cost = 10 + worth = 350 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Actor Costumes" -/datum/supply_pack/costumes/formal_wear +/datum/supply_pack/nanotrasen/costume/formal_wear contains = list( - /obj/item/clothing/head/bowler, - /obj/item/clothing/head/that, - /obj/item/clothing/suit/storage/toggle/internalaffairs, - /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket, - /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket, - /obj/item/clothing/under/suit_jacket, - /obj/item/clothing/under/suit_jacket/female, - /obj/item/clothing/under/suit_jacket/really_black, - /obj/item/clothing/under/suit_jacket/red, - /obj/item/clothing/under/lawyer/bluesuit, - /obj/item/clothing/under/lawyer/purpsuit, - /obj/item/clothing/shoes/black = 2, - /obj/item/clothing/shoes/laceup/brown, - /obj/item/clothing/accessory/wcoat - ) + /obj/item/clothing/head/bowler, + /obj/item/clothing/head/that, + /obj/item/clothing/suit/storage/toggle/internalaffairs, + /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket, + /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket, + /obj/item/clothing/under/suit_jacket, + /obj/item/clothing/under/suit_jacket/female, + /obj/item/clothing/under/suit_jacket/really_black, + /obj/item/clothing/under/suit_jacket/red, + /obj/item/clothing/under/lawyer/bluesuit, + /obj/item/clothing/under/lawyer/purpsuit, + /obj/item/clothing/shoes/black = 2, + /obj/item/clothing/shoes/laceup/brown, + /obj/item/clothing/accessory/wcoat, + ) name = "Formalwear closet" - cost = 30 + worth = 400 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Formalwear for the best occasions." -/datum/supply_pack/costumes/witch +/datum/supply_pack/nanotrasen/costume/witch name = "Witch costume" container_name = "Witch costume" container_type = /obj/structure/closet/crate/corporate/nanothreads - cost = 20 + worth = 350 contains = list( /obj/item/clothing/head/wizard/marisa/fake, /obj/item/clothing/shoes/sandal, @@ -130,130 +129,130 @@ /obj/item/staff/broom, ) -/datum/supply_pack/randomised/costumes/costume_hats +/datum/supply_pack/nanotrasen/costume/costume_hats name = "Costume hats" container_name = "Actor hats crate" container_type = /obj/structure/closet/crate - cost = 10 - num_contained = 3 - contains = list( - /obj/item/clothing/head/redcoat, - /obj/item/clothing/head/mailman, - /obj/item/clothing/head/plaguedoctorhat, - /obj/item/clothing/head/pirate, - /obj/item/clothing/head/hasturhood, - /obj/item/clothing/head/powdered_wig, - /obj/item/clothing/head/pin/flower, - /obj/item/clothing/head/pin/flower/yellow, - /obj/item/clothing/head/pin/flower/blue, - /obj/item/clothing/head/pin/flower/pink, - /obj/item/clothing/head/pin/clover, - /obj/item/clothing/head/pin/butterfly, - /obj/item/clothing/mask/gas/owl_mask, - /obj/item/clothing/mask/gas/monkeymask, - /obj/item/clothing/head/helmet/gladiator, - /obj/item/clothing/head/ushanka - ) + worth = 350 + lazy_gacha_amount = 3 + lazy_gacha_contained = list( + /obj/item/clothing/head/redcoat, + /obj/item/clothing/head/mailman, + /obj/item/clothing/head/plaguedoctorhat, + /obj/item/clothing/head/pirate, + /obj/item/clothing/head/hasturhood, + /obj/item/clothing/head/powdered_wig, + /obj/item/clothing/head/pin/flower, + /obj/item/clothing/head/pin/flower/yellow, + /obj/item/clothing/head/pin/flower/blue, + /obj/item/clothing/head/pin/flower/pink, + /obj/item/clothing/head/pin/clover, + /obj/item/clothing/head/pin/butterfly, + /obj/item/clothing/mask/gas/owl_mask, + /obj/item/clothing/mask/gas/monkeymask, + /obj/item/clothing/head/helmet/gladiator, + /obj/item/clothing/head/ushanka, + ) -/datum/supply_pack/randomised/costumes/dresses +/datum/supply_pack/nanotrasen/costume/dresses name = "Womens formal dress locker" container_name = "Pretty dress locker" container_type = /obj/structure/closet/crate/corporate/nanothreads - cost = 15 - num_contained = 3 - contains = list( - /obj/item/clothing/under/wedding/bride_orange, - /obj/item/clothing/under/wedding/bride_purple, - /obj/item/clothing/under/wedding/bride_blue, - /obj/item/clothing/under/wedding/bride_red, - /obj/item/clothing/under/wedding/bride_white, - /obj/item/clothing/under/sundress, - /obj/item/clothing/under/dress/dress_green, - /obj/item/clothing/under/dress/dress_pink, - /obj/item/clothing/under/dress/dress_orange, - /obj/item/clothing/under/dress/dress_yellow, - /obj/item/clothing/under/dress/dress_saloon - ) + worth = 350 + lazy_gacha_amount = 3 + lazy_gacha_contained = list( + /obj/item/clothing/under/wedding/bride_orange, + /obj/item/clothing/under/wedding/bride_purple, + /obj/item/clothing/under/wedding/bride_blue, + /obj/item/clothing/under/wedding/bride_red, + /obj/item/clothing/under/wedding/bride_white, + /obj/item/clothing/under/sundress, + /obj/item/clothing/under/dress/dress_green, + /obj/item/clothing/under/dress/dress_pink, + /obj/item/clothing/under/dress/dress_orange, + /obj/item/clothing/under/dress/dress_yellow, + /obj/item/clothing/under/dress/dress_saloon, + ) -/datum/supply_pack/costumes/xenowear +/datum/supply_pack/nanotrasen/costume/xenowear name = "Xenowear crate" contains = list( - /obj/item/clothing/shoes/footwraps, - /obj/item/clothing/shoes/boots/jackboots/toeless, - /obj/item/clothing/shoes/boots/workboots/toeless, - /obj/item/clothing/suit/tajaran/furs, - /obj/item/clothing/head/tajaranold/scarf, - /obj/item/clothing/suit/unathi/robe, - /obj/item/clothing/suit/unathi/mantle, - /obj/item/clothing/under/permit, - /obj/item/clothing/under/vox/vox_casual, - /obj/item/clothing/under/vox/vox_robes, - /obj/item/clothing/under/harness, - /obj/item/clothing/under/skirt/loincloth, - /obj/item/clothing/gloves/vox - ) - cost = 100 + /obj/item/clothing/shoes/footwraps, + /obj/item/clothing/shoes/boots/jackboots/toeless, + /obj/item/clothing/shoes/boots/workboots/toeless, + /obj/item/clothing/suit/tajaran/furs, + /obj/item/clothing/head/tajaranold/scarf, + /obj/item/clothing/suit/unathi/robe, + /obj/item/clothing/suit/unathi/mantle, + /obj/item/clothing/under/permit, + /obj/item/clothing/under/vox/vox_casual, + /obj/item/clothing/under/vox/vox_robes, + /obj/item/clothing/under/harness, + /obj/item/clothing/under/skirt/loincloth, + /obj/item/clothing/gloves/vox, + ) + worth = 450 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Xenowear crate" -/datum/supply_pack/costumes/tesh_smocks +/datum/supply_pack/nanotrasen/costume/tesh_smocks name = "Teshari smocks" contains = list( - /obj/item/clothing/under/teshari/smock, - /obj/item/clothing/under/teshari/smock/rainbow, - /obj/item/clothing/under/teshari/smock/red, - /obj/item/clothing/under/teshari/smock/white, - /obj/item/clothing/under/teshari/smock/yellow - ) - cost = 25 + /obj/item/clothing/under/teshari/smock, + /obj/item/clothing/under/teshari/smock/rainbow, + /obj/item/clothing/under/teshari/smock/red, + /obj/item/clothing/under/teshari/smock/white, + /obj/item/clothing/under/teshari/smock/yellow, + ) + worth = 350 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Teshari smocks crate" -/datum/supply_pack/randomised/costumes/tesh_coats +/datum/supply_pack/nanotrasen/costume/tesh_coats name = "Teshari undercoats" - num_contained = 4 - contains = list( - /obj/item/clothing/under/teshari/undercoat/standard/blue_grey, - /obj/item/clothing/under/teshari/undercoat/standard/brown_grey, - /obj/item/clothing/under/teshari/undercoat/standard/green_grey, - /obj/item/clothing/under/teshari/undercoat/standard/lightgrey_grey, - /obj/item/clothing/under/teshari/undercoat/standard/orange, - /obj/item/clothing/under/teshari/undercoat/standard/orange_grey, - /obj/item/clothing/under/teshari/undercoat/standard/pink_grey, - /obj/item/clothing/under/teshari/undercoat/standard/purple_grey, - /obj/item/clothing/under/teshari/undercoat/standard/rainbow, - /obj/item/clothing/under/teshari/undercoat/standard/red_grey, - /obj/item/clothing/under/teshari/undercoat/standard/white_grey, - /obj/item/clothing/under/teshari/undercoat/standard/yellow_grey - ) - cost = 20 + lazy_gacha_amount = 4 + lazy_gacha_contained = list( + /obj/item/clothing/under/teshari/undercoat/standard/blue_grey, + /obj/item/clothing/under/teshari/undercoat/standard/brown_grey, + /obj/item/clothing/under/teshari/undercoat/standard/green_grey, + /obj/item/clothing/under/teshari/undercoat/standard/lightgrey_grey, + /obj/item/clothing/under/teshari/undercoat/standard/orange, + /obj/item/clothing/under/teshari/undercoat/standard/orange_grey, + /obj/item/clothing/under/teshari/undercoat/standard/pink_grey, + /obj/item/clothing/under/teshari/undercoat/standard/purple_grey, + /obj/item/clothing/under/teshari/undercoat/standard/rainbow, + /obj/item/clothing/under/teshari/undercoat/standard/red_grey, + /obj/item/clothing/under/teshari/undercoat/standard/white_grey, + /obj/item/clothing/under/teshari/undercoat/standard/yellow_grey, + ) + worth = 300 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Teshari undercoats crate" -/datum/supply_pack/randomised/costumes/tesh_coats_b +/datum/supply_pack/nanotrasen/costume/tesh_coats_b name = "Teshari undercoats (black)" - num_contained = 4 - contains = list( - /obj/item/clothing/under/teshari/undercoat/standard/black, - /obj/item/clothing/under/teshari/undercoat/standard/black_blue, - /obj/item/clothing/under/teshari/undercoat/standard/black_brown, - /obj/item/clothing/under/teshari/undercoat/standard/black_green, - /obj/item/clothing/under/teshari/undercoat/standard/black_grey, - /obj/item/clothing/under/teshari/undercoat/standard/black_orange, - /obj/item/clothing/under/teshari/undercoat/standard/black_pink, - /obj/item/clothing/under/teshari/undercoat/standard/black_purple, - /obj/item/clothing/under/teshari/undercoat/standard/black_red, - /obj/item/clothing/under/teshari/undercoat/standard/black_white, - /obj/item/clothing/under/teshari/undercoat/standard/black_yellow - ) - cost = 20 + lazy_gacha_amount = 4 + lazy_gacha_contained = list( + /obj/item/clothing/under/teshari/undercoat/standard/black, + /obj/item/clothing/under/teshari/undercoat/standard/black_blue, + /obj/item/clothing/under/teshari/undercoat/standard/black_brown, + /obj/item/clothing/under/teshari/undercoat/standard/black_green, + /obj/item/clothing/under/teshari/undercoat/standard/black_grey, + /obj/item/clothing/under/teshari/undercoat/standard/black_orange, + /obj/item/clothing/under/teshari/undercoat/standard/black_pink, + /obj/item/clothing/under/teshari/undercoat/standard/black_purple, + /obj/item/clothing/under/teshari/undercoat/standard/black_red, + /obj/item/clothing/under/teshari/undercoat/standard/black_white, + /obj/item/clothing/under/teshari/undercoat/standard/black_yellow, + ) + worth = 350 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Teshari undercoats crate" -/datum/supply_pack/randomised/costumes/tesh_cloaks +/datum/supply_pack/nanotrasen/costume/tesh_cloaks name = "Teshari cloaks" - num_contained = 4 - contains = list( + lazy_gacha_amount = 4 + lazy_gacha_contained = list( /obj/item/clothing/suit/storage/teshari/cloak/standard/blue_grey, /obj/item/clothing/suit/storage/teshari/cloak/standard/brown_grey, /obj/item/clothing/suit/storage/teshari/cloak/standard/green_grey, @@ -266,14 +265,14 @@ /obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey, /obj/item/clothing/suit/storage/teshari/cloak/standard/yellow_grey ) - cost = 40 + worth = 250 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Teshari cloaks crate" -/datum/supply_pack/randomised/costumes/tesh_cloaks_b +/datum/supply_pack/nanotrasen/costume/tesh_cloaks_b name = "Teshari cloaks (black)" - num_contained = 4 - contains = list( + lazy_gacha_amount = 4 + lazy_gacha_contained = list( /obj/item/clothing/suit/storage/teshari/cloak, /obj/item/clothing/suit/storage/teshari/cloak/standard/black_blue, /obj/item/clothing/suit/storage/teshari/cloak/standard/black_brown, @@ -286,22 +285,22 @@ /obj/item/clothing/suit/storage/teshari/cloak/standard/black_white, /obj/item/clothing/suit/storage/teshari/cloak/standard/black_yellow ) - cost = 40 + worth = 250 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Teshari cloaks crate" -/datum/supply_pack/costumes/utility +/datum/supply_pack/nanotrasen/costume/utility name = "Utility uniforms" contains = list( /obj/item/clothing/under/utility, /obj/item/clothing/under/utility/blue, /obj/item/clothing/under/utility/grey ) - cost = 30 + worth = 150 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Utility uniforms crate" -/datum/supply_pack/costumes/skirts +/datum/supply_pack/nanotrasen/costume/skirts name = "Skirts crate" contains = list( /obj/item/clothing/under/skirt, @@ -316,11 +315,11 @@ /obj/item/clothing/under/skirt/outfit/plaid_red, /obj/item/clothing/under/skirt/outfit/plaid_green ) - cost = 40 + worth = 300 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Skirts crate" -/datum/supply_pack/costumes/varsity +/datum/supply_pack/nanotrasen/costume/varsity name = "Varsity jackets" contains = list( /obj/item/clothing/suit/varsity, @@ -330,14 +329,14 @@ /obj/item/clothing/suit/varsity/purple, /obj/item/clothing/suit/varsity/red ) - cost = 60 + worth = 400 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Varsity jackets crate" -/datum/supply_pack/randomised/costumes/leathergear +/datum/supply_pack/nanotrasen/costume/leathergear name = "Leather gear" - num_contained = 5 - contains = list( + lazy_gacha_amount = 5 + lazy_gacha_contained = list( /obj/item/clothing/suit/leathercoat, /obj/item/clothing/suit/storage/leather_jacket_alt, /obj/item/clothing/suit/storage/toggle/leather_jacket, @@ -361,11 +360,11 @@ /obj/item/clothing/head/cowboy_hat, /obj/item/clothing/head/cowboy_hat/black ) - cost = 50 + worth = 400 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Leather gear crate" -/datum/supply_pack/costumes/eyewear +/datum/supply_pack/nanotrasen/costume/eyewear name = "Eyewear crate" contains = list( /obj/item/clothing/glasses/eyepatch, @@ -380,14 +379,14 @@ /obj/item/clothing/glasses/regular/scanners, /obj/item/clothing/glasses/threedglasses ) - cost = 50 + worth = 400 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Eyewear crate" -/datum/supply_pack/randomised/costumes/gloves +/datum/supply_pack/nanotrasen/costume/gloves name = "Gloves crate" - num_contained = 4 - contains = list( + lazy_gacha_amount = 4 + lazy_gacha_contained = list( /obj/item/clothing/gloves/black, /obj/item/clothing/gloves/blue, /obj/item/clothing/gloves/botanic_leather, @@ -404,14 +403,14 @@ /obj/item/clothing/gloves/red, /obj/item/clothing/gloves/white ) - cost = 40 + worth = 400 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Gloves crate" -/datum/supply_pack/randomised/costumes/boots +/datum/supply_pack/nanotrasen/costume/boots name = "Boots crate" - num_contained = 3 - contains = list( + lazy_gacha_amount = 3 + lazy_gacha_contained = list( /obj/item/clothing/shoes/boots/workboots, /obj/item/clothing/shoes/boots/cowboy, /obj/item/clothing/shoes/boots/cowboy/classic, @@ -421,22 +420,22 @@ /obj/item/clothing/shoes/boots/jungle, /obj/item/clothing/shoes/boots/winter ) - cost = 60 + worth = 400 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Boots crate" -/datum/supply_pack/costumes/taurbags +/datum/supply_pack/nanotrasen/costume/taurbags name = "Saddlebags crate" contains = list( /obj/item/storage/backpack/saddlebag_common, /obj/item/storage/backpack/saddlebag_common/robust, /obj/item/storage/backpack/saddlebag_common/vest ) - cost = 60 + worth = 400 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "Saddlebags crate" -/datum/supply_pack/costumes/larp +/datum/supply_pack/nanotrasen/costume/larp name = "Knight cosplay crate" contains = list( /obj/item/clothing/head/medievalfake/red = 1, @@ -455,33 +454,33 @@ /obj/item/clothing/suit/medievalfake/paladin = 1, /obj/item/clothing/shoes/boots/paladin_fake = 1 ) - cost = 80 + worth = 1000 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "knight cosplay crate" -/datum/supply_pack/costumes/situlavult_templar +/datum/supply_pack/nanotrasen/costume/situlavult_templar name = "Templar cosplay crate" contains = list( /obj/item/clothing/head/medievalfake/crusader/templar, /obj/item/clothing/suit/medievalfake/crusader/cross/templar, /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade/templar ) - cost = 15 + worth = 500 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "templar cosplay crate" -/datum/supply_pack/costumes/situlavult_hospitaller +/datum/supply_pack/nanotrasen/costume/situlavult_hospitaller name = "Hospitaller cosplay crate" contains = list( /obj/item/clothing/head/medievalfake/crusader, /obj/item/clothing/suit/medievalfake/crusader/cross/hospitaller, /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade/hospitaller ) - cost = 15 + worth = 500 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "hospitaller cosplay crate" -/datum/supply_pack/costumes/situlavult_teutonic +/datum/supply_pack/nanotrasen/costume/situlavult_teutonic name = "Teutonic cosplay crate" contains = list( /obj/item/clothing/head/medievalfake/crusader/horned, @@ -491,6 +490,6 @@ /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade, /obj/item/clothing/accessory/poncho/roles/cloak/custom/crusade/teutonic ) - cost = 30 + worth = 500 container_type = /obj/structure/closet/crate/corporate/nanothreads container_name = "teutonic cosplay crate" diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/engineering.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/engineering.dm new file mode 100644 index 000000000000..aa8b937088a1 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/engineering.dm @@ -0,0 +1,341 @@ +/* +* Here is where any supply packs +* related to engineering tasks live. +*/ + + +/datum/supply_pack/nanotrasen/engineering + abstract_type = /datum/supply_pack/nanotrasen/engineering + container_type = /obj/structure/closet/crate/engineering + category = "Engineering" + +/datum/supply_pack/nanotrasen/engineering/lightbulbs + name = "Replacement lights" + contains = list( + /obj/item/storage/box/lights/mixed = 3, + ) + +/datum/supply_pack/nanotrasen/engineering/electrical + name = "Electrical maintenance crate" + contains = list( + /obj/item/storage/toolbox/electrical = 2, + /obj/item/clothing/gloves/yellow = 2, + /obj/item/cell = 2, + /obj/item/cell/high = 2, + ) + worth = 300 + container_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/nanotrasen/engineering/e_welders + name = "Electric welder crate" + contains = list( + /obj/item/weldingtool/electric = 3, + ) + container_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/nanotrasen/engineering/mechanical + name = "Mechanical maintenance crate" + contains = list( + /obj/item/storage/belt/utility/full = 3, + /obj/item/clothing/suit/storage/hazardvest = 3, + /obj/item/clothing/head/welding = 2, + /obj/item/clothing/head/hardhat, + ) + worth = 300 + container_type = /obj/structure/closet/crate/engineering + container_name = "Mechanical maintenance crate" + +/datum/supply_pack/nanotrasen/engineering/fueltank + name = "welding fuel tank" + contains = list( + /obj/structure/reagent_dispensers/fueltank, + ) + worth = 200 + container_type = /obj/structure/largecrate + +/datum/supply_pack/nanotrasen/engineering/solar + name = "Solar Pack crate" + contains = list( + /obj/item/frame2/solar_panel = 21, + /obj/item/circuitboard/solar_control, + /obj/item/tracker_electronics, + /obj/item/paper/solar, + ) + worth = 500 // solars are cheap nowadays :) + container_type = /obj/structure/closet/crate/corporate/focalpoint + +/datum/supply_pack/nanotrasen/engineering/shield_generator + name = "Shield Generator Construction Kit" + contains = list( + /obj/item/circuitboard/shield_generator, + /obj/item/stock_parts/capacitor, + /obj/item/stock_parts/micro_laser, + /obj/item/smes_coil, + /obj/item/stock_parts/console_screen, + /obj/item/stock_parts/subspace/amplifier, + ) + worth = 1000 + +/datum/supply_pack/nanotrasen/engineering/teg + name = "Mark I TEG + Circulators" + contains = list( + /obj/machinery/power/generator, + /obj/machinery/atmospherics/component/binary/circulator = 2, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/large + +/datum/supply_pack/nanotrasen/engineering/radsuit + contains = list( + /obj/item/clothing/suit/radiation = 3, + /obj/item/clothing/head/radiation = 3, + ) + name = "Radiation suits package" + container_type = /obj/structure/closet/radiation + container_name = "Radiation suit locker" + +/datum/supply_pack/nanotrasen/engineering/pacman_parts + name = "P.A.C.M.A.N. portable generator parts" + worth = 350 + container_type = /obj/structure/closet/crate/secure/engineering + contains = list( + /obj/item/stock_parts/micro_laser, + /obj/item/stock_parts/capacitor, + /obj/item/stock_parts/matter_bin, + /obj/item/circuitboard/pacman, + ) + +/datum/supply_pack/nanotrasen/engineering/super_pacman_parts + name = "Super P.A.C.M.A.N. portable generator parts" + container_type = /obj/structure/closet/crate/secure/engineering + worth = 650 + contains = list( + /obj/item/stock_parts/micro_laser, + /obj/item/stock_parts/capacitor, + /obj/item/stock_parts/matter_bin, + /obj/item/circuitboard/pacman/super, + ) + +/datum/supply_pack/nanotrasen/engineering/reflector + name = "Reflector crate" + container_name = "Reflector crate" + container_type = /obj/structure/closet/crate/engineering + contains = list( + /obj/structure/prop/prism/reflector = 1, + ) + +/datum/supply_pack/nanotrasen/engineering/tritium + name = "Tritium crate" + container_name = "Tritium crate" + container_type = /obj/structure/closet/crate/engineering + contains = list( + /datum/material/hydrogen/tritium = 50, + ) + +/datum/supply_pack/nanotrasen/engineering/thermoregulator + name = "Thermal Regulator" + contains = list( + /obj/machinery/power/thermoregulator, + ) + container_type = /obj/structure/closet/crate/large + container_name = "thermal regulator crate" + +/datum/supply_pack/nanotrasen/engineering/algae + name = "Algae Sheets (10)" + contains = list( + /datum/material/algae = 10, + ) + container_type = /obj/structure/closet/crate + container_name = "algae sheets crate" + +/datum/supply_pack/nanotrasen/engineering/point_defense_cannon_circuit + name = "Point Defense Turret Circuit" + contains = list( + /obj/item/circuitboard/pointdefense = 2, + ) + worth = 450 + container_type = /obj/structure/closet/crate/corporate/heph + container_name = "point defense turret circuit crate" + +/datum/supply_pack/nanotrasen/engineering/point_defense_control_circuit + name = "Point Defense Controller Circuit" + contains = list( + /obj/item/circuitboard/pointdefense_control = 1, + ) + worth = 150 + container_type = /obj/structure/closet/crate/corporate/heph + container_name = "point defense mainframe circuit crate" + +/datum/supply_pack/nanotrasen/engineering/portable_pump + name = "Portable Pump (2x)" + contains = list( + /obj/machinery/portable_atmospherics/powered/pump = 2, + ) + container_name = "portable pumps crate" + +/datum/supply_pack/nanotrasen/engineering/shield_wall_generators + name = "Misc - Wall shield generators" + contains = list( + /obj/machinery/shieldwallgen = 4, + ) + container_type = /obj/structure/closet/crate/secure + container_name = "Wall shield generators crate" + +//* Engine *// +//* Access locked because most of these are very dangerous. *// + + +/datum/supply_pack/nanotrasen/engineering/engine + abstract_type = /datum/supply_pack/nanotrasen/engineering/engine + container_type = /obj/structure/closet/crate/secure/engineering + container_access = list( + /datum/access/station/engineering/engine, + ) + supply_pack_flags = SUPPLY_PACK_LOCK_PRIVATE_ORDERS + +/datum/supply_pack/nanotrasen/engineering/engine/emitter + name = "Emitter crate" + contains = list( + /obj/machinery/power/emitter = 2, + ) + container_name = "Emitter crate" + +/datum/supply_pack/nanotrasen/engineering/engine/gyrotron + name = "gyrotron crate" + contains = list( + /obj/machinery/power/emitter/gyrotron, + /obj/item/circuitboard/gyrotron_control, + ) + +/datum/supply_pack/nanotrasen/engineering/engine/field_generator + name = "Field Generator crate" + contains = list( + /obj/machinery/field_generator = 2, + ) + container_name = "Field Generator crate" + +/datum/supply_pack/nanotrasen/engineering/engine/singularity_generator + name = "Singularity Generator crate" + contains = list( + /obj/machinery/the_singularitygen, + ) + worth = 4500 + container_name = "Singularity Generator crate" + +/datum/supply_pack/nanotrasen/engineering/engine/radiation_collector + name = "Collector crate" + contains = list( + /obj/machinery/power/rad_collector = 3, + ) + container_type = /obj/structure/closet/crate/secure/engineering + container_name = "collector crate" + +/datum/supply_pack/nanotrasen/engineering/engine/particle_accelerator + name = "Particle Accelerator crate" + contains = list( + /obj/structure/particle_accelerator/fuel_chamber, + /obj/machinery/particle_accelerator/control_box, + /obj/structure/particle_accelerator/particle_emitter/center, + /obj/structure/particle_accelerator/particle_emitter/left, + /obj/structure/particle_accelerator/particle_emitter/right, + /obj/structure/particle_accelerator/power_box, + /obj/structure/particle_accelerator/end_cap, + /obj/item/paper/particle_info, + ) + worth = 1800 + container_name = "Particle Accelerator crate" + +/datum/supply_pack/nanotrasen/engineering/engine/tesla_generator + name = "Tesla Generator crate" + contains = list( + /obj/machinery/the_singularitygen/tesla, + ) + container_type = /obj/structure/closet/crate/secure/engineering + container_name = "Tesla Generator crate" + +/datum/supply_pack/nanotrasen/engineering/engine/fission + name = "Fission Starter crate" + contains = list( + /obj/machinery/power/fission, + /obj/item/circuitboard/fission_monitor, + /obj/item/storage/briefcase/fission/fuelmixed, + /obj/item/storage/briefcase/fission/reflectormixed, + /obj/item/storage/briefcase/fission/controlmixed, + ) + worth = 2750 + container_type = /obj/structure/closet/crate/secure/engineering + container_name = "fission core crate" + +/datum/supply_pack/nanotrasen/engineering/engine/fission/expansion + name = "Fission Expansion crate" + contains = list( + /obj/item/circuitboard/fission_monitor, + /obj/item/storage/briefcase/fission/uranium, + /obj/item/storage/briefcase/fission/tungstencarbide, + /obj/item/storage/briefcase/fission/boron, + ) + worth = 2000 + container_type = /obj/structure/closet/crate/secure/engineering + container_name = "fission expansion crate" + +/datum/supply_pack/nanotrasen/engineering/engine/supermatter_core + name = "Supermatter Core" + contains = list( + /obj/machinery/power/supermatter, + ) + worth = 4500 // oh god it's the big supermatter :skull: + container_type = /obj/structure/closet/crate/secure/phoron + container_name = "Supermatter crate (CAUTION)" + +/datum/supply_pack/nanotrasen/engineering/engine/fusion_core + name = "R-UST Mk. 8 Tokamak fusion core crate" + worth = 1250 + container_name = "R-UST Mk. 8 Tokamak Fusion Core crate" + contains = list( + /obj/item/book/manual/rust_engine, + /obj/machinery/power/fusion_core, + /obj/item/circuitboard/fusion_core_control, + ) + +/datum/supply_pack/nanotrasen/engineering/engine/fusion_fuel_injector + name = "R-UST Mk. 8 fuel injector crate" + worth = 1250 + container_name = "R-UST Mk. 8 fuel injector crate" + contains = list( + /obj/machinery/fusion_fuel_injector, + /obj/machinery/fusion_fuel_injector, + /obj/item/circuitboard/fusion_fuel_control, + ) + +/datum/supply_pack/nanotrasen/engineering/engine/fusion_fuel_compressor + name = "fusion fuel compressor parts crate" + contains = list( + /obj/item/circuitboard/fusion_fuel_compressor, + /obj/item/stock_parts/manipulator/nano = 2, + /obj/item/stock_parts/matter_bin/super = 2, + /obj/item/stock_parts/console_screen = 1, + /obj/item/stack/cable_coil = 5, + ) + worth = 500 + +//* SMES Coils *// +/datum/supply_pack/nanotrasen/engineering/smescoil + abstract_type = /datum/supply_pack/nanotrasen/engineering/smescoil + +/datum/supply_pack/nanotrasen/engineering/smescoil/normal + name = "Superconducting Magnetic Coil" + contains = list( + /obj/item/smes_coil, + ) + +/datum/supply_pack/nanotrasen/engineering/smescoil/super_capacity + name = "Superconducting Capacitance Coil" + contains = list( + /obj/item/smes_coil/super_capacity, + ) + +/datum/supply_pack/nanotrasen/engineering/smescoil/super_io + name = "Superconducting Transmission Coil" + contains = list( + /obj/item/smes_coil/super_io, + ) diff --git a/code/modules/cargo/supplypacks/hospitality.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/hospitality.dm similarity index 68% rename from code/modules/cargo/supplypacks/hospitality.dm rename to code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/hospitality.dm index a2a1aa2413b6..88069452c5f4 100644 --- a/code/modules/cargo/supplypacks/hospitality.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/hospitality.dm @@ -4,10 +4,11 @@ */ -/datum/supply_pack/hospitality - group = "Hospitality" +/datum/supply_pack/nanotrasen/hospitality + abstract_type = /datum/supply_pack/nanotrasen/hospitality + category = "Hospitality" -/datum/supply_pack/hospitality/party +/datum/supply_pack/nanotrasen/hospitality/party name = "Party equipment" contains = list( /obj/item/storage/box/mixedglasses = 2, @@ -22,11 +23,11 @@ /obj/item/reagent_containers/food/drinks/bottle/small/ale = 2, /obj/item/reagent_containers/food/drinks/bottle/small/beer = 4, ) - cost = 10 + worth = 350 container_type = /obj/structure/closet/crate/corporate/gilthari container_name = "Party equipment" -/datum/supply_pack/hospitality/barsupplies +/datum/supply_pack/nanotrasen/hospitality/barsupplies name = "Bar supplies" contains = list( /obj/item/storage/box/glasses/cocktail, @@ -42,51 +43,24 @@ /obj/item/storage/box/glass_extras/straws, /obj/item/storage/box/glass_extras/sticks ) - cost = 10 + worth = 350 container_type = /obj/structure/closet/crate/corporate/gilthari container_name = "crate of bar supplies" -/datum/supply_pack/hospitality/condiments - contains = list( - /obj/item/reagent_containers/food/condiment/enzyme, - /obj/item/reagent_containers/food/condiment/ketchup, - /obj/item/reagent_containers/food/condiment/ketchup, - /obj/item/reagent_containers/food/condiment/sugar, - /obj/item/reagent_containers/food/condiment/hotsauce, - /obj/item/reagent_containers/food/condiment/coldsauce, - /obj/item/reagent_containers/food/condiment/soysauce, - /obj/item/reagent_containers/food/condiment/small/saltshaker, - /obj/item/reagent_containers/food/condiment/small/saltshaker, - /obj/item/reagent_containers/food/condiment/small/saltshaker, - /obj/item/reagent_containers/food/condiment/small/peppermill, - /obj/item/reagent_containers/food/condiment/small/peppermill, - /obj/item/reagent_containers/food/condiment/small/peppermill, - /obj/item/reagent_containers/food/condiment/spacespice, - /obj/item/reagent_containers/food/condiment/spacespice, - /obj/item/reagent_containers/food/condiment/spacespice, - ) - name = "Condiment crate" - cost = 20 - container_type = /obj/structure/closet/crate/corporate/centauri - container_name = "Condiment crate" - -/datum/supply_pack/randomised/hospitality/ - group = "Hospitality" - -/datum/supply_pack/randomised/hospitality/pizza - num_contained = 5 - contains = list( +/datum/supply_pack/nanotrasen/hospitality/pizza + lazy_gacha_amount = 5 + lazy_gacha_contained = list( /obj/item/pizzabox/margherita, /obj/item/pizzabox/mushroom, /obj/item/pizzabox/meat, - /obj/item/pizzabox/vegetable + /obj/item/pizzabox/vegetable, ) name = "Surprise pack of five pizzas" - cost = 50 + worth = 250 container_type = /obj/structure/closet/crate/corporate/centauri container_name = "Pizza crate" -/datum/supply_pack/hospitality/gifts +/datum/supply_pack/nanotrasen/hospitality/gifts name = "Gift crate" contains = list( /obj/item/toy/bouquet = 3, @@ -96,13 +70,13 @@ /obj/item/paper/card/cat, /obj/item/paper/card/flower ) - cost = 10 + worth = 150 container_type = /obj/structure/closet/crate/corporate/centauri container_name = "crate of gifts" -/datum/supply_pack/randomised/hospitality/burgers - num_contained = 5 - contains = list( +/datum/supply_pack/nanotrasen/hospitality/burgers + lazy_gacha_amount = 5 + lazy_gacha_contained = list( /obj/item/reagent_containers/food/snacks/bigbiteburger, /obj/item/reagent_containers/food/snacks/cheeseburger, /obj/item/reagent_containers/food/snacks/jellyburger, @@ -110,13 +84,13 @@ /obj/item/reagent_containers/food/snacks/fries ) name = "Burger crate" - cost = 25 + worth = 150 container_type = /obj/structure/closet/crate/corporate/centauri container_name = "Burger crate" -/datum/supply_pack/randomised/hospitality/bakery - num_contained = 5 - contains = list( +/datum/supply_pack/nanotrasen/hospitality/bakery + lazy_gacha_amount = 5 + lazy_gacha_contained = list( /obj/item/reagent_containers/food/snacks/baguette, /obj/item/reagent_containers/food/snacks/appletart, /obj/item/reagent_containers/food/snacks/berrymuffin, @@ -124,6 +98,7 @@ /obj/item/reagent_containers/food/snacks/cherrypie, /obj/item/reagent_containers/food/snacks/cookie, /obj/item/reagent_containers/food/snacks/croissant, + /obj/item/reagent_containers/food/snacks/donut/normal, /obj/item/reagent_containers/food/snacks/donut/jelly, /obj/item/reagent_containers/food/snacks/donut/cherryjelly, /obj/item/reagent_containers/food/snacks/muffin, @@ -135,13 +110,13 @@ /obj/item/reagent_containers/food/snacks/waffles ) name = "Bakery products crate" - cost = 25 + worth = 75 container_type = /obj/structure/closet/crate/corporate/centauri container_name = "Bakery products crate" -/datum/supply_pack/randomised/hospitality/cakes - num_contained = 2 - contains = list( +/datum/supply_pack/nanotrasen/hospitality/cakes + lazy_gacha_amount = 2 + lazy_gacha_contained = list( /obj/item/reagent_containers/food/snacks/sliceable/applecake, /obj/item/reagent_containers/food/snacks/sliceable/birthdaycake, /obj/item/reagent_containers/food/snacks/sliceable/carrotcake, @@ -153,67 +128,66 @@ /obj/item/reagent_containers/food/snacks/sliceable/plaincake ) name = "Cake crate" - cost = 100 + worth = 150 container_type = /obj/structure/closet/crate/corporate/centauri container_name = "Cake crate" -/datum/supply_pack/hospitality/donuts - contains = list( - /obj/item/storage/box/donut, - /obj/item/storage/box/donut, - /obj/item/storage/box/donut, - ) - name = "Donut resupply crate" - cost = 25 - container_type = /obj/structure/closet/crate/corporate/centauri - container_name = "Donut Resupply Crate" - container_desc = "For all your emergency donut resupply needs, Centauri Provision's got you." - -/datum/supply_pack/randomised/hospitality/mexican - num_contained = 5 - contains = list( +/datum/supply_pack/nanotrasen/hospitality/mexican + lazy_gacha_amount = 5 + lazy_gacha_contained = list( /obj/item/reagent_containers/food/snacks/cheeseburrito, /obj/item/reagent_containers/food/snacks/enchiladas, /obj/item/reagent_containers/food/snacks/meatburrito, /obj/item/reagent_containers/food/snacks/taco ) name = "Mexican takeout crate" - cost = 50 + worth = 150 container_type = /obj/structure/closet/crate/corporate/centauri container_name = "Mexican takeout crate" -/datum/supply_pack/randomised/hospitality/asian - num_contained = 5 - contains = list( +/datum/supply_pack/nanotrasen/hospitality/asian + lazy_gacha_amount = 5 + lazy_gacha_contained = list( /obj/item/reagent_containers/food/snacks/generalschicken, /obj/item/reagent_containers/food/snacks/hotandsoursoup ) name = "Chinese takeout crate" - cost = 50 + worth = 150 container_type = /obj/structure/closet/crate/corporate/centauri container_name = "Chinese takeout crate" -/datum/supply_pack/hospitality/cookingoil +/datum/supply_pack/nanotrasen/hospitality/cookingoil name = "Tallow tank crate" contains = list(/obj/structure/reagent_dispensers/tallow) - cost = 10 + worth = 350 container_type = /obj/structure/largecrate container_name = "Tallow tank crate" -/datum/supply_pack/hospitality/vampcarepackage +/datum/supply_pack/nanotrasen/hospitality/vampcarepackage name = "Vetalan Care package" contains = list(/obj/item/reagent_containers/blood/prelabeled/ABPlus = 3, /obj/item/clothing/under/suit_jacket) - cost = 50 + worth = 500 container_type = /obj/structure/closet/coffin/comfy container_name = "Extra comfortable coffin" -/datum/supply_pack/hospitality/moghes +/datum/supply_pack/nanotrasen/hospitality/moghes name = "Moghes Foodstuffs" contains = list( /obj/item/reagent_containers/food/drinks/bottle/redeemersbrew = 2, /obj/item/reagent_containers/food/snacks/boxed/unajerky = 4 ) - cost = 50 //same cost as the others + worth = 150 container_type = /obj/structure/closet/crate/corporate/unathi container_name = "Moghes Foodstuffs" + +/datum/supply_pack/nanotrasen/hospitality/fish + name = "Fish supply crate" + contains = list( + /obj/item/reagent_containers/food/snacks/lobster = 6, + /obj/item/reagent_containers/food/snacks/shrimp = 6, + /obj/item/reagent_containers/food/snacks/cuttlefish = 8, + /obj/item/reagent_containers/food/snacks/sliceable/monkfish = 1 + ) + worth = 150 + container_name = "Fish crate" diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/hydroponics.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/hydroponics.dm new file mode 100644 index 000000000000..77465a3b3062 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/hydroponics.dm @@ -0,0 +1,113 @@ +/* +* Here is where any supply packs +* related to hydroponics tasks live. +*/ + + +/datum/supply_pack/nanotrasen/hydroponics + category = "Hydroponics" + container_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/nanotrasen/hydroponics/hydroponics + name = "Hydroponics Supply Crate" + contains = list( + /obj/item/reagent_containers/spray/plantbgone = 4, + /obj/item/reagent_containers/glass/bottle/ammonia = 2, + /obj/item/material/knife/machete/hatchet, + /obj/item/material/minihoe, + /obj/item/plant_analyzer, + /obj/item/clothing/gloves/botanic_leather, + /obj/item/clothing/suit/storage/apron, + /obj/item/material/minihoe, + /obj/item/storage/box/botanydisk, + ) + worth = 350 + container_type = /obj/structure/closet/crate/hydroponics + container_name = "Hydroponics crate" + +/datum/supply_pack/nanotrasen/hydroponics/seeds + name = "Seeds crate" + contains = list( + /obj/item/seeds/chiliseed, + /obj/item/seeds/berryseed, + /obj/item/seeds/cornseed, + /obj/item/seeds/eggplantseed, + /obj/item/seeds/tomatoseed, + /obj/item/seeds/appleseed, + /obj/item/seeds/soyaseed, + /obj/item/seeds/wheatseed, + /obj/item/seeds/carrotseed, + /obj/item/seeds/harebell, + /obj/item/seeds/lemonseed, + /obj/item/seeds/orangeseed, + /obj/item/seeds/grassseed, + /obj/item/seeds/sunflowerseed, + /obj/item/seeds/chantermycelium, + /obj/item/seeds/potatoseed, + /obj/item/seeds/sugarcaneseed, + ) + worth = 125 + +/datum/supply_pack/nanotrasen/hydroponics/weedcontrol + name = "Weed control crate" + contains = list( + /obj/item/material/knife/machete/hatchet = 2, + /obj/item/reagent_containers/spray/plantbgone = 4, + /obj/item/clothing/mask/gas = 2, + /obj/item/grenade/chem_grenade/antiweed = 2, + /obj/item/material/twohanded/fireaxe/scythe, + ) + worth = 125 + +/datum/supply_pack/nanotrasen/hydroponics/watertank + name = "Water tank crate" + contains = list( + /obj/structure/reagent_dispensers/watertank, + ) + worth = 75 + container_type = /obj/structure/largecrate + +/datum/supply_pack/nanotrasen/hydroponics/bee_keeper + name = "Beekeeping crate" + contains = list( + /obj/item/clothing/head/beekeeper, + /obj/item/clothing/suit/beekeeper, + /obj/item/beehive_assembly, + /obj/item/bee_smoker, + /obj/item/honey_frame = 5, + /obj/item/bee_pack, + ) + worth = 300 + container_name = "Beekeeping crate" + +/datum/supply_pack/nanotrasen/hydroponics/tray + name = "Empty hydroponics trays" + worth = 75 + container_name = "Hydroponics tray crate" + contains = list( + /obj/machinery/portable_atmospherics/hydroponics/unanchored = 3, + ) + +/datum/supply_pack/nanotrasen/hydroponics/ironwood + name = "Ironwood Saplings" + contains = list( + /obj/item/seeds/ironwood = 6, + ) + worth = 100 + container_name = "Ironwood Sapling Samples" + +/datum/supply_pack/nanotrasen/hydroponics/creeper + name = "Creeper Sanghum" + contains = list( + /obj/item/seeds/creepermoss = 6, + ) + worth = 100 + container_name = "Creeper Sanghum Seeds" + +/datum/supply_pack/nanotrasen/hydroponics/fungiwheat + name = "Fungiwheat" + contains = list( + /obj/item/seeds/fungiwheat = 6, + ) + worth = 100 + container_name = "Fungiwheat Spores" diff --git a/code/modules/cargo/supplypacks/materials.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/materials.dm similarity index 55% rename from code/modules/cargo/supplypacks/materials.dm rename to code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/materials.dm index 561a0d580ce4..9094a11bb4dc 100644 --- a/code/modules/cargo/supplypacks/materials.dm +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/materials.dm @@ -1,151 +1,165 @@ -/* -* Here is where any supply packs -* related to materials live. -*/ +/datum/supply_pack/nanotrasen/materials + abstract_type = /datum/supply_pack/nanotrasen/materials + category = "Materials" - -/datum/supply_pack/materials - group = "Materials" - -/datum/supply_pack/materials/metal50 +/datum/supply_pack/nanotrasen/materials/metal50 name = "50 metal sheets" - contains = list(/obj/fiftyspawner/steel) - cost = 10 + contains = list( + /datum/material/steel = 50, + ) container_type = /obj/structure/closet/crate container_name = "Metal sheets crate" -/datum/supply_pack/materials/glass50 +/datum/supply_pack/nanotrasen/materials/glass50 name = "50 glass sheets" - contains = list(/obj/fiftyspawner/glass) - cost = 10 + contains = list( + /datum/material/glass = 50, + ) container_type = /obj/structure/closet/crate container_name = "Glass sheets crate" -/datum/supply_pack/materials/wood50 +/datum/supply_pack/nanotrasen/materials/wood50 name = "50 wooden planks" - contains = list(/obj/fiftyspawner/wood) - cost = 10 + contains = list( + /datum/material/wood_plank = 50, + ) container_type = /obj/structure/closet/crate container_name = "Wooden planks crate" -/datum/supply_pack/materials/hardwood50 +/datum/supply_pack/nanotrasen/materials/hardwood50 name = "50 hardwood planks" - contains = list(/obj/fiftyspawner/hardwood) - cost = 50 + contains = list( + /datum/material/wood_plank/hardwood = 50, + ) + container_type = /obj/structure/closet/crate container_name = "Hardwood planks crate" -/datum/supply_pack/materials/plastic50 +/datum/supply_pack/nanotrasen/materials/plastic50 name = "50 plastic sheets" - contains = list(/obj/fiftyspawner/plastic) - cost = 10 + contains = list( + /datum/material/plastic = 50, + ) container_type = /obj/structure/closet/crate container_name = "Plastic sheets crate" -/datum/supply_pack/materials/leather50 +/datum/supply_pack/nanotrasen/materials/leather50 name = "50 leather sheets" - contains = list(/obj/fiftyspawner/leather) - cost = 10 + contains = list( + /datum/material/leather = 50, + ) container_type = /obj/structure/closet/crate container_name = "Leather sheets crate" -/datum/supply_pack/materials/cloth50 +/datum/supply_pack/nanotrasen/materials/cloth50 name = "50 cloth sheets" - contains = list(/obj/fiftyspawner/cloth) - cost = 10 + contains = list( + /datum/material/cloth = 50, + ) container_type = /obj/structure/closet/crate container_name = "Cloth sheets crate" -/datum/supply_pack/materials/cardboard_sheets - contains = list(/obj/fiftyspawner/cardboard) +/datum/supply_pack/nanotrasen/materials/cardboard_sheets name = "50 cardboard sheets" - cost = 10 + contains = list( + /datum/material/cardboard = 50, + ) container_type = /obj/structure/closet/crate container_name = "Cardboard sheets crate" -/datum/supply_pack/materials/redcarpet +/datum/supply_pack/nanotrasen/materials/redcarpet name = "50 red carpet tiles" container_type = /obj/structure/closet/crate container_name = "Red carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/carpet - ) -/datum/supply_pack/materials/tealcarpet + /obj/fiftyspawner/carpet, + ) + +/datum/supply_pack/nanotrasen/materials/tealcarpet name = "50 teal carpet tiles" container_type = /obj/structure/closet/crate container_name = "Teal carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/tealcarpet - ) -/datum/supply_pack/materials/bcarpet + /obj/fiftyspawner/tealcarpet, + ) + +/datum/supply_pack/nanotrasen/materials/bcarpet name = "50 black carpet tiles" container_type = /obj/structure/closet/crate container_name = "Black carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/bcarpet - ) -/datum/supply_pack/materials/blucarpet + /obj/fiftyspawner/bcarpet, + ) + +/datum/supply_pack/nanotrasen/materials/blucarpet name = "50 blue carpet tiles" container_type = /obj/structure/closet/crate container_name = "Blue carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/blucarpet - ) -/datum/supply_pack/materials/turcarpet + /obj/fiftyspawner/blucarpet, + ) + +/datum/supply_pack/nanotrasen/materials/turcarpet name = "50 tur carpet tiles" container_type = /obj/structure/closet/crate container_name = "Tur carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/turcarpet - ) -/datum/supply_pack/materials/sblucarpet + /obj/fiftyspawner/turcarpet, + ) + +/datum/supply_pack/nanotrasen/materials/sblucarpet name = "50 silver-blue carpet tiles" container_type = /obj/structure/closet/crate container_name = "Silver-blue carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/sblucarpet - ) -/datum/supply_pack/materials/gaycarpet + /obj/fiftyspawner/sblucarpet, + ) + +/datum/supply_pack/nanotrasen/materials/gaycarpet name = "50 clowny carpet tiles" container_type = /obj/structure/closet/crate container_name = "Clowny carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/gaycarpet - ) -/datum/supply_pack/materials/purcarpet + /obj/fiftyspawner/gaycarpet, + ) + +/datum/supply_pack/nanotrasen/materials/purcarpet name = "50 purple carpet tiles" container_type = /obj/structure/closet/crate container_name = "Purple carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/purcarpet - ) -/datum/supply_pack/materials/oracarpet + /obj/fiftyspawner/purcarpet, + ) + +/datum/supply_pack/nanotrasen/materials/oracarpet name = "50 orange carpet tiles" container_type = /obj/structure/closet/crate container_name = "Orange carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/oracarpet - ) -/datum/supply_pack/materials/arcadecarpet + /obj/fiftyspawner/oracarpet, + ) + +/datum/supply_pack/nanotrasen/materials/arcadecarpet name = "50 arcade carpet tiles" container_type = /obj/structure/closet/crate container_name = "Arcade carpet crate" - cost = 15 + worth = 50 contains = list( - /obj/fiftyspawner/arcadecarpet - ) + /obj/fiftyspawner/arcadecarpet, + ) + /datum/supply_pack/misc/linoleum name = "Linoleum" container_type = /obj/structure/closet/crate container_name = "Linoleum crate" - cost = 15 + worth = 50 contains = list(/obj/fiftyspawner/linoleum) diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/medical.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/medical.dm new file mode 100644 index 000000000000..5c11413b3a01 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/medical.dm @@ -0,0 +1,394 @@ +/* +* Here is where any supply packs +* related to medical tasks live. +*/ + + +/datum/supply_pack/nanotrasen/medical + abstract_type = /datum/supply_pack/nanotrasen/medical + category = "Medical" + +/datum/supply_pack/nanotrasen/medical/supplies + name = "Medical Supplies crate" + contains = list( + /obj/item/storage/firstaid/regular, + /obj/item/storage/firstaid/fire, + /obj/item/storage/firstaid/toxin, + /obj/item/storage/firstaid/o2, + /obj/item/storage/firstaid/adv, + /obj/item/reagent_containers/glass/bottle/antitoxin, + /obj/item/reagent_containers/glass/bottle/inaprovaline, + /obj/item/reagent_containers/glass/bottle/stoxin, + /obj/item/storage/box/syringes, + /obj/item/storage/box/autoinjectors, + ) + worth = 250 + container_type = /obj/structure/closet/crate/corporate/nanomed + container_name = "Medical crate" + +/datum/supply_pack/nanotrasen/medical/bloodpack + name = "BloodPack crate" + contains = list( + /obj/item/storage/box/bloodpacks = 3, + ) + worth = 250 + container_type = /obj/structure/closet/crate/medical/blood + container_name = "BloodPack crate" + +/datum/supply_pack/nanotrasen/medical/bodybag + name = "Body bag crate" + contains = list( + /obj/item/storage/box/bodybags = 3, + ) + worth = 125 + container_type = /obj/structure/closet/crate/medical + container_name = "Body bag crate" + +/datum/supply_pack/nanotrasen/medical/cryobag + name = "Stasis bag crate" + contains = list( + /obj/item/bodybag/cryobag = 3, + ) + worth = 120 + container_type = /obj/structure/closet/crate/medical + container_name = "Stasis bag crate" + +/datum/supply_pack/nanotrasen/medical/surgery + name = "Surgery crate" + contains = list( + /obj/item/surgical/cautery, + /obj/item/surgical/surgicaldrill, + /obj/item/clothing/mask/breath/medical, + /obj/item/tank/anesthetic, + /obj/item/surgical/FixOVein, + /obj/item/surgical/hemostat, + /obj/item/surgical/scalpel, + /obj/item/surgical/bonegel, + /obj/item/surgical/retractor, + /obj/item/surgical/bonesetter, + /obj/item/surgical/circular_saw, + ) + worth = 300 + container_type = /obj/structure/closet/crate/corporate/nanomed + container_name = "Surgery crate" + +/datum/supply_pack/nanotrasen/medical/deathalarm + name = "Death Alarm crate" + contains = list( + /obj/item/storage/box/cdeathalarm_kit, + /obj/item/storage/box/cdeathalarm_kit, + ) + worth = 750 + container_type = /obj/structure/closet/crate/corporate/veymed + +/datum/supply_pack/nanotrasen/medical/clotting + name = "Clotting Medicine crate" + contains = list( + /obj/item/storage/firstaid/clotting, + ) + worth = 750 // "it's too high" go rebalance IB to not be a 5 minute death sentence, don't add chemicals to nullify it then + container_type = /obj/structure/closet/crate/corporate/zenghu + +/datum/supply_pack/nanotrasen/medical/sterile + name = "Sterile equipment crate" + contains = list( + /obj/item/clothing/under/rank/medical/scrubs/green = 2, + /obj/item/clothing/head/surgery/green = 2, + /obj/item/storage/box/masks, + /obj/item/storage/box/gloves, + /obj/item/storage/belt/medical = 3, + ) + worth = 150 + +/datum/supply_pack/nanotrasen/medical/extragear + name = "Medical surplus equipment" + contains = list( + /obj/item/storage/belt/medical = 3, + /obj/item/clothing/glasses/hud/health = 3, + /obj/item/radio/headset/headset_med/alt = 3, + /obj/item/clothing/suit/storage/hooded/wintercoat/medical = 3, + ) + worth = 150 + container_type = /obj/structure/closet/crate/corporate/nanomed + +/datum/supply_pack/nanotrasen/medical/cmogear + name = "Chief medical officer equipment" + contains = list( + /obj/item/storage/belt/medical, + /obj/item/radio/headset/heads/cmo, + /obj/item/clothing/under/rank/chief_medical_officer, + /obj/item/storage/hypokit/advanced/cmo, + /obj/item/clothing/accessory/stethoscope, + /obj/item/clothing/glasses/hud/health, + /obj/item/clothing/suit/storage/toggle/labcoat/cmo, + /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, + /obj/item/clothing/mask/surgical, + /obj/item/clothing/shoes/white, + /obj/item/cartridge/cmo, + /obj/item/clothing/gloves/sterile/latex, + /obj/item/healthanalyzer, + /obj/item/flashlight/pen, + /obj/item/reagent_containers/syringe, + ) + worth = 1000 // don't lose your shit + container_type = /obj/structure/closet/crate/secure/corporate/nanomed + container_name = "Chief medical officer equipment" + container_access = list( + /datum/access/station/medical/cmo, + ) + +/datum/supply_pack/nanotrasen/medical/doctorgear + name = "Medical Doctor Equipment" + contains = list( + /obj/item/storage/belt/medical, + /obj/item/radio/headset/headset_med, + /obj/item/clothing/under/rank/medical, + /obj/item/clothing/accessory/stethoscope, + /obj/item/clothing/glasses/hud/health, + /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/mask/surgical, + /obj/item/storage/firstaid/adv, + /obj/item/clothing/shoes/white, + /obj/item/cartridge/medical, + /obj/item/clothing/gloves/sterile/latex, + /obj/item/healthanalyzer, + /obj/item/flashlight/pen, + /obj/item/reagent_containers/syringe, + ) + worth = 450 + container_type = /obj/structure/closet/crate/corporate/nanomed + +/datum/supply_pack/nanotrasen/medical/chemistgear + name = "Chemist equipment" + contains = list( + /obj/item/storage/box/beakers, + /obj/item/radio/headset/headset_med, + /obj/item/storage/box/autoinjectors, + /obj/item/clothing/under/rank/chemist, + /obj/item/clothing/glasses/science, + /obj/item/clothing/suit/storage/toggle/labcoat/chemist, + /obj/item/clothing/mask/surgical, + /obj/item/clothing/shoes/white, + /obj/item/cartridge/chemistry, + /obj/item/clothing/gloves/sterile/latex, + /obj/item/reagent_containers/dropper, + /obj/item/healthanalyzer, + /obj/item/storage/box/pillbottles, + /obj/item/storage/box/syringes, + /obj/item/storage/hypokit, + ) + worth = 450 + container_type = /obj/structure/closet/crate/corporate/nanomed + +/datum/supply_pack/nanotrasen/medical/paramedicgear + name = "Paramedic equipment" + contains = list( + /obj/item/storage/belt/medical/emt, + /obj/item/radio/headset/headset_med, + /obj/item/clothing/under/rank/medical/scrubs/black, + /obj/item/clothing/accessory/armband/medblue, + /obj/item/clothing/glasses/hud/health, + /obj/item/clothing/suit/storage/toggle/labcoat/emt, + /obj/item/clothing/under/rank/medical/paramedic, + /obj/item/clothing/suit/storage/toggle/fr_jacket, + /obj/item/clothing/mask/gas, + /obj/item/clothing/under/rank/medical/paramedic, + /obj/item/clothing/accessory/stethoscope, + /obj/item/storage/firstaid/adv, + /obj/item/clothing/shoes/boots/jackboots, + /obj/item/clothing/gloves/sterile/latex, + /obj/item/healthanalyzer, + /obj/item/cartridge/medical, + /obj/item/flashlight/pen, + /obj/item/clothing/accessory/storage/white_vest, + /obj/item/storage/hypokit, + ) + worth = 450 + container_type = /obj/structure/closet/crate/secure/corporate/nanomed + +/datum/supply_pack/nanotrasen/medical/psychiatristgear + name = "Psychiatrist equipment" + contains = list( + /obj/item/clothing/under/rank/psych, + /obj/item/radio/headset/headset_med, + /obj/item/clothing/under/rank/psych/turtleneck, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/shoes/white, + /obj/item/clipboard, + /obj/item/folder/white, + /obj/item/pen, + /obj/item/cartridge/medical, + ) + worth = 450 + container_type = /obj/structure/closet/crate/secure/corporate/nanomed + +/datum/supply_pack/nanotrasen/medical/medicalscrubs + name = "Medical scrubs" + contains = list( + /obj/item/clothing/shoes/white = 3,, + /obj/item/clothing/under/rank/medical/scrubs = 3, + /obj/item/clothing/under/rank/medical/scrubs/green = 3, + /obj/item/clothing/under/rank/medical/scrubs/purple = 3, + /obj/item/clothing/under/rank/medical/scrubs/black = 3, + /obj/item/clothing/head/surgery = 3, + /obj/item/clothing/head/surgery/purple = 3, + /obj/item/clothing/head/surgery/blue = 3, + /obj/item/clothing/head/surgery/green = 3, + /obj/item/clothing/head/surgery/black = 3, + /obj/item/storage/box/masks, + /obj/item/storage/box/gloves, + ) + worth = 500 // item spam + container_type = /obj/structure/closet/crate/corporate/nanomed + +/datum/supply_pack/nanotrasen/medical/autopsy + name = "Autopsy equipment" + contains = list( + /obj/item/folder/white, + /obj/item/camera, + /obj/item/camera_film = 2, + /obj/item/autopsy_scanner, + /obj/item/surgical/scalpel, + /obj/item/storage/box/masks, + /obj/item/storage/box/gloves, + /obj/item/pen, + ) + worth = 450 + container_type = /obj/structure/closet/crate/corporate/nanomed + container_name = "Autopsy equipment crate" + +/datum/supply_pack/nanotrasen/medical/medicaluniforms + name = "Medical uniforms" + contains = list( + /obj/item/clothing/shoes/white = 3, + /obj/item/clothing/under/rank/chief_medical_officer, + /obj/item/clothing/under/rank/geneticist, + /obj/item/clothing/under/rank/virologist, + /obj/item/clothing/under/rank/nursesuit, + /obj/item/clothing/under/rank/nurse, + /obj/item/clothing/under/rank/orderly, + /obj/item/clothing/under/rank/medical = 3, + /obj/item/clothing/under/rank/medical/paramedic = 3, + /obj/item/clothing/suit/storage/toggle/labcoat = 3, + /obj/item/clothing/suit/storage/toggle/labcoat/cmo, + /obj/item/clothing/suit/storage/toggle/labcoat/emt, + /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, + /obj/item/clothing/suit/storage/toggle/labcoat/genetics, + /obj/item/clothing/suit/storage/toggle/labcoat/virologist, + /obj/item/clothing/suit/storage/toggle/labcoat/chemist, + /obj/item/storage/box/masks, + /obj/item/storage/box/gloves, + ) + worth = 500 // item spam + CMO coat + container_type = /obj/structure/closet/crate/corporate/nanomed + +/datum/supply_pack/nanotrasen/medical/medicalbiosuits + name = "Medical biohazard gear" + contains = list( + /obj/item/clothing/head/bio_hood = 2, + /obj/item/clothing/suit/bio_suit = 2, + /obj/item/clothing/head/bio_hood/virology = 1, + /obj/item/clothing/suit/bio_suit/virology = 1, + /obj/item/clothing/suit/bio_suit/cmo, + /obj/item/clothing/head/bio_hood/cmo, + /obj/item/clothing/mask/gas = 5, + /obj/item/tank/oxygen = 5, + /obj/item/storage/box/masks, + /obj/item/storage/box/gloves, + ) + worth = 900 // 4 bio suits what the fuck?? + container_type = /obj/structure/closet/crate/corporate/nanomed + container_name = "Medical biohazard equipment" + +/datum/supply_pack/nanotrasen/medical/portablefreezers + name = "Portable freezers crate" + contains = list( + /obj/item/storage/box/freezer = 7, + ) + container_type = /obj/structure/closet/crate + container_name = "Portable freezers" + +/datum/supply_pack/nanotrasen/medical/virus + name = "Virus sample crate" + contains = list( + /obj/item/virusdish/random = 4, + ) + container_type = /obj/structure/closet/crate/secure + container_name = "Virus sample crate" + container_access = list( + /datum/access/station/medical/cmo, + ) + +/datum/supply_pack/nanotrasen/medical/defib + name = "Defibrillator crate" + contains = list( + /obj/item/defib_kit = 2, + ) + container_type = /obj/structure/closet/crate/medical + container_name = "Defibrillator crate" + +/datum/supply_pack/nanotrasen/medical/distillery + name = "Chemical distiller crate" + contains = list( + /obj/machinery/portable_atmospherics/powered/reagent_distillery = 1, + ) + container_type = /obj/structure/largecrate + +/datum/supply_pack/nanotrasen/medical/advdistillery + name = "Industrial Chemical distiller crate" + contains = list( + /obj/machinery/portable_atmospherics/powered/reagent_distillery/industrial = 1, + ) + container_type = /obj/structure/largecrate + +/datum/supply_pack/nanotrasen/medical/oxypump + name = "Oxygen pump crate" + contains = list( + /obj/machinery/oxygen_pump/mobile = 1, + ) + container_type = /obj/structure/largecrate + +/datum/supply_pack/nanotrasen/medical/anestheticpump + name = "Anesthetic pump crate" + contains = list( + /obj/machinery/oxygen_pump/mobile/anesthetic = 1, + ) + container_type = /obj/structure/largecrate + +/datum/supply_pack/nanotrasen/medical/stablepump + name = "Portable stabilizer crate" + contains = list( + /obj/machinery/oxygen_pump/mobile/stabilizer = 1, + ) + container_type = /obj/structure/largecrate + + +/datum/supply_pack/nanotrasen/medical/compactdefib + name = "Compact Defibrillator crate" + contains = list( + /obj/item/defib_kit/compact = 1, + ) + container_type = /obj/structure/closet/crate/secure/corporate/nanomed + container_name = "Compact Defibrillator crate" + +/datum/supply_pack/nanotrasen/medical/medigun + name = "Cell-Loaded Medigun crate" + contains = list( + /obj/item/gun/ballistic/cell_loaded/medical = 1, + /obj/item/ammo_magazine/cell_mag/medical = 1, + ) + worth = 1500 + container_type = /obj/structure/closet/crate/secure/corporate/veymed + container_name = "Cell-Loaded Medigun crate" + +/datum/supply_pack/nanotrasen/medical/medigun_cells + name = "Cell-Loaded Medigun Cell Pack crate" + contains = list( + /obj/item/ammo_casing/microbattery/medical/brute = 3, + /obj/item/ammo_casing/microbattery/medical/burn = 3, + /obj/item/ammo_casing/microbattery/medical/stabilize = 3, + ) + worth = 1000 + container_type = /obj/structure/closet/crate/secure/corporate/veymed + container_name = "Cell-Loaded Medigun Cell Pack crate" diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/miscellaneous.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/miscellaneous.dm new file mode 100644 index 000000000000..6d124e01c2bc --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/miscellaneous.dm @@ -0,0 +1,301 @@ +/* +* Here is where any supply packs +* that don't belong elsewhere live. +*/ + +/datum/supply_pack/nanotrasen/misc + category = "Miscellaneous" + +/datum/supply_pack/nanotrasen/misc/card_packs + lazy_gacha_amount = 5 + lazy_gacha_contained = list( + /obj/item/pack/cardemon, + /obj/item/pack/spaceball, + /obj/item/deck/holder + ) + name = "Trading Card Crate" + worth = 350 + container_type = /obj/structure/closet/crate/corporate/allico + container_name = "cards crate" + +/datum/supply_pack/nanotrasen/misc/dnd + lazy_gacha_amount = 4 + lazy_gacha_contained = list( + /obj/item/toy/character/alien, + /obj/item/toy/character/warrior, + /obj/item/toy/character/cleric, + /obj/item/toy/character/thief, + /obj/item/toy/character/wizard, + /obj/item/toy/character/voidone, + /obj/item/toy/character/lich + ) + name = "Miniatures Crate" + worth = 350 + container_type = /obj/structure/closet/crate/corporate/allico + container_name = "Miniature Crate" + +/datum/supply_pack/nanotrasen/misc/plushies + name = "Plushies Crate" + lazy_gacha_amount = 5 + lazy_gacha_contained = list( + /obj/item/toy/plushie/nymph, + /obj/item/toy/plushie/mouse, + /obj/item/toy/plushie/kitten, + /obj/item/toy/plushie/lizard, + /obj/item/toy/plushie/spider, + /obj/item/toy/plushie/farwa, + /obj/item/toy/plushie/corgi, + /obj/item/toy/plushie/girly_corgi, + /obj/item/toy/plushie/robo_corgi, + /obj/item/toy/plushie/octopus, + /obj/item/toy/plushie/face_hugger, + /obj/item/toy/plushie/red_fox, + /obj/item/toy/plushie/black_fox, + /obj/item/toy/plushie/marble_fox, + /obj/item/toy/plushie/blue_fox, + /obj/item/toy/plushie/coffee_fox, + /obj/item/toy/plushie/pink_fox, + /obj/item/toy/plushie/purple_fox, + /obj/item/toy/plushie/crimson_fox, + /obj/item/toy/plushie/deer, + /obj/item/toy/plushie/black_cat, + /obj/item/toy/plushie/grey_cat, + /obj/item/toy/plushie/white_cat, + /obj/item/toy/plushie/orange_cat, + /obj/item/toy/plushie/siamese_cat, + /obj/item/toy/plushie/tabby_cat, + /obj/item/toy/plushie/tuxedo_cat, + /obj/item/toy/plushie/squid/green, + /obj/item/toy/plushie/squid/mint, + /obj/item/toy/plushie/squid/blue, + /obj/item/toy/plushie/squid/orange, + /obj/item/toy/plushie/squid/yellow, + /obj/item/toy/plushie/squid/pink, + ) + worth = 350 + container_type = /obj/structure/closet/crate/corporate/allico + container_name = "Plushies Crate" + +/datum/supply_pack/nanotrasen/misc/eftpos + name = "EFTPOS scanner" + contains = list( + /obj/item/eftpos, + ) + worth = 150 + +/datum/supply_pack/nanotrasen/misc/chaplaingear + name = "Chaplain equipment" + contains = list( + /obj/item/clothing/under/rank/chaplain, + /obj/item/clothing/shoes/black, + /obj/item/clothing/suit/nun, + /obj/item/clothing/head/nun_hood, + /obj/item/clothing/suit/storage/hooded/chaplain_hoodie, + /obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout, + /obj/item/clothing/suit/holidaypriest, + /obj/item/clothing/under/wedding/bride_white, + /obj/item/storage/backpack/cultpack, + /obj/item/storage/fancy/candle_box = 3, + /obj/item/reagent_containers/food/drinks/bottle/holywater, + ) + worth = 850 // lmao larper tax + +/datum/supply_pack/nanotrasen/misc/hoverpod + name = "Hoverpod Shipment" + container_type = /obj/structure/largecrate/hoverpod + worth = 1000 + +/datum/supply_pack/nanotrasen/misc/webbing + name = "Webbing crate" + lazy_gacha_amount = 4 + lazy_gacha_contained = list( + /obj/item/clothing/accessory/storage/black_vest, + /obj/item/clothing/accessory/storage/brown_vest, + /obj/item/clothing/accessory/storage/white_vest, + /obj/item/clothing/accessory/storage/black_drop_pouches, + /obj/item/clothing/accessory/storage/brown_drop_pouches, + /obj/item/clothing/accessory/storage/white_drop_pouches, + /obj/item/clothing/accessory/storage/webbing + ) + worth = 150 + container_type = /obj/structure/closet/crate + container_name = "Webbing crate" + +/datum/supply_pack/nanotrasen/misc/holoplant + name = "Holoplant Pot" + contains = list( + /obj/machinery/holoplant/shipped, + ) + worth = 50 + +/datum/supply_pack/nanotrasen/misc/glucose_hypos + name = "Glucose Hypoinjectors" + contains = list( + /obj/item/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5, + ) + worth = 100 + +/datum/supply_pack/nanotrasen/misc/mre_rations + name = "Emergency - MREs" + contains = list( + /obj/item/storage/single_use/mre, + /obj/item/storage/single_use/mre/menu2, + /obj/item/storage/single_use/mre/menu3, + /obj/item/storage/single_use/mre/menu4, + /obj/item/storage/single_use/mre/menu5, + /obj/item/storage/single_use/mre/menu6, + /obj/item/storage/single_use/mre/menu7, + /obj/item/storage/single_use/mre/menu8, + /obj/item/storage/single_use/mre/menu9, + /obj/item/storage/single_use/mre/menu10, + ) + worth = 300 + container_type = /obj/structure/closet/crate/corporate/centauri + +/datum/supply_pack/nanotrasen/misc/paste_rations + name = "Emergency - Paste" + contains = list( + /obj/item/storage/single_use/mre/menu11 = 2, + ) + worth = 75 + container_type = /obj/structure/closet/crate/corporate/centauri + +/datum/supply_pack/nanotrasen/misc/medical_rations + name = "Emergency - VitaPaste" + contains = list( + /obj/item/storage/single_use/mre/menu13 = 2, + ) + worth = 100 + container_type = /obj/structure/closet/crate/corporate/centauri + +/datum/supply_pack/nanotrasen/misc/beltminer + name = "Belt-miner gear crate" + contains = list( + /obj/item/gun/energy/particle = 2, + /obj/item/cell/device/weapon = 2, + /obj/item/storage/firstaid/regular = 1, + /obj/item/gps = 2, + /obj/item/storage/box/traumainjectors = 1, + ) + worth = 500 + container_type = /obj/structure/closet/crate/secure/corporate/grayson + +/datum/supply_pack/nanotrasen/misc/eva_rig + name = "eva hardsuit (empty)" + contains = list( + /obj/item/hardsuit/eva = 1, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/gear + +/datum/supply_pack/nanotrasen/misc/mining_rig + name = "industrial hardsuit (empty)" + contains = list( + /obj/item/hardsuit/industrial = 1, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/corporate/grayson + +/datum/supply_pack/nanotrasen/misc/medical_rig + name = "medical hardsuit (empty)" + contains = list( + /obj/item/hardsuit/medical = 1, + ) + worth = 750 + +/datum/supply_pack/nanotrasen/misc/phoronoid + name = "Spare Phoronoid containment suits" + contains = list( + /obj/item/clothing/suit/space/plasman = 3, + /obj/item/clothing/head/helmet/space/plasman = 3, + /obj/item/clothing/mask/breath = 3, + /obj/item/tank/vox = 3, + ) + worth = 500 + +/datum/supply_pack/nanotrasen/misc/security_rig + name = "hazard hardsuit (empty)" + contains = list( + /obj/item/hardsuit/hazard = 1, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/gear + container_access = list( + /datum/access/station/security/equipment, + ) + +/datum/supply_pack/nanotrasen/misc/science_rig + name = "ami hardsuit (empty)" + contains = list( + /obj/item/hardsuit/hazmat = 1, + ) + worth = 750 + +/datum/supply_pack/nanotrasen/misc/ce_rig + name = "advanced hardsuit (empty)" + contains = list( + /obj/item/hardsuit/ce = 1, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/corporate/aether + +/datum/supply_pack/nanotrasen/misc/colored_lights + name = "Colored Lights Bundle" + contains = list( + /obj/item/storage/box/lights/bulbs_colored = 2, + /obj/item/storage/box/lights/tubes_colored = 2, + /obj/item/storage/box/lights/mixed_colored = 1, + ) + +/datum/supply_pack/nanotrasen/misc/neon_lights + name = "Neon Lights Bundle" + contains = list( + /obj/item/storage/box/lights/bulbs_neon = 2, + /obj/item/storage/box/lights/tubes_neon = 2, + /obj/item/storage/box/lights/mixed_neon = 1, + ) + +//Culture Crates +/datum/supply_pack/nanotrasen/misc/culture_apidean + name = "Apidean Culture Crate" + contains = list( + /obj/fiftyspawner/wax = 2, + /obj/item/healthanalyzer/apidean = 1, + /obj/item/atmos_analyzer/apidean = 1, + /obj/item/reagent_scanner/apidean = 1, + /mob/living/bot/medibot/apidean = 1, + /obj/item/reagent_containers/food/drinks/bottle/ambrosia_mead = 2, + /obj/item/reagent_containers/food/drinks/bottle/royaljelly = 1, + ) + worth = 1000 + +/datum/supply_pack/nanotrasen/misc/culture_tyrmalin + name = "Tyrmalin Culture Crate" + contains = list( + /obj/item/tool/wrench/goblin = 2, + /obj/item/weldingtool/welder_spear = 2, + /obj/item/clothing/accessory/skullcodpiece = 2, + /obj/item/reagent_containers/food/snacks/cavemoss_can = 2, + /obj/item/reagent_containers/food/snacks/diggerstew_can = 2, + /obj/item/reagent_containers/food/snacks/canned_bettles = 2, + /obj/item/reagent_containers/food/snacks/rust_can = 2, + /obj/item/reagent_containers/food/drinks/bottle/phobos = 1, + /obj/item/reagent_containers/food/drinks/bottle/greenstuff = 1, + ) + worth = 1000 + +/datum/supply_pack/nanotrasen/misc/culture_alraune + name = "Alraune Culture Crate" + contains = list( + /obj/item/reagent_containers/food/snacks/wrapped/alraune_bar = 3, + /obj/item/reagent_containers/food/snacks/boxed/bugsnacks = 3, + /obj/item/reagent_containers/food/drinks/cans/alraune = 3, + ) + worth = 1000 + +/datum/supply_pack/nanotrasen/misc/music_players + name = "Portable Music Players" + contains = list( + /obj/item/device/walkpod = 3, + ) + worth = 75 diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/munitions.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/munitions.dm new file mode 100644 index 000000000000..75134297cde2 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/munitions.dm @@ -0,0 +1,248 @@ +/* +* Here is where any supply packs +* related to weapons live. +*/ + +/datum/supply_pack/nanotrasen/munitions + abstract_type = /datum/supply_pack/nanotrasen/munitions + category = "Munitions" + supply_pack_flags = SUPPLY_PACK_LOCK_PRIVATE_ORDERS | SUPPLY_PACK_RESTRICT_PRIVATE_ORDERS + container_type = /obj/structure/closet/crate/secure/weapon + container_access = list( + /datum/access/station/security/armory, + ) + +/datum/supply_pack/nanotrasen/munitions/egunpistol + name = "Weapons - Energy sidearms" + contains = list( + /obj/item/gun/energy/gun = 2, + ) + container_name = "Energy sidearms crate" + +/datum/supply_pack/nanotrasen/munitions/flareguns + name = "Weapons - Flare guns" + contains = list( + /obj/item/gun/ballistic/shotgun/flare = 2, + /obj/item/storage/box/flashshells = 2, + ) + container_type = /obj/structure/closet/crate/secure/gear + container_name = "Flare gun crate" + +/datum/supply_pack/nanotrasen/munitions/eweapons + name = "Weapons - Experimental weapons crate" + contains = list( + /obj/item/gun/energy/xray = 2, + /obj/item/shield/energy = 2, + ) + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Experimental weapons crate" + +/datum/supply_pack/nanotrasen/munitions/energyweapons + name = "Weapons - Laser rifle crate" + contains = list( + /obj/item/gun/energy/laser = 2, + ) + container_type = /obj/structure/closet/crate/secure/corporate/heph + container_name = "Energy weapons crate" + +/datum/supply_pack/nanotrasen/munitions/shotgun + name = "Weapons - Shotgun crate" + contains = list( + /obj/item/storage/box/shotgunammo, + /obj/item/storage/box/shotgunshells, + /obj/item/gun/ballistic/shotgun/pump/combat = 2, + ) + container_type = /obj/structure/closet/crate/secure/corporate/ward + container_name = "Shotgun crate" + +/datum/supply_pack/nanotrasen/munitions/erifle + name = "Weapons - Energy marksman" + contains = list( + /obj/item/gun/energy/sniperrifle = 2, + ) + container_type = /obj/structure/closet/crate/secure/corporate/heph + container_name = "Energy marksman crate" + +/datum/supply_pack/nanotrasen/munitions/burstlaser + name = "Weapons - Burst laser" + contains = list( + /obj/item/gun/energy/gun/burst = 2, + ) + container_type = /obj/structure/closet/crate/secure/weapon + container_name = "Burst laser crate" + +/datum/supply_pack/nanotrasen/munitions/ionweapons + name = "Weapons - Electromagnetic Rifles" + contains = list( + /obj/item/gun/energy/ionrifle = 2, + /obj/item/storage/box/empslite, + ) + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Electromagnetic weapons crate" + +/datum/supply_pack/nanotrasen/munitions/ionpistols + name = "Weapons - Electromagnetic pistols" + contains = list( + /obj/item/gun/energy/ionrifle/pistol = 2, + /obj/item/storage/box/empslite, + ) + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Electromagnetic weapons crate" + +/datum/supply_pack/nanotrasen/munitions/bsmg + name = "Weapons - Ballistic SMGs" + contains = list( + /obj/item/gun/ballistic/automatic/wt550 = 2, + ) + container_type = /obj/structure/closet/crate/secure/corporate/ward + container_name = "Ballistic weapon crate" + +/datum/supply_pack/nanotrasen/munitions/brifle + name = "Weapons - Ballistic Rifles" + contains = list( + /obj/item/gun/ballistic/automatic/z8 = 2, + ) + container_name = "Ballistic weapon crate" + +/datum/supply_pack/nanotrasen/munitions/bolt_rifles_competitive + name = "Weapons - Competitive shooting rifles" + contains = list( + /obj/item/assembly/timer, + /obj/item/gun/ballistic/shotgun/pump/rifle/practice = 2, + /obj/item/ammo_magazine/clip/c762/practice = 4, + /obj/item/target = 2, + /obj/item/target/alien = 2, + /obj/item/target/syndicate = 2, + ) + worth = 500 + container_name = "Ballistic Weapons crate" + +/datum/supply_pack/nanotrasen/munitions/mrifle + name = "Weapons - Magnetic Rifles" + contains = list( + /obj/item/gun/magnetic/railgun/heater = 2, + ) + container_name = "Magnetic weapon crate" + +/datum/supply_pack/nanotrasen/munitions/mpistol + name = "Weapons - Magnetic Pistols" + contains = list( + /obj/item/gun/magnetic/railgun/heater/pistol = 2, + ) + container_name = "Magnetic weapon crate" + +/datum/supply_pack/nanotrasen/munitions/mcarbine + name = "Weapons - Magnetic Carbines" + contains = list( + /obj/item/gun/magnetic/railgun/flechette/sif = 2, + ) + container_name = "Magnetic weapon crate" + +/datum/supply_pack/nanotrasen/munitions/shotgunammo + name = "Ammunition - Shotgun shells" + contains = list( + /obj/item/storage/box/shotgunammo = 2, + /obj/item/storage/box/shotgunshells = 2, + ) + container_name = "Ballistic ammunition crate" + +/datum/supply_pack/nanotrasen/munitions/beanbagammo + name = "Ammunition - Beanbag shells" + contains = list( + /obj/item/storage/box/beanbags = 3, + ) + container_name = "Ballistic ammunition crate" + +/datum/supply_pack/nanotrasen/munitions/bsmgammo + name = "Ammunition - 9mm top mounted lethal" + contains = list( + /obj/item/ammo_magazine/m9mmt = 6, + ) + worth = 250 + container_name = "Ballistic ammunition crate" + +/datum/supply_pack/nanotrasen/munitions/bsmgammorubber + name = "Ammunition - 9mm top mounted rubber" + contains = list( + /obj/item/ammo_magazine/m9mmt/rubber = 6, + ) + worth = 250 + container_type = /obj/structure/closet/crate/secure + container_name = "Ballistic ammunition crate" + +/datum/supply_pack/nanotrasen/munitions/brifleammo + name = "Ammunition - 7.62mm lethal" + contains = list( + /obj/item/ammo_magazine/m762 = 6, + ) + worth = 250 + container_type = /obj/structure/closet/crate/secure + container_name = "Ballistic ammunition crate" + +/datum/supply_pack/nanotrasen/munitions/pcellammo + name = "Ammunition - Power cell" + contains = list( + /obj/item/cell/device/weapon = 3, + ) + container_access = list() + +/datum/supply_pack/nanotrasen/munitions/firingpins + name = "Weapons - Standard firing pins" + contains = list( + /obj/item/storage/box/firingpins = 3, + ) + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Firing pin crate" + +/datum/supply_pack/nanotrasen/munitions/expeditionguns + name = "frontier phasers (station-locked)" + contains = list( + /obj/item/gun/energy/frontier/locked = 2, + /obj/item/gun/energy/frontier/locked/holdout = 1, + ) + worth = 1000 // powergamer guns lmao + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + +//Culture Update +/datum/supply_pack/nanotrasen/munitions/weaponry_apidean + name = "Apidean Weaponry Crate" + contains = list( + /obj/item/gun/ballistic/apinae_stinger = 1, + /obj/item/gun/ballistic/apinae_pistol = 2, + /obj/item/grenade/spawnergrenade/manhacks/apidean = 3, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/gear + container_name = "Apidean Weaponry crate" + +/datum/supply_pack/nanotrasen/munitions/weaponry_tyrmalin + name = "Tyrmalin Weaponry Crate" + contains = list( + /obj/item/gun/energy/ermitter = 1, + /obj/item/gun/ballistic/rocket/tyrmalin = 1, + /obj/item/ammo_casing/rocket/weak = 2, + /obj/item/gun/ballistic/pirate/junker_pistol = 2, + /obj/item/gun/energy/ionrifle/pistol/tyrmalin = 1, + ) + worth = 1500 + container_type = /obj/structure/closet/crate/secure/gear + container_name = "Tyrmalin Weaponry crate" + +/datum/supply_pack/nanotrasen/munitions/battlerifle + name = "Battle Rifle Pack" + contains = list( + /obj/item/gun/ballistic/automatic/battlerifle = 2, + /obj/item/ammo_magazine/m95 = 4, + ) + worth = 1500 + container_type = /obj/structure/closet/crate/secure/corporate/heph + +/datum/supply_pack/nanotrasen/munitions/quadshot + name = "Quad Shotgun Pack" + contains = list( + /obj/item/gun/ballistic/shotgun/doublebarrel/quad = 2, + /obj/item/storage/box/shotgunshells = 2, + /obj/item/storage/belt/security/tactical/bandolier = 2, + ) + worth = 1250 + container_type = /obj/structure/closet/crate/secure/corporate/heph diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/reagents.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/reagents.dm new file mode 100644 index 000000000000..1823436a728b --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/reagents.dm @@ -0,0 +1,48 @@ +/datum/supply_pack/nanotrasen/reagents + category = "Reagents" + +/datum/supply_pack/nanotrasen/reagents/chemical_dispenser + name = "Reagent Synthesizer" + contains = list( + /obj/machinery/chemical_dispenser/full, + ) + container_type = /obj/structure/largecrate + container_name = "reagent dispenser crate" + +/datum/supply_pack/nanotrasen/reagents/beer_dispenser + name = "Booze Synthesizer" + contains = list( + /obj/machinery/chemical_dispenser/catering/bar_alc/unanchored, + ) + container_type = /obj/structure/largecrate + container_name = "booze dispenser crate" + +/datum/supply_pack/nanotrasen/reagents/soda_dispenser + name = "Soda Synthesizer" + contains = list( + /obj/machinery/chemical_dispenser/catering/bar_soft/unanchored, + ) + container_type = /obj/structure/largecrate + container_name = "soda dispenser crate" + +/datum/supply_pack/nanotrasen/reagents/coffee_dispenser + name = "Coffee Synthesizer" + contains = list( + /obj/machinery/chemical_dispenser/catering/bar_coffee/unanchored, + ) + container_type = /obj/structure/largecrate + container_name = "coffee dispenser crate" + +/datum/supply_pack/nanotrasen/reagents/reagent_synth_chemistry + name = "Reagent Synthesis Module - Chemistry" + contains = list( + /obj/item/reagent_synth/chemistry, + ) + +/datum/supply_pack/nanotrasen/reagents/dispenser_cartridges + name = "Large Chemical Dispenser Cartridges" + contains = list( + /obj/item/reagent_containers/cartridge/dispenser/large = 10, + ) + container_type = /obj/structure/closet/crate + container_name = "dispenser cartridge crate" diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/recreation.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/recreation.dm new file mode 100644 index 000000000000..51120d081856 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/recreation.dm @@ -0,0 +1,202 @@ +/* +* Here is where any supply packs +* related to recreation live. +*/ + + +/datum/supply_pack/nanotrasen/recreation + abstract_type = /datum/supply_pack/nanotrasen/recreation + category = "Recreation" + +/datum/supply_pack/nanotrasen/recreation/foam_weapons + name = "Foam Weapon Crate" + contains = list( + /obj/item/material/sword/foam = 2, + /obj/item/material/twohanded/baseballbat/foam = 2, + /obj/item/material/twohanded/spear/foam = 2, + /obj/item/material/twohanded/fireaxe/foam = 2, + ) + worth = 300 + +/datum/supply_pack/nanotrasen/recreation/lasertag + name = "Lasertag equipment" + contains = list( + /obj/item/gun/energy/lasertag/red, + /obj/item/clothing/suit/redtag, + /obj/item/gun/energy/lasertag/blue, + /obj/item/clothing/suit/bluetag, + ) + container_type = /obj/structure/closet + container_name = "Lasertag Closet" + worth = 100 + +/datum/supply_pack/nanotrasen/recreation/artscrafts + name = "Arts and Crafts supplies" + contains = list( + /obj/item/storage/fancy/crayons, + /obj/item/storage/fancy/markers, + /obj/item/camera, + /obj/item/camera_film = 2, + /obj/item/storage/photo_album, + /obj/item/packageWrap, + /obj/item/reagent_containers/glass/paint/red, + /obj/item/reagent_containers/glass/paint/green, + /obj/item/reagent_containers/glass/paint/blue, + /obj/item/reagent_containers/glass/paint/yellow, + /obj/item/reagent_containers/glass/paint/purple, + /obj/item/reagent_containers/glass/paint/black, + /obj/item/reagent_containers/glass/paint/white, + /obj/item/contraband/poster, + /obj/item/wrapping_paper = 3, + ) + worth = 350 + +/datum/supply_pack/nanotrasen/recreation/painters + name = "Station Painting Supplies" + contains = list( + /obj/item/pipe_painter = 2, + /obj/item/floor_painter = 2, + ) + worth = 500 // this is pretty much just clowning supplies + +/datum/supply_pack/nanotrasen/recreation/cheap_bait + name = "Cheap Fishing Bait" + container_name = "cheap bait crate" + container_type = /obj/structure/closet/crate/freezer + contains = list( + /obj/item/storage/box/wormcan/sickly = 5, + ) + worth = 100 + +/datum/supply_pack/nanotrasen/recreation/less_cheap_bait + name = "Deluxe Fishing Bait" + container_type = /obj/structure/closet/crate/freezer + lazy_gacha_amount = 5 + lazy_gacha_contained = list( + /obj/item/storage/box/wormcan, + /obj/item/storage/box/wormcan/deluxe, + ) + worth = 400 + +// todo: this is dumb because you're just spawning turrets in, why the fuck? +// /datum/supply_pack/nanotrasen/recreation/ltagturrets +// name = "Laser Tag Turrets" +// cost = 40 +// container_name = "laser tag turret crate" +// container_type = /obj/structure/closet/crate +// contains = list( +// /obj/machinery/porta_turret/lasertag/blue, +// /obj/machinery/porta_turret/lasertag/red +// ) + +/datum/supply_pack/nanotrasen/recreation/jukebox + name = "Jukebox crate" + contains = list ( + /obj/machinery/media/jukebox = 1, + ) + worth = 500 + +/datum/supply_pack/nanotrasen/recreation/restraints + name = "Recreational Restraints" + contains = list( + /obj/item/clothing/mask/muzzle, + /obj/item/clothing/glasses/sunglasses/blindfold, + /obj/item/handcuffs/fuzzy, + /obj/item/duct_tape_roll, + /obj/item/stack/cable_coil/random, + /obj/item/clothing/accessory/collar/shock, + /obj/item/clothing/suit/straight_jacket, + /obj/item/handcuffs/legcuffs/fuzzy, + /obj/item/melee/fluff/holochain/mass, + /obj/item/fluff/riding_crop, + /obj/item/clothing/under/fluff/latexmaid, + ) + worth = 500 + legacy_contraband = TRUE + +/datum/supply_pack/nanotrasen/recreation/wolfgirl_cosplay_crate + name = "Wolfgirl Cosplay Crate" + contains = list( + /obj/item/clothing/head/fluff/wolfgirl = 1, + /obj/item/clothing/shoes/fluff/wolfgirl = 1, + /obj/item/clothing/under/fluff/wolfgirl = 1, + /obj/item/melee/fluffstuff/wolfgirlsword = 1, + /obj/item/shield/fluff/wolfgirlshield = 1, + ) + worth = 750 + +/datum/supply_pack/nanotrasen/recreation/figures + name = "Action figures crate" + contains = list( + /obj/random/action_figure/supplypack = 5, + ) + worth = 750 + container_type = /obj/structure/closet/crate/corporate/allico + +/datum/supply_pack/nanotrasen/recreation/characters + name = "Tabletop miniatures" + contains = list( + /obj/item/storage/box/characters, + ) + worth = 750 + container_name = "Tabletop miniatures crate" + +/datum/supply_pack/nanotrasen/recreation/plushies + name = "Plushies crate" + contains = list( + /obj/random/plushie = 3, + ) + worth = 300 + container_type = /obj/structure/closet/crate/corporate/allico + +/datum/supply_pack/nanotrasen/recreation/collars + name = "Collar bundle" + contains = list( + /obj/item/clothing/accessory/collar/shock = 1, + /obj/item/clothing/accessory/collar/spike = 1, + /obj/item/clothing/accessory/collar/silver = 1, + /obj/item/clothing/accessory/collar/gold = 1, + /obj/item/clothing/accessory/collar/bell = 1, + /obj/item/clothing/accessory/collar/pink = 1, + /obj/item/clothing/accessory/collar/holo = 1, + ) + worth = 500 + +//DONKsoft +/datum/supply_pack/nanotrasen/recreation/donksoft + name = "DONKsoft Skirmish Bundle" + contains = list( + /obj/item/gunbox/donksoft = 2, + /obj/item/gunbox/donksoft/shotgun = 2, + /obj/item/gunbox/donksoft/smg = 2, + /obj/item/material/sword/foam = 2, + /obj/item/shield/riot/foam = 2, + ) + worth = 750 + +/datum/supply_pack/nanotrasen/recreation/donksoft_exotic + name = "DONKsoft Exotic Weaponry Bundle" + contains = list( + /obj/item/gun/ballistic/automatic/c20r/foam = 2, + /obj/item/gun/ballistic/automatic/lmg/foam = 1, + /obj/item/ammo_magazine/mfoam/c20 = 4, + /obj/item/ammo_magazine/mfoam/lmg = 2, + /obj/item/material/twohanded/spear/foam = 2, + /obj/item/material/twohanded/fireaxe/foam = 1, + ) + worth = 1500 + +/datum/supply_pack/nanotrasen/recreation/donksoft_ammo + name = "DONKsoft Resupply Bundle" + contains = list( + /obj/item/storage/box/foamdart= 4, + ) + worth = 250 + +/datum/supply_pack/nanotrasen/recreation/pelletgun + name = "Recreational Pellet Gun" + contains = list( + /obj/item/gun/ballistic/caseless/pellet, + /obj/item/ammo_magazine/pellets, + ) + worth = 75 diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/robotics.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/robotics.dm new file mode 100644 index 000000000000..87a54ae77089 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/robotics.dm @@ -0,0 +1,142 @@ +/* +* Here is where any supply packs +* related to robotics tasks live. +*/ + +//PROSTHETICS + +/datum/supply_pack/nanotrasen/robotics + category = "Robotics" + container_type = /obj/structure/closet/crate/science + +/datum/supply_pack/nanotrasen/robotics/robotics_assembly + name = "Robotics assembly crate" + contains = list( + /obj/item/assembly/prox_sensor = 3, + /obj/item/storage/toolbox/electrical, + /obj/item/flash = 4, + /obj/item/cell/high = 2, + ) + worth = 250 // literally only because of the flashes; nerf flashes when? + +/datum/supply_pack/nanotrasen/robotics/jumper_cables + name = "Jumper kit crate" + contains = list( + /obj/item/defib_kit/jumper_kit = 2, + ) + worth = 250 + +/datum/supply_pack/nanotrasen/robotics/restrainingbolt + name = "Restraining bolt crate" + contains = list( + /obj/item/implanter = 1, + /obj/item/implantcase/restrainingbolt = 2, + ) + worth = 1000 // stun combat tax intensifies + +/datum/supply_pack/nanotrasen/robotics/some_robolimbs + name = "Basic Robolimb Blueprints" + contains = list( + /obj/item/disk/limb/morpheus, + /obj/item/disk/limb/xion, + /obj/item/disk/limb/talon, + ) + worth = 500 + +/datum/supply_pack/nanotrasen/robotics/all_robolimbs + name = "Advanced Robolimb Blueprints (No Basic)" + contains = list( + /obj/item/disk/limb/bishop, + /obj/item/disk/limb/hephaestus, + /obj/item/disk/limb/veymed, + /obj/item/disk/limb/wardtakahashi, + /obj/item/disk/limb/zenghu, + /obj/item/disk/limb/dsi_tajaran, + /obj/item/disk/limb/dsi_lizard, + /obj/item/disk/limb/dsi_sergal, + /obj/item/disk/limb/dsi_nevrean, + /obj/item/disk/limb/dsi_vulpkanin, + /obj/item/disk/limb/dsi_akula, + /obj/item/disk/limb/dsi_spider, + /obj/item/disk/limb/dsi_teshari, + /obj/item/disk/limb/eggnerdltd, + /obj/item/disk/limb/eggnerdltdred, + /obj/item/disk/limb/antares, + /obj/item/disk/limb/grayson, + /obj/item/disk/limb/cybersolutions, + /obj/item/disk/limb/cenilimicybernetics, + ) + worth = 2500 + container_type = /obj/structure/closet/crate/secure + +//* Mechs *// + +/datum/supply_pack/nanotrasen/robotics/mecha_ripley + name = "Circuit Crate (\"Ripley\" APLU)" + contains = list( + /obj/item/book/manual/ripley_build_and_repair, + /obj/item/circuitboard/mecha/ripley/main, + /obj/item/circuitboard/mecha/ripley/peripherals, + ) + worth = 275 + container_name = "APLU \"Ripley\" Circuit Crate" + +/datum/supply_pack/nanotrasen/robotics/mecha_odysseus + name = "Circuit Crate (\"Odysseus\")" + contains = list( + /obj/item/circuitboard/mecha/odysseus/peripherals, + /obj/item/circuitboard/mecha/odysseus/main, + ) + worth = 275 + container_name = "\"Odysseus\" Circuit Crate" + +/datum/supply_pack/nanotrasen/robotics/mecha_gopher + name = "Circuit Crate (\"Gopher\" APLU)" + contains = list( + /obj/item/circuitboard/mecha/gopher/main, + /obj/item/circuitboard/mecha/gopher/peripherals, + ) + worth = 275 + container_name = "APLU \"Gopher\" Circuit Crate" + +/datum/supply_pack/nanotrasen/robotics/mecha_polecat + name = "Circuit Crate (\"Polecat\" APLU)" + contains = list( + /obj/item/circuitboard/mecha/polecat/main, + /obj/item/circuitboard/mecha/polecat/peripherals, + /obj/item/circuitboard/mecha/polecat/targeting, + ) + worth = 275 + container_name = "APLU \"Polecat\" Circuit Crate" + +/datum/supply_pack/nanotrasen/robotics/mecha_weasel + name = "Circuit Crate (\"Weasel\" APLU)" + contains = list( + /obj/item/circuitboard/mecha/weasel/main, + /obj/item/circuitboard/mecha/weasel/peripherals, + /obj/item/circuitboard/mecha/weasel/targeting, + ) + worth = 275 + container_name = "APLU \"Weasel\" Circuit Crate" + +//* Mechs - Paintkits *// + +/datum/supply_pack/nanotrasen/robotics/exosuit_mod + name = "Random APLU modkit" + contains = list( + /obj/random/paintkit, + ) + worth = 750 + container_name = "heavy crate" + +/datum/supply_pack/nanotrasen/robotics/exosuit_mod/durand + name = "Random Durand exosuit modkit" + contains = list( + /obj/random/paintkit, + ) + +/datum/supply_pack/nanotrasen/robotics/exosuit_mod/gygax + name = "Random Gygax exosuit modkit" + contains = list( + /obj/random/paintkit/gygax, + ) diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/science.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/science.dm new file mode 100644 index 000000000000..eeeddc722d8d --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/science.dm @@ -0,0 +1,114 @@ +/* +* Here is where any supply packs +* related to science tasks live +*/ +/datum/supply_pack/nanotrasen/science + category = "Science" + +/datum/supply_pack/nanotrasen/science/virus + name = "Virus sample crate" + contains = list( + /obj/item/virusdish/random = 4, + ) + container_type = "/obj/structure/closet/crate/secure" + container_name = "Virus sample crate" + container_access = list( + /datum/access/station/medical/virology, + ) + +/datum/supply_pack/nanotrasen/science/coolanttank + name = "Coolant tank crate" + contains = list(/obj/structure/reagent_dispensers/coolanttank) + worth = 350 // reagent worth unimplemented + container_type = /obj/structure/largecrate + container_name = "coolant tank crate" + +/datum/supply_pack/nanotrasen/science/phoron + name = "Phoron research crate" + contains = list( + /obj/item/tank/phoron = 3, + /obj/item/tank/oxygen = 3, + /obj/item/assembly/igniter = 3, + /obj/item/assembly/prox_sensor = 3, + /obj/item/assembly/timer = 3, + /obj/item/assembly/signaler = 3, + /obj/item/transfer_valve = 3, + ) + container_type = /obj/structure/closet/crate/secure/phoron + container_name = "Phoron assembly crate" + container_access = list( + /datum/access/station/science/toxins, + ) + +/datum/supply_pack/nanotrasen/science/exoticseeds + name = "Exotic seeds crate" + contains = list( + /obj/item/seeds/replicapod = 2, + /obj/item/seeds/ambrosiavulgarisseed = 2, + /obj/item/seeds/libertymycelium, + /obj/item/seeds/reishimycelium, + /obj/item/seeds/random = 6, + /obj/item/seeds/kudzuseed, + ) + worth = 650 + container_type = /obj/structure/closet/crate/hydroponics + container_name = "Exotic Seeds crate" + +/datum/supply_pack/nanotrasen/science/integrated_circuit_printer + name = "Integrated circuit printer" + contains = list( + /obj/item/integrated_circuit_printer = 2, + ) + container_type = /obj/structure/closet/crate + container_name = "Integrated circuit crate" + +/datum/supply_pack/nanotrasen/science/integrated_circuit_printer_upgrade + name = "Integrated circuit printer upgrade - advanced designs" + contains = list( + /obj/item/disk/integrated_circuit/upgrade/advanced, + ) + container_type = /obj/structure/closet/crate + container_name = "Integrated circuit crate" + +/datum/supply_pack/nanotrasen/science/xenoarch + name = "Xenoarchaeology Tech crate" + contains = list( + /obj/item/pickaxe/excavationdrill, + /obj/item/xenoarch_multi_tool, + /obj/item/clothing/suit/space/anomaly, + /obj/item/clothing/head/helmet/space/anomaly, + /obj/item/storage/belt/archaeology, + /obj/item/flashlight/lantern, + /obj/item/core_sampler, + /obj/item/gps, + /obj/item/beacon_locator, + /obj/item/radio/beacon, + /obj/item/clothing/glasses/meson, + /obj/item/pickaxe, + /obj/item/storage/bag/fossils, + /obj/item/hand_labeler, + ) + container_type = /obj/structure/closet/crate/secure/science + container_name = "Xenoarchaeology Tech crate" + +/datum/supply_pack/nanotrasen/science/jukebox_circuitboard + name = "Jukebox Circuit Board crate" + contains = list( + /obj/item/circuitboard/jukebox = 2, + ) + container_type = /obj/structure/closet/crate + container_name = "Jukebox Circuit Board crate" + + +/datum/supply_pack/nanotrasen/science/pred + name = "Dangerous Predator crate" + container_type = /obj/structure/largecrate/animal/pred + container_name = "Dangerous Predator crate" + worth = 350 + +/datum/supply_pack/nanotrasen/science/pred_doom + name = "EXTREMELY Dangerous Predator crate" + container_type = /obj/structure/largecrate/animal/dangerous + container_name = "EXTREMELY Dangerous Predator crate" + legacy_contraband = 1 + worth = 550 diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/security.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/security.dm new file mode 100644 index 000000000000..bb09c938ed6b --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/security.dm @@ -0,0 +1,607 @@ +/* +* Here is where any supply packs +* related to security tasks live +*/ + + +/datum/supply_pack/nanotrasen/security + abstract_type = /datum/supply_pack/nanotrasen/security + category = "Security" + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_access = list( + /datum/access/station/security/equipment, + ) + supply_pack_flags = SUPPLY_PACK_LOCK_PRIVATE_ORDERS + +/datum/supply_pack/nanotrasen/security/weapons + name = "Weapons - Security basic equipment" + contains = list( + /obj/item/flash = 2, + /obj/item/reagent_containers/spray/pepper = 2, + /obj/item/melee/baton/loaded = 2, + /obj/item/gun/energy/taser = 2, + /obj/item/gunbox = 2, + /obj/item/storage/box/flashbangs = 2, + ) + worth = 400 + container_name = "Security equipment crate" + +/datum/supply_pack/nanotrasen/security/armor + name = "Armor - Security armor" + lazy_gacha_amount = 5 + lazy_gacha_contained = list( + /obj/item/clothing/suit/storage/vest, + /obj/item/clothing/suit/storage/vest/officer, + /obj/item/clothing/suit/storage/vest/warden, + /obj/item/clothing/suit/storage/vest/hos, + /obj/item/clothing/suit/storage/vest/detective, + /obj/item/clothing/suit/storage/vest/heavy, + /obj/item/clothing/suit/storage/vest/heavy/officer, + /obj/item/clothing/suit/storage/vest/heavy/warden, + /obj/item/clothing/suit/storage/vest/heavy/hos, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Armor crate" + +/datum/supply_pack/nanotrasen/security/carriers + name = "Armor - Plate carriers" + lazy_gacha_amount = 5 + lazy_gacha_contained = list( + /obj/item/clothing/suit/armor/pcarrier, + /obj/item/clothing/suit/armor/pcarrier/alt, + /obj/item/clothing/suit/armor/pcarrier/blue, + /obj/item/clothing/suit/armor/pcarrier/green, + /obj/item/clothing/suit/armor/pcarrier/navy, + /obj/item/clothing/suit/armor/pcarrier/tan, + /obj/item/clothing/suit/armor/pcarrier/press, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Plate Carrier crate" + +/datum/supply_pack/nanotrasen/security/carriertags + name = "Armor - Plate carrier tags" + // todo: just do fucking holotags WHY ARE WE SPAMMING THESE?? + contains = list( + /obj/item/clothing/accessory/armor/tag, + /obj/item/clothing/accessory/armor/tag/nts, + /obj/item/clothing/accessory/armor/tag/ntc, + /obj/item/clothing/accessory/armor/tag/opos, + /obj/item/clothing/accessory/armor/tag/oneg, + /obj/item/clothing/accessory/armor/tag/apos, + /obj/item/clothing/accessory/armor/tag/aneg, + /obj/item/clothing/accessory/armor/tag/bpos, + /obj/item/clothing/accessory/armor/tag/bneg, + /obj/item/clothing/accessory/armor/tag/abpos, + /obj/item/clothing/accessory/armor/tag/abneg, + ) + worth = 100 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Plate Carrier crate" + +/datum/supply_pack/nanotrasen/security/helmcovers + name = "Armor - Helmet covers" + // todo: just do fucking holocovers WHY ARE WE SPAMMING THESE?? + contains = list( + /obj/item/clothing/accessory/armor/helmcover/blue = 2, + /obj/item/clothing/accessory/armor/helmcover/navy = 2, + /obj/item/clothing/accessory/armor/helmcover/green = 2, + /obj/item/clothing/accessory/armor/helmcover/tan = 2, + ) + worth = 100 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Helmet Covers crate" + +/datum/supply_pack/nanotrasen/security/armorplates + name = "Armor - Security p-carrier armor plates" + lazy_gacha_amount = 5 + lazy_gacha_contained = list( + /obj/item/clothing/accessory/armor/armorplate = 2, + /obj/item/clothing/accessory/armor/armorplate/stab = 2, + /obj/item/clothing/accessory/armor/armorplate/medium = 2, + /obj/item/clothing/accessory/armor/armorplate/tactical, + /obj/item/clothing/accessory/armor/armorplate/ablative, + /obj/item/clothing/accessory/armor/armorplate/riot, + /obj/item/clothing/accessory/armor/armorplate/ballistic, + ) + worth = 1000 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Armor plate crate" + +/datum/supply_pack/nanotrasen/security/carrierarms + name = "Armor - Security armguard attachments" + lazy_gacha_amount = 5 + lazy_gacha_contained = list( + /obj/item/clothing/accessory/armor/armguards, + /obj/item/clothing/accessory/armor/armguards/blue, + /obj/item/clothing/accessory/armor/armguards/navy, + /obj/item/clothing/accessory/armor/armguards/green, + /obj/item/clothing/accessory/armor/armguards/tan, + /obj/item/clothing/accessory/armor/armguards/ablative, + /obj/item/clothing/accessory/armor/armguards/riot, + /obj/item/clothing/accessory/armor/armguards/ballistic, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Armor plate crate" + +/datum/supply_pack/nanotrasen/security/carrierlegs + name = "Armor - Security legguard attachments" + lazy_gacha_amount = 5 + lazy_gacha_contained = list( + /obj/item/clothing/accessory/armor/legguards, + /obj/item/clothing/accessory/armor/legguards/blue, + /obj/item/clothing/accessory/armor/legguards/navy, + /obj/item/clothing/accessory/armor/legguards/green, + /obj/item/clothing/accessory/armor/legguards/tan, + /obj/item/clothing/accessory/armor/legguards/ablative, + /obj/item/clothing/accessory/armor/legguards/riot, + /obj/item/clothing/accessory/armor/legguards/ballistic, + ) + worth = 750 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Armor plate crate" + +/datum/supply_pack/nanotrasen/security/carrierbags + name = "Armor - Security p-carrier pouch attachments" + lazy_gacha_amount = 5 + lazy_gacha_contained = list( + /obj/item/clothing/accessory/storage/pouches, + /obj/item/clothing/accessory/storage/pouches/blue, + /obj/item/clothing/accessory/storage/pouches/navy, + /obj/item/clothing/accessory/storage/pouches/green, + /obj/item/clothing/accessory/storage/pouches/tan, + /obj/item/clothing/accessory/storage/pouches/large, + /obj/item/clothing/accessory/storage/pouches/large/blue, + /obj/item/clothing/accessory/storage/pouches/large/navy, + /obj/item/clothing/accessory/storage/pouches/large/green, + /obj/item/clothing/accessory/storage/pouches/large/tan, + ) + worth = 500 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Armor plate crate" + +/datum/supply_pack/nanotrasen/security/armory + abstract_type = /datum/supply_pack/nanotrasen/security/armory + container_access = list( + /datum/access/station/security/armory, + ) + +/datum/supply_pack/nanotrasen/security/armory/riot_gear + name = "Gear - Riot" + contains = list( + /obj/item/melee/baton = 3, + /obj/item/shield/riot = 3, + /obj/item/handcuffs = 3, + /obj/item/storage/box/flashbangs, + /obj/item/storage/box/beanbags, + /obj/item/storage/box/handcuffs, + ) + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Riot gear crate" + +/datum/supply_pack/nanotrasen/security/armory/riot_armor + name = "Armor Set - Riot" + contains = list( + /obj/item/clothing/head/helmet/riot, + /obj/item/clothing/suit/armor/riot, + /obj/item/clothing/gloves/arm_guard/riot, + /obj/item/clothing/shoes/leg_guard/riot, + ) + worth = 650 // lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Riot armor crate" + +/datum/supply_pack/nanotrasen/security/armory/riot_plates + name = "Armor Set - Riot (P-Carrier)" + contains = list( + /obj/item/clothing/head/helmet/riot, + /obj/item/clothing/suit/armor/pcarrier/riot, + /obj/item/clothing/accessory/armor/armguards/riot, + /obj/item/clothing/accessory/armor/legguards/riot, + ) + worth = 650 // lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Riot armor crate" + +/datum/supply_pack/nanotrasen/security/armory/ablative_armor + name = "Armor Set - Ablative" + contains = list( + /obj/item/clothing/head/helmet/ablative, + /obj/item/clothing/suit/armor/laserproof, + /obj/item/clothing/gloves/arm_guard/laserproof, + /obj/item/clothing/shoes/leg_guard/laserproof, + ) + worth = 750 // lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Ablative armor crate" + +/datum/supply_pack/nanotrasen/security/armory/ablative_plates + name = "Armor Set - Ablative (P-Carrier)" + contains = list( + /obj/item/clothing/head/helmet/ablative, + /obj/item/clothing/suit/armor/pcarrier/ablative, + /obj/item/clothing/accessory/armor/armguards/ablative, + /obj/item/clothing/accessory/armor/legguards/ablative, + ) + worth = 750 // lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Ablative armor crate" + +/datum/supply_pack/nanotrasen/security/armory/bullet_resistant_armor + name = "Armor Set - Ballistic" + contains = list( + /obj/item/clothing/head/helmet/ballistic, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/gloves/arm_guard/bulletproof, + /obj/item/clothing/shoes/leg_guard/bulletproof, + ) + worth = 750 // lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Ballistic armor crate" + +/datum/supply_pack/nanotrasen/security/armory/bullet_resistant_plates + name = "Armor Set - Ballistic (P-Carrier)" + contains = list( + /obj/item/clothing/head/helmet/ballistic, + /obj/item/clothing/suit/armor/pcarrier/ballistic, + /obj/item/clothing/accessory/armor/armguards/ballistic, + /obj/item/clothing/accessory/armor/legguards/ballistic, + ) + worth = 750 // lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Ballistic armor crate" + +/datum/supply_pack/nanotrasen/security/armory/combat_armor + name = "Armor - Combat" + contains = list( + /obj/item/clothing/head/helmet/combat, + /obj/item/clothing/suit/armor/combat, + /obj/item/clothing/gloves/arm_guard/combat, + /obj/item/clothing/shoes/leg_guard/combat, + ) + worth = 750 // lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Combat armor crate" + +/datum/supply_pack/nanotrasen/security/armory/tactical + name = "Armor - NT Tactical" + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "NT Tactical armor crate" + worth = 850 // the milrp tax is real + + contains = list( + /obj/item/clothing/under/tactical, + /obj/item/clothing/suit/armor/tactical, + /obj/item/clothing/head/helmet/tactical, + /obj/item/clothing/mask/balaclava/tactical, + /obj/item/clothing/glasses/sunglasses/sechud/tactical, + /obj/item/storage/belt/security/tactical, + /obj/item/clothing/shoes/boots/jackboots, + /obj/item/clothing/gloves/black, + ) + +/datum/supply_pack/nanotrasen/security/armory/flexitac + name = "Armor - Tactical Light" + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Tactical Light armor crate" + worth = 850 // the milrp tax is real + contains = list( + /obj/item/clothing/suit/storage/vest/heavy/flexitac, + /obj/item/clothing/head/helmet/flexitac, + /obj/item/clothing/shoes/leg_guard/flexitac, + /obj/item/clothing/gloves/arm_guard/flexitac, + /obj/item/clothing/mask/balaclava/tactical, + /obj/item/clothing/glasses/sunglasses/sechud/tactical, + /obj/item/storage/belt/security/tactical, + ) + +/datum/supply_pack/nanotrasen/security/securitybarriers + name = "Misc - Security Barriers" + contains = list( + /obj/machinery/deployable/barrier = 4, + ) + container_type = /obj/structure/largecrate + container_name = "Security barrier crate" + +/datum/supply_pack/nanotrasen/security/holster + name = "Gear - Holsters" + lazy_gacha_amount = 4 + lazy_gacha_contained = list( + /obj/item/clothing/accessory/holster, + /obj/item/clothing/accessory/holster/armpit, + /obj/item/clothing/accessory/holster/waist, + /obj/item/clothing/accessory/holster/hip, + ) + container_type = /obj/structure/closet/crate/corporate/nanotrasen + container_name = "Holster crate" + +/datum/supply_pack/nanotrasen/security/extragear + name = "Gear - Security surplus equipment" + contains = list( + /obj/item/storage/belt/security = 3, + /obj/item/clothing/glasses/sunglasses/sechud = 3, + /obj/item/radio/headset/headset_sec/alt = 3, + /obj/item/clothing/suit/storage/hooded/wintercoat/security = 3, + /obj/item/storage/belt/dualholster = 3, + ) + worth = 600 // i'm lazy + container_type = /obj/structure/closet/crate/corporate/nanotrasen + container_name = "Security surplus equipment" + +/datum/supply_pack/nanotrasen/security/detectivegear + name = "Forensic - Investigation equipment" + contains = list( + /obj/item/storage/box/evidence = 2, + /obj/item/clothing/suit/storage/vest/detective, + /obj/item/cartridge/detective, + /obj/item/radio/headset/headset_sec, + /obj/item/barrier_tape_roll/police, + /obj/item/clothing/glasses/sunglasses, + /obj/item/camera, + /obj/item/folder/red, + /obj/item/folder/blue, + /obj/item/storage/belt/detective, + /obj/item/clothing/gloves/black, + /obj/item/tape_recorder, + /obj/item/mass_spectrometer, + /obj/item/camera_film = 2, + /obj/item/storage/photo_album, + /obj/item/reagent_scanner, + /obj/item/flashlight/maglight, + /obj/item/storage/briefcase/crimekit, + /obj/item/storage/bag/detective, + ) + worth = 750 // i'm lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Forensic equipment" + +/datum/supply_pack/nanotrasen/security/detectivescan + name = "Forensic - Scanning Equipment" + contains = list( + /obj/item/mass_spectrometer, + /obj/item/reagent_scanner, + /obj/item/storage/briefcase/crimekit, + /obj/item/detective_scanner, + ) + worth = 850 // detective scanner buff someday + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Forensic equipment" + +/datum/supply_pack/nanotrasen/security/detectiveclothes + name = "Forensic - Investigation apparel" + contains = list( + /obj/item/clothing/under/det/black = 2, + /obj/item/clothing/under/det/grey = 2, + /obj/item/clothing/head/det/grey = 2, + /obj/item/clothing/under/det/skirt = 2, + /obj/item/clothing/under/det = 2, + /obj/item/clothing/head/det = 2, + /obj/item/clothing/suit/storage/det_trench, + /obj/item/clothing/suit/storage/det_trench/grey, + /obj/item/clothing/suit/storage/forensics/red, + /obj/item/clothing/suit/storage/forensics/blue, + /obj/item/clothing/under/det/corporate = 2, + /obj/item/clothing/accessory/badge/holo/detective = 2, + /obj/item/clothing/gloves/black = 2, + ) + worth = 750 // the LARPer tax is real + these are armored + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Investigation clothing" + +/datum/supply_pack/nanotrasen/security/officergear + name = "Gear - Officer equipment" + contains = list( + /obj/item/clothing/suit/storage/vest/officer, + /obj/item/clothing/head/helmet, + /obj/item/cartridge/security, + /obj/item/clothing/accessory/badge/holo, + /obj/item/clothing/accessory/badge/holo/cord, + /obj/item/radio/headset/headset_sec, + /obj/item/storage/belt/security, + /obj/item/flash, + /obj/item/reagent_containers/spray/pepper, + /obj/item/grenade/flashbang, + /obj/item/melee/baton/loaded, + /obj/item/clothing/glasses/sunglasses/sechud, + /obj/item/barrier_tape_roll/police, + /obj/item/clothing/gloves/black, + /obj/item/hailer, + /obj/item/flashlight/flare, + /obj/item/clothing/accessory/storage/black_vest, + /obj/item/clothing/head/soft/sec/corp, + /obj/item/clothing/under/rank/security/corp, + /obj/item/gun/energy/taser, + /obj/item/flashlight/maglight, + ) + worth = 750 // i'm lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Officer equipment" + +/datum/supply_pack/nanotrasen/security/wardengear + name = "Gear - Warden equipment" + contains = list( + /obj/item/clothing/suit/storage/vest/warden, + /obj/item/clothing/under/rank/warden, + /obj/item/clothing/under/rank/warden/corp, + /obj/item/clothing/suit/storage/vest/wardencoat, + /obj/item/clothing/suit/storage/vest/wardencoat/alt, + /obj/item/clothing/head/helmet/warden, + /obj/item/cartridge/security, + /obj/item/radio/headset/headset_sec, + /obj/item/clothing/glasses/sunglasses/sechud, + /obj/item/barrier_tape_roll/police, + /obj/item/hailer, + /obj/item/clothing/accessory/badge/holo/warden, + /obj/item/storage/box/flashbangs, + /obj/item/storage/belt/security, + /obj/item/reagent_containers/spray/pepper, + /obj/item/melee/baton/loaded, + /obj/item/storage/box/holobadge, + /obj/item/clothing/head/beret/sec/corporate/warden, + /obj/item/flashlight/maglight, + ) + worth = 850 // i'm lazy + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Warden equipment" + container_access = list( + /datum/access/station/security/armory, + ) + +/datum/supply_pack/nanotrasen/security/headofsecgear + name = "Gear - Head of security equipment" + contains = list( + /obj/item/clothing/head/helmet/HoS, + /obj/item/clothing/suit/storage/vest/hos, + /obj/item/clothing/under/rank/head_of_security/corp, + /obj/item/clothing/suit/storage/vest/hoscoat, + /obj/item/clothing/head/helmet/dermal, + /obj/item/cartridge/hos, + /obj/item/radio/headset/heads/hos, + /obj/item/clothing/glasses/sunglasses/sechud, + /obj/item/storage/belt/security, + /obj/item/flash, + /obj/item/hailer, + /obj/item/clothing/accessory/badge/holo/hos, + /obj/item/clothing/accessory/holster/waist, + /obj/item/melee/telebaton, + /obj/item/shield/riot/tele, + /obj/item/clothing/head/beret/sec/corporate/hos, + /obj/item/flashlight/maglight, + ) + worth = 1500 // the milrper tax is real + good armor + don't lose your shit lol + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Head of security equipment" + container_access = list( + /datum/access/station/security/hos, + ) + +/datum/supply_pack/nanotrasen/security/securityclothing + name = "Misc - Security uniform red" + contains = list( + /obj/item/storage/backpack/satchel/sec = 2, + /obj/item/storage/backpack/security = 2, + /obj/item/clothing/accessory/armband = 4, + /obj/item/clothing/under/rank/security = 4, + /obj/item/clothing/under/rank/security2 = 4, + /obj/item/clothing/under/rank/warden, + /obj/item/clothing/under/rank/head_of_security, + /obj/item/clothing/head/soft/sec = 4, + /obj/item/clothing/gloves/black = 4, + /obj/item/storage/box/holobadge, + ) + worth = 500 // *facepalm* item spam + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Security uniform crate" + +/datum/supply_pack/nanotrasen/security/navybluesecurityclothing + name = "Misc - Security uniform navy blue" + contains = list( + /obj/item/storage/backpack/satchel/sec = 2, + /obj/item/storage/backpack/security = 2, + /obj/item/clothing/under/rank/security/navyblue = 4, + /obj/item/clothing/suit/security/navyofficer = 4, + /obj/item/clothing/under/rank/warden/navyblue, + /obj/item/clothing/suit/security/navywarden, + /obj/item/clothing/under/rank/head_of_security/navyblue, + /obj/item/clothing/suit/security/navyhos, + /obj/item/clothing/head/beret/sec/navy/officer = 4, + /obj/item/clothing/head/beret/sec/navy/warden, + /obj/item/clothing/head/beret/sec/navy/hos, + /obj/item/clothing/gloves/black = 4, + /obj/item/storage/box/holobadge, + ) + worth = 500 // item spam + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Navy blue security uniform crate" + +/datum/supply_pack/nanotrasen/security/corporatesecurityclothing + name = "Misc - Security uniform corporate" + contains = list( + /obj/item/storage/backpack/satchel/sec = 2, + /obj/item/storage/backpack/security = 2, + /obj/item/clothing/under/rank/security/corp = 4, + /obj/item/clothing/head/soft/sec/corp = 4, + /obj/item/clothing/under/rank/warden/corp, + /obj/item/clothing/under/rank/head_of_security/corp, + /obj/item/clothing/head/beret/sec = 4, + /obj/item/clothing/head/beret/sec/corporate/warden, + /obj/item/clothing/head/beret/sec/corporate/hos, + /obj/item/clothing/under/det/corporate = 2, + /obj/item/clothing/gloves/black = 4, + /obj/item/storage/box/holobadge, + ) + worth = 500 // item spam + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Corporate security uniform crate" + +/datum/supply_pack/nanotrasen/security/biosuit + name = "Gear - Security biohazard gear" + contains = list( + /obj/item/clothing/head/bio_hood/security = 3, + /obj/item/clothing/under/rank/security = 3, + /obj/item/clothing/suit/bio_suit/security = 3, + /obj/item/clothing/shoes/white = 3, + /obj/item/clothing/mask/gas = 3, + /obj/item/tank/oxygen = 3, + /obj/item/clothing/gloves/sterile/latex, + /obj/item/storage/box/gloves, + ) + worth = 1250 // honestly kinda cheap for 3 sets + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Security biohazard gear" + +/datum/supply_pack/nanotrasen/security/posters + name = "Gear - Morale Posters" + contains = list( + /obj/item/contraband/poster/nanotrasen = 6, + ) + worth = 100 // YEAAAH NANOTRASEN PROPAGANDA WOO + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Morale Posters" + +/datum/supply_pack/nanotrasen/security/kevlarkit + name = "Misc - Kevlar Upgrade Kits" + contains = list( + /obj/item/kevlarupgrade = 5, + ) + worth = 500 // the powergamer tax is real + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Kevlar Upgrade Kits" + // "why is this not locked" + // because i'll be entirely blunt here + // uniform armor upgrades is stupid as shit + // i have no game design reason to lock it to security + // because that gives security an unfair advantage (uniform armor is historically antag-only) + // if you're going to add stuff like this, it's not going to be security-only. + container_access = null + +/datum/supply_pack/nanotrasen/security/pcarriers/combat + name = "Armor - Combat Armor (P-Carrier)" + contains = list( + /obj/item/clothing/suit/armor/pcarrier = 3, + /obj/item/clothing/accessory/armor/armorplate/combat = 3, + /obj/item/clothing/accessory/armor/armguards/combat = 3, + /obj/item/clothing/accessory/armor/legguards/combat = 3, + /obj/item/clothing/head/helmet/redcombat = 3, + ) + worth = 1650 // the milrp tax is real + this is cheap for 3 armors + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Combat Armor crate" + +/datum/supply_pack/nanotrasen/security/helmets + name = "Armor - Helmet Pack" + contains = list( + /obj/item/clothing/head/helmet = 3, + ) + worth = 125 * 3 // it's just helmets, 125 a piece is fine + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + +/datum/supply_pack/nanotrasen/security/wardengear + name = "Tracking Implants" + contains = list( + /obj/item/storage/box/trackimp = 1, + ) + worth = 1500 // the 1984 tax is real, don't spam this shit + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/supplies.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/supplies.dm new file mode 100644 index 000000000000..bb725bfe6f15 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/supplies.dm @@ -0,0 +1,152 @@ +/* +* Here is where any supply packs +* related to civilian tasks live +*/ + +/datum/supply_pack/nanotrasen/supply + abstract_type = /datum/supply_pack/nanotrasen/supply + category = "Supplies" + +/datum/supply_pack/nanotrasen/supply/food + name = "Kitchen supply crate" + contains = list( + /obj/item/reagent_containers/food/condiment/flour = 6, + /obj/item/reagent_containers/food/drinks/milk = 3, + /obj/item/reagent_containers/food/drinks/soymilk = 2, + /obj/item/storage/fancy/egg_box = 2, + /obj/item/reagent_containers/food/snacks/tofu = 4, + /obj/item/reagent_containers/food/snacks/meat = 4, + ) + worth = 100 // i like our service players and will not grief them with high prices + container_type = /obj/structure/closet/crate/corporate/centauri + container_name = "Food crate" + +/datum/supply_pack/nanotrasen/supply/toner + name = "Toner cartridges" + contains = list( + /obj/item/toner = 6, + ) + container_type = /obj/structure/closet/crate + container_name = "Toner cartridges" + +/datum/supply_pack/nanotrasen/supply/janitor + name = "Janitorial supplies" + contains = list( + /obj/item/reagent_containers/glass/bucket, + /obj/item/mop, + /obj/item/clothing/under/rank/janitor, + /obj/item/cartridge/janitor, + /obj/item/clothing/gloves/black, + /obj/item/clothing/head/soft/purple, + /obj/item/storage/belt/janitor, + /obj/item/clothing/shoes/galoshes, + /obj/item/caution = 4, + /obj/item/storage/bag/trash, + /obj/item/lightreplacer, + /obj/item/reagent_containers/spray/cleaner, + /obj/item/reagent_containers/glass/rag, + /obj/item/reagent_containers/spray/pestbgone, + /obj/item/grenade/chem_grenade/cleaner = 3, + /obj/structure/mopbucket, + ) + worth = 350 // i like our service players and will not grief them with high prices + container_type = /obj/structure/closet/crate + container_name = "Janitorial supplies" + +/datum/supply_pack/nanotrasen/supply/shipping + name = "Shipping supplies" + contains = list( + /obj/fiftyspawner/cardboard, + /obj/item/packageWrap = 4, + /obj/item/wrapping_paper = 2, + /obj/item/destTagger, + /obj/item/hand_labeler, + /obj/item/tool/wirecutters, + /obj/item/duct_tape_roll = 2, + ) + worth = 150 + container_type = /obj/structure/closet/crate + container_name = "Shipping supplies crate" + +/datum/supply_pack/nanotrasen/supply/bureaucracy + contains = list( + /obj/item/clipboard = 2, + /obj/item/pen/red, + /obj/item/pen/blue, + /obj/item/pen/blue, + /obj/item/camera_film, + /obj/item/folder/blue, + /obj/item/folder/red, + /obj/item/folder/yellow, + /obj/item/hand_labeler, + /obj/item/duct_tape_roll, + /obj/structure/filingcabinet/chestdrawer/unanchored, + /obj/item/paper_bin, + ) + name = "Office supplies" + worth = 150 + container_type = /obj/structure/closet/crate + container_name = "Office supplies crate" + +/datum/supply_pack/nanotrasen/supply/spare_pda + name = "Spare PDAs" + contains = list( + /obj/item/pda = 3, + ) + worth = 150 + container_type = /obj/structure/closet/crate/corporate/thinktronic + +/datum/supply_pack/nanotrasen/supply/minergear + name = "Shaft miner equipment" + contains = list( + /obj/item/storage/backpack/industrial, + /obj/item/storage/backpack/satchel/eng, + /obj/item/clothing/suit/storage/hooded/wintercoat/miner, + /obj/item/radio/headset/headset_cargo, + /obj/item/clothing/under/rank/miner, + /obj/item/clothing/gloves/black, + /obj/item/clothing/shoes/black, + /obj/item/atmos_analyzer, + /obj/item/storage/bag/ore, + /obj/item/flashlight/lantern, + /obj/item/shovel, + /obj/item/pickaxe, + /obj/item/mining_scanner, + /obj/item/clothing/glasses/material, + /obj/item/clothing/glasses/meson, + ) + worth = 350 + container_type = /obj/structure/closet/crate/secure/corporate/grayson + +/datum/supply_pack/nanotrasen/supply/mule + name = "Mulebot Crate" + contains = list() + worth = 500 + container_type = /obj/structure/largecrate/animal/mulebot + container_name = "Mulebot Crate" + +//Culture Update +/datum/supply_pack/nanotrasen/misc/mining_tyrmalin + name = "Tyrmalin Mining Crate" + contains = list( + /obj/item/melee/thermalcutter = 1, + /obj/item/pickaxe/tyrmalin = 2, + /obj/item/grenade/explosive/ied/tyrmalin = 2, + ) + worth = 250 + container_type = /obj/structure/closet/crate/secure/gear + container_name = "Tyrmalin Mining crate" + container_access = list( + /datum/access/station/supply/mining, + ) + +/datum/supply_pack/nanotrasen/misc/breathing_nitrogen + name = "Emergency Nitrogen Supplies" + contains = list( + /obj/item/tank/emergency/nitrogen = 2, + /obj/item/tank/emergency/nitrogen/double = 1, + /obj/item/clothing/mask/gas/opaque = 3, + ) + worth = 150 + container_type = /obj/structure/closet/crate/corporate/unathi + container_name = "Emergency Nitrogen Supplies" diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/vehicles.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/vehicles.dm new file mode 100644 index 000000000000..3a46f4cef3d4 --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/vehicles.dm @@ -0,0 +1,86 @@ +/datum/supply_pack/nanotrasen/vehicles + category = "Vehicles" + +/datum/supply_pack/nanotrasen/vehicles/dune_buggy + name = "Exploration Dune Buggy" + contains = list( + /obj/vehicle_old/train/rover/engine/dunebuggy, + ) + worth = 1250 + container_type = /obj/structure/largecrate + container_name = "Exploration Dune Buggy Crate" + + +/datum/supply_pack/nanotrasen/vehicles/bike + name = "Spacebike Crate" + contains = list( + /obj/structure/vehiclecage/spacebike, + ) + worth = 1250 + container_type = /obj/structure/largecrate/vehicle + container_name = "spacebike crate" + +/datum/supply_pack/nanotrasen/vehicles/quadbike + name = "ATV Crate" + contains = list( + /obj/vehicle/ridden/quadbike/random, + /obj/item/key/quadbike, + ) + worth = 1250 + container_type = /obj/structure/largecrate/vehicle + container_name = "ATV crate" + +/datum/supply_pack/nanotrasen/vehicles/skatepack1 + name = "Beginner Skateboard Pack" + contains = list( + /obj/vehicle_old/skateboard/beginner = 3, + /obj/item/clothing/head/helmet/bike_helmet/random = 3, + ) + container_type = /obj/structure/closet/crate + container_name = "Skateboard Crate - Beginner" + +/datum/supply_pack/nanotrasen/vehicles/skatepack2 + name = "Professional Skateboard Pack" + contains = list( + /obj/vehicle_old/skateboard/pro = 2, + /obj/item/clothing/head/helmet/bike_helmet/random = 2, + ) + container_type = /obj/structure/closet/crate + container_name = "Skateboard Crate - Professional" + +/datum/supply_pack/nanotrasen/vehicles/skatepack3 + name = "Hoverboard Pack" + contains = list( + /obj/vehicle_old/skateboard/hoverboard = 2, + /obj/item/clothing/head/helmet/bike_helmet/random = 2, + ) + container_type = /obj/structure/closet/crate + container_name = "Hoverboard Crate" + +/datum/supply_pack/nanotrasen/vehicles/rover + name = "NT Humvee" + contains = list( + /obj/vehicle_old/train/rover/engine, + ) + worth = 1500 + container_type = /obj/structure/largecrate + container_name = "NT Humvee Crate" + + +/datum/supply_pack/nanotrasen/vehicles/cargotrain + name = "Cargo Train Tug" + contains = list( + /obj/vehicle_old/train/engine, + ) + worth = 1500 + container_type = /obj/structure/largecrate + container_name = "Cargo Train Tug Crate" + +/datum/supply_pack/nanotrasen/vehicles/cargotrailer + name = "Cargo Train Trolley" + contains = list( + /obj/vehicle_old/train/trolley, + ) + worth = 500 + container_type = /obj/structure/largecrate + container_name = "Cargo Train Trolley Crate" diff --git a/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/voidsuits.dm b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/voidsuits.dm new file mode 100644 index 000000000000..1a3c1918021d --- /dev/null +++ b/code/game/content/factions/corporations/nanotrasen/nanotrasen-supply/voidsuits.dm @@ -0,0 +1,224 @@ +/datum/supply_pack/nanotrasen/voidsuit + category = "Voidsuits" + +/** + * for single types of voidsuits + * + * * voidsuit & its helmet must have worth set + * * voidsuit must have its helmet_type var set + */ +/datum/supply_pack/nanotrasen/voidsuit/single + var/voidsuit_type = /obj/item/clothing/suit/space/void + var/amount = 1 + /// if it doesn't start with boots, spawn boots in the package + var/automatically_include_boots = TRUE + /// if it doesn't start with an oxygen tank or cooler, spawn life support in the package + var/automatically_include_life_support = TRUE + +/datum/supply_pack/nanotrasen/voidsuit/single/populate() + ..() + var/obj/item/clothing/suit/space/void/casted = voidsuit_type + contains[voidsuit_type] = amount + contains[voidsuit_type] + + if(!initial(casted.starts_with_helmet)) + contains[initial(casted.helmet_type)] = amount + contains[initial(casted.helmet_type)] + if(!initial(casted.starts_with_boots) && automatically_include_boots) + contains[initial(casted.boots_type)] = amount + contains[initial(casted.boots_type)] + if(!initial(casted.starts_with_life_support) && automatically_include_life_support) + contains[initial(casted.tank_type)] = amount + contains[initial(casted.tank_type)] + +/datum/supply_pack/nanotrasen/voidsuit/single/atmos + name = "Atmospherics voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/atmos + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/aether + container_name = "atmospherics voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/atmos/alt + name = "Heavy Duty Atmospherics voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/atmos/alt + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/aether + container_name = "heavy duty atmospherics voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/engineering + name = "Engineering voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/engineering + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Engineering voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/engineering/construction + name = "Engineering Construction voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/engineering/construction + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Engineering Construction voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/engineering/hazmat + name = "Engineering Hazmat voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/engineering/hazmat + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/aether + container_name = "Engineering Hazmat voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/engineering/alt + name = "Reinforced Engineering voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/engineering/alt + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/aether + container_name = "Reinforced Engineering voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/medical + name = "Medical voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/medical + amount = 2 + container_type = /obj/structure/closet/crate/secure + container_name = "Medical voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/medical/emt + name = "Medical EMT voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/medical/emt + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Medical EMT voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/medical/bio + name = "Medical Biohazard voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/medical/bio + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Medical Biohazard voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/medical/alt + name = "Vey-Med Medical voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/medical/alt + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/veymed + container_name = "Vey-Med Medical voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/medical/alt2 + name = "Vey-Med Plated Medical voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/medical/alt_plated + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/veymed + container_name = "Vey-Med Medical voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/security + name = "Security voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/security + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Security voidsuit crate" + container_access = list( + /datum/access/station/security/equipment, + ) + +/datum/supply_pack/nanotrasen/voidsuit/single/security/crowd + name = "Security Crowd Control voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/security/riot + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Security Crowd Control voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/security/alt + name = "Security EVA Riot voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/security/alt + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Security EVA Riot voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/supply + name = "Mining voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/mining + amount = 2 + container_name = "Mining voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/supply/alt + name = "Frontier Mining voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/mining/alt + amount = 2 + container_name = "Frontier Mining voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/zaddat + name = "Zaddat Shroud" + voidsuit_type = /obj/item/clothing/suit/space/void/zaddat + amount = 1 + +/datum/supply_pack/nanotrasen/voidsuit/single/supply + name = "Mining voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/mining + amount = 3 +/datum/supply_pack/nanotrasen/voidsuit/single/explorer + name = "Exploration voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/exploration + amount = 3 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Exploration voidsuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/pilot + name = "Pilot voidsuits" + voidsuit_type = /obj/item/clothing/suit/space/void/pilot + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Pilot voidsuit crate" + +//Cryosuits +/datum/supply_pack/nanotrasen/voidsuit/single/cryosec + name = "Security cryosuits" + voidsuit_type = /obj/item/clothing/suit/space/void/security/cryo + amount = 1 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Security cryosuit crate" + container_access = list( + /datum/access/station/security/equipment, + ) + +/datum/supply_pack/nanotrasen/voidsuit/single/cryoengi + name = "Engineering cryosuits" + voidsuit_type = /obj/item/clothing/suit/space/void/engineering/cryo + amount = 1 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Engineering cryosuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/cryoatmos + name = "Atmospherics cryosuits" + voidsuit_type = /obj/item/clothing/suit/space/void/atmos/cryo + amount = 1 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Atmospherics cryosuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/cryomining + name = "Mining cryosuits" + voidsuit_type = /obj/item/clothing/suit/space/void/mining/cryo + amount = 1 + container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen + container_name = "Mining cryosuit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/odst + name = "Hephaestus Icarus Combat Suits" + voidsuit_type = /obj/item/clothing/suit/space/void/odst + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/heph + container_name = "Icarus Combat Suit crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/odst_med + name = "Hephaestus Icarus Medic Suits" + voidsuit_type = /obj/item/clothing/suit/space/void/odst_med + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/heph + container_name = "Hephaestheus Icarus Medic crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/odst_eng + name = "Hephaestus Icarus Engineer Suits" + voidsuit_type = /obj/item/clothing/suit/space/void/odst_eng + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/heph + container_name = "Hephaestheus Icarus Engineer crate" + +/datum/supply_pack/nanotrasen/voidsuit/single/odst_exp + name = "Hephaestus Icarus Frontier Suits" + voidsuit_type = /obj/item/clothing/suit/space/void/odst_exp + amount = 2 + container_type = /obj/structure/closet/crate/secure/corporate/heph + container_name = "Hephaestheus Icarus Frontier crate" diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm index b8465c5db694..00e2d24145e2 100644 --- a/code/game/machinery/computer/supply.dm +++ b/code/game/machinery/computer/supply.dm @@ -111,15 +111,15 @@ else shuttle["mode"] = SUP_SHUTTLE_ERROR - for(var/pack_name in SSsupply.supply_pack) - var/datum/supply_pack/P = SSsupply.supply_pack[pack_name] - if(P.group == active_category) + for(var/pack_name in SSsupply.legacy_supply_packs) + var/datum/supply_pack/P = SSsupply.legacy_supply_packs[pack_name] + if(P.category == active_category) var/list/pack = list( "name" = P.name, - "cost" = P.cost, - "contraband" = P.contraband, - "manifest" = P.flattened_nanoui_manifest(), - "random" = P.is_random(), + "cost" = P.legacy_cost, + "contraband" = P.legacy_contraband, + "manifest" = P.nanoui_manifest_list(), + "random" = P.nanoui_is_random() && P.lazy_gacha_amount, "expand" = 0, "ref" = "\ref[P]" ) @@ -167,7 +167,7 @@ data["order_auth"] = (authorization & SUP_ACCEPT_ORDERS) // Whether this ui is permitted to accept/deny requested orders data["shuttle"] = shuttle_status data["supply_points"] = SSsupply.points - data["categories"] = all_supply_groups + data["categories"] = SSsupply.legacy_supply_categories data["active_category"] = active_category data["supply_packs"] = pack_list data["orders"] = orders @@ -262,7 +262,7 @@ reqform.info += "RANK: [idrank]
" reqform.info += "REASON: [reason]
" reqform.info += "SUPPLY CRATE TYPE: [S.name]
" - reqform.info += "ACCESS RESTRICTION: [get_access_desc(S.access)]
" + reqform.info += "ACCESS RESTRICTION: [get_access_desc(S.container_access | S.container_one_access)]
" reqform.info += S.get_html_manifest().Join("") reqform.info += "
" reqform.info += "STAMP BELOW TO APPROVE THIS REQUISITION:
" diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 92e9e54feacc..7d705590927a 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -14,6 +14,7 @@ pass_flags_self = ATOM_PASS_TABLE integrity = 200 integrity_max = 200 + worth_intrinsic = 150 var/locked = FALSE // req_access = list(ACCESS_ENGINEERING_MAINT) diff --git a/code/game/machinery/oxygen_pump.dm b/code/game/machinery/oxygen_pump.dm index 3f1e3fcba9cd..05cdf8d22a0d 100644 --- a/code/game/machinery/oxygen_pump.dm +++ b/code/game/machinery/oxygen_pump.dm @@ -250,6 +250,8 @@ anchored = FALSE density = TRUE + worth_intrinsic = 250 + mask_type = /obj/item/clothing/mask/gas/clear var/last_area = null @@ -278,6 +280,8 @@ name = "portable patient stabilizer" desc = "A portable oxygen pump with a retractable mask used for stabilizing patients in the field." + worth_intrinsic = 500 + /obj/machinery/oxygen_pump/mobile/stabilizer/process(delta_time) if(breather) if(!can_apply_to_target(breather)) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 5677ee85cd0a..57c717216504 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -4,6 +4,7 @@ icon_state = "pipe_d" density = TRUE anchored = TRUE + worth_intrinsic = 500 var/unwrenched = FALSE var/wait = FALSE ///The default layer selected on the machine. diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 7383b5c06e96..6dad1ded03ec 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -190,6 +190,8 @@ density = 1 anchored = 0 + worth_intrinsic = 500 + use_power = USE_POWER_OFF //is powered directly from cables active_power_usage = 150 KILOWATTS //BIG POWER idle_power_usage = 500 diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index c18140f7309d..692372a5ff4b 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -19,6 +19,7 @@ throw_force = 5 throw_speed = 3 throw_range = 15 + worth_intrinsic = 45 var/build_path = null var/board_type = new /datum/frame/frame_types/computer /** diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index 97f760894863..a54ee11a41e7 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -47,6 +47,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "deliverycrate5" item_state = "table_parts" + worth_intrinsic = 200 w_class = WEIGHT_CLASS_HUGE /obj/item/stolenpackage/attack_self(mob/user) @@ -175,6 +176,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "deliverycrate5" item_state = "table_parts" + worth_intrinsic = 350 w_class = WEIGHT_CLASS_HUGE /obj/item/stolenpackageplus/attack_self(mob/user) @@ -241,6 +243,7 @@ icon_state = "deliverycrate5" item_state = "table_parts" w_class = WEIGHT_CLASS_HUGE + worth_intrinsic = 400 /obj/item/mechasalvage/attack_self(mob/user) . = ..() diff --git a/code/game/objects/items/devices/debugger.dm b/code/game/objects/items/devices/debugger.dm index 2fb48820002d..206d7adca918 100644 --- a/code/game/objects/items/devices/debugger.dm +++ b/code/game/objects/items/devices/debugger.dm @@ -21,25 +21,25 @@ origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1) var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage -/obj/item/debugger/is_used_on(obj/O, mob/user) - if(istype(O, /obj/machinery/power/apc)) - var/obj/machinery/power/apc/A = O - if(A.emagged || A.hacker) - to_chat(user, "There is a software error with the device.") - else - to_chat(user, "The device's software appears to be fine.") - return 1 - if(istype(O, /obj/machinery/door)) - var/obj/machinery/door/D = O - if(D.operating == -1) - to_chat(user, "There is a software error with the device.") - else - to_chat(user, "The device's software appears to be fine.") - return 1 - else if(istype(O, /obj/machinery)) - var/obj/machinery/A = O - if(A.emagged) - to_chat(user, "There is a software error with the device.") - else - to_chat(user, "The device's software appears to be fine.") - return 1 +// /obj/item/debugger/is_used_on(obj/O, mob/user) +// if(istype(O, /obj/machinery/power/apc)) +// var/obj/machinery/power/apc/A = O +// if(A.emagged || A.hacker) +// to_chat(user, "There is a software error with the device.") +// else +// to_chat(user, "The device's software appears to be fine.") +// return 1 +// if(istype(O, /obj/machinery/door)) +// var/obj/machinery/door/D = O +// if(D.operating == -1) +// to_chat(user, "There is a software error with the device.") +// else +// to_chat(user, "The device's software appears to be fine.") +// return 1 +// else if(istype(O, /obj/machinery)) +// var/obj/machinery/A = O +// if(A.emagged) +// to_chat(user, "There is a software error with the device.") +// else +// to_chat(user, "The device's software appears to be fine.") +// return 1 diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm index ca492d435468..18afd34b01ff 100644 --- a/code/game/objects/items/devices/defib.dm +++ b/code/game/objects/items/devices/defib.dm @@ -16,6 +16,7 @@ w_class = WEIGHT_CLASS_BULKY origin_tech = list(TECH_BIO = 4, TECH_POWER = 2) item_action_name = "Remove/Replace Paddles" + worth_intrinsic = 300 var/obj/item/shockpaddles/linked/paddles var/obj/item/cell/bcell = null @@ -165,6 +166,7 @@ w_class = WEIGHT_CLASS_NORMAL slot_flags = SLOT_BELT origin_tech = list(TECH_BIO = 5, TECH_POWER = 3) + worth_intrinsic = 500 /obj/item/defib_kit/compact/loaded bcell = /obj/item/cell/high @@ -627,6 +629,7 @@ item_state = "defibunit" // item_state = "jumperunit" paddles = /obj/item/shockpaddles/linked/jumper + worth_intrinsic = 150 /obj/item/defib_kit/jumper_kit/loaded bcell = /obj/item/cell/high diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index ac803e703226..396ee6999be7 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -9,6 +9,7 @@ throw_speed = 4 throw_range = 10 origin_tech = list(TECH_MAGNET = 2, TECH_COMBAT = 1) + worth_intrinsic = 45 var/times_used = 0 //Number of times it's been used. var/broken = FALSE //Is the flash burnt out? diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index f991a4ca8bd9..0c5736fac96a 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -8,6 +8,7 @@ materials_base = list(MAT_STEEL = 50, MAT_GLASS = 20) item_action_name = "Toggle Flashlight" light_wedge = LIGHT_WIDE + worth_intrinsic = 25 var/on = FALSE /// Luminosity when on diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index c590c9c5d025..a2712ccf6d4f 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -26,6 +26,7 @@ slot_flags = SLOT_BELT origin_tech = list(TECH_MATERIAL = 2, TECH_BLUESPACE = 2, TECH_MAGNET = 1) materials_base = list(MAT_STEEL = 500) + worth_intrinsic = 40 /// our GPS tag var/gps_tag = "GEN0" diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 6c69a0934cd1..2595a5787303 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -9,6 +9,7 @@ var/functioning = TRUE var/identifier origin_tech = list(TECH_BLUESPACE = 1) + worth_intrinsic = 50 GLOBAL_LIST_BOILERPLATE(all_beacons, /obj/item/radio/beacon) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 8363b56abbae..83dd062a0ff3 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -8,6 +8,7 @@ //lefthand_file = 'icons/mob/inhands/weapons/bombs_lefthand.dmi' //righthand_file = 'icons/mob/inhands/weapons/bombs_righthand.dmi' w_class = WEIGHT_CLASS_BULKY + worth_intrinsic = 250 var/obj/item/tank/tank_one var/obj/item/tank/tank_two diff --git a/code/game/objects/items/gunbox.dm b/code/game/objects/items/gunbox.dm index 2561a727adbb..ebfbe0ad04b2 100644 --- a/code/game/objects/items/gunbox.dm +++ b/code/game/objects/items/gunbox.dm @@ -3,6 +3,7 @@ desc = "A secure box containing a security LTL sidearm." icon = 'icons/obj/storage.dmi' icon_state = "gunbox" + worth_intrinsic = 350 /obj/item/gunbox/attack_self(mob/user) var/list/options = list() @@ -23,6 +24,7 @@ desc = "A secure box containing a lethal security sidearm." icon = 'icons/obj/storage.dmi' icon_state = "gunbox" + worth_intrinsic = 450 /obj/item/gunbox/lethal/attack_self(mob/user) var/list/options = list() diff --git a/code/game/objects/items/inflatables.dm b/code/game/objects/items/inflatables.dm index a3e6c8c5b5a6..0f8f5be29357 100644 --- a/code/game/objects/items/inflatables.dm +++ b/code/game/objects/items/inflatables.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/inflatable.dmi' icon_state = "folded_wall" w_class = WEIGHT_CLASS_NORMAL + worth_intrinsic = 15 var/deploy_path = /obj/structure/inflatable /obj/item/inflatable/attack_self(mob/user) @@ -38,6 +39,7 @@ desc = "A folded membrane which rapidly expands into a simple door on activation." icon = 'icons/obj/inflatable.dmi' icon_state = "folded_door" + worth_intrinsic = 25 deploy_path = /obj/structure/inflatable/door /obj/item/inflatable/torn @@ -70,12 +72,8 @@ max_combined_volume = WEIGHT_VOLUME_NORMAL * 7 insertion_whitelist = list(/obj/item/inflatable) -/obj/item/storage/briefcase/inflatable/legacy_spawn_contents() - . = ..() - new /obj/item/inflatable/door(src) - new /obj/item/inflatable/door(src) - new /obj/item/inflatable/door(src) - new /obj/item/inflatable(src) - new /obj/item/inflatable(src) - new /obj/item/inflatable(src) - new /obj/item/inflatable(src) + starts_with = list( + /obj/item/inflatable = 4, + /obj/item/inflatable/door = 3, + ) + diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 3e52376b9c04..bde4383c2036 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -28,6 +28,8 @@ /** * Items that can stack, tracking the number of which is in it + * + * * [worth_intrinsic] is the only thing used on this path for detecting economic value. Normal get_worth() is not considered. */ /obj/item/stack gender = PLURAL diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 09798675f1cf..489f27b412b2 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -26,6 +26,8 @@ allow_quick_empty = TRUE allow_quick_empty_via_attack_self = TRUE + worth_intrinsic = 75 + var/auto_fit_weight_class_to_largest_contained = TRUE /obj/item/storage/bag/Entered(atom/movable/AM, atom/oldLoc) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index fd39c5cefdb0..4e4b885d9c67 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -12,6 +12,7 @@ equip_sound = 'sound/items/toolbelt_equip.ogg' drop_sound = 'sound/items/drop/toolbelt.ogg' pickup_sound = 'sound/items/pickup/toolbelt.ogg' + worth_intrinsic = 50 var/show_above_suit = 0 /obj/item/storage/belt/verb/toggle_layer() @@ -409,6 +410,7 @@ icon_state = "janitor" max_items = 7 max_single_weight_class = WEIGHT_CLASS_NORMAL + worth_intrinsic = 35 insertion_whitelist = list( /obj/item/clothing/glasses, /obj/item/flashlight, @@ -432,6 +434,7 @@ name = "excavation gear-belt" desc = "Can hold various excavation gear." icon_state = "gear" + worth_intrinsic = 65 insertion_whitelist = list( /obj/item/storage/box/samplebags, /obj/item/core_sampler, diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 9de90fb2eca4..517fd0870f0a 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -29,6 +29,7 @@ max_combined_volume = STORAGE_VOLUME_BOX drop_sound = 'sound/items/drop/cardboardbox.ogg' pickup_sound = 'sound/items/pickup/cardboardbox.ogg' + worth_intrinsic = 25 /// dynamic state support var/dynamic_state = TRUE @@ -121,6 +122,8 @@ /obj/item/dnainjector/m2h = 3 ) +// todo: all this should be special ammo magazines or something i hate abusing box-code lmao + /obj/item/storage/box/blanks name = "box of blank shells" desc = "It has a picture of a gun and several warning symbols on the front." @@ -482,8 +485,8 @@ icon_state = "lightmixed" starts_with = list( /obj/item/light/tube = 16, - /obj/item/light/bulb = 8 - ) + /obj/item/light/bulb = 8, + ) /obj/item/storage/box/lights/fairy name = "box of replacement fairy bulbs" @@ -501,8 +504,8 @@ /obj/item/light/bulb/yellow = 4, /obj/item/light/bulb/green = 4, /obj/item/light/bulb/blue = 4, - /obj/item/light/bulb/purple = 4 - ) + /obj/item/light/bulb/purple = 4, + ) /obj/item/storage/box/lights/bulbs_neon name = "box of neon bulbs" @@ -513,8 +516,8 @@ /obj/item/light/bulb/neon_blue = 6, /obj/item/light/bulb/neon_green = 6, /obj/item/light/bulb/neon_yellow = 6, - /obj/item/light/bulb/neon_white = 6 - ) + /obj/item/light/bulb/neon_white = 6, + ) /obj/item/storage/box/lights/tubes_colored name = "box of colored tubes" @@ -525,8 +528,8 @@ /obj/item/light/tube/yellow = 4, /obj/item/light/tube/green = 4, /obj/item/light/tube/blue = 4, - /obj/item/light/tube/purple = 4 - ) + /obj/item/light/tube/purple = 4, + ) /obj/item/storage/box/lights/tubes_neon name = "box of neon tubes" @@ -537,8 +540,8 @@ /obj/item/light/tube/neon_blue = 6, /obj/item/light/tube/neon_green = 6, /obj/item/light/tube/neon_yellow = 6, - /obj/item/light/tube/neon_white = 6 - ) + /obj/item/light/tube/neon_white = 6, + ) /obj/item/storage/box/lights/mixed_colored name = "box of colored lights" @@ -555,8 +558,8 @@ /obj/item/light/bulb/yellow = 2, /obj/item/light/bulb/green = 2, /obj/item/light/bulb/blue = 2, - /obj/item/light/bulb/purple = 2 - ) + /obj/item/light/bulb/purple = 2, + ) /obj/item/storage/box/lights/mixed_neon name = "box of neon lights" @@ -572,8 +575,8 @@ /obj/item/light/bulb/neon_blue = 3, /obj/item/light/bulb/neon_green = 3, /obj/item/light/bulb/neon_yellow = 3, - /obj/item/light/bulb/neon_white = 3 - ) + /obj/item/light/bulb/neon_white = 3, + ) /obj/item/storage/box/freezer name = "portable freezer" @@ -586,6 +589,7 @@ insertion_whitelist = list(/obj/item/organ) max_combined_volume = WEIGHT_VOLUME_NORMAL * 5 // Formally 21. Odd numbers are bad. allow_mass_gather = TRUE // for picking up broken bulbs, not that most people will try + worth_intrinsic = 150 /obj/item/storage/box/freezer/Entered(var/atom/movable/AM) if(istype(AM, /obj/item/organ)) diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 394a254ab05f..ab6f5c2c6c7a 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -46,11 +46,14 @@ /// set to prevent us from spawning starts_with var/empty = FALSE -/obj/item/storage/Initialize(mapload) +/obj/item/storage/Initialize(mapload, empty) . = ..() initialize_storage() - spawn_contents() - legacy_spawn_contents() + if(!empty) + spawn_contents() + legacy_spawn_contents() + else + starts_with = null /** * Make sure to set [worth_dynamic] to TRUE if this does more than spawning what's in starts_with. diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 8e5d3de0de4f..7121bb3e5829 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -17,6 +17,8 @@ throw_range = 5 w_class = WEIGHT_CLASS_SMALL + worth_intrinsic = 35 + //Cost to make in the autolathe materials_base = list(MAT_STEEL = 70, MAT_GLASS = 30) @@ -575,6 +577,7 @@ icon_state = "arcwelder" max_fuel = 0 //We'll handle the consumption later. item_state = "ewelder" + worth_intrinsic = 70 var/obj/item/cell/power_supply //What type of power cell this uses var/charge_cost = 24 //The rough equivalent of 1 unit of fuel, based on us wanting 10 welds per battery var/cell_type = /obj/item/cell/device diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index c73105a24b3d..588965be9ea6 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -215,6 +215,7 @@ desc = "Used for clearing rooms of living things." path = 1 stage = 2 + worth_intrinsic = 150 /obj/item/grenade/chem_grenade/incendiary/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/weapons/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm index 19157af633db..47f1133a941a 100644 --- a/code/game/objects/items/weapons/grenades/emgrenade.dm +++ b/code/game/objects/items/weapons/grenades/emgrenade.dm @@ -3,6 +3,7 @@ icon_state = "emp" item_state = "empgrenade" origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3) + worth_intrinsic = 70 var/emp_heavy = 2 var/emp_med = 4 var/emp_light = 7 @@ -18,6 +19,7 @@ name = "low yield emp grenade" desc = "A weaker variant of the EMP grenade" icon_state = "lyemp" + worth_intrinsic = 35 origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3) emp_heavy = 1 emp_med = 2 diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index bbd008ea76d4..7018d5f8d96f 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -3,6 +3,7 @@ icon_state = "flashbang" item_state = "flashbang" origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 1) + worth_intrinsic = 35 var/max_range = 10 //The maximum range possible, including species effect mods. Cuts off at 7 for normal humans. Should be 3 higher than your intended target range for affecting normal humans. var/banglet = 0 diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 416aa4f518d9..764e4e6aa75b 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -6,6 +6,7 @@ det_time = 20 item_state = "flashbang" slot_flags = SLOT_BELT + worth_intrinsic = 50 var/datum/effect_system/smoke_spread/bad/smoke var/smoke_color var/smoke_strength = 8 diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 8faf835e2a90..e59858133bc5 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -13,6 +13,7 @@ materials_base = list(MAT_STEEL = 500) drop_sound = 'sound/items/drop/accessory.ogg' pickup_sound = 'sound/items/pickup/accessory.ogg' + worth_intrinsic = 10 var/elastic var/dispenser = 0 var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes @@ -153,6 +154,8 @@ var/last_chew = 0 cuff_sound = 'sound/weapons/cablecuff.ogg' cuff_type = "cable restraints" elastic = 0 //citadel change, why would cable be better than actual handcuffs? who knows. + worth_intrinsic = 10 + economic_category_obj = ECONOMIC_CATEGORY_OBJ_SCRAP /obj/item/handcuffs/cable/red color = "#DD0000" diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 268af9819fda..b036965c9baf 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -70,6 +70,7 @@ origin_tech = list(TECH_MATERIAL = 2) materials_base = list(MAT_GLASS = 7500, MAT_STEEL = 1000) attack_verb = list("shoved", "bashed") + worth_intrinsic = 300 var/cooldown = 0 //shield bash cooldown. based on world.time /obj/item/shield/riot/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") @@ -305,6 +306,7 @@ SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_melee.dmi', SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi', ) + worth_intrinsic = 500 // op as balls /obj/item/shield/energy/handle_shield(mob/user) if(!active) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 885ad0a05203..ac7800a0ec4c 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -17,6 +17,7 @@ pickup_sound = 'sound/items/pickup/metalweapon.ogg' origin_tech = list(TECH_COMBAT = 2) attack_verb = list("beaten") + worth_intrinsic = 75 var/lightcolor = "#FF6A00" var/stunforce = 0 var/agonyforce = 60 @@ -30,6 +31,11 @@ . = ..() update_icon() +/obj/item/melee/baton/worth_contents(flags) + . = ..() + if(bcell) + . += bcell + /obj/item/melee/baton/get_cell(inducer) return bcell diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tank.dm similarity index 98% rename from code/game/objects/items/weapons/tanks/tanks.dm rename to code/game/objects/items/weapons/tanks/tank.dm index 68f8049127c8..4a3291e1b993 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tank.dm @@ -42,6 +42,8 @@ var/list/global/tank_gauge_cache = list() var/leaking = 0 var/wired = 0 + worth_intrinsic = 50 + description_info = "These tanks are utilised to store any of the various types of gaseous substances. \ They can be attached to various portable atmospheric devices to be filled or emptied.
\
\ @@ -84,6 +86,13 @@ var/list/global/tank_gauge_cache = list() . = ..() +/obj/item/tank/get_containing_worth(flags) + . = ..() + var/list/gas = air_contents.gas + for(var/id in gas) + var/datum/gas/gas_datum = global.gas_data.gases[id] + . += gas_datum.worth * gas[id] + /obj/item/tank/examine(mob/user, dist) . = ..() if(.) diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index cbb62e971cb6..88e1f645ef57 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -84,6 +84,7 @@ icon_state = "phoron" gauge_icon = null slot_flags = null //they have no straps! + worth_intrinsic = 75 // heavy duty /obj/item/tank/phoron/Initialize(mapload) . = ..() @@ -142,6 +143,7 @@ damage_force = 4 distribute_pressure = ONE_ATMOSPHERE*O2STANDARD volume = 2 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) + worth_intrinsic = 25 /obj/item/tank/emergency/oxygen name = "emergency oxygen tank" @@ -167,6 +169,7 @@ icon_state = "emergency_engi" volume = 6 gauge_cap = 3 + worth_intrinsic = 50 /obj/item/tank/emergency/oxygen/double name = "double emergency oxygen tank" @@ -175,6 +178,7 @@ gauge_icon = "indicator_emergency_double" volume = 10 gauge_cap = 3 + worth_intrinsic = 75 /obj/item/tank/stasis/oxygen // Stasis bags need to have initial pressure within safe bounds for human atmospheric pressure (NOT breath pressure) name = "stasis oxygen tank" diff --git a/code/game/objects/items/weapons/tanks/tank_types/shipment.dm b/code/game/objects/items/weapons/tanks/tank_types/shipment.dm new file mode 100644 index 000000000000..1fe6669021af --- /dev/null +++ b/code/game/objects/items/weapons/tanks/tank_types/shipment.dm @@ -0,0 +1,14 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +/** + * Used for supply shipments + */ +/obj/item/tank/shipment + name = "logistics tank" + desc = "A heavy duty tank used to ship gases in logistics settings." + + // todo: sprite + + worth_intrinsic = 20 + volume = 250 diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 1d089502a53d..afa68ab234f6 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -19,8 +19,10 @@ //? Access - see [modules/jobs/access.dm] /// If set, all of these accesses are needed to access this object. + // todo: getter / setter, enforced cached & deduped lists var/list/req_access /// If set, at least one of these accesses are needed to access this object. + // todo: getter / setter, enforced cached & deduped lists var/list/req_one_access //? Climbing @@ -57,9 +59,30 @@ /// contributes to depth when we're on a turf var/depth_projected = FALSE - //? Economy + //* Economy *// /// economic category for objects var/economic_category_obj = ECONOMIC_CATEGORY_OBJ_DEFAULT + /// intrinsic worth without accounting containing reagents / materials - applies in static and dynamic mode. + var/worth_intrinsic = 0 + /// intrinsic elasticity as factor, 2 = 2x easy to inflate market + /// + /// * set this to a multiple of WORTH_ELASTICITY_DEFAULT if possible. + var/worth_elasticity = WORTH_ELASTICITY_DEFAULT + /// default worth flags to use when buying + var/worth_buy_flags = GET_WORTH_INTRINSIC | GET_WORTH_CONTAINING + /// default worth flags to use when selling + var/worth_sell_flags = GET_WORTH_INTRINSIC | GET_WORTH_CONTAINING + /** + * * DANGER * - do not touch this variable unless you know what you are doing. + * + * This signifies that procs have a non-negligible randomization on a *freshly-spawned* instance of this object. + * This is not the case for most closets / lockers / crates / storage that spawn with items. + * In those cases, use the other variables to control its static worth. + * + * This means that things like cargo should avoid "intuiting" the value of this object + * through initial()'s alone. + */ + var/worth_dynamic = FALSE //? Integrity integrity = 200 @@ -268,7 +291,11 @@ old_turf.unregister_dangerous_object(src) new_turf.register_dangerous_object(src) -/obj/item/proc/is_used_on(obj/O, mob/user) +/obj/worth_contents(flags) + . = ..() + if(obj_storage?.use_worth_containing) + for(var/obj/item/item in obj_storage.contents()) + . += item /obj/proc/updateUsrDialog() if(in_use) diff --git a/code/game/objects/structures/crates_lockers/__closet.dm b/code/game/objects/structures/crates_lockers/__closet.dm index 2ff7861ae679..979cae2af26c 100644 --- a/code/game/objects/structures/crates_lockers/__closet.dm +++ b/code/game/objects/structures/crates_lockers/__closet.dm @@ -9,6 +9,8 @@ layer = UNDER_JUNK_LAYER armor_type = /datum/armor/object/medium + worth_intrinsic = 25 + integrity = 200 integrity_max = 200 diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 8c70b3be3e93..5f5d7baf0312 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/structure/closet/crate name = "crate" desc = "A rectangular steel crate." @@ -11,8 +9,8 @@ use_old_icon_update = TRUE depth_level = 8 armor_type = /datum/armor/object/medium + worth_intrinsic = 45 var/points_per_crate = 5 -// mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? var/rigged = 0 /obj/structure/closet/crate/CanPass(atom/movable/AM, turf/T) @@ -520,6 +518,7 @@ icon_state = "largemetalsecure" redlight = "largemetalr" greenlight = "largemetalg" + worth_intrinsic = 200 //closet_appearance = /singleton/closet_appearance/large_crate/secure diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index e5712db81b72..2413a5fbb816 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "densecrate" density = 1 + worth_intrinsic = 200 var/list/starts_with var/storage_capacity = 2 * MOB_LARGE //This is so that someone can't pack hundreds of items in a locker/crate //then open it in a populated area to crash clients. @@ -107,12 +108,6 @@ desc = "It comes in a box for the consumer's sake. ..How is this lighter?" icon_state = "vehiclecrate" -/obj/structure/largecrate/vehicle/Initialize(mapload) - . = ..() - spawn(1) - for(var/obj/O in contents) - O.update_icon() - /obj/structure/largecrate/vehicle/bike name = "spacebike crate" starts_with = list(/obj/structure/vehiclecage/spacebike) diff --git a/code/game/objects/structures/props/beam_prism.dm b/code/game/objects/structures/props/beam_prism.dm index d73b843a960a..fad0ecd0328f 100644 --- a/code/game/objects/structures/props/beam_prism.dm +++ b/code/game/objects/structures/props/beam_prism.dm @@ -226,6 +226,7 @@ silent = TRUE free_rotate = FALSE anchored = FALSE + worth_intrinsic = 350 /obj/structure/prop/prism/reflector/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier) . = ..() diff --git a/code/game/objects/systems/storage.dm b/code/game/objects/systems/storage.dm index 5c32ef39c8d2..913261e1214f 100644 --- a/code/game/objects/systems/storage.dm +++ b/code/game/objects/systems/storage.dm @@ -33,21 +33,26 @@ /// carry weight mitigation, multiplicative. var/weight_multiply = 1 - //* Deconstruction & Integrity + //* Deconstruction & Integrity *// /// on deconstruct(method), drop on these method flags var/drop_on_deconstruction_methods = ALL /// locks don't work if atom is broken var/lock_nullified_by_atom_break = FALSE - //* Defense + //* Defense *// /// pass EMPs in var/pass_emp_inside = TRUE /// pass EMPs in but weaken them var/pass_emp_weaken = TRUE - //* Filters + //* Economy *// + + /// allow selling stuff in worth intrinsic + var/use_worth_containing = TRUE + + //* Filters *// /// protected var because we want to cache. /// set to a list of typepaths to initialize it at New(). @@ -69,7 +74,7 @@ /// this is so overriding things can be easier. VAR_PROTECTED/list/insertion_allow_typecache - //* Interaction + //* Interaction *// /// insert proposition: 'on', 'in', etc var/insert_preposition = "in" @@ -109,7 +114,7 @@ /// ghosts can always see inside var/always_allow_observer_view = TRUE - //* Limits + //* Limits *// /// if set, limit to a certain volume var/max_combined_volume @@ -122,19 +127,19 @@ /// disallow nesting storage items of same or bigger weight class var/disallow_equal_weight_class_storage_nesting = TRUE - //* Locking + //* Locking *// /// locked storage can't be accessed, unless show() is called with force /// however, you can continue viewing even if it's locked. /// use set_locked() to modify. var/locked = FALSE - //* Mass Operations + //* Mass Operations *// /// mutex to prevent mass operation spam var/mass_operation_interaction_mutex = FALSE - //* Redirection + //* Redirection *// /// When set, we treat this as the real parent object. /// **Warning**: This is an advanced feature. @@ -147,26 +152,29 @@ /// That, however, is too complex and awful, so, we just have a single redirection var now /// if you mess it up, it is not my fault. ~silicons /// + /// * If you use this, you should probably set [use_worth_containing] to FALSE if it isn't logically in here. + /// * If you don't, double (or even infinite) selling can happen. + /// /// todo: this literally doesn't work due to no Reachability hooks. please implement this properly later via reachability signal hooks. var/atom/movable/storage_indirection/indirection - //* Radiation + //* Radiation *// /// pass clean radiation calls inside? var/pass_clean_radiation_inside = FALSE - //* Rendering + //* Rendering *// /// update icon on item change var/update_icon_on_item_change = FALSE - //* State Caches + //* State Caches *// /// cached combined w class var/tmp/cached_combined_weight_class /// cached combined volume var/tmp/cached_combined_volume - //* Sound Effects + //* Sound Effects *// /// open / access sound passed into playsound var/sfx_open = "rustle" diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 1e9502a15dca..b902a0a7c075 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -19,6 +19,7 @@ pickup_sound = 'sound/items/pickup/component.ogg' origin_tech = list(TECH_MAGNET = 1) worn_render_flags = WORN_RENDER_SLOT_NO_RENDER | WORN_RENDER_INHAND_NO_RENDER + worth_intrinsic = 15 var/secured = 1 var/list/attached_overlays = null diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index 82331d03954f..72c7331a1bbc 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -12,6 +12,10 @@ /// gas group - flag var/gas_groups = GAS_GROUP_OTHER + //* Economy *// + /// cost in thaler per mol + var/worth = 0 + //* physics /// Specific heat in J/(mol*K). /// For chemicals that exist in real life this is the specific heat value under constant volume. diff --git a/code/modules/atmospherics/gasmixtures/gas_types/core.dm b/code/modules/atmospherics/gasmixtures/gas_types/core.dm index 41fe6208fd54..ab8a4341076c 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types/core.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types/core.dm @@ -11,6 +11,7 @@ gas_groups = GAS_GROUP_CORE default_tlv = list(16, 19, 70, 100) + worth = 0.05 /datum/gas/nitrogen id = GAS_ID_NITROGEN @@ -22,6 +23,7 @@ gas_groups = GAS_GROUP_CORE default_tlv = list(0, 0, 135, 140) + worth = 0.05 /datum/gas/carbon_dioxide id = GAS_ID_CARBON_DIOXIDE @@ -33,6 +35,7 @@ gas_groups = GAS_GROUP_CORE default_tlv = list(0, 0, 5, 10) + worth = 0.1 /datum/gas/nitrous_oxide id = GAS_ID_NITROUS_OXIDE @@ -47,6 +50,7 @@ gas_groups = GAS_GROUP_CORE default_tlv = list(0, 0, 3, 7) + worth = 0.25 /datum/gas/hydrogen id = GAS_ID_HYDROGEN @@ -58,6 +62,7 @@ gas_groups = GAS_GROUP_CORE default_tlv = list(0, 0, 0.25, 1) + worth = 0.25 /datum/gas/phoron id = GAS_ID_PHORON @@ -80,3 +85,4 @@ gas_groups = GAS_GROUP_CORE default_tlv = list(0, 0, 0.25, 0.5) + worth = 0.35 diff --git a/code/modules/atmospherics/gasmixtures/gas_types_hardcoded.dm b/code/modules/atmospherics/gasmixtures/gas_types_hardcoded.dm index 01e599794590..86eb5fd29bd3 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types_hardcoded.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types_hardcoded.dm @@ -7,6 +7,8 @@ gas_flags = GAS_FLAG_FUEL + worth = 1 + //The following is partially stolen from Nebula //I am not rewriting our handling of air for this, at least for now. /datum/gas/helium @@ -17,6 +19,8 @@ gas_flags = GAS_FLAG_FUSION_FUEL + worth = 1 + /datum/gas/carbon_monoxide id = GAS_ID_CARBON_MONOXIDE name = "Carbon Monoxide" @@ -29,6 +33,8 @@ //taste_description = "stale air" //metabolism = 0.05 // As with helium. + worth = 1 + /datum/gas/methyl_bromide id = GAS_ID_METHYL_BROMIDE name = "Methyl Bromide" @@ -43,6 +49,8 @@ ) value = 0.25*/ + worth = 1 + /datum/gas/nitrodioxide id = GAS_ID_NITROGEN_DIOXIDE name = "Nitrogen Dioxide" @@ -53,6 +61,8 @@ //gas_symbol_html = "NO2" //gas_symbol = "NO2" + worth = 1 + /datum/gas/nitricoxide id = GAS_ID_NITRIC_OXIDE name = "Nitric Oxide" @@ -62,6 +72,8 @@ //gas_symbol_html = "NO" //gas_symbol = "NO" + worth = 1 + /datum/gas/methane id = GAS_ID_METHANE name = "Methane" @@ -71,6 +83,8 @@ //gas_symbol_html = "CH4" //gas_symbol = "CH4" + worth = 1 + /datum/gas/argon id = GAS_ID_ARGON name = "Argon" @@ -81,6 +95,8 @@ //gas_symbol = "Ar" //value = 0.25 + worth = 1 + // If narcosis is ever simulated, krypton has a narcotic potency seven times greater than regular airmix. /datum/gas/krypton id = GAS_ID_KRYPTON @@ -91,6 +107,8 @@ //gas_symbol = "Kr" //value = 0.25 + worth = 1 + /datum/gas/neon id = GAS_ID_NEON name = "Neon" @@ -100,6 +118,8 @@ //gas_symbol = "Ne" //value = 0.25 + worth = 1 + /datum/gas/ammonia id = GAS_ID_AMMONIA name = "Ammonia" @@ -115,6 +135,8 @@ //metabolism = REM * 0.5 //overdose = 5 + worth = 1 + /datum/gas/xenon id = GAS_ID_XENON name = "Xenon" @@ -124,6 +146,8 @@ //gas_symbol = "Xe" //value = 0.25 + worth = 1 + /datum/gas/chlorine id = GAS_ID_CHLORINE name = "Chlorine" @@ -146,6 +170,8 @@ gas_reagent_amount = 1 gas_reagent_threshold = 0.5 + worth = 1 + /datum/gas/sulfur_dioxide id = GAS_ID_SULFUR_DIOXIDE name = "Sulfur Dioxide" @@ -158,6 +184,8 @@ /singleton/material/gas/oxygen = 0.5 )*/ + worth = 1 + /datum/gas/tritium id = GAS_ID_TRITIUM name = "Tritium" @@ -169,6 +197,8 @@ gas_symbol_html = "T" gas_symbol = "T"*/ + worth = 1 + /datum/gas/deuterium id = GAS_ID_DEUTERIUM name = "Deuterium" @@ -190,6 +220,8 @@ neutron_absorption = 5 neutron_cross_section = 3*/ + worth = 1 + //Special gas type that are very powerful and shouldnt be avaiable in large portions /datum/gas/vimur id = GAS_ID_VIMUR @@ -199,3 +231,5 @@ visual_overlay = "vimur" visual_threshold = 0.1 + + worth = 3 diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index bd65d68502be..c70bc68b6aa6 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -10,6 +10,10 @@ integrity_max = 300 integrity_failure = 100 w_class = WEIGHT_CLASS_HUGE + materials_base = list( + /datum/material/steel::id = 5 * /datum/material/steel::sheet_amount, + ) + worth_intrinsic = 50 layer = TABLE_LAYER // Above catwalks, hopefully below other things @@ -42,6 +46,13 @@ use_power = USE_POWER_OFF var/update_flag = 0 +/obj/machinery/portable_atmospherics/canister/get_containing_worth(flags) + . = ..() + var/list/gas = air_contents.gas + for(var/id in gas) + var/datum/gas/gas_datum = global.gas_data.gases[id] + . += gas_datum.worth * gas[id] + /obj/machinery/portable_atmospherics/canister/nitrous_oxide name = "Canister: \[N2O\]" icon_state = "redws" diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index fc9ebb05f1fd..dc3fa0c1134e 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -5,6 +5,8 @@ density = 1 w_class = WEIGHT_CLASS_NORMAL + worth_intrinsic = 275 + var/direction_out = 0 //0 = siphoning, 1 = releasing var/target_pressure = ONE_ATMOSPHERE diff --git a/code/modules/cargo/supplypacks/_supplypacks.dm b/code/modules/cargo/supplypacks/_supplypacks.dm deleted file mode 100644 index 6cdee933a28f..000000000000 --- a/code/modules/cargo/supplypacks/_supplypacks.dm +++ /dev/null @@ -1,207 +0,0 @@ -/** - * supplypacks - * these are the "bundle buys" of cargo - * they usually ship in a crate and is used by the main - * cargo system, as opposed to trading, but is perfectly usable - * by anything using the spawn procs. - */ - -//SUPPLY PACKS -//NOTE: only secure crate types use the access var (and are lockable) -//NOTE: hidden packs only show up when the computer has been hacked. -//ANOTER NOTE: Contraband is obtainable through modified supplycomp circuitboards. -//BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle. -//NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points. -//NOTE NOTE: Hidden var is now deprecated, whoever removed support for it should've removed the var altogether - -var/list/all_supply_groups = list("Atmospherics", - "Costumes", - "Engineering", - "Hospitality", - "Hydroponics", - "Materials", - "Medical", - "Miscellaneous", - "Munitions", - "Reagents", - "Reagent Cartridges", - "Recreation", - "Robotics", - "Science", - "Security", - "Supplies", - "Voidsuits", - "Vehicles") - -/datum/supply_pack - var/name - var/cost - - // the container - /// the type of the containier we spawn at - our contained objects will spawn in this. - var/container_type = /obj/structure/closet/crate/plastic - /// the name to set on our container, if any - var/container_name - /// the desc to set on our container, if any - var/container_desc - - // the contained - /// what we contain - list of typepaths associated to count. if no count is associated, it's assumed to be one. - var/list/contains - - var/access - var/one_access = FALSE - var/contraband = 0 - var/group = "Miscellaneous" - -/** - * instance the supply pack at a location. returns the container used. - */ -/datum/supply_pack/proc/Instantiate(atom/loc) - RETURN_TYPE(/atom/movable) - . = InstanceContainer(loc) - SetupContainer(.) - SpawnContents(.) - -/** - * creates our container - */ -/datum/supply_pack/proc/InstanceContainer(atom/loc) - RETURN_TYPE(/atom/movable) - return new container_type(loc) - -/** - * sets up our container, happens before objects are spawned - */ -/datum/supply_pack/proc/SetupContainer(atom/movable/container) - if(container_name) - container.name = container_name - if(container_desc) - container.desc = container_desc - if(isobj(container)) - var/obj/O = container - // only objs have the concept of access - if(access) - if(isnum(access)) - O.req_access = list(access) - else if(islist(access) && one_access) - var/list/L = access // Access var is a plain var, we need a list - O.req_one_access = L.Copy() - O.req_access = null - else if(islist(access) && !one_access) - var/list/L = access - O.req_access = L.Copy() - else - log_debug(SPAN_DEBUGERROR("Supply pack with invalid access restriction [access] encountered!")) - -/** - * spawn an object of a certain type - */ -/datum/supply_pack/proc/InstanceObject(path, atom/loc, ...) - RETURN_TYPE(/atom/movable) - return new path(arglist(args.Copy(2))) - -/** - * spawwns our contents into a container. if you need special behavior like randomization, besure to modify default manifest too! - */ -/datum/supply_pack/proc/SpawnContents(atom/loc) - var/list/to_spawn = preprocess_contents_list() - if(!LAZYLEN(to_spawn)) - return - var/safety = 500 - for(var/path in to_spawn) - var/amount = to_spawn[path] || 1 - for(var/i in 1 to amount) - if(!--safety) - // adminproofing - // no, no admin would fuck this up but myself - // hence, self-proofing - // ~silicons - CRASH("Ran out of safety during SpawnContents") - InstanceObject(path, loc) - -/** - * used to preprocess the contained list for spawning - */ -/datum/supply_pack/proc/preprocess_contents_list() - return contains.Copy() - -/** - * generates our HTML manifest as a **list** - * - * argument is provided for container incase you want to modify based on what actually spawned - */ -/datum/supply_pack/proc/get_html_manifest(atom/movable/container) - RETURN_TYPE(/list) - var/list/lines = list() - lines += "Contents:
" - lines += "" - return lines - - // ^\s+to_chat\(world\s*,\s*"[a-zA-Z0-9 .\[\]_]*"\)\n - -/** - * returns if we're random. if we are, return number of items. - * required for old nanoui - * this proc's existence, as well as hardcoded ui data for packs, really makes me hate life - * but i'm not doing nanoui/tgui conversion today. - */ -/datum/supply_pack/proc/is_random() - return FALSE - -/** - * gets a list of things to show on nanoui - * god, i hate nanoui - * burn this proc and is_random() with fire at some point, please. - */ -/datum/supply_pack/proc/flattened_nanoui_manifest() - . = list() - for(var/path in contains) - var/amount = contains[path] || 1 - var/atom/movable/AM = path - var/name = initial(AM.name) - . += "[amount > 1? "[amount] [name](s)" : "[name]"]" - -/** - * randomized supplypacks - * only x items can be ever spawned - * weighting is equal - the list of typepaths normally spawned is treated as pick-and-take-one-of. - * - * maybe we should roll this into default functionality - * question for another day, not like we aren't modular enough with this system now to do it easily. - */ -/datum/supply_pack/randomised - /// how many of our items at random to spawn - var/num_contained = 1 - -/datum/supply_pack/randomised/get_html_manifest(atom/movable/container) - var/list/lines = list() - lines += "Contains any [num_contained] of the following:
" - lines += "" - return lines - -/datum/supply_pack/randomised/preprocess_contents_list() - var/list/L = list() - // first, flatten list - for(var/path in contains) - L[path] = contains[path] || 1 - // pick and take - . = list() - for(var/i in 1 to num_contained) - var/path = pickweight(L) - .[path]++ - -/datum/supply_pack/randomised/is_random() - return num_contained diff --git a/code/modules/cargo/supplypacks/atmospherics.dm b/code/modules/cargo/supplypacks/atmospherics.dm deleted file mode 100644 index bfa3f8d57253..000000000000 --- a/code/modules/cargo/supplypacks/atmospherics.dm +++ /dev/null @@ -1,115 +0,0 @@ -/* -* Here is where any supply packs related -* to being atmospherics tasks live. -*/ - - -/datum/supply_pack/atmos - group = "Atmospherics" - -/datum/supply_pack/atmos/inflatable - name = "Inflatable barriers" - contains = list(/obj/item/storage/briefcase/inflatable = 3) - cost = 20 - container_type = /obj/structure/closet/crate/engineering - container_name = "Inflatable Barrier Crate" - -/datum/supply_pack/atmos/canister_empty - name = "Empty gas canister" - cost = 7 - container_name = "Empty gas canister crate" - container_type = /obj/structure/largecrate - contains = list(/obj/machinery/portable_atmospherics/canister) - -/datum/supply_pack/atmos/canister_air - name = "Air canister" - cost = 10 - container_name = "Air canister crate" - container_type = /obj/structure/largecrate - contains = list(/obj/machinery/portable_atmospherics/canister/air) - -/datum/supply_pack/atmos/canister_helium - name = "Helium canister" - cost = 10 - container_name = "Helium canister crate" - container_type = /obj/structure/largecrate - contains = list(/obj/machinery/portable_atmospherics/canister/helium) - -/datum/supply_pack/atmos/canister_oxygen - name = "Oxygen canister" - cost = 15 - container_name = "Oxygen canister crate" - container_type = /obj/structure/largecrate - contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) - -/datum/supply_pack/atmos/canister_nitrogen - name = "Nitrogen canister" - cost = 10 - container_name = "Nitrogen canister crate" - container_type = /obj/structure/largecrate - contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) - -/datum/supply_pack/atmos/canister_phoron - name = "Phoron gas canister" - cost = 60 - container_name = "Phoron gas canister crate" - container_type = /obj/structure/closet/crate/secure/large - access = ACCESS_ENGINEERING_ATMOS - contains = list(/obj/machinery/portable_atmospherics/canister/phoron) - -/datum/supply_pack/atmos/canister_nitrous_oxide - name = "N2O gas canister" - cost = 15 - container_name = "N2O gas canister crate" - container_type = /obj/structure/closet/crate/secure/large - access = ACCESS_ENGINEERING_ATMOS - contains = list(/obj/machinery/portable_atmospherics/canister/nitrous_oxide) - -/datum/supply_pack/atmos/canister_carbon_dioxide - name = "Carbon dioxide gas canister" - cost = 15 - container_name = "CO2 canister crate" - container_type = /obj/structure/closet/crate/secure/large - access = ACCESS_ENGINEERING_ATMOS - contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) - -/datum/supply_pack/atmos/air_dispenser - contains = list(/obj/machinery/pipedispenser/orderable) - name = "Pipe Dispenser" - cost = 25 - container_type = /obj/structure/closet/crate/secure/large - container_name = "Pipe Dispenser Crate" - access = ACCESS_ENGINEERING_ATMOS - -/datum/supply_pack/atmos/disposals_dispenser - contains = list(/obj/machinery/pipedispenser/disposal/orderable) - name = "Disposals Pipe Dispenser" - cost = 25 - container_type = /obj/structure/closet/crate/secure/large - container_name = "Disposal Dispenser Crate" - access = ACCESS_ENGINEERING_ATMOS - -/datum/supply_pack/atmos/internals - name = "Internals crate" - contains = list( - /obj/item/clothing/mask/gas = 3, - /obj/item/tank/air = 3 - ) - cost = 10 - container_type = /obj/structure/closet/crate/internals - container_name = "Internals crate" - -/datum/supply_pack/atmos/evacuation - name = "Emergency equipment" - contains = list( - /obj/item/storage/toolbox/emergency = 2, - /obj/item/clothing/suit/storage/hazardvest = 2, - /obj/item/clothing/suit/storage/vest = 2, - /obj/item/tank/emergency/oxygen/engi = 4, - /obj/item/clothing/suit/space/emergency = 4, - /obj/item/clothing/head/helmet/space/emergency = 4, - /obj/item/clothing/mask/gas = 4 - ) - cost = 35 - container_type = /obj/structure/closet/crate/internals - container_name = "Emergency crate" diff --git a/code/modules/cargo/supplypacks/engineering.dm b/code/modules/cargo/supplypacks/engineering.dm deleted file mode 100644 index d5ebeb32a387..000000000000 --- a/code/modules/cargo/supplypacks/engineering.dm +++ /dev/null @@ -1,346 +0,0 @@ -/* -* Here is where any supply packs -* related to engineering tasks live. -*/ - - -/datum/supply_pack/eng - group = "Engineering" - -/datum/supply_pack/eng/lightbulbs - name = "Replacement lights" - contains = list(/obj/item/storage/box/lights/mixed = 3) - cost = 10 - container_type = /obj/structure/closet/crate - container_name = "Replacement lights" - -/datum/supply_pack/eng/smescoil - name = "Superconducting Magnetic Coil" - contains = list(/obj/item/smes_coil) - cost = 20 - container_type = /obj/structure/closet/crate/engineering - container_name = "Superconducting Magnetic Coil crate" - -/datum/supply_pack/eng/smescoil/super_capacity - name = "Superconducting Capacitance Coil" - contains = list(/obj/item/smes_coil/super_capacity) - cost = 25 - container_type = /obj/structure/closet/crate/engineering - container_name = "Superconducting Capacitance Coil crate" - -/datum/supply_pack/eng/smescoil/super_io - name = "Superconducting Transmission Coil" - contains = list(/obj/item/smes_coil/super_io) - cost = 25 - container_type = /obj/structure/closet/crate/engineering - container_name = "Superconducting Transmission Coil crate" - -/datum/supply_pack/eng/electrical - name = "Electrical maintenance crate" - contains = list( - /obj/item/storage/toolbox/electrical = 2, - /obj/item/clothing/gloves/yellow = 2, - /obj/item/cell = 2, - /obj/item/cell/high = 2 - ) - cost = 10 - container_type = /obj/structure/closet/crate/engineering/electrical - container_name = "Electrical maintenance crate" - -/datum/supply_pack/eng/e_welders - name = "Electric welder crate" - contains = list( - /obj/item/weldingtool/electric = 3 - ) - cost = 15 - container_type = /obj/structure/closet/crate/engineering/electrical - container_name = "Electric welder crate" - -/datum/supply_pack/eng/mechanical - name = "Mechanical maintenance crate" - contains = list( - /obj/item/storage/belt/utility/full = 3, - /obj/item/clothing/suit/storage/hazardvest = 3, - /obj/item/clothing/head/welding = 2, - /obj/item/clothing/head/hardhat - ) - cost = 10 - container_type = /obj/structure/closet/crate/engineering - container_name = "Mechanical maintenance crate" - -/datum/supply_pack/eng/fueltank - name = "Fuel tank crate" - contains = list(/obj/structure/reagent_dispensers/fueltank) - cost = 10 - container_type = /obj/structure/largecrate - container_name = "fuel tank crate" - -/datum/supply_pack/eng/solar - name = "Solar Pack crate" - contains = list( - /obj/item/frame2/solar_panel = 21, - /obj/item/circuitboard/solar_control, - /obj/item/tracker_electronics, - /obj/item/paper/solar - ) - cost = 20 - container_type = /obj/structure/closet/crate/corporate/focalpoint - container_name = "Solar pack crate" - -/datum/supply_pack/eng/engine - name = "Emitter crate" - contains = list(/obj/machinery/power/emitter = 2) - cost = 10 - container_type = /obj/structure/closet/crate/secure/engineering - container_name = "Emitter crate" - access = ACCESS_ENGINEERING_MAIN - -/datum/supply_pack/eng/engine/field_gen - name = "Field Generator crate" - contains = list(/obj/machinery/field_generator = 2) - container_type = /obj/structure/closet/crate/secure/engineering - container_name = "Field Generator crate" - access = ACCESS_ENGINEERING_CE - -/datum/supply_pack/eng/engine/sing_gen - name = "Singularity Generator crate" - contains = list(/obj/machinery/the_singularitygen) - container_type = /obj/structure/closet/crate/secure/engineering - container_name = "Singularity Generator crate" - access = ACCESS_ENGINEERING_CE - -/datum/supply_pack/eng/engine/collector - name = "Collector crate" - contains = list(/obj/machinery/power/rad_collector = 3) - container_type = /obj/structure/closet/crate/secure/engineering - container_name = "collector crate" - access = ACCESS_ENGINEERING_MAIN - -/datum/supply_pack/eng/engine/PA - name = "Particle Accelerator crate" - cost = 40 - contains = list( - /obj/structure/particle_accelerator/fuel_chamber, - /obj/machinery/particle_accelerator/control_box, - /obj/structure/particle_accelerator/particle_emitter/center, - /obj/structure/particle_accelerator/particle_emitter/left, - /obj/structure/particle_accelerator/particle_emitter/right, - /obj/structure/particle_accelerator/power_box, - /obj/structure/particle_accelerator/end_cap, - /obj/item/paper/particle_info - ) - container_type = /obj/structure/closet/crate/secure/engineering - container_name = "Particle Accelerator crate" - access = ACCESS_ENGINEERING_CE - -/datum/supply_pack/eng/shield_generator - name = "Shield Generator Construction Kit" - contains = list( - /obj/item/circuitboard/shield_generator, - /obj/item/stock_parts/capacitor, - /obj/item/stock_parts/micro_laser, - /obj/item/smes_coil, - /obj/item/stock_parts/console_screen, - /obj/item/stock_parts/subspace/amplifier - ) - cost = 80 - container_type = /obj/structure/closet/crate/engineering - container_name = "shield generator construction kit crate" - -/datum/supply_pack/eng/smbig - name = "Supermatter Core" - contains = list(/obj/machinery/power/supermatter) - cost = 150 - container_type = /obj/structure/closet/crate/secure/phoron - container_name = "Supermatter crate (CAUTION)" - access = ACCESS_ENGINEERING_CE - -/datum/supply_pack/eng/teg - contains = list( - /obj/machinery/power/generator, - /obj/machinery/atmospherics/component/binary/circulator = 2) - name = "Mark I TEG + Circulators" - cost = 35 - container_type = /obj/structure/closet/crate/secure/large - container_name = "Mk1 TEG crate" - access = ACCESS_ENGINEERING_MAIN -/* -/datum/supply_pack/eng/circulator - contains = list(/obj/machinery/atmospherics/component/binary/circulator = 2) - name = "Binary atmospheric circulators" - cost = 15 - container_type = /obj/structure/closet/crate/secure/large - container_name = "Atmospheric circulators crate" - access = ACCESS_ENGINEERING_MAIN -*/ -/datum/supply_pack/eng/radsuit - contains = list( - /obj/item/clothing/suit/radiation = 3, - /obj/item/clothing/head/radiation = 3 - ) - name = "Radiation suits package" - cost = 20 - container_type = /obj/structure/closet/radiation - container_name = "Radiation suit locker" - -/datum/supply_pack/eng/pacman_parts - name = "P.A.C.M.A.N. portable generator parts" - cost = 25 - container_name = "P.A.C.M.A.N. Portable Generator Construction Kit" - container_type = /obj/structure/closet/crate/secure/engineering - access = ACCESS_ENGINEERING_TECHSTORAGE - contains = list( - /obj/item/stock_parts/micro_laser, - /obj/item/stock_parts/capacitor, - /obj/item/stock_parts/matter_bin, - /obj/item/circuitboard/pacman - ) - -/datum/supply_pack/eng/super_pacman_parts - name = "Super P.A.C.M.A.N. portable generator parts" - cost = 35 - container_name = "Super P.A.C.M.A.N. portable generator construction kit" - container_type = /obj/structure/closet/crate/secure/engineering - access = ACCESS_ENGINEERING_TECHSTORAGE - contains = list( - /obj/item/stock_parts/micro_laser, - /obj/item/stock_parts/capacitor, - /obj/item/stock_parts/matter_bin, - /obj/item/circuitboard/pacman/super - ) - -/datum/supply_pack/eng/fusion_core - name = "R-UST Mk. 8 Tokamak fusion core crate" - cost = 50 - container_name = "R-UST Mk. 8 Tokamak Fusion Core crate" - container_type = /obj/structure/closet/crate/secure/engineering - access = ACCESS_ENGINEERING_MAIN - contains = list( - /obj/item/book/manual/rust_engine, - /obj/machinery/power/fusion_core, - /obj/item/circuitboard/fusion_core_control - ) - -/datum/supply_pack/eng/fusion_fuel_injector - name = "R-UST Mk. 8 fuel injector crate" - cost = 30 - container_name = "R-UST Mk. 8 fuel injector crate" - container_type = /obj/structure/closet/crate/secure/engineering - access = ACCESS_ENGINEERING_MAIN - contains = list( - /obj/machinery/fusion_fuel_injector, - /obj/machinery/fusion_fuel_injector, - /obj/item/circuitboard/fusion_fuel_control - ) - -/datum/supply_pack/eng/gyrotron - name = "Gyrotron crate" - cost = 15 - container_name = "Gyrotron Crate" - container_type = /obj/structure/closet/crate/secure/engineering - access = ACCESS_ENGINEERING_MAIN - contains = list( - /obj/machinery/power/emitter/gyrotron, - /obj/item/circuitboard/gyrotron_control - ) - -/datum/supply_pack/eng/fusion_fuel_compressor - name = "Fusion Fuel Compressor circuitry crate" - cost = 10 - container_name = "Fusion Fuel Compressor circuitry crate" - container_type = /obj/structure/closet/crate/engineering - contains = list( - /obj/item/circuitboard/fusion_fuel_compressor, - /obj/item/stock_parts/manipulator/nano = 2, - /obj/item/stock_parts/matter_bin/super = 2, - /obj/item/stock_parts/console_screen = 1, - /obj/item/stack/cable_coil = 5 - ) - -/datum/supply_pack/eng/reflector - name = "Reflector crate" - cost = 60 - container_name = "Reflector crate" - container_type = /obj/structure/closet/crate/engineering - contains = list( - /obj/structure/prop/prism/reflector = 1 - ) - -/datum/supply_pack/eng/tritium - name = "Tritium crate" - cost = 75 - container_name = "Tritium crate" - container_type = /obj/structure/closet/crate/engineering - contains = list(/obj/fiftyspawner/tritium) - -/datum/supply_pack/eng/engine/fission - name = "Fission Starter crate" - contains = list(/obj/machinery/power/fission, - /obj/item/circuitboard/fission_monitor, - /obj/item/storage/briefcase/fission/fuelmixed, - /obj/item/storage/briefcase/fission/reflectormixed, - /obj/item/storage/briefcase/fission/controlmixed) - cost = 50 - container_type = /obj/structure/closet/crate/secure/engineering - container_name = "fission core crate" - access = ACCESS_ENGINEERING_CE - -/datum/supply_pack/eng/engine/fission/expansion - name = "Fission Expansion crate" - contains = list(/obj/item/circuitboard/fission_monitor, - /obj/item/storage/briefcase/fission/uranium, - /obj/item/storage/briefcase/fission/tungstencarbide, - /obj/item/storage/briefcase/fission/boron) - cost = 30 - container_type = /obj/structure/closet/crate/secure/engineering - container_name = "fission expansion crate" - access = ACCESS_ENGINEERING_CE - -/datum/supply_pack/eng/thermoregulator - contains = list(/obj/machinery/power/thermoregulator) - name = "Thermal Regulator" - cost = 30 - container_type = /obj/structure/closet/crate/large - container_name = "thermal regulator crate" - -/datum/supply_pack/eng/radsuit - contains = list( - /obj/item/clothing/suit/radiation = 3, - /obj/item/clothing/head/radiation = 3 - ) - -/datum/supply_pack/eng/algae - contains = list(/obj/item/stack/material/algae/ten) - name = "Algae Sheets (10)" - cost = 20 - container_type = /obj/structure/closet/crate - container_name = "algae sheets crate" - -/datum/supply_pack/eng/engine/tesla_gen - name = "Tesla Generator crate" - contains = list(/obj/machinery/the_singularitygen/tesla) - container_type = /obj/structure/closet/crate/secure/engineering - container_name = "Tesla Generator crate" - access = ACCESS_ENGINEERING_CE - -/datum/supply_pack/eng/point_defense_cannon_circuit - name = "Point Defense Turret Circuit" - contains = list(/obj/item/circuitboard/pointdefense = 2) - cost = 20 - container_type = /obj/structure/closet/crate/corporate/heph - container_name = "point defense turret circuit crate" - -/datum/supply_pack/eng/point_defense_control_circuit - name = "Point Defense Controller Circuit" - contains = list(/obj/item/circuitboard/pointdefense_control = 1) - cost = 30 - container_type = /obj/structure/closet/crate/corporate/heph - container_name = "point defense mainframe circuit crate" - -/datum/supply_pack/eng/portable_pump - name = "Portable Pump (2x)" - contains = list( - /obj/machinery/portable_atmospherics/powered/pump = 2 - ) - cost = 10 - container_name = "portable pumps crate" diff --git a/code/modules/cargo/supplypacks/hydroponics.dm b/code/modules/cargo/supplypacks/hydroponics.dm deleted file mode 100644 index f531c2e8d474..000000000000 --- a/code/modules/cargo/supplypacks/hydroponics.dm +++ /dev/null @@ -1,277 +0,0 @@ -/* -* Here is where any supply packs -* related to hydroponics tasks live. -*/ - - -/datum/supply_pack/hydro - group = "Hydroponics" - -/datum/supply_pack/hydro/monkey - name = "Monkey crate" - contains = list (/obj/item/storage/box/monkeycubes) - cost = 20 - container_type = /obj/structure/closet/crate/freezer - container_name = "Monkey crate" - -/datum/supply_pack/hydro/farwa - name = "Farwa crate" - contains = list (/obj/item/storage/box/monkeycubes/farwacubes) - cost = 20 - container_type = /obj/structure/closet/crate/freezer - container_name = "Farwa crate" - -/datum/supply_pack/hydro/neara - name = "Neaera crate" - contains = list (/obj/item/storage/box/monkeycubes/neaeracubes) - cost = 20 - container_type = /obj/structure/closet/crate/freezer - container_name = "Neaera crate" - -/datum/supply_pack/hydro/stok - name = "Stok crate" - contains = list (/obj/item/storage/box/monkeycubes/stokcubes) - cost = 20 - container_type = /obj/structure/closet/crate/freezer - container_name = "Stok crate" - -/datum/supply_pack/hydro/lisa - name = "Corgi Crate" - contains = list() - cost = 50 - container_type = /obj/structure/largecrate/animal/corgi - container_name = "Corgi Crate" - -/datum/supply_pack/hydro/cat - name = "Cat Crate" - contains = list() - cost = 45 - container_type = /obj/structure/largecrate/animal/cat - container_name = "Cat Crate" - -/datum/supply_pack/hydro/hydroponics - name = "Hydroponics Supply Crate" - contains = list( - /obj/item/reagent_containers/spray/plantbgone = 4, - /obj/item/reagent_containers/glass/bottle/ammonia = 2, - /obj/item/material/knife/machete/hatchet, - /obj/item/material/minihoe, - /obj/item/plant_analyzer, - /obj/item/clothing/gloves/botanic_leather, - /obj/item/clothing/suit/storage/apron, - /obj/item/material/minihoe, - /obj/item/storage/box/botanydisk - ) - cost = 20 - container_type = /obj/structure/closet/crate/hydroponics - container_name = "Hydroponics crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/cow - name = "Cow crate" - cost = 25 - container_type = /obj/structure/largecrate/animal/cow - container_name = "Cow crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/goat - name = "Goat crate" - cost = 25 - container_type = /obj/structure/largecrate/animal/goat - container_name = "Goat crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/chicken - name = "Chicken crate" - cost = 25 - container_type = /obj/structure/largecrate/animal/chick - container_name = "Chicken crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/seeds - name = "Seeds crate" - contains = list( - /obj/item/seeds/chiliseed, - /obj/item/seeds/berryseed, - /obj/item/seeds/cornseed, - /obj/item/seeds/eggplantseed, - /obj/item/seeds/tomatoseed, - /obj/item/seeds/appleseed, - /obj/item/seeds/soyaseed, - /obj/item/seeds/wheatseed, - /obj/item/seeds/carrotseed, - /obj/item/seeds/harebell, - /obj/item/seeds/lemonseed, - /obj/item/seeds/orangeseed, - /obj/item/seeds/grassseed, - /obj/item/seeds/sunflowerseed, - /obj/item/seeds/chantermycelium, - /obj/item/seeds/potatoseed, - /obj/item/seeds/sugarcaneseed - ) - cost = 10 - container_type = /obj/structure/closet/crate/hydroponics - container_name = "Seeds crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/weedcontrol - name = "Weed control crate" - contains = list( - /obj/item/material/knife/machete/hatchet = 2, - /obj/item/reagent_containers/spray/plantbgone = 4, - /obj/item/clothing/mask/gas = 2, - /obj/item/grenade/chem_grenade/antiweed = 2, - /obj/item/material/twohanded/fireaxe/scythe - ) - cost = 45 - container_type = /obj/structure/closet/crate/hydroponics - container_name = "Weed control crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/watertank - name = "Water tank crate" - contains = list(/obj/structure/reagent_dispensers/watertank) - cost = 10 - container_type = /obj/structure/largecrate - container_name = "water tank crate" - -/datum/supply_pack/hydro/bee_keeper - name = "Beekeeping crate" - contains = list( - /obj/item/clothing/head/beekeeper, - /obj/item/clothing/suit/beekeeper, - /obj/item/beehive_assembly, - /obj/item/bee_smoker, - /obj/item/honey_frame = 5, - /obj/item/bee_pack - ) - cost = 40 - container_type = /obj/structure/closet/crate/hydroponics - container_name = "Beekeeping crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/tray - name = "Empty hydroponics trays" - cost = 50 - container_type = /obj/structure/closet/crate/hydroponics - container_name = "Hydroponics tray crate" - contains = list(/obj/machinery/portable_atmospherics/hydroponics{anchored = 0} = 3) - access = ACCESS_GENERAL_BOTANY - - -/datum/supply_pack/hydro/diycarpotox - name = "Gather-It-Yourself Carpotoxin" - cost = 30 - container_type = /obj/structure/largecrate/animal/carp - container_name = "DIY carpotoxin crate" - -/datum/supply_pack/hydro/diyspidertox - name = "Gather-It-Yourself Spider Toxin" - cost = 30 - container_type = /obj/structure/largecrate/animal/spiders - container_name = "DIY spider toxin crate" - -/datum/supply_pack/hydro/birds - name = "Birds Crate" - cost = 200 //You're getting 22 birds. Of course it's going to be a lot! - container_type = /obj/structure/largecrate/birds - container_name = "Bird crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/sobaka - name = "Sobaka crate" - contains = list (/obj/item/storage/box/monkeycubes/sobakacubes) - cost = 20 - container_type = /obj/structure/closet/crate/freezer - container_name = "Sobaka crate" - -/datum/supply_pack/hydro/saru - name = "Saru crate" - contains = list (/obj/item/storage/box/monkeycubes/sarucubes) - cost = 20 - container_type = /obj/structure/closet/crate/freezer - container_name = "Saru crate" - -/datum/supply_pack/hydro/sparra - name = "Sparra crate" - contains = list (/obj/item/storage/box/monkeycubes/sparracubes) - cost = 20 - container_type = /obj/structure/closet/crate/freezer - container_name = "Sparra crate" - -/datum/supply_pack/hydro/wolpin - name = "Wolpin crate" - contains = list (/obj/item/storage/box/monkeycubes/wolpincubes) - cost = 20 - container_type = /obj/structure/closet/crate/freezer - container_name = "Wolpin crate" - -/datum/supply_pack/hydro/fennec - name = "Fennec crate" - cost = 60 //considering a corgi crate is 50, and you get two fennecs - container_type = /obj/structure/largecrate/animal/fennec - container_name = "Fennec crate" - -/datum/supply_pack/hydro/fish - name = "Fish supply crate" - contains = list( - /obj/item/reagent_containers/food/snacks/lobster = 6, - /obj/item/reagent_containers/food/snacks/shrimp = 6, - /obj/item/reagent_containers/food/snacks/cuttlefish = 8, - /obj/item/reagent_containers/food/snacks/sliceable/monkfish = 1 - ) - cost = 20 - container_type = /obj/structure/closet/crate/freezer - container_name = "Fish crate" - -/datum/supply_pack/hydro/woolie - name = "Woolie crate" - cost = 50 - container_type = /obj/structure/largecrate/animal/woolie - container_name = "Woolie crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/icegoat - name = "Glacicorn crate" - cost = 50 - container_type = /obj/structure/largecrate/animal/icegoat - container_name = "Glacicorn crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/furnacegrub - name = "Furnace Grub crate" - cost = 40 - container_type = /obj/structure/largecrate/animal/furnacegrub - container_name = "Furnace Grub crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/ironwood - name = "Ironwood Saplings" - contains = list( - /obj/item/seeds/ironwood = 6 - ) - cost = 25 - container_type = /obj/structure/closet/crate/hydroponics - container_name = "Ironwood Sapling Samples" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/creeper - name = "Creeper Sanghum" - contains = list( - /obj/item/seeds/creepermoss = 6 - ) - cost = 25 - container_type = /obj/structure/closet/crate/hydroponics - container_name = "Creeper Sanghum Seeds" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/hydro/fungiwheat - name = "Fungiwheat" - contains = list( - /obj/item/seeds/fungiwheat = 6 - ) - cost = 25 - container_type = /obj/structure/closet/crate/hydroponics - container_name = "Fungiwheat Spores" - access = ACCESS_GENERAL_BOTANY - diff --git a/code/modules/cargo/supplypacks/medical.dm b/code/modules/cargo/supplypacks/medical.dm deleted file mode 100644 index faea4af16db4..000000000000 --- a/code/modules/cargo/supplypacks/medical.dm +++ /dev/null @@ -1,447 +0,0 @@ -/* -* Here is where any supply packs -* related to medical tasks live. -*/ - - -/datum/supply_pack/med - group = "Medical" - -/datum/supply_pack/med/medical - name = "Medical crate" - contains = list( - /obj/item/storage/firstaid/regular, - /obj/item/storage/firstaid/fire, - /obj/item/storage/firstaid/toxin, - /obj/item/storage/firstaid/o2, - /obj/item/storage/firstaid/adv, - /obj/item/reagent_containers/glass/bottle/antitoxin, - /obj/item/reagent_containers/glass/bottle/inaprovaline, - /obj/item/reagent_containers/glass/bottle/stoxin, - /obj/item/storage/box/syringes, - /obj/item/storage/box/autoinjectors - ) - cost = 10 - container_type = /obj/structure/closet/crate/corporate/nanomed - container_name = "Medical crate" - -/datum/supply_pack/med/bloodpack - name = "BloodPack crate" - contains = list(/obj/item/storage/box/bloodpacks = 3) - cost = 10 - container_type = /obj/structure/closet/crate/medical - container_name = "BloodPack crate" - -/datum/supply_pack/med/bodybag - name = "Body bag crate" - contains = list(/obj/item/storage/box/bodybags = 3) - cost = 10 - container_type = /obj/structure/closet/crate/medical - container_name = "Body bag crate" - -/datum/supply_pack/med/cryobag - name = "Stasis bag crate" - contains = list(/obj/item/bodybag/cryobag = 3) - cost = 40 - container_type = /obj/structure/closet/crate/medical - container_name = "Stasis bag crate" - -/datum/supply_pack/med/surgery - name = "Surgery crate" - contains = list( - /obj/item/surgical/cautery, - /obj/item/surgical/surgicaldrill, - /obj/item/clothing/mask/breath/medical, - /obj/item/tank/anesthetic, - /obj/item/surgical/FixOVein, - /obj/item/surgical/hemostat, - /obj/item/surgical/scalpel, - /obj/item/surgical/bonegel, - /obj/item/surgical/retractor, - /obj/item/surgical/bonesetter, - /obj/item/surgical/circular_saw - ) - cost = 25 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Surgery crate" - access = ACCESS_MEDICAL_MAIN - -/datum/supply_pack/med/deathalarm - name = "Death Alarm crate" - contains = list( - /obj/item/storage/box/cdeathalarm_kit, - /obj/item/storage/box/cdeathalarm_kit - ) - cost = 40 - container_type = /obj/structure/closet/crate/corporate/veymed - container_name = "Death Alarm crate" - access = ACCESS_MEDICAL_MAIN - -/datum/supply_pack/med/clotting - name = "Clotting Medicine crate" - contains = list( - /obj/item/storage/firstaid/clotting - ) - cost = 100 - container_type = /obj/structure/closet/crate/secure/corporate/zenghu - container_name = "Clotting Medicine crate" - access = ACCESS_MEDICAL_MAIN - -/datum/supply_pack/med/sterile - name = "Sterile equipment crate" - contains = list( - /obj/item/clothing/under/rank/medical/scrubs/green = 2, - /obj/item/clothing/head/surgery/green = 2, - /obj/item/storage/box/masks, - /obj/item/storage/box/gloves, - /obj/item/storage/belt/medical = 3 - ) - cost = 10 - container_type = /obj/structure/closet/crate - container_name = "Sterile equipment crate" - -/datum/supply_pack/med/extragear - name = "Medical surplus equipment" - contains = list( - /obj/item/storage/belt/medical = 3, - /obj/item/clothing/glasses/hud/health = 3, - /obj/item/radio/headset/headset_med/alt = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/medical = 3 - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Medical surplus equipment" - access = ACCESS_MEDICAL_MAIN - -/datum/supply_pack/med/cmogear - name = "Chief medical officer equipment" - contains = list( - /obj/item/storage/belt/medical, - /obj/item/radio/headset/heads/cmo, - /obj/item/clothing/under/rank/chief_medical_officer, - /obj/item/storage/hypokit/advanced/cmo, - /obj/item/clothing/accessory/stethoscope, - /obj/item/clothing/glasses/hud/health, - /obj/item/clothing/suit/storage/toggle/labcoat/cmo, - /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, - /obj/item/clothing/mask/surgical, - /obj/item/clothing/shoes/white, - /obj/item/cartridge/cmo, - /obj/item/clothing/gloves/sterile/latex, - /obj/item/healthanalyzer, - /obj/item/flashlight/pen, - /obj/item/reagent_containers/syringe - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Chief medical officer equipment" - access = ACCESS_MEDICAL_CMO - -/datum/supply_pack/med/doctorgear - name = "Medical Doctor equipment" - contains = list( - /obj/item/storage/belt/medical, - /obj/item/radio/headset/headset_med, - /obj/item/clothing/under/rank/medical, - /obj/item/clothing/accessory/stethoscope, - /obj/item/clothing/glasses/hud/health, - /obj/item/clothing/suit/storage/toggle/labcoat, - /obj/item/clothing/mask/surgical, - /obj/item/storage/firstaid/adv, - /obj/item/clothing/shoes/white, - /obj/item/cartridge/medical, - /obj/item/clothing/gloves/sterile/latex, - /obj/item/healthanalyzer, - /obj/item/flashlight/pen, - /obj/item/reagent_containers/syringe - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Medical Doctor equipment" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/med/chemistgear - name = "Chemist equipment" - contains = list( - /obj/item/storage/box/beakers, - /obj/item/radio/headset/headset_med, - /obj/item/storage/box/autoinjectors, - /obj/item/clothing/under/rank/chemist, - /obj/item/clothing/glasses/science, - /obj/item/clothing/suit/storage/toggle/labcoat/chemist, - /obj/item/clothing/mask/surgical, - /obj/item/clothing/shoes/white, - /obj/item/cartridge/chemistry, - /obj/item/clothing/gloves/sterile/latex, - /obj/item/reagent_containers/dropper, - /obj/item/healthanalyzer, - /obj/item/storage/box/pillbottles, - /obj/item/storage/box/syringes, - /obj/item/storage/hypokit, - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Chemist equipment" - access = ACCESS_MEDICAL_CHEMISTRY - -/datum/supply_pack/med/paramedicgear - name = "Paramedic equipment" - contains = list( - /obj/item/storage/belt/medical/emt, - /obj/item/radio/headset/headset_med, - /obj/item/clothing/under/rank/medical/scrubs/black, - /obj/item/clothing/accessory/armband/medblue, - /obj/item/clothing/glasses/hud/health, - /obj/item/clothing/suit/storage/toggle/labcoat/emt, - /obj/item/clothing/under/rank/medical/paramedic, - /obj/item/clothing/suit/storage/toggle/fr_jacket, - /obj/item/clothing/mask/gas, - /obj/item/clothing/under/rank/medical/paramedic, - /obj/item/clothing/accessory/stethoscope, - /obj/item/storage/firstaid/adv, - /obj/item/clothing/shoes/boots/jackboots, - /obj/item/clothing/gloves/sterile/latex, - /obj/item/healthanalyzer, - /obj/item/cartridge/medical, - /obj/item/flashlight/pen, - /obj/item/clothing/accessory/storage/white_vest, - /obj/item/storage/hypokit, - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Paramedic equipment" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/med/psychiatristgear - name = "Psychiatrist equipment" - contains = list( - /obj/item/clothing/under/rank/psych, - /obj/item/radio/headset/headset_med, - /obj/item/clothing/under/rank/psych/turtleneck, - /obj/item/clothing/shoes/laceup, - /obj/item/clothing/suit/storage/toggle/labcoat, - /obj/item/clothing/shoes/white, - /obj/item/clipboard, - /obj/item/folder/white, - /obj/item/pen, - /obj/item/cartridge/medical - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Psychiatrist equipment" - access = ACCESS_MEDICAL_PSYCH - -/datum/supply_pack/med/medicalscrubs - name = "Medical scrubs" - contains = list( - /obj/item/clothing/shoes/white = 3,, - /obj/item/clothing/under/rank/medical/scrubs = 3, - /obj/item/clothing/under/rank/medical/scrubs/green = 3, - /obj/item/clothing/under/rank/medical/scrubs/purple = 3, - /obj/item/clothing/under/rank/medical/scrubs/black = 3, - /obj/item/clothing/head/surgery = 3, - /obj/item/clothing/head/surgery/purple = 3, - /obj/item/clothing/head/surgery/blue = 3, - /obj/item/clothing/head/surgery/green = 3, - /obj/item/clothing/head/surgery/black = 3, - /obj/item/storage/box/masks, - /obj/item/storage/box/gloves - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Medical scrubs crate" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/med/autopsy - name = "Autopsy equipment" - contains = list( - /obj/item/folder/white, - /obj/item/camera, - /obj/item/camera_film = 2, - /obj/item/autopsy_scanner, - /obj/item/surgical/scalpel, - /obj/item/storage/box/masks, - /obj/item/storage/box/gloves, - /obj/item/pen - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Autopsy equipment crate" - access = ACCESS_MEDICAL_MORGUE - -/datum/supply_pack/med/medicaluniforms - name = "Medical uniforms" - contains = list( - /obj/item/clothing/shoes/white = 3, - /obj/item/clothing/under/rank/chief_medical_officer, - /obj/item/clothing/under/rank/geneticist, - /obj/item/clothing/under/rank/virologist, - /obj/item/clothing/under/rank/nursesuit, - /obj/item/clothing/under/rank/nurse, - /obj/item/clothing/under/rank/orderly, - /obj/item/clothing/under/rank/medical = 3, - /obj/item/clothing/under/rank/medical/paramedic = 3, - /obj/item/clothing/suit/storage/toggle/labcoat = 3, - /obj/item/clothing/suit/storage/toggle/labcoat/cmo, - /obj/item/clothing/suit/storage/toggle/labcoat/emt, - /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, - /obj/item/clothing/suit/storage/toggle/labcoat/genetics, - /obj/item/clothing/suit/storage/toggle/labcoat/virologist, - /obj/item/clothing/suit/storage/toggle/labcoat/chemist, - /obj/item/storage/box/masks, - /obj/item/storage/box/gloves - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Medical uniform crate" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/med/medicalbiosuits - name = "Medical biohazard gear" - contains = list( - /obj/item/clothing/head/bio_hood = 3, - /obj/item/clothing/suit/bio_suit = 3, - /obj/item/clothing/head/bio_hood/virology = 2, - /obj/item/clothing/suit/bio_suit/cmo, - /obj/item/clothing/head/bio_hood/cmo, - /obj/item/clothing/mask/gas = 5, - /obj/item/tank/oxygen = 5, - /obj/item/storage/box/masks, - /obj/item/storage/box/gloves - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Medical biohazard equipment" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/med/portablefreezers - name = "Portable freezers crate" - contains = list(/obj/item/storage/box/freezer = 7) - cost = 25 - container_type = /obj/structure/closet/crate/secure - container_name = "Portable freezers" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/med/virus - name = "Virus sample crate" - contains = list(/obj/item/virusdish/random = 4) - cost = 25 - container_type = /obj/structure/closet/crate/secure - container_name = "Virus sample crate" - access = ACCESS_MEDICAL_CMO - -/datum/supply_pack/med/defib - name = "Defibrillator crate" - contains = list(/obj/item/defib_kit = 2) - cost = 30 - container_type = /obj/structure/closet/crate/medical - container_name = "Defibrillator crate" - -/datum/supply_pack/med/distillery - name = "Chemical distiller crate" - contains = list(/obj/machinery/portable_atmospherics/powered/reagent_distillery = 1) - cost = 175 - container_type = /obj/structure/largecrate - container_name = "Chemical distiller crate" - -/datum/supply_pack/med/advdistillery - name = "Industrial Chemical distiller crate" - contains = list(/obj/machinery/portable_atmospherics/powered/reagent_distillery/industrial = 1) - cost = 250 - container_type = /obj/structure/largecrate - container_name = "Industrial Chemical distiller crate" - -/datum/supply_pack/med/oxypump - name = "Oxygen pump crate" - contains = list(/obj/machinery/oxygen_pump/mobile = 1) - cost = 125 - container_type = /obj/structure/largecrate - container_name = "Oxygen pump crate" - -/datum/supply_pack/med/anestheticpump - name = "Anesthetic pump crate" - contains = list(/obj/machinery/oxygen_pump/mobile/anesthetic = 1) - cost = 130 - container_type = /obj/structure/largecrate - container_name = "Anesthetic pump crate" - -/datum/supply_pack/med/stablepump - name = "Portable stabilizer crate" - contains = list(/obj/machinery/oxygen_pump/mobile/stabilizer = 1) - cost = 175 - container_type = /obj/structure/largecrate - container_name = "Portable stabilizer crate" - -/datum/supply_pack/med/medicalbiosuits - contains = list( - /obj/item/clothing/head/bio_hood/scientist = 3, - /obj/item/clothing/suit/bio_suit/scientist = 3, - /obj/item/clothing/suit/bio_suit/virology = 3, - /obj/item/clothing/head/bio_hood/virology = 3, - /obj/item/clothing/suit/bio_suit/cmo, - /obj/item/clothing/head/bio_hood/cmo, - /obj/item/clothing/shoes/white = 7, - /obj/item/clothing/mask/gas = 7, - /obj/item/tank/oxygen = 7, - /obj/item/storage/box/masks, - /obj/item/storage/box/gloves - ) - cost = 40 - -/datum/supply_pack/med/virologybiosuits - name = "Virology biohazard gear" - contains = list( - /obj/item/clothing/suit/bio_suit/virology = 3, - /obj/item/clothing/head/bio_hood/virology = 3, - /obj/item/clothing/mask/gas = 3, - /obj/item/tank/oxygen = 3, - /obj/item/storage/box/masks, - /obj/item/storage/box/gloves - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure - container_name = "Virology biohazard equipment" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/med/virus - name = "Virus sample crate" - contains = list(/obj/item/virusdish/random = 4) - cost = 25 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Virus sample crate" - access = ACCESS_MEDICAL_EQUIPMENT - - -/datum/supply_pack/med/bloodpack - container_type = /obj/structure/closet/crate/medical/blood - -/datum/supply_pack/med/compactdefib - name = "Compact Defibrillator crate" - contains = list(/obj/item/defib_kit/compact = 1) - cost = 90 - container_type = /obj/structure/closet/crate/secure/corporate/nanomed - container_name = "Compact Defibrillator crate" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/med/medigun - name = "Cell-Loaded Medigun crate" - contains = list( - /obj/item/gun/ballistic/cell_loaded/medical = 1, - /obj/item/ammo_magazine/cell_mag/medical = 1 - ) - cost = 250 - container_type = /obj/structure/closet/crate/secure/corporate/veymed - container_name = "Cell-Loaded Medigun crate" - access = ACCESS_MEDICAL_CMO - -/datum/supply_pack/med/medigun_cells - name = "Cell-Loaded Medigun Cell Pack crate" - contains = list( - /obj/item/ammo_casing/microbattery/medical/brute = 3, - /obj/item/ammo_casing/microbattery/medical/burn = 3, - /obj/item/ammo_casing/microbattery/medical/stabilize = 3 - ) - cost = 100 - container_type = /obj/structure/closet/crate/secure/corporate/veymed - container_name = "Cell-Loaded Medigun Cell Pack crate" - access = ACCESS_MEDICAL_CMO diff --git a/code/modules/cargo/supplypacks/misc.dm b/code/modules/cargo/supplypacks/misc.dm deleted file mode 100644 index c2736675534b..000000000000 --- a/code/modules/cargo/supplypacks/misc.dm +++ /dev/null @@ -1,350 +0,0 @@ -/* -* Here is where any supply packs -* that don't belong elsewhere live. -*/ - -/datum/supply_pack/misc - group = "Miscellaneous" - -/datum/supply_pack/randomised/misc - group = "Miscellaneous" - -/datum/supply_pack/randomised/misc/card_packs - num_contained = 5 - contains = list( - /obj/item/pack/cardemon, - /obj/item/pack/spaceball, - /obj/item/deck/holder - ) - name = "Trading Card Crate" - cost = 10 - container_type = /obj/structure/closet/crate/corporate/allico - container_name = "cards crate" - -/datum/supply_pack/randomised/misc/dnd - num_contained = 4 - contains = list( - /obj/item/toy/character/alien, - /obj/item/toy/character/warrior, - /obj/item/toy/character/cleric, - /obj/item/toy/character/thief, - /obj/item/toy/character/wizard, - /obj/item/toy/character/voidone, - /obj/item/toy/character/lich - ) - name = "Miniatures Crate" - cost = 200 - container_type = /obj/structure/closet/crate/corporate/allico - container_name = "Miniature Crate" - -/datum/supply_pack/randomised/misc/plushies - num_contained = 5 - contains = list( - /obj/item/toy/plushie/nymph, - /obj/item/toy/plushie/mouse, - /obj/item/toy/plushie/kitten, - /obj/item/toy/plushie/lizard, - /obj/item/toy/plushie/spider, - /obj/item/toy/plushie/farwa, - /obj/item/toy/plushie/corgi, - /obj/item/toy/plushie/girly_corgi, - /obj/item/toy/plushie/robo_corgi, - /obj/item/toy/plushie/octopus, - /obj/item/toy/plushie/face_hugger, - /obj/item/toy/plushie/red_fox, - /obj/item/toy/plushie/black_fox, - /obj/item/toy/plushie/marble_fox, - /obj/item/toy/plushie/blue_fox, - /obj/item/toy/plushie/coffee_fox, - /obj/item/toy/plushie/pink_fox, - /obj/item/toy/plushie/purple_fox, - /obj/item/toy/plushie/crimson_fox, - /obj/item/toy/plushie/deer, - /obj/item/toy/plushie/black_cat, - /obj/item/toy/plushie/grey_cat, - /obj/item/toy/plushie/white_cat, - /obj/item/toy/plushie/orange_cat, - /obj/item/toy/plushie/siamese_cat, - /obj/item/toy/plushie/tabby_cat, - /obj/item/toy/plushie/tuxedo_cat, - /obj/item/toy/plushie/squid/green, - /obj/item/toy/plushie/squid/mint, - /obj/item/toy/plushie/squid/blue, - /obj/item/toy/plushie/squid/orange, - /obj/item/toy/plushie/squid/yellow, - /obj/item/toy/plushie/squid/pink - ) - name = "Plushies Crate" - cost = 15 - container_type = /obj/structure/closet/crate/corporate/allico - container_name = "Plushies Crate" - -/datum/supply_pack/misc/eftpos - contains = list(/obj/item/eftpos) - name = "EFTPOS scanner" - cost = 10 - container_type = /obj/structure/closet/crate - container_name = "EFTPOS crate" - -/datum/supply_pack/misc/chaplaingear - name = "Chaplain equipment" - contains = list( - /obj/item/clothing/under/rank/chaplain, - /obj/item/clothing/shoes/black, - /obj/item/clothing/suit/nun, - /obj/item/clothing/head/nun_hood, - /obj/item/clothing/suit/storage/hooded/chaplain_hoodie, - /obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout, - /obj/item/clothing/suit/holidaypriest, - /obj/item/clothing/under/wedding/bride_white, - /obj/item/storage/backpack/cultpack, - /obj/item/storage/fancy/candle_box = 3, - /obj/item/reagent_containers/food/drinks/bottle/holywater - ) - cost = 10 - container_type = /obj/structure/closet/crate - container_name = "Chaplain equipment crate" - -/datum/supply_pack/misc/hoverpod - name = "Hoverpod Shipment" - contains = list() - cost = 80 - container_type = /obj/structure/largecrate/hoverpod - container_name = "Hoverpod Crate" - -/datum/supply_pack/randomised/misc/webbing - name = "Webbing crate" - num_contained = 4 - contains = list( - /obj/item/clothing/accessory/storage/black_vest, - /obj/item/clothing/accessory/storage/brown_vest, - /obj/item/clothing/accessory/storage/white_vest, - /obj/item/clothing/accessory/storage/black_drop_pouches, - /obj/item/clothing/accessory/storage/brown_drop_pouches, - /obj/item/clothing/accessory/storage/white_drop_pouches, - /obj/item/clothing/accessory/storage/webbing - ) - cost = 10 - container_type = /obj/structure/closet/crate - container_name = "Webbing crate" - -/datum/supply_pack/misc/holoplant - name = "Holoplant Pot" - contains = list(/obj/machinery/holoplant/shipped) - cost = 15 - container_type = /obj/structure/closet/crate - container_name = "Holoplant crate" - -/datum/supply_pack/misc/glucose_hypos - name = "Glucose Hypoinjectors" - contains = list( - /obj/item/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5 - ) - cost = 25 - container_type = /obj/structure/closet/crate - container_name = "Glucose Hypo Crate" - -/datum/supply_pack/misc/mre_rations - // num_contained = 6 i'm just commenting this out because whoever made this should have looked and seen that this doesn't work for non randomized crates - // screw you for causing me a compile error - name = "Emergency - MREs" - contains = list( - /obj/item/storage/single_use/mre, - /obj/item/storage/single_use/mre/menu2, - /obj/item/storage/single_use/mre/menu3, - /obj/item/storage/single_use/mre/menu4, - /obj/item/storage/single_use/mre/menu5, - /obj/item/storage/single_use/mre/menu6, - /obj/item/storage/single_use/mre/menu7, - /obj/item/storage/single_use/mre/menu8, - /obj/item/storage/single_use/mre/menu9, - /obj/item/storage/single_use/mre/menu10, - ) - cost = 50 - container_type = /obj/structure/closet/crate/corporate/centauri - container_name = "ready to eat rations" - -/datum/supply_pack/misc/paste_rations - name = "Emergency - Paste" - contains = list( - /obj/item/storage/single_use/mre/menu11 = 2, - ) - cost = 25 - container_type = /obj/structure/closet/crate/corporate/centauri - container_name = "emergency rations" - -/datum/supply_pack/misc/medical_rations - name = "Emergency - VitaPaste" - contains = list( - /obj/item/storage/single_use/mre/menu13 = 2, - ) - cost = 40 - container_type = /obj/structure/closet/crate/corporate/centauri - container_name = "emergency rations" - -/datum/supply_pack/misc/beltminer - name = "Belt-miner gear crate" - contains = list( - /obj/item/gun/energy/particle = 2, - /obj/item/cell/device/weapon = 2, - /obj/item/storage/firstaid/regular = 1, - /obj/item/gps = 2, - /obj/item/storage/box/traumainjectors = 1 - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/grayson - container_name = "Belt-miner gear crate" - access = ACCESS_SUPPLY_MINE - -/datum/supply_pack/misc/eva_rig - name = "eva hardsuit (empty)" - contains = list( - /obj/item/hardsuit/eva = 1 - ) - cost = 150 - container_type = /obj/structure/closet/crate/secure/gear - container_name = "eva hardsuit crate" - access = list(ACCESS_SUPPLY_MINE, - ACCESS_COMMAND_EVA, - ACCESS_GENERAL_EXPLORER, - ACCESS_GENERAL_PILOT) - one_access = TRUE - -/datum/supply_pack/misc/mining_rig - name = "industrial hardsuit (empty)" - contains = list( - /obj/item/hardsuit/industrial = 1 - ) - cost = 150 - container_type = /obj/structure/closet/crate/secure/corporate/grayson - container_name = "industrial hardsuit crate" - access = list(ACCESS_SUPPLY_MINE, - ACCESS_COMMAND_EVA) - one_access = TRUE - -/datum/supply_pack/misc/medical_rig - name = "medical hardsuit (empty)" - contains = list( - /obj/item/hardsuit/medical = 1 - ) - cost = 150 - container_type = /obj/structure/closet/crate/secure/corporate/veymed - container_name = "medical hardsuit crate" - access = ACCESS_MEDICAL_MAIN - -/datum/supply_pack/misc/phoronoid - name = "Spare Phoronoid containment suits" - contains = list( - /obj/item/clothing/suit/space/plasman = 3, - /obj/item/clothing/head/helmet/space/plasman = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/tank/vox = 3, - ) - cost = 40 - container_name = "spare phoronoid suits" - -/datum/supply_pack/misc/security_rig - name = "hazard hardsuit (empty)" - contains = list( - /obj/item/hardsuit/hazard = 1 - ) - cost = 150 - container_type = /obj/structure/closet/crate/secure/gear - container_name = "hazard hardsuit crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/misc/science_rig - name = "ami hardsuit (empty)" - contains = list( - /obj/item/hardsuit/hazmat = 1 - ) - cost = 150 - container_type = /obj/structure/closet/crate/secure/gear - container_name = "ami hardsuit crate" - access = ACCESS_SCIENCE_RD - -/datum/supply_pack/misc/ce_rig - name = "advanced hardsuit (empty)" - contains = list( - /obj/item/hardsuit/ce = 1 - ) - cost = 150 - container_type = /obj/structure/closet/crate/secure/corporate/aether - container_name = "advanced hardsuit crate" - access = ACCESS_ENGINEERING_CE - - -/datum/supply_pack/misc/colored_lights - name = "Colored Lights Bundle" - contains = list( - /obj/item/storage/box/lights/bulbs_colored = 2, - /obj/item/storage/box/lights/tubes_colored = 2, - /obj/item/storage/box/lights/mixed_colored = 1 - ) - cost = 50 - container_type = /obj/structure/closet/crate - container_name = "Colored Lights crate" - -/datum/supply_pack/misc/neon_lights - name = "Neon Lights Bundle" - contains = list( - /obj/item/storage/box/lights/bulbs_neon = 2, - /obj/item/storage/box/lights/tubes_neon = 2, - /obj/item/storage/box/lights/mixed_neon = 1 - ) - cost = 50 - container_type = /obj/structure/closet/crate - container_name = "Neon Lights crate" - -//Culture Crates -/datum/supply_pack/misc/culture_apidean - name = "Apidean Culture Crate" - contains = list( - /obj/fiftyspawner/wax = 2, - /obj/item/healthanalyzer/apidean = 1, - /obj/item/atmos_analyzer/apidean = 1, - /obj/item/reagent_scanner/apidean = 1, - /mob/living/bot/medibot/apidean = 1, - /obj/item/reagent_containers/food/drinks/bottle/ambrosia_mead = 2, - /obj/item/reagent_containers/food/drinks/bottle/royaljelly = 1 - ) - cost = 50 - container_type = /obj/structure/closet/crate - container_name = "Apidean Culture crate" - -/datum/supply_pack/misc/culture_tyrmalin - name = "Tyrmalin Culture Crate" - contains = list( - /obj/item/tool/wrench/goblin = 2, - /obj/item/weldingtool/welder_spear = 2, - /obj/item/clothing/accessory/skullcodpiece = 2, - /obj/item/reagent_containers/food/snacks/cavemoss_can = 2, - /obj/item/reagent_containers/food/snacks/diggerstew_can = 2, - /obj/item/reagent_containers/food/snacks/canned_bettles = 2, - /obj/item/reagent_containers/food/snacks/rust_can = 2, - /obj/item/reagent_containers/food/drinks/bottle/phobos = 1, - /obj/item/reagent_containers/food/drinks/bottle/greenstuff = 1 - ) - cost = 50 - container_type = /obj/structure/closet/crate - container_name = "Tyrmalin Culture crate" - -/datum/supply_pack/misc/culture_alraune - name = "Alraune Culture Crate" - contains = list( - /obj/item/reagent_containers/food/snacks/wrapped/alraune_bar = 3, - /obj/item/reagent_containers/food/snacks/boxed/bugsnacks = 3, - /obj/item/reagent_containers/food/drinks/cans/alraune = 3 - ) - cost = 50 - container_type = /obj/structure/closet/crate - container_name = "Alraune Culture crate" - -/datum/supply_pack/misc/music_players - name = "Music players" - contains = list( - /obj/item/device/walkpod = 3 - ) - cost = 150 - container_type = /obj/structure/closet/crate - container_name = "Portable music players crate" diff --git a/code/modules/cargo/supplypacks/munitions.dm b/code/modules/cargo/supplypacks/munitions.dm deleted file mode 100644 index 9f24bd3a7010..000000000000 --- a/code/modules/cargo/supplypacks/munitions.dm +++ /dev/null @@ -1,264 +0,0 @@ -/* -* Here is where any supply packs -* related to weapons live. -*/ - -/datum/supply_pack/munitions - group = "Munitions" - -/datum/supply_pack/randomised/munitions - group = "Munitions" - -/datum/supply_pack/munitions/weapons - name = "Weapons - Security basic equipment" - contains = list( - /obj/item/flash = 2, - /obj/item/reagent_containers/spray/pepper = 2, - /obj/item/melee/baton/loaded = 2, - /obj/item/gun/energy/taser = 2, - /obj/item/gunbox = 2, - /obj/item/storage/box/flashbangs = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Security equipment crate" - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/munitions/egunpistol - name = "Weapons - Energy sidearms" - contains = list(/obj/item/gun/energy/gun = 2) - cost = 50 - container_type = /obj/structure/closet/crate/secure/weapon - container_name = "Energy sidearms crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/flareguns - name = "Weapons - Flare guns" - contains = list( - /obj/item/gun/ballistic/shotgun/flare = 2, - /obj/item/storage/box/flashshells = 2 - ) - cost = 25 - container_type = /obj/structure/closet/crate/secure/gear - container_name = "Flare gun crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/eweapons - name = "Weapons - Experimental weapons crate" - contains = list( - /obj/item/gun/energy/xray = 2, - /obj/item/shield/energy = 2) - cost = 100 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Experimental weapons crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/energyweapons - name = "Weapons - Laser rifle crate" - contains = list(/obj/item/gun/energy/laser = 2) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Energy weapons crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/shotgun - name = "Weapons - Shotgun crate" - contains = list( - /obj/item/storage/box/shotgunammo, - /obj/item/storage/box/shotgunshells, - /obj/item/gun/ballistic/shotgun/pump/combat = 2 - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/ward - container_name = "Shotgun crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/erifle - name = "Weapons - Energy marksman" - contains = list(/obj/item/gun/energy/sniperrifle = 2) - cost = 100 - container_type = /obj/structure/closet/crate/secure/corporate/heph - container_name = "Energy marksman crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/burstlaser - name = "Weapons - Burst laser" - contains = list(/obj/item/gun/energy/gun/burst = 2) - cost = 50 - container_type = /obj/structure/closet/crate/secure/weapon - container_name = "Burst laser crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/ionweapons - name = "Weapons - Electromagnetic Rifles" - contains = list( - /obj/item/gun/energy/ionrifle = 2, - /obj/item/storage/box/empslite - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Electromagnetic weapons crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/ionpistols - name = "Weapons - Electromagnetic pistols" - contains = list( - /obj/item/gun/energy/ionrifle/pistol = 2, - /obj/item/storage/box/empslite - ) - cost = 30 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Electromagnetic weapons crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/bsmg - name = "Weapons - Ballistic SMGs" - contains = list(/obj/item/gun/ballistic/automatic/wt550 = 2) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/ward - container_name = "Ballistic weapon crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/brifle - name = "Weapons - Ballistic Rifles" - contains = list(/obj/item/gun/ballistic/automatic/z8 = 2) - cost = 80 - container_type = /obj/structure/closet/crate/secure/weapon - container_name = "Ballistic weapon crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/bolt_rifles_competitive - name = "Weapons - Competitive shooting rifles" - contains = list( - /obj/item/assembly/timer, - /obj/item/gun/ballistic/shotgun/pump/rifle/practice = 2, - /obj/item/ammo_magazine/clip/c762/practice = 4, - /obj/item/target = 2, - /obj/item/target/alien = 2, - /obj/item/target/syndicate = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/weapon - container_name = "Ballistic Weapons crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/mrifle - name = "Weapons - Magnetic Rifles" - contains = list(/obj/item/gun/magnetic/railgun/heater = 2) - cost = 120 - container_type = /obj/structure/closet/crate/secure/weapon - container_name = "Magnetic weapon crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/mpistol - name = "Weapons - Magnetic Pistols" - contains = list(/obj/item/gun/magnetic/railgun/heater/pistol = 2) - cost = 200 - container_type = /obj/structure/closet/crate/secure/weapon - container_name = "Magnetic weapon crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/mcarbine - name = "Weapons - Magnetic Carbines" - contains = list(/obj/item/gun/magnetic/railgun/flechette/sif = 2) - cost = 130 - container_type = /obj/structure/closet/crate/secure/weapon - container_name = "Magnetic weapon crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/shotgunammo - name = "Ammunition - Shotgun shells" - contains = list( - /obj/item/storage/box/shotgunammo = 2, - /obj/item/storage/box/shotgunshells = 2 - ) - cost = 25 - container_type = /obj/structure/closet/crate/secure - container_name = "Ballistic ammunition crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/beanbagammo - name = "Ammunition - Beanbag shells" - contains = list(/obj/item/storage/box/beanbags = 3) - cost = 25 - container_type = /obj/structure/closet/crate - container_name = "Ballistic ammunition crate" - access = ACCESS_SECURITY_ARMORY // Guns are for the armory. - -/datum/supply_pack/munitions/bsmgammo - name = "Ammunition - 9mm top mounted lethal" - contains = list(/obj/item/ammo_magazine/m9mmt = 6) - cost = 25 - container_type = /obj/structure/closet/crate/secure - container_name = "Ballistic ammunition crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/bsmgammorubber - name = "Ammunition - 9mm top mounted rubber" - contains = list(/obj/item/ammo_magazine/m9mmt/rubber = 6) - cost = 25 - container_type = /obj/structure/closet/crate/secure - container_name = "Ballistic ammunition crate" - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/munitions/brifleammo - name = "Ammunition - 7.62mm lethal" - contains = list(/obj/item/ammo_magazine/m762 = 6) - cost = 25 - container_type = /obj/structure/closet/crate/secure - container_name = "Ballistic ammunition crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/pcellammo - name = "Ammunition - Power cell" - contains = list(/obj/item/cell/device/weapon = 3) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/einstein - container_name = "Energy ammunition crate" - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/munitions/firingpins - name = "Weapons - Standard firing pins" - contains = list(/obj/item/storage/box/firingpins = 3) - cost = 10 - container_type = /obj/structure/closet/crate/secure - container_name = "Firing pin crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/munitions/expeditionguns - name = "Frontier phaser (station-locked) crate" - contains = list( - /obj/item/gun/energy/frontier/locked = 2, - /obj/item/gun/energy/frontier/locked/holdout = 1, - ) - cost = 35 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "frontier phaser crate" - access = ACCESS_GENERAL_EXPLORER - -//Culture Update -/datum/supply_pack/munitions/weaponry_apidean - name = "Apidean Weaponry Crate" - contains = list( - /obj/item/gun/ballistic/apinae_stinger = 1, - /obj/item/gun/ballistic/apinae_pistol = 2, - /obj/item/grenade/spawnergrenade/manhacks/apidean = 3 - ) - cost = 150 - container_type = /obj/structure/closet/crate/secure/gear - container_name = "Apidean Weaponry crate" - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/misc/weaponry_tyrmalin - name = "Tyrmalin Weaponry Crate" - contains = list( - /obj/item/gun/energy/ermitter = 1, - /obj/item/gun/ballistic/rocket/tyrmalin = 1, - /obj/item/ammo_casing/rocket/weak = 2, - /obj/item/gun/ballistic/pirate/junker_pistol = 2, - /obj/item/gun/energy/ionrifle/pistol/tyrmalin = 1 - ) - cost = 175 - container_type = /obj/structure/closet/crate/secure/gear - container_name = "Tyrmalin Weaponry crate" - access = ACCESS_SECURITY_EQUIPMENT diff --git a/code/modules/cargo/supplypacks/recreation.dm b/code/modules/cargo/supplypacks/recreation.dm deleted file mode 100644 index c148a8b5774f..000000000000 --- a/code/modules/cargo/supplypacks/recreation.dm +++ /dev/null @@ -1,230 +0,0 @@ -/* -* Here is where any supply packs -* related to recreation live. -*/ - - -/datum/supply_pack/recreation - group = "Recreation" - -/datum/supply_pack/randomised/recreation - group = "Recreation" - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/recreation/foam_weapons - name = "Foam Weapon Crate" - contains = list( - /obj/item/material/sword/foam = 2, - /obj/item/material/twohanded/baseballbat/foam = 2, - /obj/item/material/twohanded/spear/foam = 2, - /obj/item/material/twohanded/fireaxe/foam = 2 - ) - cost = 50 - container_type = /obj/structure/closet/crate - container_name = "foam weapon crate" - -/datum/supply_pack/recreation/lasertag - name = "Lasertag equipment" - contains = list( - /obj/item/gun/energy/lasertag/red, - /obj/item/clothing/suit/redtag, - /obj/item/gun/energy/lasertag/blue, - /obj/item/clothing/suit/bluetag - ) - container_type = /obj/structure/closet - container_name = "Lasertag Closet" - cost = 10 - -/datum/supply_pack/recreation/artscrafts - name = "Arts and Crafts supplies" - contains = list( - /obj/item/storage/fancy/crayons, - /obj/item/storage/fancy/markers, - /obj/item/camera, - /obj/item/camera_film = 2, - /obj/item/storage/photo_album, - /obj/item/packageWrap, - /obj/item/reagent_containers/glass/paint/red, - /obj/item/reagent_containers/glass/paint/green, - /obj/item/reagent_containers/glass/paint/blue, - /obj/item/reagent_containers/glass/paint/yellow, - /obj/item/reagent_containers/glass/paint/purple, - /obj/item/reagent_containers/glass/paint/black, - /obj/item/reagent_containers/glass/paint/white, - /obj/item/contraband/poster, - /obj/item/wrapping_paper = 3 - ) - cost = 10 - container_type = /obj/structure/closet/crate - container_name = "Arts and Crafts crate" - -/datum/supply_pack/recreation/painters - name = "Station Painting Supplies" - cost = 10 - container_name = "station painting supplies crate" - container_type = /obj/structure/closet/crate - contains = list( - /obj/item/pipe_painter = 2, - /obj/item/floor_painter = 2 - ) - -/datum/supply_pack/recreation/cheapbait - name = "Cheap Fishing Bait" - cost = 10 - container_name = "cheap bait crate" - container_type = /obj/structure/closet/crate/freezer - contains = list( - /obj/item/storage/box/wormcan/sickly = 5 - ) - -/datum/supply_pack/randomised/recreation/cheapbait - name = "Deluxe Fishing Bait" - cost = 40 - container_name = "deluxe bait crate" - container_type = /obj/structure/closet/crate/freezer - num_contained = 8 - contains = list( - /obj/item/storage/box/wormcan, - /obj/item/storage/box/wormcan/deluxe - ) - -/datum/supply_pack/recreation/ltagturrets - name = "Laser Tag Turrets" - cost = 40 - container_name = "laser tag turret crate" - container_type = /obj/structure/closet/crate - contains = list( - /obj/machinery/porta_turret/lasertag/blue, - /obj/machinery/porta_turret/lasertag/red - ) - -/datum/supply_pack/recreation/jukebox - name = "Jukebox crate" - cost = 50 - container_name = "Jukebox crate" - container_type = /obj/structure/closet/crate - contains = list (/obj/machinery/media/jukebox = 1) - - -/datum/supply_pack/recreation/restraints - name = "Recreational Restraints" - contains = list( - /obj/item/clothing/mask/muzzle, - /obj/item/clothing/glasses/sunglasses/blindfold, - /obj/item/handcuffs/fuzzy, - /obj/item/duct_tape_roll, - /obj/item/stack/cable_coil/random, - /obj/item/clothing/accessory/collar/shock, - /obj/item/clothing/suit/straight_jacket, - /obj/item/handcuffs/legcuffs/fuzzy, - /obj/item/melee/fluff/holochain/mass, - /obj/item/fluff/riding_crop, - /obj/item/clothing/under/fluff/latexmaid - ) - container_type = /obj/structure/closet/crate - container_name = "Restraints crate" - cost = 30 - -/datum/supply_pack/recreation/wolfgirl_cosplay_crate - name = "Wolfgirl Cosplay Crate" - contains = list( - /obj/item/clothing/head/fluff/wolfgirl = 1, - /obj/item/clothing/shoes/fluff/wolfgirl = 1, - /obj/item/clothing/under/fluff/wolfgirl = 1, - /obj/item/melee/fluffstuff/wolfgirlsword = 1, - /obj/item/shield/fluff/wolfgirlshield = 1 - ) - cost = 50 - container_type = /obj/structure/closet/crate - container_name = "wolfgirl cosplay crate" - -/datum/supply_pack/randomised/recreation/figures - name = "Action figures crate" - num_contained = 5 - contains = list( - /obj/random/action_figure/supplypack - ) - cost = 200 - container_type = /obj/structure/closet/crate/corporate/allico - container_name = "Action figures crate" - -/datum/supply_pack/recreation/characters - name = "Tabletop miniatures" - contains = list( - /obj/item/storage/box/characters - ) - container_type = /obj/structure/closet/crate - container_name = "Tabletop miniatures crate" - cost = 50 - -/datum/supply_pack/randomised/recreation/plushies - name = "Plushies crate" - num_contained = 3 - contains = list( - /obj/random/plushie - ) - cost = 60 - container_type = /obj/structure/closet/crate/corporate/allico - container_name = "Plushies crate" - -/datum/supply_pack/recreation/collars - name = "Collar bundle" - contains = list( - /obj/item/clothing/accessory/collar/shock = 1, - /obj/item/clothing/accessory/collar/spike = 1, - /obj/item/clothing/accessory/collar/silver = 1, - /obj/item/clothing/accessory/collar/gold = 1, - /obj/item/clothing/accessory/collar/bell = 1, - /obj/item/clothing/accessory/collar/pink = 1, - /obj/item/clothing/accessory/collar/holo = 1 - ) - cost = 25 - container_type = /obj/structure/closet/crate - container_name = "collar crate" - -//DONKsoft -/datum/supply_pack/recreation/donksoft - name = "DONKsoft Skirmish Bundle" - contains = list( - /obj/item/gunbox/donksoft = 2, - /obj/item/gunbox/donksoft/shotgun = 2, - /obj/item/gunbox/donksoft/smg = 2, - /obj/item/material/sword/foam = 2, - /obj/item/shield/riot/foam = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate - container_name = "DONKsoft Skirmish crate" - -/datum/supply_pack/recreation/donksoft_exotic - name = "DONKsoft Exotic Weaponry Bundle" - contains = list( - /obj/item/gun/ballistic/automatic/c20r/foam = 2, - /obj/item/gun/ballistic/automatic/lmg/foam = 1, - /obj/item/ammo_magazine/mfoam/c20 = 4, - /obj/item/ammo_magazine/mfoam/lmg = 2, - /obj/item/material/twohanded/spear/foam = 2, - /obj/item/material/twohanded/fireaxe/foam = 1 - ) - cost = 80 - container_type = /obj/structure/closet/crate - container_name = "DONKsoft Exotic Weaponry crate" - -/datum/supply_pack/recreation/donksoft_ammo - name = "DONKsoft Resupply Bundle" - contains = list( - /obj/item/storage/box/foamdart= 4 - ) - cost = 20 - container_type = /obj/structure/closet/crate - container_name = "DONKsoft Resupply crate" - -//Civilian Pellet -/datum/supply_pack/recreation/pelletgun - name = "Recreational Pellet Gun" - contains = list( - /obj/item/gun/ballistic/caseless/pellet, - /obj/item/ammo_magazine/pellets - ) - cost = 20 - container_type = /obj/structure/closet/crate diff --git a/code/modules/cargo/supplypacks/robotics.dm b/code/modules/cargo/supplypacks/robotics.dm deleted file mode 100644 index c0a68d674a91..000000000000 --- a/code/modules/cargo/supplypacks/robotics.dm +++ /dev/null @@ -1,285 +0,0 @@ -/* -* Here is where any supply packs -* related to robotics tasks live. -*/ - -//PROSTHETICS - -/datum/supply_pack/robotics - group = "Robotics" - -/datum/supply_pack/randomised/robotics - group = "Robotics" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robotics_assembly - name = "Robotics assembly crate" - contains = list( - /obj/item/assembly/prox_sensor = 3, - /obj/item/storage/toolbox/electrical, - /obj/item/flash = 4, - /obj/item/cell/high = 2 - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/science - container_name = "Robotics assembly" - access = ACCESS_SCIENCE_ROBOTICS - -/*/datum/supply_pack/robotics/robolimbs_basic - name = "Basic robolimb blueprints" - contains = list( - /obj/item/disk/limb/morpheus, - /obj/item/disk/limb/xion - ) - cost = 15 - container_type = /obj/structure/closet/crate/secure/gear - container_name = "Robolimb blueprints (basic)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs_adv - name = "All robolimb blueprints" - contains = list( - /obj/item/disk/limb/bishop, - /obj/item/disk/limb/hephaestus, - /obj/item/disk/limb/morpheus, - /obj/item/disk/limb/veymed, - /obj/item/disk/limb/wardtakahashi, - /obj/item/disk/limb/xion, - /obj/item/disk/limb/zenghu, - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/gear - container_name = "Robolimb blueprints (adv)" - access = ACCESS_SCIENCE_ROBOTICS -*/ - -/datum/supply_pack/robotics/robolimbs/morpheus - name = "Morpheus robolimb blueprints" - contains = list(/obj/item/disk/limb/morpheus) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/morpheus - container_name = "Robolimb blueprints (Morpheus)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs/antares - name = "Antares robolimb blueprints" - contains = list(/obj/item/disk/limb/antares) - cost = 20 - container_type = /obj/structure/closet/crate/secure/science - container_name = "Robolimb blueprints (Antares)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs/cybersolutions - name = "Cyber Solutions robolimb blueprints" - contains = list(/obj/item/disk/limb/cybersolutions) - cost = 20 - container_type = /obj/structure/closet/crate/secure/science - container_name = "Robolimb blueprints (Cyber Solutions)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs/xion - name = "Xion robolimb blueprints" - contains = list(/obj/item/disk/limb/xion) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/xion - container_name = "Robolimb blueprints (Xion)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs/grayson - name = "Grayson robolimb blueprints" - contains = list(/obj/item/disk/limb/grayson) - cost = 30 - container_type = /obj/structure/closet/crate/secure/corporate/grayson - container_name = "Robolimb blueprints (Grayson)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs/hephaestus - name = "Hephaestus robolimb blueprints" - contains = list(/obj/item/disk/limb/hephaestus) - cost = 35 - container_type = /obj/structure/closet/crate/secure/corporate/heph - container_name = "Robolimb blueprints (Hephaestus)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs/wardtakahashi - name = "Ward-Takahashi robolimb blueprints" - contains = list(/obj/item/disk/limb/wardtakahashi) - cost = 35 - container_type = /obj/structure/closet/crate/secure/corporate/ward - container_name = "Robolimb blueprints (Ward-Takahashi)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs/zenghu - name = "Zeng Hu robolimb blueprints" - contains = list(/obj/item/disk/limb/zenghu) - cost = 35 - container_type = /obj/structure/closet/crate/secure/corporate/zenghu - container_name = "Robolimb blueprints (Zeng Hu)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs/bishop - name = "Bishop robolimb blueprints" - contains = list(/obj/item/disk/limb/bishop) - cost = 70 - container_type = /obj/structure/closet/crate/secure/corporate/bishop - container_name = "Robolimb blueprints (Bishop)" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/robolimbs/cenilimicybernetics - name = "Cenilimi Cybernetics robolimb blueprints" - contains = list(/obj/item/disk/limb/cenilimicybernetics) - cost = 45 - container_type = /obj/structure/closet/crate/secure/science - container_name = "Robolimb blueprints (Cenilimi Cybernetics)" - access = ACCESS_SCIENCE_ROBOTICS - -//MECHS - -/datum/supply_pack/robotics/mecha_ripley - name = "Circuit Crate (\"Ripley\" APLU)" - contains = list( - /obj/item/book/manual/ripley_build_and_repair, - /obj/item/circuitboard/mecha/ripley/main, - /obj/item/circuitboard/mecha/ripley/peripherals - ) - cost = 25 - container_type = /obj/structure/closet/crate/secure/science - container_name = "APLU \"Ripley\" Circuit Crate" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/mecha_odysseus - name = "Circuit Crate (\"Odysseus\")" - contains = list( - /obj/item/circuitboard/mecha/odysseus/peripherals, - /obj/item/circuitboard/mecha/odysseus/main - ) - cost = 25 - container_type = /obj/structure/closet/crate/secure/science - container_name = "\"Odysseus\" Circuit Crate" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/randomised/robotics/exosuit_mod - num_contained = 1 - contains = list( - /obj/random/paintkit, - /obj/random/paintkit, - /obj/random/paintkit, - /obj/random/paintkit - ) - name = "Random APLU modkit" - cost = 200 - container_type = /obj/structure/closet/crate/science - container_name = "heavy crate" - -/datum/supply_pack/randomised/robotics/exosuit_mod/durand - contains = list( - /obj/random/paintkit/durand, - /obj/random/paintkit/durand, - /obj/random/paintkit/durand - ) - name = "Random Durand exosuit modkit" - -/datum/supply_pack/randomised/robotics/exosuit_mod/gygax - contains = list( - /obj/random/paintkit/gygax, - /obj/random/paintkit/gygax, - /obj/random/paintkit/gygax - ) - name = "Random Gygax exosuit modkit" - -/datum/supply_pack/robotics/jumper_cables - name = "Jumper kit crate" - contains = list( - /obj/item/defib_kit/jumper_kit = 2 - ) - cost = 30 - container_type = /obj/structure/closet/crate/secure/science - container_name = "Jumper kit crate" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/restrainingbolt - name = "Restraining bolt crate" - contains = list( - /obj/item/implanter = 1, - /obj/item/implantcase/restrainingbolt = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/cybersolutions - container_name = "Restraining bolt crate" - access = ACCESS_SCIENCE_ROBOTICS - - -/datum/supply_pack/robotics/mecha_gopher - name = "Circuit Crate (\"Gopher\" APLU)" - contains = list( - /obj/item/circuitboard/mecha/gopher/main, - /obj/item/circuitboard/mecha/gopher/peripherals - ) - cost = 25 - container_type = /obj/structure/closet/crate/secure/science - container_name = "APLU \"Gopher\" Circuit Crate" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/mecha_polecat - name = "Circuit Crate (\"Polecat\" APLU)" - contains = list( - /obj/item/circuitboard/mecha/polecat/main, - /obj/item/circuitboard/mecha/polecat/peripherals, - /obj/item/circuitboard/mecha/polecat/targeting - ) - cost = 25 - container_type = /obj/structure/closet/crate/secure/science - container_name = "APLU \"Polecat\" Circuit Crate" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/mecha_weasel - name = "Circuit Crate (\"Weasel\" APLU)" - contains = list( - /obj/item/circuitboard/mecha/weasel/main, - /obj/item/circuitboard/mecha/weasel/peripherals, - /obj/item/circuitboard/mecha/weasel/targeting - ) - cost = 25 - container_type = /obj/structure/closet/crate/secure/science - container_name = "APLU \"Weasel\" Circuit Crate" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/some_robolimbs - name = "Basic Robolimb Blueprints" - contains = list( - /obj/item/disk/limb/morpheus, - /obj/item/disk/limb/xion, - /obj/item/disk/limb/talon - ) - cost = 15 - container_type = /obj/structure/closet/crate/secure - container_name = "Basic Robolimb Blueprint Crate" - access = ACCESS_SCIENCE_ROBOTICS - -/datum/supply_pack/robotics/all_robolimbs - name = "Advanced Robolimb Blueprints" - contains = list( - /obj/item/disk/limb/bishop, - /obj/item/disk/limb/hephaestus, - /obj/item/disk/limb/morpheus, - /obj/item/disk/limb/veymed, - /obj/item/disk/limb/wardtakahashi, - /obj/item/disk/limb/xion, - /obj/item/disk/limb/zenghu, - /obj/item/disk/limb/talon, - /obj/item/disk/limb/dsi_tajaran, - /obj/item/disk/limb/dsi_lizard, - /obj/item/disk/limb/dsi_sergal, - /obj/item/disk/limb/dsi_nevrean, - /obj/item/disk/limb/dsi_vulpkanin, - /obj/item/disk/limb/dsi_akula, - /obj/item/disk/limb/dsi_spider, - /obj/item/disk/limb/dsi_teshari, - /obj/item/disk/limb/eggnerdltd, - /obj/item/disk/limb/eggnerdltdred, - /obj/item/disk/limb/antares - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure - container_name = "Advanced Robolimb Blueprint Crate" - access = ACCESS_SCIENCE_ROBOTICS diff --git a/code/modules/cargo/supplypacks/science.dm b/code/modules/cargo/supplypacks/science.dm deleted file mode 100644 index b8879c06a359..000000000000 --- a/code/modules/cargo/supplypacks/science.dm +++ /dev/null @@ -1,111 +0,0 @@ -/* -* Here is where any supply packs -* related to science tasks live -*/ -/datum/supply_pack/sci - group = "Science" - -/datum/supply_pack/sci/virus - name = "Virus sample crate" - contains = list(/obj/item/virusdish/random = 4) - cost = 25 - container_type = "/obj/structure/closet/crate/secure" - container_name = "Virus sample crate" - access = ACCESS_MEDICAL_CMO - -/datum/supply_pack/sci/coolanttank - name = "Coolant tank crate" - contains = list(/obj/structure/reagent_dispensers/coolanttank) - cost = 15 - container_type = /obj/structure/largecrate - container_name = "coolant tank crate" - -/datum/supply_pack/sci/phoron - name = "Phoron research crate" - contains = list( - /obj/item/tank/phoron = 3, - /obj/item/tank/oxygen = 3, - /obj/item/assembly/igniter = 3, - /obj/item/assembly/prox_sensor = 3, - /obj/item/assembly/timer = 3, - /obj/item/assembly/signaler = 3, - /obj/item/transfer_valve = 3 - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/phoron - container_name = "Phoron assembly crate" - access = ACCESS_SCIENCE_TOXINS - -/datum/supply_pack/sci/exoticseeds - name = "Exotic seeds crate" - contains = list( - /obj/item/seeds/replicapod = 2, - /obj/item/seeds/ambrosiavulgarisseed = 2, - /obj/item/seeds/libertymycelium, - /obj/item/seeds/reishimycelium, - /obj/item/seeds/random = 6, - /obj/item/seeds/kudzuseed - ) - cost = 15 - container_type = /obj/structure/closet/crate/hydroponics - container_name = "Exotic Seeds crate" - access = ACCESS_GENERAL_BOTANY - -/datum/supply_pack/sci/integrated_circuit_printer - name = "Integrated circuit printer" - contains = list(/obj/item/integrated_circuit_printer = 2) - cost = 15 - container_type = /obj/structure/closet/crate - container_name = "Integrated circuit crate" - -/datum/supply_pack/sci/integrated_circuit_printer_upgrade - name = "Integrated circuit printer upgrade - advanced designs" - contains = list(/obj/item/disk/integrated_circuit/upgrade/advanced) - cost = 30 - container_type = /obj/structure/closet/crate - container_name = "Integrated circuit crate" - -/datum/supply_pack/sci/xenoarch - name = "Xenoarchaeology Tech crate" - contains = list( - /obj/item/pickaxe/excavationdrill, - /obj/item/xenoarch_multi_tool, - /obj/item/clothing/suit/space/anomaly, - /obj/item/clothing/head/helmet/space/anomaly, - /obj/item/storage/belt/archaeology, - /obj/item/flashlight/lantern, - /obj/item/core_sampler, - /obj/item/gps, - /obj/item/beacon_locator, - /obj/item/radio/beacon, - /obj/item/clothing/glasses/meson, - /obj/item/pickaxe, - /obj/item/storage/bag/fossils, - /obj/item/hand_labeler) - cost = 100 - container_type = /obj/structure/closet/crate/secure/science - container_name = "Xenoarchaeology Tech crate" - access = ACCESS_SCIENCE_MAIN - -/datum/supply_pack/sci/jukebox_circuitboard - name = "Jukebox Circuit Board crate" - contains = list(/obj/item/circuitboard/jukebox = 2) - cost = 25 - container_type = /obj/structure/closet/crate - container_name = "Jukebox Circuit Board crate" - - -/datum/supply_pack/sci/pred - name = "Dangerous Predator crate" - cost = 40 - container_type = /obj/structure/largecrate/animal/pred - container_name = "Dangerous Predator crate" - access = ACCESS_SCIENCE_XENOBIO - -/datum/supply_pack/sci/pred_doom - name = "EXTREMELY Dangerous Predator crate" - cost = 200 - container_type = /obj/structure/largecrate/animal/dangerous - container_name = "EXTREMELY Dangerous Predator crate" - access = ACCESS_SCIENCE_XENOBIO - contraband = 1 diff --git a/code/modules/cargo/supplypacks/security.dm b/code/modules/cargo/supplypacks/security.dm deleted file mode 100644 index d41850aa7f64..000000000000 --- a/code/modules/cargo/supplypacks/security.dm +++ /dev/null @@ -1,680 +0,0 @@ -/* -* Here is where any supply packs -* related to security tasks live -*/ - - -/datum/supply_pack/security - group = "Security" - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/randomised/security - group = "Security" - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/randomised/security/armor - name = "Armor - Security armor" - num_contained = 5 - contains = list( - /obj/item/clothing/suit/storage/vest, - /obj/item/clothing/suit/storage/vest/officer, - /obj/item/clothing/suit/storage/vest/warden, - /obj/item/clothing/suit/storage/vest/hos, - /obj/item/clothing/suit/storage/vest/detective, - /obj/item/clothing/suit/storage/vest/heavy, - /obj/item/clothing/suit/storage/vest/heavy/officer, - /obj/item/clothing/suit/storage/vest/heavy/warden, - /obj/item/clothing/suit/storage/vest/heavy/hos - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Armor crate" - -/datum/supply_pack/randomised/security/carriers - name = "Armor - Plate carriers" - num_contained = 5 - contains = list( - /obj/item/clothing/suit/armor/pcarrier, - /obj/item/clothing/suit/armor/pcarrier/alt, - /obj/item/clothing/suit/armor/pcarrier/blue, - /obj/item/clothing/suit/armor/pcarrier/green, - /obj/item/clothing/suit/armor/pcarrier/navy, - /obj/item/clothing/suit/armor/pcarrier/tan, - /obj/item/clothing/suit/armor/pcarrier/press - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Plate Carrier crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/carriertags - name = "Armor - Plate carrier tags" - contains = list( - /obj/item/clothing/accessory/armor/tag, - /obj/item/clothing/accessory/armor/tag/nts, - /obj/item/clothing/accessory/armor/tag/ntc, - /obj/item/clothing/accessory/armor/tag/opos, - /obj/item/clothing/accessory/armor/tag/oneg, - /obj/item/clothing/accessory/armor/tag/apos, - /obj/item/clothing/accessory/armor/tag/aneg, - /obj/item/clothing/accessory/armor/tag/bpos, - /obj/item/clothing/accessory/armor/tag/bneg, - /obj/item/clothing/accessory/armor/tag/abpos, - /obj/item/clothing/accessory/armor/tag/abneg - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Plate Carrier crate" - -/datum/supply_pack/security/helmcovers - name = "Armor - Helmet covers" - contains = list( - /obj/item/clothing/accessory/armor/helmcover/blue, - /obj/item/clothing/accessory/armor/helmcover/blue, - /obj/item/clothing/accessory/armor/helmcover/navy, - /obj/item/clothing/accessory/armor/helmcover/navy, - /obj/item/clothing/accessory/armor/helmcover/green, - /obj/item/clothing/accessory/armor/helmcover/green, - /obj/item/clothing/accessory/armor/helmcover/tan, - /obj/item/clothing/accessory/armor/helmcover/tan - ) - cost = 15 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Helmet Covers crate" - -/datum/supply_pack/randomised/security/armorplates - name = "Armor - Security p-carrier armor plates" - num_contained = 5 - contains = list( - /obj/item/clothing/accessory/armor/armorplate, - /obj/item/clothing/accessory/armor/armorplate/stab, - /obj/item/clothing/accessory/armor/armorplate, - /obj/item/clothing/accessory/armor/armorplate/stab, - /obj/item/clothing/accessory/armor/armorplate/medium, - /obj/item/clothing/accessory/armor/armorplate/medium, - /obj/item/clothing/accessory/armor/armorplate/tactical, - /obj/item/clothing/accessory/armor/armorplate/ablative, - /obj/item/clothing/accessory/armor/armorplate/riot, - /obj/item/clothing/accessory/armor/armorplate/ballistic - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Armor plate crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/randomised/security/carrierarms - name = "Armor - Security armguard attachments" - num_contained = 5 - contains = list( - /obj/item/clothing/accessory/armor/armguards, - /obj/item/clothing/accessory/armor/armguards/blue, - /obj/item/clothing/accessory/armor/armguards/navy, - /obj/item/clothing/accessory/armor/armguards/green, - /obj/item/clothing/accessory/armor/armguards/tan, - /obj/item/clothing/accessory/armor/armguards/ablative, - /obj/item/clothing/accessory/armor/armguards/riot, - /obj/item/clothing/accessory/armor/armguards/ballistic - ) - cost = 30 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Armor plate crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/randomised/security/carrierlegs - name = "Armor - Security legguard attachments" - num_contained = 5 - contains = list( - /obj/item/clothing/accessory/armor/legguards, - /obj/item/clothing/accessory/armor/legguards/blue, - /obj/item/clothing/accessory/armor/legguards/navy, - /obj/item/clothing/accessory/armor/legguards/green, - /obj/item/clothing/accessory/armor/legguards/tan, - /obj/item/clothing/accessory/armor/legguards/ablative, - /obj/item/clothing/accessory/armor/legguards/riot, - /obj/item/clothing/accessory/armor/legguards/ballistic - ) - cost = 30 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Armor plate crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/randomised/security/carrierbags - name = "Armor - Security p-carrier pouch attachments" - num_contained = 5 - contains = list( - /obj/item/clothing/accessory/storage/pouches, - /obj/item/clothing/accessory/storage/pouches/blue, - /obj/item/clothing/accessory/storage/pouches/navy, - /obj/item/clothing/accessory/storage/pouches/green, - /obj/item/clothing/accessory/storage/pouches/tan, - /obj/item/clothing/accessory/storage/pouches/large, - /obj/item/clothing/accessory/storage/pouches/large/blue, - /obj/item/clothing/accessory/storage/pouches/large/navy, - /obj/item/clothing/accessory/storage/pouches/large/green, - /obj/item/clothing/accessory/storage/pouches/large/tan - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Armor plate crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/riot_gear - name = "Gear - Riot" - contains = list( - /obj/item/melee/baton = 3, - /obj/item/shield/riot = 3, - /obj/item/handcuffs = 3, - /obj/item/storage/box/flashbangs, - /obj/item/storage/box/beanbags, - /obj/item/storage/box/handcuffs - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Riot gear crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/riot_armor - name = "Armor Set - Riot" - contains = list( - /obj/item/clothing/head/helmet/riot, - /obj/item/clothing/suit/armor/riot, - /obj/item/clothing/gloves/arm_guard/riot, - /obj/item/clothing/shoes/leg_guard/riot - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Riot armor crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/riot_plates - name = "Armor Set - Riot (P-Carrier)" - contains = list( - /obj/item/clothing/head/helmet/riot, - /obj/item/clothing/suit/armor/pcarrier/riot, - /obj/item/clothing/accessory/armor/armguards/riot, - /obj/item/clothing/accessory/armor/legguards/riot - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Riot armor crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/ablative_armor - name = "Armor Set - Ablative" - contains = list( - /obj/item/clothing/head/helmet/ablative, - /obj/item/clothing/suit/armor/laserproof, - /obj/item/clothing/gloves/arm_guard/laserproof, - /obj/item/clothing/shoes/leg_guard/laserproof - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Ablative armor crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/ablative_plates - name = "Armor Set - Ablative (P-Carrier)" - contains = list( - /obj/item/clothing/head/helmet/ablative, - /obj/item/clothing/suit/armor/pcarrier/ablative, - /obj/item/clothing/accessory/armor/armguards/ablative, - /obj/item/clothing/accessory/armor/legguards/ablative - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Ablative armor crate" - access = ACCESS_SECURITY_ARMORY - - -/datum/supply_pack/security/bullet_resistant_armor - name = "Armor Set - Ballistic" - contains = list( - /obj/item/clothing/head/helmet/ballistic, - /obj/item/clothing/suit/armor/bulletproof, - /obj/item/clothing/gloves/arm_guard/bulletproof, - /obj/item/clothing/shoes/leg_guard/bulletproof - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Ballistic armor crate" - access = ACCESS_SECURITY_ARMORY - - -/datum/supply_pack/security/bullet_resistant_plates - name = "Armor Set - Ballistic (P-Carrier)" - contains = list( - /obj/item/clothing/head/helmet/ballistic, - /obj/item/clothing/suit/armor/pcarrier/ballistic, - /obj/item/clothing/accessory/armor/armguards/ballistic, - /obj/item/clothing/accessory/armor/legguards/ballistic - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Ballistic armor crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/combat_armor - name = "Armor - Combat" - contains = list( - /obj/item/clothing/head/helmet/combat, - /obj/item/clothing/suit/armor/combat, - /obj/item/clothing/gloves/arm_guard/combat, - /obj/item/clothing/shoes/leg_guard/combat - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Combat armor crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/tactical - name = "Armor - NT Tactical" - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "NT Tactical armor crate" - cost = 40 - access = ACCESS_SECURITY_ARMORY - contains = list( - /obj/item/clothing/under/tactical, - /obj/item/clothing/suit/armor/tactical, - /obj/item/clothing/head/helmet/tactical, - /obj/item/clothing/mask/balaclava/tactical, - /obj/item/clothing/glasses/sunglasses/sechud/tactical, - /obj/item/storage/belt/security/tactical, - /obj/item/clothing/shoes/boots/jackboots, - /obj/item/clothing/gloves/black, - /obj/item/clothing/under/tactical, - /obj/item/clothing/suit/armor/tactical, - /obj/item/clothing/head/helmet/tactical, - /obj/item/clothing/mask/balaclava/tactical, - /obj/item/clothing/glasses/sunglasses/sechud/tactical, - /obj/item/storage/belt/security/tactical, - /obj/item/clothing/shoes/boots/jackboots, - /obj/item/clothing/gloves/black - ) - -/datum/supply_pack/security/flexitac - name = "Armor - Tactical Light" - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Tactical Light armor crate" - cost = 75 - access = ACCESS_SECURITY_ARMORY - contains = list( - /obj/item/clothing/suit/storage/vest/heavy/flexitac, - /obj/item/clothing/head/helmet/flexitac, - /obj/item/clothing/shoes/leg_guard/flexitac, - /obj/item/clothing/gloves/arm_guard/flexitac, - /obj/item/clothing/mask/balaclava/tactical, - /obj/item/clothing/glasses/sunglasses/sechud/tactical, - /obj/item/storage/belt/security/tactical, - /obj/item/clothing/suit/storage/vest/heavy/flexitac, - /obj/item/clothing/head/helmet/flexitac, - /obj/item/clothing/shoes/leg_guard/flexitac, - /obj/item/clothing/gloves/arm_guard/flexitac, - /obj/item/clothing/mask/balaclava/tactical, - /obj/item/clothing/glasses/sunglasses/sechud/tactical, - /obj/item/storage/belt/security/tactical - ) - -/datum/supply_pack/security/securitybarriers - name = "Misc - Security Barriers" - contains = list(/obj/machinery/deployable/barrier = 4) - cost = 20 - container_type = /obj/structure/largecrate - container_name = "Security barrier crate" - access = null - -/datum/supply_pack/security/securityshieldgen - name = "Misc - Wall shield generators" - contains = list(/obj/machinery/shieldwallgen = 4) - cost = 20 - container_type = /obj/structure/closet/crate/secure - container_name = "Wall shield generators crate" - access = ACCESS_COMMAND_TELEPORTER - -/datum/supply_pack/randomised/security/holster - name = "Gear - Holsters" - num_contained = 4 - contains = list( - /obj/item/clothing/accessory/holster, - /obj/item/clothing/accessory/holster/armpit, - /obj/item/clothing/accessory/holster/waist, - /obj/item/clothing/accessory/holster/hip - ) - cost = 15 - container_type = /obj/structure/closet/crate/corporate/nanotrasen - container_name = "Holster crate" - -/datum/supply_pack/security/extragear - name = "Gear - Security surplus equipment" - contains = list( - /obj/item/storage/belt/security = 3, - /obj/item/clothing/glasses/sunglasses/sechud = 3, - /obj/item/radio/headset/headset_sec/alt = 3, - /obj/item/clothing/suit/storage/hooded/wintercoat/security = 3, - /obj/item/storage/belt/dualholster = 3 - ) - cost = 15 - container_type = /obj/structure/closet/crate/corporate/nanotrasen - container_name = "Security surplus equipment" - -/datum/supply_pack/security/detectivegear - name = "Forensic - Investigation equipment" - contains = list( - /obj/item/storage/box/evidence = 2, - /obj/item/clothing/suit/storage/vest/detective, - /obj/item/cartridge/detective, - /obj/item/radio/headset/headset_sec, - /obj/item/barrier_tape_roll/police, - /obj/item/clothing/glasses/sunglasses, - /obj/item/camera, - /obj/item/folder/red, - /obj/item/folder/blue, - /obj/item/storage/belt/detective, - /obj/item/clothing/gloves/black, - /obj/item/tape_recorder, - /obj/item/mass_spectrometer, - /obj/item/camera_film = 2, - /obj/item/storage/photo_album, - /obj/item/reagent_scanner, - /obj/item/flashlight/maglight, - /obj/item/storage/briefcase/crimekit, - /obj/item/storage/bag/detective - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Forensic equipment" - access = ACCESS_SECURITY_FORENSICS - -/datum/supply_pack/security/detectivescan - name = "Forensic - Scanning Equipment" - contains = list( - /obj/item/mass_spectrometer, - /obj/item/reagent_scanner, - /obj/item/storage/briefcase/crimekit, - /obj/item/detective_scanner - ) - cost = 60 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Forensic equipment" - access = ACCESS_SECURITY_FORENSICS - -/datum/supply_pack/security/detectiveclothes - name = "Forensic - Investigation apparel" - contains = list( - /obj/item/clothing/under/det/black = 2, - /obj/item/clothing/under/det/grey = 2, - /obj/item/clothing/head/det/grey = 2, - /obj/item/clothing/under/det/skirt = 2, - /obj/item/clothing/under/det = 2, - /obj/item/clothing/head/det = 2, - /obj/item/clothing/suit/storage/det_trench, - /obj/item/clothing/suit/storage/det_trench/grey, - /obj/item/clothing/suit/storage/forensics/red, - /obj/item/clothing/suit/storage/forensics/blue, - /obj/item/clothing/under/det/corporate = 2, - /obj/item/clothing/accessory/badge/holo/detective = 2, - /obj/item/clothing/gloves/black = 2 - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Investigation clothing" - access = ACCESS_SECURITY_FORENSICS - -/datum/supply_pack/security/officergear - name = "Gear - Officer equipment" - contains = list( - /obj/item/clothing/suit/storage/vest/officer, - /obj/item/clothing/head/helmet, - /obj/item/cartridge/security, - /obj/item/clothing/accessory/badge/holo, - /obj/item/clothing/accessory/badge/holo/cord, - /obj/item/radio/headset/headset_sec, - /obj/item/storage/belt/security, - /obj/item/flash, - /obj/item/reagent_containers/spray/pepper, - /obj/item/grenade/flashbang, - /obj/item/melee/baton/loaded, - /obj/item/clothing/glasses/sunglasses/sechud, - /obj/item/barrier_tape_roll/police, - /obj/item/clothing/gloves/black, - /obj/item/hailer, - /obj/item/flashlight/flare, - /obj/item/clothing/accessory/storage/black_vest, - /obj/item/clothing/head/soft/sec/corp, - /obj/item/clothing/under/rank/security/corp, - /obj/item/gun/energy/taser, - /obj/item/flashlight/maglight - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Officer equipment" - access = ACCESS_SECURITY_BRIG - -/datum/supply_pack/security/wardengear - name = "Gear - Warden equipment" - contains = list( - /obj/item/clothing/suit/storage/vest/warden, - /obj/item/clothing/under/rank/warden, - /obj/item/clothing/under/rank/warden/corp, - /obj/item/clothing/suit/storage/vest/wardencoat, - /obj/item/clothing/suit/storage/vest/wardencoat/alt, - /obj/item/clothing/head/helmet/warden, - /obj/item/cartridge/security, - /obj/item/radio/headset/headset_sec, - /obj/item/clothing/glasses/sunglasses/sechud, - /obj/item/barrier_tape_roll/police, - /obj/item/hailer, - /obj/item/clothing/accessory/badge/holo/warden, - /obj/item/storage/box/flashbangs, - /obj/item/storage/belt/security, - /obj/item/reagent_containers/spray/pepper, - /obj/item/melee/baton/loaded, - /obj/item/storage/box/holobadge, - /obj/item/clothing/head/beret/sec/corporate/warden, - /obj/item/flashlight/maglight - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Warden equipment" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/headofsecgear - name = "Gear - Head of security equipment" - contains = list( - /obj/item/clothing/head/helmet/HoS, - /obj/item/clothing/suit/storage/vest/hos, - /obj/item/clothing/under/rank/head_of_security/corp, - /obj/item/clothing/suit/storage/vest/hoscoat, - /obj/item/clothing/head/helmet/dermal, - /obj/item/cartridge/hos, - /obj/item/radio/headset/heads/hos, - /obj/item/clothing/glasses/sunglasses/sechud, - /obj/item/storage/belt/security, - /obj/item/flash, - /obj/item/hailer, - /obj/item/clothing/accessory/badge/holo/hos, - /obj/item/clothing/accessory/holster/waist, - /obj/item/melee/telebaton, - /obj/item/shield/riot/tele, - /obj/item/clothing/head/beret/sec/corporate/hos, - /obj/item/flashlight/maglight - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Head of security equipment" - access = ACCESS_SECURITY_HOS - -/datum/supply_pack/security/securityclothing - name = "Misc - Security uniform red" - contains = list( - /obj/item/storage/backpack/satchel/sec = 2, - /obj/item/storage/backpack/security = 2, - /obj/item/clothing/accessory/armband = 4, - /obj/item/clothing/under/rank/security = 4, - /obj/item/clothing/under/rank/security2 = 4, - /obj/item/clothing/under/rank/warden, - /obj/item/clothing/under/rank/head_of_security, - /obj/item/clothing/head/soft/sec = 4, - /obj/item/clothing/gloves/black = 4, - /obj/item/storage/box/holobadge - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Security uniform crate" - -/datum/supply_pack/security/navybluesecurityclothing - name = "Misc - Security uniform navy blue" - contains = list( - /obj/item/storage/backpack/satchel/sec = 2, - /obj/item/storage/backpack/security = 2, - /obj/item/clothing/under/rank/security/navyblue = 4, - /obj/item/clothing/suit/security/navyofficer = 4, - /obj/item/clothing/under/rank/warden/navyblue, - /obj/item/clothing/suit/security/navywarden, - /obj/item/clothing/under/rank/head_of_security/navyblue, - /obj/item/clothing/suit/security/navyhos, - /obj/item/clothing/head/beret/sec/navy/officer = 4, - /obj/item/clothing/head/beret/sec/navy/warden, - /obj/item/clothing/head/beret/sec/navy/hos, - /obj/item/clothing/gloves/black = 4, - /obj/item/storage/box/holobadge - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Navy blue security uniform crate" - -/datum/supply_pack/security/corporatesecurityclothing - name = "Misc - Security uniform corporate" - contains = list( - /obj/item/storage/backpack/satchel/sec = 2, - /obj/item/storage/backpack/security = 2, - /obj/item/clothing/under/rank/security/corp = 4, - /obj/item/clothing/head/soft/sec/corp = 4, - /obj/item/clothing/under/rank/warden/corp, - /obj/item/clothing/under/rank/head_of_security/corp, - /obj/item/clothing/head/beret/sec = 4, - /obj/item/clothing/head/beret/sec/corporate/warden, - /obj/item/clothing/head/beret/sec/corporate/hos, - /obj/item/clothing/under/det/corporate = 2, - /obj/item/clothing/gloves/black = 4, - /obj/item/storage/box/holobadge - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Corporate security uniform crate" - -/datum/supply_pack/security/biosuit - name = "Gear - Security biohazard gear" - contains = list( - /obj/item/clothing/head/bio_hood/security = 3, - /obj/item/clothing/under/rank/security = 3, - /obj/item/clothing/suit/bio_suit/security = 3, - /obj/item/clothing/shoes/white = 3, - /obj/item/clothing/mask/gas = 3, - /obj/item/tank/oxygen = 3, - /obj/item/clothing/gloves/sterile/latex, - /obj/item/storage/box/gloves - ) - cost = 25 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Security biohazard gear" - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/security/posters - name = "Gear - Morale Posters" - contains = list( - /obj/item/contraband/poster/nanotrasen = 6 - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Morale Posters" - access = ACCESS_ENGINEERING_MAINT - -/datum/supply_pack/security/biosuit - contains = list( - /obj/item/clothing/head/bio_hood/security = 3, - /obj/item/clothing/under/rank/security = 3, - /obj/item/clothing/suit/bio_suit/security = 3, - /obj/item/clothing/shoes/white = 3, - /obj/item/clothing/mask/gas = 3, - /obj/item/tank/oxygen = 3, - /obj/item/clothing/gloves/sterile/latex, - /obj/item/storage/box/gloves - ) - cost = 40 - -/datum/supply_pack/randomised/security/holster - num_contained = 5 - contains = list( - /obj/item/clothing/accessory/holster, - /obj/item/clothing/accessory/holster/armpit, - /obj/item/clothing/accessory/holster/waist, - /obj/item/clothing/accessory/holster/hip, - /obj/item/clothing/accessory/holster/leg, - /obj/item/storage/belt/dualholster - ) - -/datum/supply_pack/security/kevlarkit - name = "Misc - Kevlar Upgrade Kits" - contains = list( - /obj/item/kevlarupgrade = 5, - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Kevlar Upgrade Kits" - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/security/pcarriers/combat - name = "Armor - Combat Armor (P-Carrier)" - contains = list( - /obj/item/clothing/suit/armor/pcarrier = 3, - /obj/item/clothing/accessory/armor/armorplate/combat = 3, - /obj/item/clothing/accessory/armor/armguards/combat = 3, - /obj/item/clothing/accessory/armor/legguards/combat = 3, - /obj/item/clothing/head/helmet/redcombat = 3, - ) - cost = 70 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Combat Armor crate" - access = ACCESS_SECURITY_EQUIPMENT - contraband = 1 - -/datum/supply_pack/security/helmets - name = "Armor - Helmet Pack" - contains = list( - /obj/item/clothing/head/helmet = 3, - /obj/item/clothing/head/helmet/warden = 1, - /obj/item/clothing/head/helmet/HoS = 1, - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - access = ACCESS_SECURITY_EQUIPMENT - -/datum/supply_pack/security/wardengear - name = "Tracking Implants" - contains = list( - /obj/item/storage/box/trackimp = 1 - ) - cost = 30 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/battlerifle - name = "Battle Rifle Pack" - contains = list( - /obj/item/gun/ballistic/automatic/battlerifle = 2, - /obj/item/ammo_magazine/m95 = 4 - ) - cost = 60 - container_type = /obj/structure/closet/crate/secure/corporate/heph - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/security/quadshot - name = "Quad Shotgun Pack" - contains = list( - /obj/item/gun/ballistic/shotgun/doublebarrel/quad = 2, - /obj/item/storage/box/shotgunshells = 2, - /obj/item/storage/belt/security/tactical/bandolier = 2, - ) - cost = 70 - container_type = /obj/structure/closet/crate/secure/corporate/heph - access = ACCESS_SECURITY_ARMORY diff --git a/code/modules/cargo/supplypacks/supply.dm b/code/modules/cargo/supplypacks/supply.dm deleted file mode 100644 index dddafeb2e2c4..000000000000 --- a/code/modules/cargo/supplypacks/supply.dm +++ /dev/null @@ -1,151 +0,0 @@ -/* -* Here is where any supply packs -* related to civilian tasks live -*/ - -/datum/supply_pack/supply - group = "Supplies" - -/datum/supply_pack/supply/food - name = "Kitchen supply crate" - contains = list( - /obj/item/reagent_containers/food/condiment/flour = 6, - /obj/item/reagent_containers/food/drinks/milk = 3, - /obj/item/reagent_containers/food/drinks/soymilk = 2, - /obj/item/storage/fancy/egg_box = 2, - /obj/item/reagent_containers/food/snacks/tofu = 4, - /obj/item/reagent_containers/food/snacks/meat = 4 - ) - cost = 10 - container_type = /obj/structure/closet/crate/corporate/centauri - container_name = "Food crate" - -/datum/supply_pack/supply/toner - name = "Toner cartridges" - contains = list(/obj/item/toner = 6) - cost = 10 - container_type = /obj/structure/closet/crate - container_name = "Toner cartridges" - -/datum/supply_pack/supply/janitor - name = "Janitorial supplies" - contains = list( - /obj/item/reagent_containers/glass/bucket, - /obj/item/mop, - /obj/item/clothing/under/rank/janitor, - /obj/item/cartridge/janitor, - /obj/item/clothing/gloves/black, - /obj/item/clothing/head/soft/purple, - /obj/item/storage/belt/janitor, - /obj/item/clothing/shoes/galoshes, - /obj/item/caution = 4, - /obj/item/storage/bag/trash, - /obj/item/lightreplacer, - /obj/item/reagent_containers/spray/cleaner, - /obj/item/reagent_containers/glass/rag, - /obj/item/reagent_containers/spray/pestbgone, - /obj/item/grenade/chem_grenade/cleaner = 3, - /obj/structure/mopbucket - ) - cost = 10 - container_type = /obj/structure/closet/crate - container_name = "Janitorial supplies" - -/datum/supply_pack/supply/shipping - name = "Shipping supplies" - contains = list( - /obj/fiftyspawner/cardboard, - /obj/item/packageWrap = 4, - /obj/item/wrapping_paper = 2, - /obj/item/destTagger, - /obj/item/hand_labeler, - /obj/item/tool/wirecutters, - /obj/item/duct_tape_roll = 2) - cost = 10 - container_type = /obj/structure/closet/crate - container_name = "Shipping supplies crate" - -/datum/supply_pack/supply/bureaucracy - contains = list( - /obj/item/clipboard = 2, - /obj/item/pen/red, - /obj/item/pen/blue, - /obj/item/pen/blue, - /obj/item/camera_film, - /obj/item/folder/blue, - /obj/item/folder/red, - /obj/item/folder/yellow, - /obj/item/hand_labeler, - /obj/item/duct_tape_roll, - /obj/structure/filingcabinet/chestdrawer/unanchored, - /obj/item/paper_bin - ) - name = "Office supplies" - cost = 15 - container_type = /obj/structure/closet/crate - container_name = "Office supplies crate" - -/datum/supply_pack/supply/spare_pda - name = "Spare PDAs" - cost = 10 - container_type = /obj/structure/closet/crate/corporate/thinktronic - container_name = "Spare PDA crate" - contains = list(/obj/item/pda = 3) - -/datum/supply_pack/supply/minergear - name = "Shaft miner equipment" - contains = list( - /obj/item/storage/backpack/industrial, - /obj/item/storage/backpack/satchel/eng, - /obj/item/clothing/suit/storage/hooded/wintercoat/miner, - /obj/item/radio/headset/headset_cargo, - /obj/item/clothing/under/rank/miner, - /obj/item/clothing/gloves/black, - /obj/item/clothing/shoes/black, - /obj/item/atmos_analyzer, - /obj/item/storage/bag/ore, - /obj/item/flashlight/lantern, - /obj/item/shovel, - /obj/item/pickaxe, - /obj/item/mining_scanner, - /obj/item/clothing/glasses/material, - /obj/item/clothing/glasses/meson - ) - cost = 10 - container_type = /obj/structure/closet/crate/secure/corporate/grayson - container_name = "Shaft miner equipment" - access = ACCESS_SUPPLY_MINE - -/* //MULE Bots can't traverse the Tether. -/datum/supply_pack/supply/mule - name = "Mulebot Crate" - contains = list() - cost = 20 - container_type = /obj/structure/largecrate/animal/mulebot - container_name = "Mulebot Crate" -*/ - - -//Culture Update -/datum/supply_pack/misc/mining_tyrmalin - name = "Tyrmalin Mining Crate" - contains = list( - /obj/item/melee/thermalcutter = 1, - /obj/item/pickaxe/tyrmalin = 2, - /obj/item/grenade/explosive/ied/tyrmalin = 2 - ) - cost = 60 - container_type = /obj/structure/closet/crate/secure/gear - container_name = "Tyrmalin Mining crate" - access = ACCESS_SUPPLY_MINE - -/datum/supply_pack/misc/breathing_nitrogen - name = "Emergency Nitrogen Supplies" - contains = list( - /obj/item/tank/emergency/nitrogen = 2, - /obj/item/tank/emergency/nitrogen/double = 1, - /obj/item/clothing/mask/gas/opaque = 3 - ) - cost = 15 - container_type = /obj/structure/closet/crate/corporate/unathi - container_name = "Emergency Nitrogen Supplies" diff --git a/code/modules/cargo/supplypacks/vehicles.dm b/code/modules/cargo/supplypacks/vehicles.dm deleted file mode 100644 index a44b48ad7107..000000000000 --- a/code/modules/cargo/supplypacks/vehicles.dm +++ /dev/null @@ -1,90 +0,0 @@ -/datum/supply_pack/vehicles - group = "Vehicles" - - -/datum/supply_pack/vehicles/dune_buggy - name = "Exploration Dune Buggy" - contains = list( - /obj/vehicle_old/train/rover/engine/dunebuggy - ) - cost = 100 - container_type = /obj/structure/largecrate - container_name = "Exploration Dune Buggy Crate" - - -/datum/supply_pack/vehicles/bike - name = "Spacebike Crate" - contains = list() - cost = 200 - container_type = /obj/structure/largecrate/vehicle/bike - container_name = "Spacebike Crate" - -/datum/supply_pack/vehicles/quadbike - name = "ATV Crate" - contains = list() - cost = 30 - container_type = /obj/structure/largecrate/vehicle/quadbike - container_name = "ATV Crate" - -/* -/datum/supply_pack/vehicles/quadtrailer - name = "ATV Trailer Crate" - contains = list() - cost = 50 - container_type = /obj/structure/largecrate/vehicle/quadtrailer - container_name = "ATV Trailer Crate" -*/ - -/datum/supply_pack/vehicles/skatepack1 - name = "Beginner Skateboard Pack" - contains = list( - /obj/vehicle_old/skateboard/beginner = 3, - /obj/item/clothing/head/helmet/bike_helmet/random = 3 - ) - cost = 100 - container_type = /obj/structure/closet/crate - container_name = "Skateboard Crate - Beginner" - -/datum/supply_pack/vehicles/skatepack2 - name = "Professional Skateboard Pack" - contains = list( - /obj/vehicle_old/skateboard/pro = 2, - /obj/item/clothing/head/helmet/bike_helmet/random = 2 - ) - cost = 200 - container_type = /obj/structure/closet/crate - container_name = "Skateboard Crate - Professional" - -/datum/supply_pack/vehicles/skatepack3 - name = "Hoverboard Pack" - contains = list( - /obj/vehicle_old/skateboard/hoverboard = 2, - /obj/item/clothing/head/helmet/bike_helmet/random = 2 - ) - cost = 300 - container_type = /obj/structure/closet/crate - container_name = "Hoverboard Crate" - -/datum/supply_pack/vehicles/rover - name = "NT Humvee" - contains = list( - /obj/vehicle_old/train/rover/engine - ) - container_type = /obj/structure/largecrate - container_name = "NT Humvee Crate" - cost = 500 - - -/datum/supply_pack/vehicles/cargotrain - name = "Cargo Train Tug" - contains = list(/obj/vehicle_old/train/engine) - cost = 35 - container_type = /obj/structure/largecrate - container_name = "Cargo Train Tug Crate" - -/datum/supply_pack/vehicles/cargotrailer - name = "Cargo Train Trolley" - contains = list(/obj/vehicle_old/train/trolley) - cost = 15 - container_type = /obj/structure/largecrate - container_name = "Cargo Train Trolley Crate" diff --git a/code/modules/cargo/supplypacks/voidsuits.dm b/code/modules/cargo/supplypacks/voidsuits.dm deleted file mode 100644 index 9daaeb94fe79..000000000000 --- a/code/modules/cargo/supplypacks/voidsuits.dm +++ /dev/null @@ -1,454 +0,0 @@ -/* -* Here is where any supply packs -* related to voidsuits live. -*/ - - -/datum/supply_pack/voidsuits - group = "Voidsuits" - -/datum/supply_pack/voidsuits/atmos - name = "Atmospheric voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/atmos = 2, - /obj/item/clothing/head/helmet/space/void/atmos = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2, - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/aether - container_name = "Atmospheric voidsuit crate" - access = ACCESS_ENGINEERING_ATMOS - -/datum/supply_pack/voidsuits/atmos/alt - name = "Heavy Duty Atmospheric voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/atmos/alt = 2, - /obj/item/clothing/head/helmet/space/void/atmos/alt = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2, - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/aether - container_name = "Heavy Duty Atmospheric voidsuit crate" - access = ACCESS_ENGINEERING_ATMOS - -/datum/supply_pack/voidsuits/engineering - name = "Engineering voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/engineering = 2, - /obj/item/clothing/head/helmet/space/void/engineering = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Engineering voidsuit crate" - access = ACCESS_ENGINEERING_ENGINE - -/datum/supply_pack/voidsuits/engineering/construction - name = "Engineering Construction voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/engineering/construction = 2, - /obj/item/clothing/head/helmet/space/void/engineering/construction = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Engineering Construction voidsuit crate" - access = ACCESS_ENGINEERING_ENGINE - -/datum/supply_pack/voidsuits/engineering/hazmat - name = "Engineering Hazmat voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/engineering/hazmat = 2, - /obj/item/clothing/head/helmet/space/void/engineering/hazmat = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 45 - container_type = /obj/structure/closet/crate/secure/corporate/aether - container_name = "Engineering Hazmat voidsuit crate" - access = ACCESS_ENGINEERING_ENGINE - -/datum/supply_pack/voidsuits/engineering/alt - name = "Reinforced Engineering voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/engineering/alt = 2, - /obj/item/clothing/head/helmet/space/void/engineering/alt = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/aether - container_name = "Reinforced Engineering voidsuit crate" - access = ACCESS_ENGINEERING_ENGINE - -/datum/supply_pack/voidsuits/medical - name = "Medical voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/medical = 2, - /obj/item/clothing/head/helmet/space/void/medical = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure - container_name = "Medical voidsuit crate" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/voidsuits/medical/emt - name = "Medical EMT voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/medical/emt = 2, - /obj/item/clothing/head/helmet/space/void/medical/emt = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Medical EMT voidsuit crate" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/voidsuits/medical/bio - name = "Medical Biohazard voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/medical/bio = 2, - /obj/item/clothing/head/helmet/space/void/medical/bio = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 45 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Medical Biohazard voidsuit crate" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/voidsuits/medical/alt - name = "Vey-Med Medical voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/medical/alt = 2, - /obj/item/clothing/head/helmet/space/void/medical/alt = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 60 - container_type = /obj/structure/closet/crate/secure/corporate/veymed - container_name = "Vey-Med Medical voidsuit crate" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/voidsuits/medical/alt2 - name = "Vey-Med Plated Medical voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/medical/alt_plated = 2, - /obj/item/clothing/head/helmet/space/void/medical/alt_plated = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/veymed - container_name = "Vey-Med Medical voidsuit crate" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/voidsuits/security - name = "Security voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/security = 2, - /obj/item/clothing/head/helmet/space/void/security = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Security voidsuit crate" - -/datum/supply_pack/voidsuits/security/crowd - name = "Security Crowd Control voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/security/riot = 2, - /obj/item/clothing/head/helmet/space/void/security/riot = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Security Crowd Control voidsuit crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/voidsuits/security/alt - name = "Security EVA Riot voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/security/alt = 2, - /obj/item/clothing/head/helmet/space/void/security/alt = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Security EVA Riot voidsuit crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/voidsuits/supply - name = "Mining voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/mining = 2, - /obj/item/clothing/head/helmet/space/void/mining = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/grayson - container_name = "Mining voidsuit crate" - access = ACCESS_SUPPLY_MINE - -/datum/supply_pack/voidsuits/supply/alt - name = "Frontier Mining voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/mining/alt = 2, - /obj/item/clothing/head/helmet/space/void/mining/alt = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/grayson - container_name = "Frontier Mining voidsuit crate" - access = ACCESS_SUPPLY_MINE - -/datum/supply_pack/voidsuits/zaddat - name = "Zaddat Shroud" - contains = list( - /obj/item/clothing/suit/space/void/zaddat = 1, - /obj/item/clothing/mask/gas/zaddat = 1 - ) - cost = 30 - container_type = /obj/structure/closet/crate - container_name = "Zaddat Shroud crate" - access = null - -/datum/supply_pack/voidsuits/atmos - contains = list( - /obj/item/clothing/suit/space/void/atmos = 3, - /obj/item/clothing/head/helmet/space/void/atmos = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/clothing/shoes/magboots = 3, - /obj/item/tank/oxygen = 3, - ) - -/datum/supply_pack/voidsuits/engineering - contains = list( - /obj/item/clothing/suit/space/void/engineering = 3, - /obj/item/clothing/head/helmet/space/void/engineering = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/clothing/shoes/magboots = 3, - /obj/item/tank/oxygen = 3 - ) - -/datum/supply_pack/voidsuits/medical - contains = list( - /obj/item/clothing/suit/space/void/medical = 3, - /obj/item/clothing/head/helmet/space/void/medical = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/clothing/shoes/magboots = 3, - /obj/item/tank/oxygen = 3 - ) - -/datum/supply_pack/voidsuits/medical/alt - contains = list( - /obj/item/clothing/suit/space/void/medical/alt = 3, - /obj/item/clothing/head/helmet/space/void/medical/alt = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/clothing/shoes/magboots = 3, - /obj/item/tank/oxygen = 3 - ) - -/datum/supply_pack/voidsuits/security - contains = list( - /obj/item/clothing/suit/space/void/security = 3, - /obj/item/clothing/head/helmet/space/void/security = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/clothing/shoes/magboots = 3, - /obj/item/tank/oxygen = 3 - ) - -/datum/supply_pack/voidsuits/security/crowd - contains = list( - /obj/item/clothing/suit/space/void/security/riot = 3, - /obj/item/clothing/head/helmet/space/void/security/riot = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/clothing/shoes/magboots = 3, - /obj/item/tank/oxygen = 3 - ) - -/datum/supply_pack/voidsuits/security/alt - contains = list( - /obj/item/clothing/suit/space/void/security/alt = 3, - /obj/item/clothing/head/helmet/space/void/security/alt = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/clothing/shoes/magboots = 3, - /obj/item/tank/oxygen = 3 - ) - -/datum/supply_pack/voidsuits/supply - name = "Mining voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/mining = 3, - /obj/item/clothing/head/helmet/space/void/mining = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/tank/oxygen = 3 - ) - -/datum/supply_pack/voidsuits/explorer - name = "Exploration voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/exploration = 3, - /obj/item/clothing/head/helmet/space/void/exploration = 3, - /obj/item/clothing/mask/breath = 3, - /obj/item/clothing/shoes/magboots = 3, - /obj/item/tank/oxygen = 3 - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Exploration voidsuit crate" - access = ACCESS_GENERAL_EXPLORER - -/datum/supply_pack/voidsuits/pilot - name = "Pilot voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/pilot = 1, - /obj/item/clothing/head/helmet/space/void/pilot = 1, - /obj/item/clothing/mask/breath = 1, - /obj/item/clothing/shoes/magboots = 1, - /obj/item/tank/oxygen = 1 - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Pilot voidsuit crate" - access = ACCESS_GENERAL_PILOT - -//Cryosuits -/datum/supply_pack/voidsuits/cryosec - name = "Security cryosuits" - contains = list( - /obj/item/clothing/suit/space/void/security/cryo = 1, - /obj/item/clothing/head/helmet/space/void/security/cryo = 1, - /obj/item/clothing/mask/breath = 1, - /obj/item/clothing/shoes/magboots = 1, - /obj/item/tank/oxygen = 1 - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Security cryosuit crate" - access = ACCESS_SECURITY_ARMORY - -/datum/supply_pack/voidsuits/cryoengi - name = "Engineering cryosuits" - contains = list( - /obj/item/clothing/suit/space/void/engineering/cryo = 1, - /obj/item/clothing/head/helmet/space/void/engineering/cryo = 1, - /obj/item/clothing/mask/breath = 1, - /obj/item/clothing/shoes/magboots = 1, - /obj/item/tank/oxygen = 1 - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Engineering cryosuit crate" - access = ACCESS_ENGINEERING_MAIN - -/datum/supply_pack/voidsuits/cryoatmos - name = "Atmospherics cryosuits" - contains = list( - /obj/item/clothing/suit/space/void/atmos/cryo = 1, - /obj/item/clothing/head/helmet/space/void/atmos/cryo = 1, - /obj/item/clothing/mask/breath = 1, - /obj/item/clothing/shoes/magboots = 1, - /obj/item/tank/oxygen = 1 - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Atmospherics cryosuit crate" - access = ACCESS_ENGINEERING_ATMOS - -/datum/supply_pack/voidsuits/cryomining - name = "Mining cryosuits" - contains = list( - /obj/item/clothing/suit/space/void/mining/cryo = 1, - /obj/item/clothing/head/helmet/space/void/mining/cryo = 1, - /obj/item/clothing/mask/breath = 1, - /obj/item/clothing/shoes/magboots = 1, - /obj/item/tank/oxygen = 1 - ) - cost = 20 - container_type = /obj/structure/closet/crate/secure/corporate/nanotrasen - container_name = "Mining cryosuit crate" - access = ACCESS_SUPPLY_MINE - -//ODST Suits - -/datum/supply_pack/voidsuits/odst - name = "Hephaestus Icarus Combat Suits" - contains = list( - /obj/item/clothing/suit/space/void/odst = 2, - /obj/item/clothing/head/helmet/space/void/odst = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/heph - container_name = "Icarus Combat Suit crate" - -/datum/supply_pack/voidsuits/odst_med - name = "Hephaestus Icarus Medic Suits" - contains = list( - /obj/item/clothing/suit/space/void/odst_med = 2, - /obj/item/clothing/head/helmet/space/void/odst_med = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 60 - container_type = /obj/structure/closet/crate/secure/corporate/heph - container_name = "Hephaestheus Icarus Medic crate" - access = ACCESS_MEDICAL_EQUIPMENT - -/datum/supply_pack/voidsuits/odst_eng - name = "Hephaestus Icarus Engineer Suits" - contains = list( - /obj/item/clothing/suit/space/void/odst_eng = 2, - /obj/item/clothing/head/helmet/space/void/odst_eng = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/tank/oxygen = 2 - ) - cost = 40 - container_type = /obj/structure/closet/crate/secure/corporate/heph - container_name = "Hephaestheus Icarus Engineer crate" - access = ACCESS_ENGINEERING_ENGINE - -/datum/supply_pack/voidsuits/odst_exp - name = "Hephaestus Icarus Frontier Suits" - contains = list( - /obj/item/clothing/suit/space/void/odst_exp = 2, - /obj/item/clothing/head/helmet/space/void/odst_exp = 2, - /obj/item/clothing/mask/breath = 3, - /obj/item/clothing/shoes/magboots = 3, - /obj/item/tank/oxygen = 3 - ) - cost = 50 - container_type = /obj/structure/closet/crate/secure/corporate/heph - container_name = "Hephaestheus Icarus Frontier crate" - access = ACCESS_GENERAL_EXPLORER diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 69a9cbe4ee0b..c6158d2fc084 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -442,7 +442,6 @@ GLOB.admins -= src //delete them on the managed one too active_mousedown_item = null - SSping.currentrun -= src //* cleanup rendering // clear perspective @@ -468,7 +467,9 @@ mob?.pre_logout(src) //* cleanup from SSinput - SSinput.currentrun -= src + SSinput.currentrun?.Remove(src) + //* cleanup from SSping + SSping.currentrun?.Remove(src) . = ..() //Even though we're going to be hard deleted there are still some things that want to know the destroy is happening return QDEL_HINT_HARDDEL_NOW diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 5b7d5f82ddcc..5dffd45ae06e 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -152,6 +152,7 @@ BLIND // can't see anything vision_flags_remove = SEE_BLACKNESS body_cover_flags = EYES //cit change vision_modifier = /datum/vision/augmenting/legacy_ghetto_nvgs + worth_intrinsic = 125 /obj/item/clothing/glasses/meson/prescription name = "prescription mesons" diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 6a2b9a7d9aac..668f93731198 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -335,6 +335,7 @@ desc = "Safety gear designed to protect the head from impacts. It's a bit dorky." icon_state = "sport" armor_type = /datum/armor/head/hardhat + worth_intrinsic = 75 color = "#ffffff" diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index e74208853f3a..a682500a4fe8 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -11,6 +11,7 @@ permeability_coefficient = 0.01 siemens_coefficient = 0.9 armor_type = /datum/armor/mask/gas + worth_intrinsic = 50 var/gas_filter_strength = 1 //For gas mask filters var/list/filtered_gases = list(GAS_ID_PHORON, GAS_ID_NITROUS_OXIDE) diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 3e525bd9a284..18716cdd619d 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -16,6 +16,7 @@ step_volume_mod = 1.3 drop_sound = 'sound/items/drop/metalboots.ogg' pickup_sound = 'sound/items/pickup/toolbox.ogg' + worth_intrinsic = 250 var/encumbrance_on = ITEM_ENCUMBRANCE_SHOES_MAGBOOTS_PULSE diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 4b8014e48c85..fc2803aa8eb5 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -108,6 +108,7 @@ flash_protection = FLASH_PROTECTION_NONE encumbrance = ITEM_ENCUMBRANCE_EMERGENCY_SOFTSUIT_HELMET weight = ITEM_WEIGHT_EMERGENCY_SOFTSUIT_HELMET + worth_intrinsic = 75 /obj/item/clothing/suit/space/emergency name = "Emergency Softsuit" @@ -115,6 +116,7 @@ desc = "A thin, ungainly softsuit colored in blaze orange for rescuers to easily locate, looks pretty fragile." encumbrance = ITEM_ENCUMBRANCE_EMERGENCY_SOFTSUIT weight = ITEM_WEIGHT_EMERGENCY_SOFTSUIT + worth_intrinsic = 200 //Russian Emergency Suit /obj/item/clothing/head/helmet/space/emergency/russian diff --git a/code/modules/clothing/spacesuits/void/merc.dm b/code/modules/clothing/spacesuits/void/merc.dm index 8b22e75f756e..be3f3ab703db 100644 --- a/code/modules/clothing/spacesuits/void/merc.dm +++ b/code/modules/clothing/spacesuits/void/merc.dm @@ -114,6 +114,7 @@ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs) siemens_coefficient = 0.6 species_restricted = null + helmet_type = /obj/item/clothing/head/helmet/space/void/odst /obj/item/clothing/head/helmet/space/void/odst_med name = "hephaestus icarus medic helmet" @@ -133,6 +134,7 @@ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs) siemens_coefficient = 0.6 species_restricted = null + helmet_type = /obj/item/clothing/head/helmet/space/void/odst_med /obj/item/clothing/head/helmet/space/void/odst_eng name = "hephaestus icarus engineer helmet" @@ -152,6 +154,7 @@ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs) siemens_coefficient = 0.6 species_restricted = null + helmet_type = /obj/item/clothing/head/helmet/space/void/odst_eng /obj/item/clothing/head/helmet/space/void/odst_exp name = "hephaestus icarus frontier helmet" @@ -171,6 +174,7 @@ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs) siemens_coefficient = 0.6 species_restricted = null + helmet_type = /obj/item/clothing/head/helmet/space/void/odst_exp // Admin spawn only, Necropolis Industries event gear @@ -194,6 +198,7 @@ allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs) siemens_coefficient = 0.6 species_restricted = null + helmet_type = /obj/item/clothing/head/helmet/space/void/odst_necro /obj/item/clothing/suit/space/void/odst_necromed icon_state = "odst_red_mil" diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 2f43860e0a64..012172bcb562 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -1,242 +1,3 @@ -// Station voidsuits -//Engineering -/obj/item/clothing/head/helmet/space/void/engineering - name = "engineering voidsuit helmet" - desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding." - icon_state = "rig0-engineering" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_helm", SLOT_ID_LEFT_HAND = "eng_helm") - armor_type = /datum/armor/engineering/space - min_pressure_protection = 0 * ONE_ATMOSPHERE - max_pressure_protection = 15 * ONE_ATMOSPHERE - -/obj/item/clothing/suit/space/void/engineering - name = "engineering voidsuit" - desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding." - icon_state = "rig-engineering" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_voidsuit", SLOT_ID_LEFT_HAND = "eng_voidsuit") - armor_type = /datum/armor/engineering/space - allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd) - min_pressure_protection = 0 * ONE_ATMOSPHERE - max_pressure_protection = 15 * ONE_ATMOSPHERE - -//Engineering HAZMAT Voidsuit - -/obj/item/clothing/head/helmet/space/void/engineering/hazmat - name = "HAZMAT voidsuit helmet" - desc = "A engineering helmet designed for work in a low-pressure environment. Extra radiation shielding appears to have been installed at the price of comfort." - icon_state = "rig0-engineering_rad" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_helm_rad", SLOT_ID_LEFT_HAND = "eng_helm_rad") - armor_type = /datum/armor/engineering/space/hazmat - -/obj/item/clothing/suit/space/void/engineering/hazmat - name = "HAZMAT voidsuit" - desc = "A engineering voidsuit that protects against hazardous, low pressure environments. Has enhanced radiation shielding compared to regular engineering voidsuits." - icon_state = "rig-engineering_rad" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_voidsuit_rad", SLOT_ID_LEFT_HAND = "eng_voidsuit_rad") - armor_type = /datum/armor/engineering/space/hazmat - -//Engineering Construction Voidsuit - -/obj/item/clothing/head/helmet/space/void/engineering/construction - name = "construction voidsuit helmet" - icon_state = "rig0-engineering_con" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_helm_con", SLOT_ID_LEFT_HAND = "eng_helm_con") - -/obj/item/clothing/suit/space/void/engineering/construction - name = "construction voidsuit" - icon_state = "rig-engineering_con" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_voidsuit_con", SLOT_ID_LEFT_HAND = "eng_voidsuit_con") - -//Engineering Surplus Voidsuits - -/obj/item/clothing/head/helmet/space/void/engineering/alt - name = "reinforced engineering voidsuit helmet" - desc = "A heavy, radiation-shielded voidsuit helmet with a surprisingly comfortable interior." - icon_state = "rig0-engineeringalt" - armor_type = /datum/armor/engineering/space/heavy - light_overlay = "helmet_light_dual" - -/obj/item/clothing/suit/space/void/engineering/alt - name = "reinforced engineering voidsuit" - desc = "A bulky industrial voidsuit. It's a few generations old, but a reliable design and radiation shielding make up for the lack of climate control." - icon_state = "rig-engineeringalt" - armor_type = /datum/armor/engineering/space/heavy - -/obj/item/clothing/head/helmet/space/void/engineering/salvage - name = "salvage voidsuit helmet" - desc = "A heavily modified salvage voidsuit helmet. It has been fitted with radiation-resistant plating." - icon_state = "rig0-salvage" - item_state_slots = list( - SLOT_ID_LEFT_HAND = "eng_helm", - SLOT_ID_RIGHT_HAND = "eng_helm", - ) - armor_type = /datum/armor/engineering/space/salvage - -/obj/item/clothing/suit/space/void/engineering/salvage - name = "salvage voidsuit" - desc = "A hand-me-down salvage voidsuit. It has obviously had a lot of repair work done to its radiation shielding." - icon_state = "rig-engineeringsav" - armor_type = /datum/armor/engineering/space/salvage - allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable,/obj/item/t_scanner,/obj/item/rcd) - -//Mining -/obj/item/clothing/head/helmet/space/void/mining - name = "mining voidsuit helmet" - desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating." - icon_state = "rig0-mining" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "mining_helm", SLOT_ID_LEFT_HAND = "mining_helm") - armor_type = /datum/armor/cargo/mining/space - light_overlay = "helmet_light_dual" - -/obj/item/clothing/suit/space/void/mining - name = "mining voidsuit" - desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating." - icon_state = "rig-mining" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "mining_voidsuit", SLOT_ID_LEFT_HAND = "mining_voidsuit") - allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/pickaxe) - armor_type = /datum/armor/cargo/mining/space - -//Mining Surplus Voidsuit - -/obj/item/clothing/head/helmet/space/void/mining/alt - name = "frontier mining voidsuit helmet" - desc = "An armored cheap voidsuit helmet. Someone must have through they were pretty cool when they painted a mohawk on it." - icon_state = "rig0-miningalt" - armor_type = /datum/armor/cargo/mining/space/armored - -/obj/item/clothing/suit/space/void/mining/alt - icon_state = "rig-miningalt" - name = "frontier mining voidsuit" - desc = "A cheap prospecting voidsuit. What it lacks in comfort it makes up for in armor plating and street cred." - armor_type = /datum/armor/cargo/mining/space/armored - -//Medical -/obj/item/clothing/head/helmet/space/void/medical - name = "medical voidsuit helmet" - desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding." - icon_state = "rig0-medical" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_helm", SLOT_ID_LEFT_HAND = "medical_helm") - armor_type = /datum/armor/medical/space - -/obj/item/clothing/suit/space/void/medical - name = "medical voidsuit" - desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding." - icon_state = "rig-medical" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_voidsuit", SLOT_ID_LEFT_HAND = "medical_voidsuit") - allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/firstaid,/obj/item/healthanalyzer,/obj/item/stack/medical) - armor_type = /datum/armor/medical/space - -//Medical EMT Voidsuit - -/obj/item/clothing/head/helmet/space/void/medical/emt - name = "emergency medical response voidsuit helmet" - icon_state = "rig0-medical_emt" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_helm_emt", SLOT_ID_LEFT_HAND = "medical_helm_emt") - -/obj/item/clothing/suit/space/void/medical/emt - name = "emergency medical response voidsuit" - icon_state = "rig-medical_emt" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_voidsuit_emt", SLOT_ID_LEFT_HAND = "medical_voidsuit_emt") - -//Medical Biohazard Voidsuit - -/obj/item/clothing/head/helmet/space/void/medical/bio - name = "biohazard voidsuit helmet" - desc = "A special helmet that protects against hazardous environments. Has minor radiation shielding." - icon_state = "rig0-medical_bio" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_helm_bio", SLOT_ID_LEFT_HAND = "medical_helm_bio") - armor_type = /datum/armor/medical/space - -/obj/item/clothing/suit/space/void/medical/bio - name = "biohazard voidsuit" - desc = "A special suit that protects against hazardous, environments. It feels heavier than the standard suit with extra protection around the joints." - icon_state = "rig-medical_bio" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_voidsuit_bio", SLOT_ID_LEFT_HAND = "medical_voidsuit_bio") - armor_type = /datum/armor/medical/space - -//Medical Streamlined Voidsuit -/obj/item/clothing/head/helmet/space/void/medical/alt - name = "streamlined medical voidsuit helmet" - desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a sleek blue." - icon_state = "rig0-medicalalt" - armor_type = /datum/armor/medical/space - light_overlay = "helmet_light_dual_blue" - encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_HELMET_ULTRALIGHT - weight = ITEM_WEIGHT_VOIDSUIT_HELMET_ULTRALIGHT - -/obj/item/clothing/head/helmet/space/void/medical/alt_plated - name = "streamlined medical voidsuit helmet" - desc = "A trendy, fully biohazard and radiation-shielded voidsuit helmet trimmed in a sleek blue." - icon_state = "rig0-medicalalt2" - armor_type = /datum/armor/medical/space/upgraded - light_overlay = "helmet_light_dual_blue" - encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_HELMET_ULTRALIGHT - weight = ITEM_WEIGHT_VOIDSUIT_HELMET_ULTRALIGHT - -/obj/item/clothing/suit/space/void/medical/alt - icon_state = "rig-medicalalt" - name = "streamlined medical voidsuit" - desc = "A more recent model of Vey-Med voidsuit, exchanging physical protection for fully unencumbered movement and a complete range of motion." - encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_ULTRALIGHT - weight = ITEM_WEIGHT_VOIDSUIT_ULTRALIGHT - armor_type = /datum/armor/medical/space - -/obj/item/clothing/suit/space/void/medical/alt_plated - icon_state = "rig-medicalalt2" - name = "plated medical voidsuit" - desc = "An iteration of an existing Vey-Med voidsuit, allowing full biohazard, radiation and increased close-quarters protection, at the expense of projectile and ranged layers." - encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_ULTRALIGHT - weight = ITEM_WEIGHT_VOIDSUIT_ULTRALIGHT - armor_type = /datum/armor/medical/space/upgraded - -//Security -/obj/item/clothing/head/helmet/space/void/security - name = "security voidsuit helmet" - desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor." - icon_state = "rig0-sec" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_helm", SLOT_ID_LEFT_HAND = "sec_helm") - armor_type = /datum/armor/station/secsuit - siemens_coefficient = 0.7 - light_overlay = "helmet_light_dual" - camera_networks = list(NETWORK_SEC_HELMETS) - -/obj/item/clothing/suit/space/void/security - name = "security voidsuit" - desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor." - icon_state = "rig-sec" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuit", SLOT_ID_LEFT_HAND = "sec_voidsuit") - armor_type = /datum/armor/station/secsuit - allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton) - siemens_coefficient = 0.7 - -//Security Alternate Voidsuit -//Todo: Swap crowd control and riot icons and names. - -/obj/item/clothing/head/helmet/space/void/security/riot - name = "crowd control voidsuit helmet" - icon_state = "rig0-sec_riot" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_helm_riot", SLOT_ID_LEFT_HAND = "sec_helm_riot") - -/obj/item/clothing/suit/space/void/security/riot - name = "crowd control voidsuit" - icon_state = "rig-sec_riot" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuit_riot", SLOT_ID_LEFT_HAND = "sec_voidsuit_riot") - -//Security Riot Voidsuit -//Todo: Both of them being called Riot/CC with one in the suit cycler, and one with actual armor values is really dumb. Seriously. -/obj/item/clothing/head/helmet/space/void/security/alt - name = "riot security voidsuit helmet" - desc = "A somewhat tacky voidsuit helmet, a fact mitigated by heavy armor plating." - icon_state = "rig0-secalt" - armor_type = /datum/armor/station/secsuitriot - -/obj/item/clothing/suit/space/void/security/alt - icon_state = "rig-secalt" - name = "riot security voidsuit" - desc = "A heavily armored voidsuit, designed to intimidate people who find black intimidating. Surprisingly slimming." - armor_type = /datum/armor/station/secsuitriot - allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton) - //Cydonia Armor /obj/item/clothing/head/helmet/space/void/security/cydonia name = "cydonian helmet" @@ -248,155 +9,7 @@ name = "cydonian voidsuit" desc = "A bulky, but well armored suit capable of protecting the wearer from both trauma and hazardous environments." icon_state = "knight_cydonia" - -//Atmospherics -/obj/item/clothing/head/helmet/space/void/atmos - desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding." - name = "atmospherics voidsuit helmet" - icon_state = "rig0-atmos" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_helm", SLOT_ID_LEFT_HAND = "atmos_helm") - armor_type = /datum/armor/engineering/space/atmos - max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE - light_overlay = "helmet_light_dual" - min_pressure_protection = 0 * ONE_ATMOSPHERE - max_pressure_protection = 20* ONE_ATMOSPHERE - -/obj/item/clothing/suit/space/void/atmos - name = "atmos voidsuit" - desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding." - icon_state = "rig-atmos" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_voidsuit", SLOT_ID_LEFT_HAND = "atmos_voidsuit") - armor_type = /datum/armor/engineering/space/atmos - max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE - min_pressure_protection = 0 * ONE_ATMOSPHERE - max_pressure_protection = 20* ONE_ATMOSPHERE - -//Atmospherics Surplus Voidsuit - -/obj/item/clothing/head/helmet/space/void/atmos/alt - desc = "A special voidsuit helmet designed for work in hazardous, low pressure environments.This one has been plated with an expensive heat and radiation resistant ceramic." - name = "heavy duty atmospherics voidsuit helmet" - icon_state = "rig0-atmosalt" - armor_type = /datum/armor/engineering/space/atmos/heavy - max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE - light_overlay = "hardhat_light" - -/obj/item/clothing/suit/space/void/atmos/alt - desc = "A special suit that protects against hazardous, low pressure environments. Fits better than the standard atmospheric voidsuit while still rated to withstand extreme heat and even minor radiation." - icon_state = "rig-atmosalt" - name = "heavy duty atmos voidsuit" - armor_type = /datum/armor/engineering/space/atmos/heavy - max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE - -//Exploration -/obj/item/clothing/head/helmet/space/void/exploration - name = "exploration voidsuit helmet" - desc = "A radiation-resistant helmet made especially for exploring unknown planetary environments." - icon_state = "helm_explorer" - item_state = "helm_explorer" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black") - armor_type = /datum/armor/exploration/space - light_overlay = "helmet_light_dual" //explorer_light - camera_networks = list(NETWORK_EXPLO_HELMETS) - -/obj/item/clothing/suit/space/void/exploration - name = "exploration voidsuit" - desc = "A lightweight, radiation-resistant voidsuit, featuring the Explorer emblem on its chest plate. Designed for exploring unknown planetary environments." - icon_state = "void_explorer" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_black", SLOT_ID_LEFT_HAND = "skrell_suit_black") - armor_type = /datum/armor/exploration/space - allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/stack/flag,/obj/item/healthanalyzer,/obj/item/gps,/obj/item/radio/beacon, \ - /obj/item/shovel,/obj/item/ammo_magazine,/obj/item/gun) - -/obj/item/clothing/head/helmet/space/void/exploration/alt - desc = "A radiation-resistant helmet made especially for exploring unknown planetary environments." - icon_state = "helm_explorer2" - item_state = "helm_explorer2" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "mining_helm", SLOT_ID_LEFT_HAND = "mining_helm") - -/obj/item/clothing/suit/space/void/exploration/alt - desc = "A lightweight, radiation-resistant voidsuit. Designed for exploring unknown planetary environments." - icon_state = "void_explorer2" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_white", SLOT_ID_LEFT_HAND = "skrell_suit_white") - -/obj/item/clothing/head/helmet/space/void/exploration/pathfinder - name = "pathfinder voidsuit helmet" - desc = "A comfortable helmet designed to provide protection for Pathfinder units on long-term operations." - icon_state = "helm_explorer_pf" - item_state = "helm_explorer_pf" - armor_type = /datum/armor/exploration/space/pathfinder - -/obj/item/clothing/suit/space/void/exploration/pathfinder - name = "pathfinder voidsuit" - desc = "A versatile, armored voidsuit, featuring the Pathfinder emblem on its chest plate. Designed for long deployments in unknown planetary environments." - icon_state = "void_explorer_pf" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_black", SLOT_ID_LEFT_HAND = "skrell_suit_black") - armor_type = /datum/armor/exploration/space/pathfinder - allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/stack/flag,/obj/item/healthanalyzer,/obj/item/gps,/obj/item/radio/beacon, \ - /obj/item/shovel,/obj/item/ammo_magazine,/obj/item/gun) - -//Pilot -/obj/item/clothing/head/helmet/space/void/pilot - desc = "An atmos resistant helmet for space and planet exploration." - name = "pilot voidsuit helmet" - icon_state = "rig0_pilot" - item_state = "pilot_helm" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_helm", SLOT_ID_LEFT_HAND = "atmos_helm") - armor_type = /datum/armor/exploration/space/pilot - max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE - light_overlay = "helmet_light_dual" - camera_networks = list(NETWORK_EXPLO_HELMETS) - -/obj/item/clothing/suit/space/void/pilot - desc = "An atmos resistant voidsuit for space and planet exploration." - icon_state = "rig-pilot" - item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_voidsuit", SLOT_ID_LEFT_HAND = "atmos_voidsuit") - name = "pilot voidsuit" - armor_type = /datum/armor/exploration/space/pilot - max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE - allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable) - -/obj/item/clothing/head/helmet/space/void/pilot/alt - icon_state = "rig0_pilot2" - item_state = "pilot_helm2" - -/obj/item/clothing/suit/space/void/pilot/alt - desc = "An atmos resistant voidsuit for space." - icon_state = "rig-pilot2" - item_state = "rig-pilot2" - -//Captain (cit addition, the idea is to replace the "Facility Director armor" which doesnt function like a voidsuit -/obj/item/clothing/head/helmet/space/void/captain - desc = "Shiny blue helmet, complete with far-too-big golden visor. It probably doesn't protects from bright flashes." - name = "Facility Director voidsuit helmet" - icon_state = "capvoid" - armor_type = /datum/armor/station/tactical - -/obj/item/clothing/suit/space/void/captain - desc = "Sleek, blue and gold suit, fitted with spaceproofing and protective inserts. Fits like an oversized, shiny glove." - name = "Facility Director voidsuit" - icon_state = "capsuit_void" - armor_type = /datum/armor/station/tactical - allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun) - -//Head of Security - update to the snowflake suit -/obj/item/clothing/head/helmet/space/void/headofsecurity - desc = "A customized security voidsuit helmet. Has additional composite armor." - name = "head of security protosuit helmet" - icon_state = "hosproto" - armor_type = /datum/armor/security/hos/space - camera_networks = list(NETWORK_SEC_HELMETS) - encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_HELMET_HEAVY - weight = ITEM_WEIGHT_VOIDSUIT_HELMET_HEAVY - -/obj/item/clothing/suit/space/void/headofsecurity - desc = "A customized security voidsuit. Has additional composite armor." - name = "head of security protosuit" - icon_state = "hosproto_void" - armor_type = /datum/armor/security/hos/space - allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun) - encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_HEAVY - weight = ITEM_WEIGHT_VOIDSUIT_HEAVY + helmet_type = /obj/item/clothing/head/helmet/space/void/security/cydonia //PARA /obj/item/clothing/head/helmet/space/void/para @@ -461,6 +74,7 @@ icon_state = "cryo_sec" worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL RENDER_LEGACY_PATCH_NO_CYCLING + helmet_type = /obj/item/clothing/head/helmet/space/void/security/cryo //Engi /obj/item/clothing/head/helmet/space/void/engineering/cryo @@ -478,6 +92,7 @@ icon_state = "cryo_engi" worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL RENDER_LEGACY_PATCH_NO_CYCLING + helmet_type = /obj/item/clothing/head/helmet/space/void/engineering/cryo //Atmospherics /obj/item/clothing/head/helmet/space/void/atmos/cryo @@ -495,6 +110,7 @@ icon_state = "cryo_atmos" worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL RENDER_LEGACY_PATCH_NO_CYCLING + helmet_type = /obj/item/clothing/head/helmet/space/void/atmos/cryo //Mining /obj/item/clothing/head/helmet/space/void/mining/cryo @@ -512,3 +128,4 @@ icon_state = "cryo_mining" worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL RENDER_LEGACY_PATCH_NO_CYCLING + helmet_type = /obj/item/clothing/head/helmet/space/void/mining/cryo diff --git a/code/modules/clothing/spacesuits/void/station/command.dm b/code/modules/clothing/spacesuits/void/station/command.dm new file mode 100644 index 000000000000..07b675f7f2e8 --- /dev/null +++ b/code/modules/clothing/spacesuits/void/station/command.dm @@ -0,0 +1,13 @@ +/obj/item/clothing/head/helmet/space/void/captain + desc = "Shiny blue helmet, complete with far-too-big golden visor. It probably doesn't protect from bright flashes." + name = "Facility Director voidsuit helmet" + icon_state = "capvoid" + armor_type = /datum/armor/station/tactical + +/obj/item/clothing/suit/space/void/captain + desc = "Sleek, blue and gold suit, fitted with spaceproofing and protective inserts. Fits like an oversized, shiny glove." + name = "Facility Director voidsuit" + icon_state = "capsuit_void" + armor_type = /datum/armor/station/tactical + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun) + helmet_type = /obj/item/clothing/head/helmet/space/void/captain diff --git a/code/modules/clothing/spacesuits/void/station/engineering.dm b/code/modules/clothing/spacesuits/void/station/engineering.dm new file mode 100644 index 000000000000..82c1fc2900cb --- /dev/null +++ b/code/modules/clothing/spacesuits/void/station/engineering.dm @@ -0,0 +1,122 @@ +/obj/item/clothing/head/helmet/space/void/engineering + name = "engineering voidsuit helmet" + desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding." + icon_state = "rig0-engineering" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_helm", SLOT_ID_LEFT_HAND = "eng_helm") + armor_type = /datum/armor/engineering/space + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 15 * ONE_ATMOSPHERE + worth_intrinsic = 75 + +/obj/item/clothing/suit/space/void/engineering + name = "engineering voidsuit" + desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding." + icon_state = "rig-engineering" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_voidsuit", SLOT_ID_LEFT_HAND = "eng_voidsuit") + armor_type = /datum/armor/engineering/space + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd) + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 15 * ONE_ATMOSPHERE + helmet_type = /obj/item/clothing/head/helmet/space/void/engineering + worth_intrinsic = 325 + +/obj/item/clothing/head/helmet/space/void/engineering/hazmat + name = "HAZMAT voidsuit helmet" + desc = "A engineering helmet designed for work in a low-pressure environment. Extra radiation shielding appears to have been installed at the price of comfort." + icon_state = "rig0-engineering_rad" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_helm_rad", SLOT_ID_LEFT_HAND = "eng_helm_rad") + armor_type = /datum/armor/engineering/space/hazmat + +/obj/item/clothing/suit/space/void/engineering/hazmat + name = "HAZMAT voidsuit" + desc = "A engineering voidsuit that protects against hazardous, low pressure environments. Has enhanced radiation shielding compared to regular engineering voidsuits." + icon_state = "rig-engineering_rad" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_voidsuit_rad", SLOT_ID_LEFT_HAND = "eng_voidsuit_rad") + armor_type = /datum/armor/engineering/space/hazmat + helmet_type = /obj/item/clothing/head/helmet/space/void/engineering/hazmat + +/obj/item/clothing/head/helmet/space/void/engineering/construction + name = "construction voidsuit helmet" + icon_state = "rig0-engineering_con" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_helm_con", SLOT_ID_LEFT_HAND = "eng_helm_con") + +/obj/item/clothing/suit/space/void/engineering/construction + name = "construction voidsuit" + icon_state = "rig-engineering_con" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_voidsuit_con", SLOT_ID_LEFT_HAND = "eng_voidsuit_con") + helmet_type = /obj/item/clothing/head/helmet/space/void/engineering/construction + +/obj/item/clothing/head/helmet/space/void/engineering/alt + name = "reinforced engineering voidsuit helmet" + desc = "A heavy, radiation-shielded voidsuit helmet with a surprisingly comfortable interior." + icon_state = "rig0-engineeringalt" + armor_type = /datum/armor/engineering/space/heavy + light_overlay = "helmet_light_dual" + +/obj/item/clothing/suit/space/void/engineering/alt + name = "reinforced engineering voidsuit" + desc = "A bulky industrial voidsuit. It's a few generations old, but a reliable design and radiation shielding make up for the lack of climate control." + icon_state = "rig-engineeringalt" + armor_type = /datum/armor/engineering/space/heavy + helmet_type = /obj/item/clothing/head/helmet/space/void/engineering/alt + +/obj/item/clothing/head/helmet/space/void/engineering/salvage + name = "salvage voidsuit helmet" + desc = "A heavily modified salvage voidsuit helmet. It has been fitted with radiation-resistant plating." + icon_state = "rig0-salvage" + item_state_slots = list( + SLOT_ID_LEFT_HAND = "eng_helm", + SLOT_ID_RIGHT_HAND = "eng_helm", + ) + armor_type = /datum/armor/engineering/space/salvage + +/obj/item/clothing/suit/space/void/engineering/salvage + name = "salvage voidsuit" + desc = "A hand-me-down salvage voidsuit. It has obviously had a lot of repair work done to its radiation shielding." + icon_state = "rig-engineeringsav" + armor_type = /datum/armor/engineering/space/salvage + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable,/obj/item/t_scanner,/obj/item/rcd) + helmet_type = /obj/item/clothing/head/helmet/space/void/engineering/salvage + +//Atmospherics +/obj/item/clothing/head/helmet/space/void/atmos + desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding." + name = "atmospherics voidsuit helmet" + icon_state = "rig0-atmos" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_helm", SLOT_ID_LEFT_HAND = "atmos_helm") + armor_type = /datum/armor/engineering/space/atmos + max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + light_overlay = "helmet_light_dual" + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 20* ONE_ATMOSPHERE + worth_intrinsic = 125 + +/obj/item/clothing/suit/space/void/atmos + name = "atmos voidsuit" + desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding." + icon_state = "rig-atmos" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_voidsuit", SLOT_ID_LEFT_HAND = "atmos_voidsuit") + armor_type = /datum/armor/engineering/space/atmos + max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + min_pressure_protection = 0 * ONE_ATMOSPHERE + max_pressure_protection = 20* ONE_ATMOSPHERE + helmet_type = /obj/item/clothing/head/helmet/space/void/atmos + worth_intrinsic = 450 + +//Atmospherics Surplus Voidsuit + +/obj/item/clothing/head/helmet/space/void/atmos/alt + desc = "A special voidsuit helmet designed for work in hazardous, low pressure environments.This one has been plated with an expensive heat and radiation resistant ceramic." + name = "heavy duty atmospherics voidsuit helmet" + icon_state = "rig0-atmosalt" + armor_type = /datum/armor/engineering/space/atmos/heavy + max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + light_overlay = "hardhat_light" + +/obj/item/clothing/suit/space/void/atmos/alt + desc = "A special suit that protects against hazardous, low pressure environments. Fits better than the standard atmospheric voidsuit while still rated to withstand extreme heat and even minor radiation." + icon_state = "rig-atmosalt" + name = "heavy duty atmos voidsuit" + armor_type = /datum/armor/engineering/space/atmos/heavy + max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + helmet_type = /obj/item/clothing/head/helmet/space/void/atmos/alt diff --git a/code/modules/clothing/spacesuits/void/station/exploration.dm b/code/modules/clothing/spacesuits/void/station/exploration.dm new file mode 100644 index 000000000000..0841fa28bd1a --- /dev/null +++ b/code/modules/clothing/spacesuits/void/station/exploration.dm @@ -0,0 +1,52 @@ +/obj/item/clothing/head/helmet/space/void/exploration + name = "exploration voidsuit helmet" + desc = "A radiation-resistant helmet made especially for exploring unknown planetary environments." + icon_state = "helm_explorer" + item_state = "helm_explorer" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndicate-helm-black", SLOT_ID_LEFT_HAND = "syndicate-helm-black") + armor_type = /datum/armor/exploration/space + light_overlay = "helmet_light_dual" //explorer_light + camera_networks = list(NETWORK_EXPLO_HELMETS) + worth_intrinsic = 75 + +/obj/item/clothing/suit/space/void/exploration + name = "exploration voidsuit" + desc = "A lightweight, radiation-resistant voidsuit, featuring the Explorer emblem on its chest plate. Designed for exploring unknown planetary environments." + icon_state = "void_explorer" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_black", SLOT_ID_LEFT_HAND = "skrell_suit_black") + armor_type = /datum/armor/exploration/space + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/stack/flag,/obj/item/healthanalyzer,/obj/item/gps,/obj/item/radio/beacon, \ + /obj/item/shovel,/obj/item/ammo_magazine,/obj/item/gun) + helmet_type = /obj/item/clothing/head/helmet/space/void/exploration + worth_intrinsic = 300 + +/obj/item/clothing/head/helmet/space/void/exploration/alt + desc = "A radiation-resistant helmet made especially for exploring unknown planetary environments." + icon_state = "helm_explorer2" + item_state = "helm_explorer2" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "mining_helm", SLOT_ID_LEFT_HAND = "mining_helm") + +/obj/item/clothing/suit/space/void/exploration/alt + desc = "A lightweight, radiation-resistant voidsuit. Designed for exploring unknown planetary environments." + icon_state = "void_explorer2" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_white", SLOT_ID_LEFT_HAND = "skrell_suit_white") + helmet_type = /obj/item/clothing/head/helmet/space/void/exploration/alt + +/obj/item/clothing/head/helmet/space/void/exploration/pathfinder + name = "pathfinder voidsuit helmet" + desc = "A comfortable helmet designed to provide protection for Pathfinder units on long-term operations." + icon_state = "helm_explorer_pf" + item_state = "helm_explorer_pf" + armor_type = /datum/armor/exploration/space/pathfinder + worth_intrinsic = 100 + +/obj/item/clothing/suit/space/void/exploration/pathfinder + name = "pathfinder voidsuit" + desc = "A versatile, armored voidsuit, featuring the Pathfinder emblem on its chest plate. Designed for long deployments in unknown planetary environments." + icon_state = "void_explorer_pf" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_black", SLOT_ID_LEFT_HAND = "skrell_suit_black") + armor_type = /datum/armor/exploration/space/pathfinder + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/stack/flag,/obj/item/healthanalyzer,/obj/item/gps,/obj/item/radio/beacon, \ + /obj/item/shovel,/obj/item/ammo_magazine,/obj/item/gun) + helmet_type = /obj/item/clothing/head/helmet/space/void/exploration/pathfinder + worth_intrinsic = 400 diff --git a/code/modules/clothing/spacesuits/void/station/medical.dm b/code/modules/clothing/spacesuits/void/station/medical.dm new file mode 100644 index 000000000000..3edc945fc769 --- /dev/null +++ b/code/modules/clothing/spacesuits/void/station/medical.dm @@ -0,0 +1,79 @@ +/obj/item/clothing/head/helmet/space/void/medical + name = "medical voidsuit helmet" + desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding." + icon_state = "rig0-medical" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_helm", SLOT_ID_LEFT_HAND = "medical_helm") + armor_type = /datum/armor/medical/space + worth_intrinsic = 75 + +/obj/item/clothing/suit/space/void/medical + name = "medical voidsuit" + desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding." + icon_state = "rig-medical" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_voidsuit", SLOT_ID_LEFT_HAND = "medical_voidsuit") + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/firstaid,/obj/item/healthanalyzer,/obj/item/stack/medical) + armor_type = /datum/armor/medical/space + helmet_type = /obj/item/clothing/head/helmet/space/void/medical + worth_intrinsic = 375 + +/obj/item/clothing/head/helmet/space/void/medical/emt + name = "emergency medical response voidsuit helmet" + icon_state = "rig0-medical_emt" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_helm_emt", SLOT_ID_LEFT_HAND = "medical_helm_emt") + +/obj/item/clothing/suit/space/void/medical/emt + name = "emergency medical response voidsuit" + icon_state = "rig-medical_emt" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_voidsuit_emt", SLOT_ID_LEFT_HAND = "medical_voidsuit_emt") + helmet_type = /obj/item/clothing/head/helmet/space/void/medical/emt + +/obj/item/clothing/head/helmet/space/void/medical/bio + name = "biohazard voidsuit helmet" + desc = "A special helmet that protects against hazardous environments. Has minor radiation shielding." + icon_state = "rig0-medical_bio" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_helm_bio", SLOT_ID_LEFT_HAND = "medical_helm_bio") + armor_type = /datum/armor/medical/space + +/obj/item/clothing/suit/space/void/medical/bio + name = "biohazard voidsuit" + desc = "A special suit that protects against hazardous, environments. It feels heavier than the standard suit with extra protection around the joints." + icon_state = "rig-medical_bio" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_voidsuit_bio", SLOT_ID_LEFT_HAND = "medical_voidsuit_bio") + armor_type = /datum/armor/medical/space + helmet_type = /obj/item/clothing/head/helmet/space/void/medical/bio + +/obj/item/clothing/head/helmet/space/void/medical/alt + name = "streamlined medical voidsuit helmet" + desc = "A trendy, lightly radiation-shielded voidsuit helmet trimmed in a sleek blue." + icon_state = "rig0-medicalalt" + armor_type = /datum/armor/medical/space + light_overlay = "helmet_light_dual_blue" + encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_HELMET_ULTRALIGHT + weight = ITEM_WEIGHT_VOIDSUIT_HELMET_ULTRALIGHT + +/obj/item/clothing/suit/space/void/medical/alt + icon_state = "rig-medicalalt" + name = "streamlined medical voidsuit" + desc = "A more recent model of Vey-Med voidsuit, exchanging physical protection for fully unencumbered movement and a complete range of motion." + encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_ULTRALIGHT + weight = ITEM_WEIGHT_VOIDSUIT_ULTRALIGHT + armor_type = /datum/armor/medical/space + helmet_type = /obj/item/clothing/head/helmet/space/void/medical/alt + +/obj/item/clothing/head/helmet/space/void/medical/alt_plated + name = "streamlined medical voidsuit helmet" + desc = "A trendy, fully biohazard and radiation-shielded voidsuit helmet trimmed in a sleek blue." + icon_state = "rig0-medicalalt2" + armor_type = /datum/armor/medical/space/upgraded + light_overlay = "helmet_light_dual_blue" + encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_HELMET_ULTRALIGHT + weight = ITEM_WEIGHT_VOIDSUIT_HELMET_ULTRALIGHT + +/obj/item/clothing/suit/space/void/medical/alt_plated + icon_state = "rig-medicalalt2" + name = "plated medical voidsuit" + desc = "An iteration of an existing Vey-Med voidsuit, allowing full biohazard, radiation and increased close-quarters protection, at the expense of projectile and ranged layers." + encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_ULTRALIGHT + weight = ITEM_WEIGHT_VOIDSUIT_ULTRALIGHT + armor_type = /datum/armor/medical/space/upgraded + helmet_type = /obj/item/clothing/head/helmet/space/void/medical/alt_plated diff --git a/code/modules/clothing/spacesuits/void/station/operations.dm b/code/modules/clothing/spacesuits/void/station/operations.dm new file mode 100644 index 000000000000..3cf3ac67ded8 --- /dev/null +++ b/code/modules/clothing/spacesuits/void/station/operations.dm @@ -0,0 +1,33 @@ + +/obj/item/clothing/head/helmet/space/void/pilot + desc = "An atmos resistant helmet for space and planet exploration." + name = "pilot voidsuit helmet" + icon_state = "rig0_pilot" + item_state = "pilot_helm" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_helm", SLOT_ID_LEFT_HAND = "atmos_helm") + armor_type = /datum/armor/exploration/space/pilot + max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + light_overlay = "helmet_light_dual" + camera_networks = list(NETWORK_EXPLO_HELMETS) + worth_intrinsic = 125 // literally an atmos suit + +/obj/item/clothing/suit/space/void/pilot + desc = "An atmos resistant voidsuit for space and planet exploration." + icon_state = "rig-pilot" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "atmos_voidsuit", SLOT_ID_LEFT_HAND = "atmos_voidsuit") + name = "pilot voidsuit" + armor_type = /datum/armor/exploration/space/pilot + max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable) + helmet_type = /obj/item/clothing/head/helmet/space/void/pilot + worth_intrinsic = 450 // literally an atmos suit + +/obj/item/clothing/head/helmet/space/void/pilot/alt + icon_state = "rig0_pilot2" + item_state = "pilot_helm2" + +/obj/item/clothing/suit/space/void/pilot/alt + desc = "An atmos resistant voidsuit for space." + icon_state = "rig-pilot2" + item_state = "rig-pilot2" + helmet_type = /obj/item/clothing/head/helmet/space/void/pilot/alt diff --git a/code/modules/clothing/spacesuits/void/station/security.dm b/code/modules/clothing/spacesuits/void/station/security.dm new file mode 100644 index 000000000000..eb29b32a6aa6 --- /dev/null +++ b/code/modules/clothing/spacesuits/void/station/security.dm @@ -0,0 +1,47 @@ +/obj/item/clothing/head/helmet/space/void/security + name = "security voidsuit helmet" + desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor." + icon_state = "rig0-sec" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_helm", SLOT_ID_LEFT_HAND = "sec_helm") + armor_type = /datum/armor/station/secsuit + siemens_coefficient = 0.7 + light_overlay = "helmet_light_dual" + camera_networks = list(NETWORK_SEC_HELMETS) + worth_intrinsic = 125 + +/obj/item/clothing/suit/space/void/security + name = "security voidsuit" + desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor." + icon_state = "rig-sec" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuit", SLOT_ID_LEFT_HAND = "sec_voidsuit") + armor_type = /datum/armor/station/secsuit + allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton) + siemens_coefficient = 0.7 + helmet_type = /obj/item/clothing/head/helmet/space/void/security + worth_intrinsic = 450 + +/obj/item/clothing/head/helmet/space/void/security/riot + name = "crowd control voidsuit helmet" + icon_state = "rig0-sec_riot" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_helm_riot", SLOT_ID_LEFT_HAND = "sec_helm_riot") + +/obj/item/clothing/suit/space/void/security/riot + name = "crowd control voidsuit" + icon_state = "rig-sec_riot" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuit_riot", SLOT_ID_LEFT_HAND = "sec_voidsuit_riot") + helmet_type = /obj/item/clothing/head/helmet/space/void/security/riot + +//Todo: Both of them being called Riot/CC with one in the suit cycler, and one with actual armor values is really dumb. Seriously. +/obj/item/clothing/head/helmet/space/void/security/alt + name = "riot security voidsuit helmet" + desc = "A somewhat tacky voidsuit helmet, a fact mitigated by heavy armor plating." + icon_state = "rig0-secalt" + armor_type = /datum/armor/station/secsuitriot + +/obj/item/clothing/suit/space/void/security/alt + icon_state = "rig-secalt" + name = "riot security voidsuit" + desc = "A heavily armored voidsuit, designed to intimidate people who find black intimidating. Surprisingly slimming." + armor_type = /datum/armor/station/secsuitriot + allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton) + helmet_type = /obj/item/clothing/head/helmet/space/void/security/alt diff --git a/code/modules/clothing/spacesuits/void/station/supply.dm b/code/modules/clothing/spacesuits/void/station/supply.dm new file mode 100644 index 000000000000..64b5eda80bd6 --- /dev/null +++ b/code/modules/clothing/spacesuits/void/station/supply.dm @@ -0,0 +1,52 @@ +/obj/item/clothing/head/helmet/space/void/mining + name = "mining voidsuit helmet" + desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating." + icon_state = "rig0-mining" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "mining_helm", SLOT_ID_LEFT_HAND = "mining_helm") + armor_type = /datum/armor/cargo/mining/space + light_overlay = "helmet_light_dual" + worth_intrinsic = 75 + +/obj/item/clothing/suit/space/void/mining + name = "mining voidsuit" + desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating." + icon_state = "rig-mining" + item_state_slots = list(SLOT_ID_RIGHT_HAND = "mining_voidsuit", SLOT_ID_LEFT_HAND = "mining_voidsuit") + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/pickaxe) + armor_type = /datum/armor/cargo/mining/space + helmet_type = /obj/item/clothing/head/helmet/space/void/mining + worth_intrinsic = 250 + +/obj/item/clothing/head/helmet/space/void/mining/alt + name = "frontier mining voidsuit helmet" + desc = "An armored cheap voidsuit helmet. Someone must have through they were pretty cool when they painted a mohawk on it." + icon_state = "rig0-miningalt" + armor_type = /datum/armor/cargo/mining/space/armored + worth_intrinsic = 100 + +/obj/item/clothing/suit/space/void/mining/alt + icon_state = "rig-miningalt" + name = "frontier mining voidsuit" + desc = "A cheap prospecting voidsuit. What it lacks in comfort it makes up for in armor plating and street cred." + armor_type = /datum/armor/cargo/mining/space/armored + helmet_type = /obj/item/clothing/head/helmet/space/void/mining/alt + worth_intrinsic = 300 + +/obj/item/clothing/head/helmet/space/void/headofsecurity + desc = "A customized security voidsuit helmet. Has additional composite armor." + name = "head of security protosuit helmet" + icon_state = "hosproto" + armor_type = /datum/armor/security/hos/space + camera_networks = list(NETWORK_SEC_HELMETS) + encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_HELMET_HEAVY + weight = ITEM_WEIGHT_VOIDSUIT_HELMET_HEAVY + +/obj/item/clothing/suit/space/void/headofsecurity + desc = "A customized security voidsuit. Has additional composite armor." + name = "head of security protosuit" + icon_state = "hosproto_void" + armor_type = /datum/armor/security/hos/space + allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun) + encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_HEAVY + weight = ITEM_WEIGHT_VOIDSUIT_HEAVY + helmet_type = /obj/item/clothing/head/helmet/space/void/headofsecurity diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index ec8e11282bef..8bf334f378a1 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -77,6 +77,24 @@ breach_threshold = 12 can_breach = 1 + /// nominal helmet type + var/helmet_type = /obj/item/clothing/head/helmet/space/void + /// do we contain helmet by default? + var/starts_with_helmet = FALSE + /// nominal magboots type + var/boots_type = /obj/item/clothing/shoes/magboots + /// do we contain boots by default? + var/starts_with_boots = FALSE + // todo: support for having both tank and cooler so anyone can use it + /// nominal tank type + var/tank_type = /obj/item/tank/oxygen/yellow + /// nominal suit cooler type + var/cooler_type = /obj/item/suit_cooling_unit + /// do we have a tank or cooler by default? + var/starts_with_life_support = FALSE + /// default to cooler instead of tank + var/starts_with_cooler_instead = FALSE + //Inbuilt devices. var/obj/item/clothing/shoes/magboots/boots = null // Deployable boots, if any. var/obj/item/clothing/head/helmet/helmet = null // Deployable helmet, if any. @@ -85,6 +103,35 @@ item_action_name = "Toggle Helmet" +/** + * @params + * * mapload - mapload as usual + * * override_start_equipped - if TRUE / FALSE, we will start with all equipment populated + * * spawn_cooler_instead - spawn cooler instead of tank + */ +/obj/item/clothing/suit/space/void/Initialize(mapload, override_start_equipped, spawn_cooler_instead) + . = ..() + if(isnull(override_start_equipped)? starts_with_helmet : override_start_equipped) + helmet = new helmet_type + if(isnull(override_start_equipped)? starts_with_boots : override_start_equipped) + boots = new boots_type + if(isnull(override_start_equipped)? starts_with_life_support : override_start_equipped) + if(isnull(spawn_cooler_instead)? starts_with_cooler_instead : spawn_cooler_instead) + cooler = new cooler_type + else + tank = new tank_type + +/obj/item/clothing/suit/space/void/worth_contents(flags) + . = ..() + if(boots) + . += boots + if(helmet) + . += helmet + if(tank) + . += tank + if(cooler) + . += cooler + /obj/item/clothing/suit/space/void/get_weight() . = ..() if(boots?.loc == src) diff --git a/code/modules/clothing/spacesuits/void/void_vr.dm b/code/modules/clothing/spacesuits/void/void_vr.dm index 4b1cc4dfd5d2..474ce99f92fe 100644 --- a/code/modules/clothing/spacesuits/void/void_vr.dm +++ b/code/modules/clothing/spacesuits/void/void_vr.dm @@ -48,6 +48,7 @@ /obj/item/clothing/suit/space/void/explorer desc = "A classy red voidsuit for the needs of any semi-retro-futuristic spaceperson! This one is rather loose fitting." + helmet_type = /obj/item/clothing/head/helmet/space/void/explorer species_restricted = list( SPECIES_AKULA, SPECIES_ALRAUNE, @@ -121,6 +122,7 @@ species_restricted = list("exclude",SPECIES_DIONA,SPECIES_VOX) //this thing can autoadapt breach_threshold = 6 //this thing is basically tissue paper w_class = WEIGHT_CLASS_NORMAL //if it's snug, high-tech, and made of relatively soft materials, it should be much easier to store! + helmet_type = /obj/item/clothing/suit/space/void/autolok /obj/item/clothing/suit/space/void/autolok/Initialize(mapload) . = ..() diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 81ffd39b65e0..99728ffc838b 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -316,6 +316,7 @@ heat_protection_cover = UPPER_TORSO|LOWER_TORSO max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE siemens_coefficient = 0.6 + worth_intrinsic = 100 /obj/item/clothing/suit/storage/vest/officer name = "officer armor vest" diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index a70a3195cddb..855db3a826b5 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -180,6 +180,7 @@ /obj/item/tool/crowbar, /obj/item/tool/screwdriver, /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/tank/emergency/oxygen, /obj/item/clothing/mask/gas, /obj/item/barrier_tape_roll/engineering) body_cover_flags = UPPER_TORSO + worth_intrinsic = 50 //Lawyer /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket diff --git a/code/modules/clothing/suits/medieval_armor.dm b/code/modules/clothing/suits/medieval_armor.dm index bca0635ea06c..af49c3e0d1e1 100644 --- a/code/modules/clothing/suits/medieval_armor.dm +++ b/code/modules/clothing/suits/medieval_armor.dm @@ -8,6 +8,7 @@ body_cover_flags = HEAD|FACE|EYES inv_hide_flags = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL + worth_intrinsic = 175 /obj/item/clothing/head/helmet/medieval/red icon_state = "knighthelm_red" @@ -55,6 +56,7 @@ inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|HANDS|LEGS|FEET worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL + worth_intrinsic = 325 /obj/item/clothing/suit/armor/medieval/red icon_state = "knight_red" diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index d151cf25474d..cc0e43635685 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -83,6 +83,7 @@ armor_type = /datum/armor/general/radsuit weight = ITEM_WEIGHT_ARMOR_BIORAD_SUIT_HELMET encumbrance = ITEM_ENCUMBRANCE_ARMOR_BIORAD_HELMET + worth_intrinsic = 75 /obj/item/clothing/suit/radiation name = "Radiation suit" @@ -98,3 +99,4 @@ inv_hide_flags = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER clothing_flags = CLOTHING_THICK_MATERIAL | CLOTHING_INJECTION_PORT encumbrance = ITEM_ENCUMBRANCE_ARMOR_BIORAD_SUIT + worth_intrinsic = 250 diff --git a/code/modules/clothing/under/accessories/clothing.dm b/code/modules/clothing/under/accessories/clothing.dm index bce72d440dec..86d77f3e4825 100644 --- a/code/modules/clothing/under/accessories/clothing.dm +++ b/code/modules/clothing/under/accessories/clothing.dm @@ -57,6 +57,7 @@ siemens_coefficient = 0.9 w_class = WEIGHT_CLASS_NORMAL slot = ACCESSORY_SLOT_OVER + worth_intrinsic = 150 /obj/item/clothing/accessory/poncho/equipped(mob/user, slot, flags) //Solution for race-specific sprites for an accessory which is also a suit. Suit icons break if you don't use icon override which then also overrides race-specific sprites. ..() diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index 30f72264548c..4107b17d5459 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -4,6 +4,7 @@ icon_state = "holster" slot = ACCESSORY_SLOT_WEAPON //Legacy/balance purposes concealed_holster = 1 + worth_intrinsic = 75 // milrp tax is real var/obj/item/holstered = null var/list/can_hold var/list/cant_hold diff --git a/code/modules/economy/README.md b/code/modules/economy/README.md new file mode 100644 index 000000000000..36b1e1c9f68c --- /dev/null +++ b/code/modules/economy/README.md @@ -0,0 +1,35 @@ +# Economy Module + +All core code for in-game money simulation. + +## Balancing Guidelines + +Here's some rough costs in whatever money unit of choice the lore team has bikeshedded the codebase to in a given year. + +- Remember that 'worth' is both a buy and a sell price. + +### clothing + +- basic clothing (e.g. bland jumpsuits, gray satchels) should be no more than 5-10 +- branded clothing should be 25-75 +- 'luxury' / rare clothing can be any value you want. + +### armor + +armor can be anywhere from 150 to well over 1000 for a full set depending on functions + +- light 100-250 +- medium 200-600 +- heavy 350-1000+ +- specialized 250-1000+ + +spacesuits are function-dependent; follow armor guidelines with baseline being medium. + +- rigsuits specifically should be a bit more expensive than the voidsuit equivalent +- rigsuits should take into account weight / slots / etc limitations. + +### equipment + +- basic tools should be no more than 5-10 +- advanced tools (powertools+) should be around the 30-50 range +- specialized tools (rcds, etc) should be around the 100-400 range, depending on function diff --git a/code/modules/economy/currency.dm b/code/modules/economy/currency.dm index 991a88459ce0..fdf0f442ff21 100644 --- a/code/modules/economy/currency.dm +++ b/code/modules/economy/currency.dm @@ -91,6 +91,7 @@ /obj/item/proc/attempt_dynamic_currency(mob/user, atom/movable/predicate, amount, force, prevent_types, list/data = list(), silent, visual_range = 7) . = PAYMENT_NOT_CURRENCY var/list/iterating = list() + // todo: this is all bad. notice how we are calling on the component and not ourselves? SEND_SIGNAL(src, COMSIG_ITEM_DYNAMIC_CURRENCY_QUERY, iterating) if(length(iterating)) for(var/datum/D in iterating) diff --git a/code/modules/economy/items/cash.dm b/code/modules/economy/items/cash.dm index 3ab8940b50bd..1da69fe8d697 100644 --- a/code/modules/economy/items/cash.dm +++ b/code/modules/economy/items/cash.dm @@ -106,7 +106,7 @@ return (prevent_types & PAYMENT_TYPE_CASH)? NOT_STATIC_CURRENCY : PLURAL_STATIC_CURRENCY /obj/item/spacecash/do_static_currency_feedback(amount, mob/user, atom/target, range) - user.visible_message(SPAN_NOTICE("[user] inserts some cash into [target]."), SPAN_NOTICE("You insert [amount] [CURRENCY_NAME_PLURAL_PROPERR] into [target]."), SPAN_NOTICE("You hear some papers shuffling."), range) + user.visible_message(SPAN_NOTICE("[user] inserts some cash into [target]."), SPAN_NOTICE("You insert [amount] [CURRENCY_NAME_PLURAL_PROPER] into [target]."), SPAN_NOTICE("You hear some papers shuffling."), range) /obj/item/spacecash/consume_static_currency(amount, force, mob/user, atom/target, range) if(force) diff --git a/code/modules/economy/worth.dm b/code/modules/economy/worth.dm index cb89ce17c6a4..54fdd8d583b6 100644 --- a/code/modules/economy/worth.dm +++ b/code/modules/economy/worth.dm @@ -10,39 +10,63 @@ /** * gets our worth */ -/atom/proc/worth(flags = GET_WORTH_DEFAULT, buying) - return worth_provider().get_worth(flags, buying) +/atom/proc/worth(flags = GET_WORTH_FLAGS_DEFAULT) + return worth_provider().get_worth(flags) + +/** + * used to change the "real" target of what we're checking the worth of. + * + * useful for things like skateboards and roller beds. + */ +/atom/proc/worth_provider() + RETURN_TYPE(/atom) + return src /** * estimate our total worth * + * * Do not call this directly, call worth() + * + * todo: a way to get itemized worth + * todo: the way must respect obfuscation (e.g. not accessing real names of undiscovered gases) + * * @params * * flags - see [code/__DEFINES/economy/worth.dm] - * * buying - buying instead of selling * * @return worth as number */ -/atom/proc/get_worth(flags, buying) +/atom/proc/get_worth(flags) + return 0 + +//* Objs *// + +/obj/get_worth(flags) . = 0 if(flags & GET_WORTH_INTRINSIC) - . = worth_intrinsic + var/intrinsic = get_intrinsic_worth(flags) + . += intrinsic if(flags & GET_WORTH_MATERIALS) - . += get_materials_worth(flags, buying) + var/materials = get_materials_worth(flags) + . += materials if(flags & GET_WORTH_CONTAINING) - . += get_containing_worth(flags, buying) - if(buying) - . *= worth_buy_factor + var/containing = get_containing_worth(flags) + . += containing + +/** + * estimate our intrinsic worth + */ +/obj/proc/get_intrinsic_worth(flags) + return worth_intrinsic /** * estimate our raw materials worth * * @params * * flags - see [code/__DEFINES/economy/worth.dm] - * * buying - buying instead of selling * * @return worth as number */ -/atom/proc/get_materials_worth(flags, buying) +/obj/proc/get_materials_worth(flags) return 0 /** @@ -50,72 +74,16 @@ * * @params * * flags - see [code/__DEFINES/economy/worth.dm] - * * buying - buying instead of selling * * @return worth as number */ -/atom/proc/get_containing_worth(flags, buying) +/obj/proc/get_containing_worth(flags) . = 0 - for(var/atom/target as anything in worth_containing(flags, buying)) - . += target.worth(flags, buying) + for(var/obj/target as anything in worth_contents(flags)) + . += target.worth(flags) /** * gets relevant atoms inside us to be checked for containing worth */ -/atom/proc/worth_containing(flags, buying) +/obj/proc/worth_contents(flags) return list() - -/** - * used to change the "real" target of what we're checking the worth of. - * - * usefulf for things like skateboards and roller beds. - */ -/atom/proc/worth_provider() - RETURN_TYPE(/atom) - return src - -/** - * estimate a typepath's worth - * - * @params - * * path - typepath to estimate - * * flags - see [code/__DEFINES/economy/worth.dm] - * * buying - buying instead of selling - * - * @return worth as number or null if unable - */ -/proc/get_worth_static(path, flags = GET_WORTH_DEFAULT, buying) - var/atom/fetching = path - if(initial(fetching.worth_dynamic)) - return null - . = initial(fetching.worth_intrinsic) - . += get_materials_worth_static(path, flags, buying) - . += get_containing_worth_static(path, flags, buying) - -/** - * estimates a typepath's raw materials worth - * - * @params - * * path - typepath to estimate - * * flags - see [code/__DEFINES/economy/worth.dm] - * * buying - buying instead of selling - * - * @return worth as number or null if unable - */ -/proc/get_materials_worth_static(path, flags, buying) - var/atom/fetching = path - return initial(fetching.worth_materials) - -/** - * estimates a typepath's contents worth - * - * @params - * * path - typepath to estimate - * * flags - see [code/__DEFINES/economy/worth.dm] - * * buying - buying instead of selling - * - * @return worth as number or null if unable - */ -/proc/get_containing_worth_static(path, flags, buying) - var/atom/fetching = path - return initial(fetching.worth_containing) diff --git a/code/modules/events/shipping_error.dm b/code/modules/events/shipping_error.dm index 8c42113e2349..9dbcee2bc1c0 100644 --- a/code/modules/events/shipping_error.dm +++ b/code/modules/events/shipping_error.dm @@ -1,6 +1,6 @@ /datum/event/shipping_error/start() var/datum/supply_order/O = new /datum/supply_order() O.ordernum = SSsupply.ordernum - O.object = SSsupply.supply_pack[pick(SSsupply.supply_pack)] + O.object = SSsupply.legacy_supply_packs[pick(SSsupply.legacy_supply_packs)] O.ordered_by = random_name(pick(MALE,FEMALE), species = SPECIES_HUMAN) SSsupply.shoppinglist += O diff --git a/code/modules/examine/descriptions/weapons.dm b/code/modules/examine/descriptions/weapons.dm index 5f381d332ec0..00b5c0d192f2 100644 --- a/code/modules/examine/descriptions/weapons.dm +++ b/code/modules/examine/descriptions/weapons.dm @@ -7,13 +7,6 @@ //****** //This contains a lot of copypasta but I'm told it's better then a lot of New()s appending the var. -/obj/item/gun - description_info = "This is a gun. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ - then click where you want to fire." - -/obj/item/gun/energy - description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ - then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." /obj/item/gun/energy/crossbow description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ @@ -43,11 +36,6 @@ description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ then click where you want to fire. Most energy weapons can fire through windows harmlessly. Unlike most weapons, this weapon recharges itself." -/obj/item/gun/energy/sniperrifle - description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ - then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger. \ - To use the scope, use the appropriate verb in the object tab." - /obj/item/gun/ballistic description_info = "This is a ballistic weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ then click where you want to fire. To reload, click the weapon in your hand to unload (if needed), then add the appropriate ammo. The description \ diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index e4bcd83093da..539cfedfa316 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -3372,26 +3372,41 @@ return . = ..() +/obj/item/pizzabox/margherita + name = "pizza box (margherita)" + /obj/item/pizzabox/margherita/Initialize(mapload) . = ..() pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/margherita(src) boxtag = "Margherita Deluxe" +/obj/item/pizzabox/vegetable + name = "pizza box (vegetable)" + /obj/item/pizzabox/vegetable/Initialize(mapload) . = ..() pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza(src) boxtag = "Gourmet Vegatable" +/obj/item/pizzabox/mushroom + name = "pizza box (mushroom)" + /obj/item/pizzabox/mushroom/Initialize(mapload) . = ..() pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/mushroompizza(src) boxtag = "Mushroom Special" +/obj/item/pizzabox/meat + name = "pizza box (meat)" + /obj/item/pizzabox/meat/Initialize(mapload) . = ..() pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src) boxtag = "Meatlover's Supreme" +/obj/item/pizzabox/pineapple + name = "pizza box (pineapple)" + /obj/item/pizzabox/pineapple/Initialize(mapload) . = ..() pizza = new /obj/item/reagent_containers/food/snacks/sliceable/pizza/pineapple(src) diff --git a/code/modules/gamemaster/actions/shipping_error.dm b/code/modules/gamemaster/actions/shipping_error.dm index 4d3c5bb5fc77..52332a343eda 100644 --- a/code/modules/gamemaster/actions/shipping_error.dm +++ b/code/modules/gamemaster/actions/shipping_error.dm @@ -12,6 +12,6 @@ ..() var/datum/supply_order/O = new /datum/supply_order() O.ordernum = SSsupply.ordernum - O.object = SSsupply.supply_pack[pick(SSsupply.supply_pack)] + O.object = SSsupply.legacy_supply_packs[pick(SSsupply.legacy_supply_packs)] O.ordered_by = random_name(pick(MALE,FEMALE), species = SPECIES_HUMAN) SSsupply.shoppinglist += O diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index 074840debc1c..e1689c458cbf 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -654,3 +654,8 @@ closed_system = !closed_system to_chat(user, "You [closed_system ? "close" : "open"] the tray's lid.") update_icon() + +//* Subtypes *// + +/obj/machinery/portable_atmospherics/hydroponics/unanchored + anchored = FALSE diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index 368dea1d1c41..536ebe2f61d9 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/integrated_electronics/electronic_tools.dmi' icon_state = "circuit_printer" w_class = WEIGHT_CLASS_BULKY + worth_intrinsic = 150 var/cur_metal = 0 var/max_metal = 250 /// One sheet equals this much metal. @@ -25,6 +26,8 @@ var/list/program var/dirty_items = FALSE +// todo: get_containing_worth for the metal inside + /obj/item/integrated_circuit_printer/examine(mob/user, dist) . = ..() ui_interact(user) @@ -367,9 +370,11 @@ /obj/item/disk/integrated_circuit/upgrade/advanced name = "integrated circuit printer upgrade disk - advanced designs" desc = "Install this into your integrated circuit printer to enhance it. This one adds new, advanced designs to the printer." + worth_intrinsic = 150 /obj/item/disk/integrated_circuit/upgrade/clone name = "integrated circuit printer upgrade disk - circuit cloner" desc = "Install this into your integrated circuit printer to enhance it. This one allows the printer to duplicate assemblies." icon_state = "upgrade_disk_clone" origin_tech = list(TECH_ENGINEERING = 5, TECH_DATA = 6) + worth_intrinsic = 150 diff --git a/code/modules/materials/definitions/crystals/diamond.dm b/code/modules/materials/definitions/crystals/diamond.dm index 0372ea5a5bdb..876d8bee4877 100644 --- a/code/modules/materials/definitions/crystals/diamond.dm +++ b/code/modules/materials/definitions/crystals/diamond.dm @@ -21,6 +21,8 @@ density = 8 * 0.8 relative_conductivity = 0 + worth = 37.5 + /datum/material/diamond/generate_recipes() . = ..() . += create_stack_recipe_datum(category = "statues", name = "ai hologram statue", product = /obj/structure/statue/diamond/ai1, cost = 10, time = 2 SECONDS) diff --git a/code/modules/materials/definitions/crystals/glass.dm b/code/modules/materials/definitions/crystals/glass.dm index db2bd904f814..b7c406082b71 100644 --- a/code/modules/materials/definitions/crystals/glass.dm +++ b/code/modules/materials/definitions/crystals/glass.dm @@ -30,6 +30,8 @@ density = 8 * 1 relative_conductivity = 0 + worth = 0.5 + /datum/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) if(!user || !used_stack || !created_window || !created_fulltile_window || !window_options.len) diff --git a/code/modules/materials/definitions/elements/carbon.dm b/code/modules/materials/definitions/elements/carbon.dm index 3622b889408b..831cb1675742 100644 --- a/code/modules/materials/definitions/elements/carbon.dm +++ b/code/modules/materials/definitions/elements/carbon.dm @@ -22,3 +22,5 @@ refraction = MATERIAL_RESISTANCE_NONE absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_NONE + + worth = 1.25 diff --git a/code/modules/materials/definitions/metals/brass.dm b/code/modules/materials/definitions/metals/brass.dm index c2918d3a59a8..7447277e461e 100644 --- a/code/modules/materials/definitions/metals/brass.dm +++ b/code/modules/materials/definitions/metals/brass.dm @@ -16,6 +16,8 @@ relative_reactivity = 0.5 relative_permeability = 0 + worth = 7.5 + /datum/material/brass/generate_recipes() . = ..() . += create_stack_recipe_datum(name = "brass floor tiles", product = /obj/item/stack/tile/brass, amount = 4) diff --git a/code/modules/materials/definitions/metals/bronze.dm b/code/modules/materials/definitions/metals/bronze.dm index 25e41cdd05f6..dadeabb72878 100644 --- a/code/modules/materials/definitions/metals/bronze.dm +++ b/code/modules/materials/definitions/metals/bronze.dm @@ -19,3 +19,5 @@ refraction = MATERIAL_RESISTANCE_NONE absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_NONE + + worth = 7.5 diff --git a/code/modules/materials/definitions/metals/copper.dm b/code/modules/materials/definitions/metals/copper.dm index c703a8765f6f..50b0c027e23a 100644 --- a/code/modules/materials/definitions/metals/copper.dm +++ b/code/modules/materials/definitions/metals/copper.dm @@ -5,6 +5,8 @@ stack_type = /obj/item/stack/material/copper tgui_icon_key = "copper" + worth = 3.5 + relative_integrity = 0.8 density = 8 * 0.9 relative_conductivity = 0.9 diff --git a/code/modules/materials/definitions/metals/durasteel.dm b/code/modules/materials/definitions/metals/durasteel.dm index 86a5dc86ce3c..4fe9673596f1 100644 --- a/code/modules/materials/definitions/metals/durasteel.dm +++ b/code/modules/materials/definitions/metals/durasteel.dm @@ -12,6 +12,8 @@ table_icon_base = "metal" tgui_icon_key = "durasteel" + worth = 35 + relative_integrity = 2 density = 8 * 2.5 relative_conductivity = 0.3 diff --git a/code/modules/materials/definitions/metals/gold.dm b/code/modules/materials/definitions/metals/gold.dm index 8869e522a726..3dc6fcc9f177 100644 --- a/code/modules/materials/definitions/metals/gold.dm +++ b/code/modules/materials/definitions/metals/gold.dm @@ -8,6 +8,8 @@ sheet_plural_name = "ingots" tgui_icon_key = "gold" + worth = 15 + relative_integrity = 0.8 density = 8 * 1.75 relative_conductivity = 2 diff --git a/code/modules/materials/definitions/metals/hydrogens.dm b/code/modules/materials/definitions/metals/hydrogens.dm index 83ae65e46f3d..2b0dfbe253f8 100644 --- a/code/modules/materials/definitions/metals/hydrogens.dm +++ b/code/modules/materials/definitions/metals/hydrogens.dm @@ -20,6 +20,7 @@ stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 6, TECH_MAGNET = 5) is_fusion_fuel = 1 tgui_icon_key = "mhydrogen" + worth = 50 /datum/material/hydrogen/tritium name = "tritium" @@ -31,6 +32,7 @@ sheet_plural_name = "ingots" is_fusion_fuel = 1 tgui_icon_key = "ingots" + worth = 35 /datum/material/hydrogen/deuterium name = "deuterium" @@ -42,3 +44,4 @@ sheet_plural_name = "ingots" is_fusion_fuel = 1 tgui_icon_key = "ingots" + worth = 22.5 diff --git a/code/modules/materials/definitions/metals/iron.dm b/code/modules/materials/definitions/metals/iron.dm index 694d6add8044..1781ce98a9be 100644 --- a/code/modules/materials/definitions/metals/iron.dm +++ b/code/modules/materials/definitions/metals/iron.dm @@ -7,6 +7,8 @@ sheet_plural_name = "ingots" tgui_icon_key = "ingots" + worth = 1 + relative_integrity = 0.7 density = 8 * 0.7 relative_conductivity = 1 diff --git a/code/modules/materials/definitions/metals/lead.dm b/code/modules/materials/definitions/metals/lead.dm index f62b694812ae..86a3d87c818f 100644 --- a/code/modules/materials/definitions/metals/lead.dm +++ b/code/modules/materials/definitions/metals/lead.dm @@ -7,6 +7,8 @@ sheet_plural_name = "ingots" tgui_icon_key = "ingots" + worth = 5 + relative_integrity = 1 density = 8 * 3 relative_conductivity = 0.3 diff --git a/code/modules/materials/definitions/metals/osmium.dm b/code/modules/materials/definitions/metals/osmium.dm index 4ff9b80304b0..e5f0b38aee36 100644 --- a/code/modules/materials/definitions/metals/osmium.dm +++ b/code/modules/materials/definitions/metals/osmium.dm @@ -8,6 +8,8 @@ sheet_plural_name = "ingots" tgui_icon_key = "ingots" + worth = 17.5 + relative_integrity = 0.8 density = 8 * 1.5 relative_conductivity = 2 diff --git a/code/modules/materials/definitions/metals/plasteel.dm b/code/modules/materials/definitions/metals/plasteel.dm index 7489f97c6fd5..6fced9f91424 100644 --- a/code/modules/materials/definitions/metals/plasteel.dm +++ b/code/modules/materials/definitions/metals/plasteel.dm @@ -14,6 +14,8 @@ table_icon_base = "metal" tgui_icon_key = "plasteel" + worth = 17 + relative_integrity = 1.5 weight_multiplier = 1 density = 8 * 1.75 diff --git a/code/modules/materials/definitions/metals/platinum.dm b/code/modules/materials/definitions/metals/platinum.dm index 25af15629865..8de5e124c069 100644 --- a/code/modules/materials/definitions/metals/platinum.dm +++ b/code/modules/materials/definitions/metals/platinum.dm @@ -8,6 +8,8 @@ sheet_plural_name = "ingots" tgui_icon_key = "ingots" + worth = 25 + relative_integrity = 0.8 weight_multiplier = 1 density = 8 * 1.75 diff --git a/code/modules/materials/definitions/metals/silver.dm b/code/modules/materials/definitions/metals/silver.dm index 210e2ccb5b3b..193c4cccc7eb 100644 --- a/code/modules/materials/definitions/metals/silver.dm +++ b/code/modules/materials/definitions/metals/silver.dm @@ -8,6 +8,8 @@ sheet_plural_name = "ingots" tgui_icon_key = "silver" + worth = 12.5 + relative_integrity = 0.7 weight_multiplier = 1 density = 8 * 1.4 diff --git a/code/modules/materials/definitions/metals/steel.dm b/code/modules/materials/definitions/metals/steel.dm index ce337ac483f0..179473cb42d0 100644 --- a/code/modules/materials/definitions/metals/steel.dm +++ b/code/modules/materials/definitions/metals/steel.dm @@ -8,6 +8,8 @@ table_icon_base = "metal" tgui_icon_key = "metal" + worth = 2 + // the true neutral material relative_integrity = 1 @@ -90,7 +92,7 @@ . += create_stack_recipe_datum( name = "canister", product = /obj/machinery/portable_atmospherics/canister, - cost = 10, + cost = 5, time = 1 SECONDS, ) . += create_stack_recipe_datum( diff --git a/code/modules/materials/definitions/metals/titanium.dm b/code/modules/materials/definitions/metals/titanium.dm index fd3ad0c13546..2b26b55dc969 100644 --- a/code/modules/materials/definitions/metals/titanium.dm +++ b/code/modules/materials/definitions/metals/titanium.dm @@ -9,6 +9,8 @@ table_icon_base = "metal" tgui_icon_key = "titanium" + worth = 3 + relative_integrity = 1 density = 8 * 0.5 relative_conductivity = 1.27 diff --git a/code/modules/materials/definitions/metals/uranium.dm b/code/modules/materials/definitions/metals/uranium.dm index 4ce07205395e..7d9087426e5e 100644 --- a/code/modules/materials/definitions/metals/uranium.dm +++ b/code/modules/materials/definitions/metals/uranium.dm @@ -10,6 +10,8 @@ door_icon_base = "stone" tgui_icon_key = "uranium" + worth = 17.5 + relative_integrity = 1.2 weight_multiplier = 1 density = 8 * 2.25 diff --git a/code/modules/materials/definitions/misc/cardboard.dm b/code/modules/materials/definitions/misc/cardboard.dm index bcb6a79457fc..e5c5db8e86fc 100644 --- a/code/modules/materials/definitions/misc/cardboard.dm +++ b/code/modules/materials/definitions/misc/cardboard.dm @@ -12,6 +12,8 @@ destruction_desc = "crumples" pass_stack_colors = TRUE + worth = 1 + relative_integrity = 0.25 weight_multiplier = 1 density = 8 * 0.2 diff --git a/code/modules/materials/definitions/misc/cloths.dm b/code/modules/materials/definitions/misc/cloths.dm index e17fbdf85c58..1db7dd95bee5 100644 --- a/code/modules/materials/definitions/misc/cloths.dm +++ b/code/modules/materials/definitions/misc/cloths.dm @@ -8,6 +8,8 @@ melting_point = T0C+300 pass_stack_colors = TRUE + worth = 2 + relative_integrity = 0.25 density = 8 * 0.2 relative_conductivity = 0 diff --git a/code/modules/materials/definitions/misc/plastic.dm b/code/modules/materials/definitions/misc/plastic.dm index e96bd237c5d4..bcc761a1ad54 100644 --- a/code/modules/materials/definitions/misc/plastic.dm +++ b/code/modules/materials/definitions/misc/plastic.dm @@ -8,6 +8,8 @@ melting_point = T0C+371 //assuming heat resistant plastic stack_origin_tech = list(TECH_MATERIAL = 3) + worth = 3.5 + relative_integrity = 0.65 weight_multiplier = 0.75 density = 8 * 1 diff --git a/code/modules/materials/definitions/organic/algae.dm b/code/modules/materials/definitions/organic/algae.dm index 6ce5578bfa50..331824df25cf 100644 --- a/code/modules/materials/definitions/organic/algae.dm +++ b/code/modules/materials/definitions/organic/algae.dm @@ -18,3 +18,5 @@ refraction = MATERIAL_RESISTANCE_NONE absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_NONE + + worth = 10 diff --git a/code/modules/materials/definitions/organic/leather.dm b/code/modules/materials/definitions/organic/leather.dm index 67f9cb61b427..bc48abaed368 100644 --- a/code/modules/materials/definitions/organic/leather.dm +++ b/code/modules/materials/definitions/organic/leather.dm @@ -21,6 +21,8 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_NONE + worth = 2.5 + /datum/material/leather/generate_recipes() . = ..() . += create_stack_recipe_datum( diff --git a/code/modules/materials/definitions/organic/wood/log.dm b/code/modules/materials/definitions/organic/wood/log.dm index bdfda1937537..ef5515d86eff 100644 --- a/code/modules/materials/definitions/organic/wood/log.dm +++ b/code/modules/materials/definitions/organic/wood/log.dm @@ -35,6 +35,8 @@ absorption = MATERIAL_RESISTANCE_MODERATE nullification = MATERIAL_RESISTANCE_VULNERABLE + worth = 5 + /datum/material/wood_log/generate_recipes() . = ..() . += create_stack_recipe_datum( diff --git a/code/modules/materials/definitions/organic/wood/plank.dm b/code/modules/materials/definitions/organic/wood/plank.dm index 1bd8c7a6c3d0..3fa4ddee830d 100644 --- a/code/modules/materials/definitions/organic/wood/plank.dm +++ b/code/modules/materials/definitions/organic/wood/plank.dm @@ -33,6 +33,8 @@ absorption = MATERIAL_RESISTANCE_MODERATE nullification = MATERIAL_RESISTANCE_VULNERABLE + worth = 2.5 + /datum/material/wood_plank/generate_recipes() . = ..() . += create_stack_recipe_datum( diff --git a/code/modules/materials/definitions/special/morphium.dm b/code/modules/materials/definitions/special/morphium.dm index b1a41f364c87..f0f56be54790 100644 --- a/code/modules/materials/definitions/special/morphium.dm +++ b/code/modules/materials/definitions/special/morphium.dm @@ -23,6 +23,8 @@ absorption = MATERIAL_RESISTANCE_MODERATE nullification = MATERIAL_RESISTANCE_MODERATE + worth = 100 + /datum/material/morphium/hull name = MAT_MORPHIUMHULL id = "morphium_hull" diff --git a/code/modules/materials/definitions/special/phoron.dm b/code/modules/materials/definitions/special/phoron.dm index aa34a9581eec..e036dc05f3cc 100644 --- a/code/modules/materials/definitions/special/phoron.dm +++ b/code/modules/materials/definitions/special/phoron.dm @@ -24,6 +24,8 @@ absorption = MATERIAL_RESISTANCE_LOW nullification = MATERIAL_RESISTANCE_MODERATE + worth = 20 + // Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. /* /datum/material/phoron/combustion_effect(var/turf/T, var/temperature, var/effect_multiplier) diff --git a/code/modules/materials/definitions/special/supermatter.dm b/code/modules/materials/definitions/special/supermatter.dm index 253d7df8bc7a..75c069074791 100644 --- a/code/modules/materials/definitions/special/supermatter.dm +++ b/code/modules/materials/definitions/special/supermatter.dm @@ -25,6 +25,8 @@ absorption = MATERIAL_RESISTANCE_EXTREME nullification = MATERIAL_RESISTANCE_HIGH + worth = 200 // holy moly! + // you didn't think you were getting the stats for free now did you material_traits = list( /datum/material_trait/radioactive = RAD_INTENSITY_MAT_SUPERMATTER, diff --git a/code/modules/materials/definitions/special/valhollide.dm b/code/modules/materials/definitions/special/valhollide.dm index 5e0c69eb5673..48333b994e03 100644 --- a/code/modules/materials/definitions/special/valhollide.dm +++ b/code/modules/materials/definitions/special/valhollide.dm @@ -24,3 +24,5 @@ refraction = MATERIAL_RESISTANCE_HIGH absorption = MATERIAL_RESISTANCE_HIGH nullification = MATERIAL_RESISTANCE_MODERATE + + worth = 100 diff --git a/code/modules/materials/definitions/special/verdantium.dm b/code/modules/materials/definitions/special/verdantium.dm index 25d227b3883b..dd8a1ef45b8d 100644 --- a/code/modules/materials/definitions/special/verdantium.dm +++ b/code/modules/materials/definitions/special/verdantium.dm @@ -23,3 +23,5 @@ refraction = MATERIAL_RESISTANCE_LOW absorption = MATERIAL_RESISTANCE_HIGH nullification = MATERIAL_RESISTANCE_MODERATE + + worth = 35 diff --git a/code/modules/materials/definitions/stones/marble.dm b/code/modules/materials/definitions/stones/marble.dm index bbe9c92fe841..c41d18940a66 100644 --- a/code/modules/materials/definitions/stones/marble.dm +++ b/code/modules/materials/definitions/stones/marble.dm @@ -25,6 +25,8 @@ absorption = MATERIAL_RESISTANCE_MODERATE nullification = MATERIAL_RESISTANCE_VULNERABLE + worth = 2 + /datum/material/marble/generate_recipes() . = ..() . += create_stack_recipe_datum( diff --git a/code/modules/materials/definitions/stones/sandstone.dm b/code/modules/materials/definitions/stones/sandstone.dm index 9eb0a0175adc..4dd4c1a2b16b 100644 --- a/code/modules/materials/definitions/stones/sandstone.dm +++ b/code/modules/materials/definitions/stones/sandstone.dm @@ -25,6 +25,8 @@ absorption = MATERIAL_RESISTANCE_MODERATE nullification = MATERIAL_RESISTANCE_VULNERABLE + worth = 1.25 + /datum/material/sandstone/generate_recipes() . = ..() . += create_stack_recipe_datum(category = "statues", name = "assistant statue", product = /obj/structure/statue/sandstone/assistant, amount = 10) diff --git a/code/modules/materials/material.dm b/code/modules/materials/material.dm index 2c0819a97216..51b061ae608c 100644 --- a/code/modules/materials/material.dm +++ b/code/modules/materials/material.dm @@ -6,21 +6,25 @@ abstract_type = /datum/material //* Core - /** * ID. * Must be unique. * Hardcoded materials can be looked up by typepath too and must never have their ids changed under the current implementation. */ var/id - /// Unique name for use in indexing the list. + /// Name for debugging purposes; not player-facing. var/name - /// Prettier name for display. + + //* Identification *// + /// Player-facing name. Always used. var/display_name + + // todo: reevaluate var/use_name + // todo: reevaluate var/sheet_singular_name = "sheet" + // todo: reevaluate var/sheet_plural_name = "sheets" - var/is_fusion_fuel //! Shards/tables/structures /// Path of debris object. @@ -157,6 +161,7 @@ var/spatial_instability = 0 /// If set, object matter var will be a list containing these values. var/list/composite_material + var/is_fusion_fuel //! Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. var/created_window @@ -176,19 +181,23 @@ /// Wallrot crumble message. var/rotting_touch_message = "crumbles under your touch" - //* Economy + //* Stacking *// + /// amount per sheet / whatever + var/sheet_amount = SHEET_MATERIAL_AMOUNT + + //* Economy *// /// Raw worth per cm3 var/worth = 0 /// economic category for this var/economic_category_material = ECONOMIC_CATEGORY_MATERIAL_DEFAULT - //* Sounds + //* Sounds *// /// melee sound on blunt force - getsfx compatible var/sound_melee_brute = 'sound/weapons/smash.ogg' /// melee sound on burn damage - getsfx compatible var/sound_melee_burn = 'sound/items/Welder.ogg' - //* TGUI + //* TGUI *// /// tgui icon key in icons/interface/materials.dm var/tgui_icon_key = "unknown" @@ -300,7 +309,7 @@ /datum/material/proc/wall_touch_special(turf/simulated/wall/W, mob/living/L) return -//* traits & trait hooks +//* traits & trait hooks *// /datum/material/proc/init_traits() for(var/i in 1 to length(material_traits)) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 8e628d5716de..04f32a1e5c55 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -7,6 +7,7 @@ brightness_on = 6 // luminosity when on light_color = "#ff9933" // A slight yellow/orange color. light_wedge = LIGHT_OMNI + worth_intrinsic = 45 /*****************************Pickaxe********************************/ @@ -21,6 +22,7 @@ item_state = "jackhammer" w_class = WEIGHT_CLASS_BULKY materials_base = list(MAT_STEEL = 3750) + worth_intrinsic = 75 var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO var/sand_dig = FALSE origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1) @@ -58,6 +60,7 @@ desc = "Yours is the drill that will pierce through the rock walls." drill_verb = "drilling" sand_dig = TRUE + worth_intrinsic = 125 /obj/item/pickaxe/jackhammer name = "sonic jackhammer" @@ -67,6 +70,7 @@ origin_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2) desc = "Cracks rocks with sonic blasts, perfect for killing cave lizards." drill_verb = "hammering" + worth_intrinsic = 250 /obj/item/pickaxe/gold name = "golden pickaxe" @@ -90,6 +94,7 @@ drill_sound = 'sound/items/Welder.ogg' sharp = 1 edge = 1 + worth_intrinsic = 175 /obj/item/pickaxe/diamond name = "diamond pickaxe" @@ -109,6 +114,7 @@ desc = "Yours is the drill that will pierce the heavens!" drill_verb = "drilling" sand_dig = TRUE + worth_intrinsic = 350 /obj/item/pickaxe/borgdrill name = "enhanced sonic jackhammer" @@ -134,6 +140,7 @@ attack_verb = list("mined", "pierced", "stabbed", "attacked") drill_verb = "picking" sharp = 1 + worth_intrinsic = 75 //Snowflake drill that works like a chainsaw! How fun. Honestly they should probably all work like this or something. I dunno. Might be a fun mining overhaul later. /obj/item/pickaxe/tyrmalin @@ -145,6 +152,7 @@ var/max_fuel = 100 active = 0 var/jam_chance = TRUE + worth_intrinsic = 75 /obj/item/pickaxe/tyrmalin/Initialize(mapload) . = ..() @@ -276,6 +284,7 @@ attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked") sharp = 0 edge = 1 + worth_intrinsic = 50 var/digspeed = 40 /obj/item/shovel/bone diff --git a/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm b/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm index dfcd85f613a9..b55ba7453580 100644 --- a/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm +++ b/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm @@ -182,49 +182,49 @@ name = "Thermo-Electric Generator voucher" desc = "A voucher redeemable, at any NT cargo department, for shipment of a Thermo-Electric Generator" icon_state = "engineering_voucher" - redeemable_for = new /datum/supply_pack/eng/teg + redeemable_for = new /datum/supply_pack/nanotrasen/engineering/teg /obj/item/engineering_voucher/collectors name = "Radiation Collector voucher" desc = "A voucher redeemable, at any NT cargo department, for shipment of crate of radiation collectors" icon_state = "engineering_voucher" - redeemable_for = new /datum/supply_pack/eng/engine/collector + redeemable_for = new /datum/supply_pack/nanotrasen/engineering/engine/radiation_collector /obj/item/engineering_voucher/smcore name = "Supermatter Core voucher" desc = "A voucher redeemable, at any NT cargo department, for shipment of a Supermatter core" icon_state = "engineering_voucher" - redeemable_for = new /datum/supply_pack/eng/smbig + redeemable_for = new /datum/supply_pack/nanotrasen/engineering/engine/supermatter_core /obj/item/engineering_voucher/fusion_core name = "Fusion Core voucher" desc = "A voucher redeemable, at any NT cargo department, for shipment of a fusion core" icon_state = "engineering_voucher" - redeemable_for = new /datum/supply_pack/eng/fusion_core + redeemable_for = new /datum/supply_pack/nanotrasen/engineering/engine/fusion_core /obj/item/engineering_voucher/fusion_fuel_injector name = "Fuel Injector voucher" desc = "A voucher redeemable, at any NT cargo department, for shipment of a fusion fuel injector" icon_state = "engineering_voucher" - redeemable_for = new /datum/supply_pack/eng/fusion_fuel_injector + redeemable_for = new /datum/supply_pack/nanotrasen/engineering/engine/fusion_fuel_injector /obj/item/engineering_voucher/gyrotrons name = "Gyrotron voucher" desc = "A voucher redeemable, at any NT cargo department, for shipment of Gyrotrons" icon_state = "engineering_voucher" - redeemable_for = new /datum/supply_pack/eng/gyrotron + redeemable_for = new /datum/supply_pack/nanotrasen/engineering/engine/gyrotron /obj/item/engineering_voucher/fuel_compressor name = "Fuel compressor voucher" desc = "A voucher redeemable, at any NT cargo department, for shipment of a Fuel rod compressor" icon_state = "engineering_voucher" - redeemable_for = new /datum/supply_pack/eng/fusion_fuel_compressor + redeemable_for = new /datum/supply_pack/nanotrasen/engineering/engine/fusion_fuel_compressor /obj/item/engineering_voucher/reflector name = "Laser reflector voucher" desc = "A voucher redeemable, at any NT cargo department, for a single laser reflector." icon_state = "engineering_voucher" - redeemable_for = new /datum/supply_pack/eng/fusion_fuel_compressor + redeemable_for = new /datum/supply_pack/nanotrasen/engineering/engine/fusion_fuel_compressor /obj/item/engineering_mystical_tech name = "XYE" diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 40bdb82a54f8..f8d9fc7ab7f9 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -38,10 +38,6 @@ /// How are we intending to act? Help / harm / etc. var/a_intent = INTENT_HELP - //? Economy - /// This mob's economic category - var/economic_category_mob = ECONOMIC_CATEGORY_MOB_DEFAULT - //? Perspectives /// using perspective - if none, it'll be self - when client logs out, if using_perspective has reset_on_logout, this'll be unset. var/datum/perspective/using_perspective diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index da2019fb79d4..ae8e907f7876 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -6,6 +6,7 @@ var/labels_left = 30 var/mode = 0 //off or on. w_class = WEIGHT_CLASS_SMALL + worth_intrinsic = 50 /obj/item/hand_labeler/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent) if(user.a_intent == INTENT_HARM) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index c1718a9e7ac1..632c340da4a9 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -165,7 +165,7 @@ return to_chat(user, "You insert the toner cartridge into \the [src].") var/obj/item/toner/T = O - toner += T.toner_amount + toner += T.amount qdel(T) else to_chat(user, "This cartridge is not yet ready for replacement! Use up the rest of the toner.") @@ -373,4 +373,11 @@ name = "toner cartridge" icon = 'icons/obj/device.dmi' icon_state = "tonercartridge" - var/toner_amount = 30 + worth_intrinsic = 5 + + var/max_amount = 30 + var/amount = 30 + +/obj/item/toner/get_containing_worth(flags) + . = ..() + . += clamp(amount, 0, max_amount) * 1 // printer companies are still scams in 2656 diff --git a/code/modules/power/cells/device_cells.dm b/code/modules/power/cells/device_cells.dm index dcb9244799c9..51c67e608999 100644 --- a/code/modules/power/cells/device_cells.dm +++ b/code/modules/power/cells/device_cells.dm @@ -13,6 +13,8 @@ materials_base = list("metal" = 350, MAT_GLASS = 50) preserve_item = 1 + worth_intrinsic = 25 + /obj/item/cell/device/empty charge = 0 @@ -23,6 +25,8 @@ maxcharge = 2400 charge_amount = 20 + worth_intrinsic = 50 + /obj/item/cell/device/weapon/empty charge = 0 diff --git a/code/modules/power/fusion/gyrotron/gyrotron.dm b/code/modules/power/fusion/gyrotron/gyrotron.dm index eee572332636..0291e70f59c5 100644 --- a/code/modules/power/fusion/gyrotron/gyrotron.dm +++ b/code/modules/power/fusion/gyrotron/gyrotron.dm @@ -9,6 +9,8 @@ var/list/gyrotrons = list() use_power = USE_POWER_IDLE active_power_usage = 50000 + worth_intrinsic = 700 + circuit = /obj/item/circuitboard/gyrotron var/id_tag diff --git a/code/modules/power/lighting/lights.dm b/code/modules/power/lighting/lights.dm index fb697578a656..cd1dddcda2ff 100644 --- a/code/modules/power/lighting/lights.dm +++ b/code/modules/power/lighting/lights.dm @@ -48,12 +48,16 @@ nightshift_range = 6 nightshift_power = 0.5 + worth_intrinsic = 5 + /obj/item/light/tube/large w_class = WEIGHT_CLASS_SMALL name = "large light tube" brightness_range = 8 brightness_power = 1 + worth_intrinsic = 10 + //! ## Colored Light Tubes //! Standard Rainbow @@ -121,6 +125,8 @@ nightshift_range = null nightshift_power = null + worth_intrinsic = 2 + /obj/item/light/bulb/strong name = "light bulb" desc = "A replacement light bulb." @@ -131,6 +137,8 @@ brightness_range = 8 + worth_intrinsic = 4 + /obj/item/light/throw_impact(atom/hit_atom) ..() shatter() diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 1f42f4c4e5fb..1e5de40b4b86 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -7,7 +7,9 @@ anchored = FALSE density = TRUE req_access = list(ACCESS_ENGINEERING_ENGINE) -// use_power = 0 + + worth_intrinsic = 500 + var/obj/item/tank/phoron/P = null /// stored power in kilojoules var/stored_power = 0 diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index c1821021e778..7da6c2e6c880 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -9,6 +9,8 @@ density = 1 req_access = list(ACCESS_ENGINEERING_ENGINE) armor_type = /datum/armor/object/medium + + worth_intrinsic = 350 var/id = null use_power = USE_POWER_OFF //uses powernet power, not APC power diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index bfa09404df67..2233e458f083 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -21,6 +21,8 @@ field_generator power level display anchored = 0 density = 1 use_power = USE_POWER_OFF + + worth_intrinsic = 350 var/const/num_power_levels = 6 // Total number of power level icon has var/Varedit_start = 0 var/Varpower = 0 diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm index ca0c7b6b5aa1..c9963363fdd6 100644 --- a/code/modules/power/singularity/generator.dm +++ b/code/modules/power/singularity/generator.dm @@ -1,12 +1,13 @@ -/////SINGULARITY SPAWNER -/obj/machinery/the_singularitygen/ +/obj/machinery/the_singularitygen name = "Gravitational Singularity Generator" - desc = "An Odd Device which produces a Gravitational Singularity when set up." + desc = "An odd device which produces a gravitational singularity when set up." icon = 'icons/obj/singularity.dmi' icon_state = "TheSingGen" anchored = 0 density = 1 use_power = USE_POWER_OFF + + worth_intrinsic = 3000 var/energy = 0 var/creation_type = /obj/singularity @@ -14,7 +15,8 @@ var/turf/T = get_turf(src) if(src.energy >= 200) new creation_type(T, 50) - if(src) qdel(src) + if(src) + qdel(src) /obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user) if(W.is_wrench()) diff --git a/code/modules/power/smes/coil.dm b/code/modules/power/smes/coil.dm index 76aa4e00ddb6..168c6289455b 100644 --- a/code/modules/power/smes/coil.dm +++ b/code/modules/power/smes/coil.dm @@ -7,6 +7,7 @@ icon = 'icons/obj/stock_parts.dmi' icon_state = "smes_coil" // Just few icons patched together. If someone wants to make better icon, feel free to do so! w_class = WEIGHT_CLASS_BULKY // It's LARGE (backpack size) + worth_intrinsic = 150 /// capacity in kWh var/charge_capacity = SMES_COIL_STORAGE_BASIC /// IO in kW @@ -17,15 +18,18 @@ desc = "A cheaper model of superconductive magnetic coil. Its capacity and I/O rating are considerably lower." charge_capacity = SMES_COIL_STORAGE_WEAK flow_capacity = SMES_COIL_FLOW_WEAK + worth_intrinsic = 100 /obj/item/smes_coil/super_capacity name = "superconductive capacitance coil" desc = "A specialised type of superconductive magnetic coil with a significantly stronger containment field, allowing for larger power storage. Its IO rating is much lower, however." charge_capacity = SMES_COIL_STORAGE_CAPACITANCE flow_capacity = SMES_COIL_FLOW_CAPACITANCE + worth_intrinsic = 350 /obj/item/smes_coil/super_io name = "superconductive transmission coil" desc = "A specialised type of superconductive magnetic coil with reduced storage capabilites but vastly improved power transmission capabilities, making it useful in systems which require large throughput." charge_capacity = SMES_COIL_STORAGE_TRANSMISSION flow_capacity = SMES_COIL_FLOW_TRANSMISSION + worth_intrinsic = 350 diff --git a/code/modules/projectiles/ammunition/ammo_casing.dm b/code/modules/projectiles/ammunition/ammo_casing.dm index 2c12ce235bf8..a5131b48e330 100644 --- a/code/modules/projectiles/ammunition/ammo_casing.dm +++ b/code/modules/projectiles/ammunition/ammo_casing.dm @@ -40,6 +40,9 @@ QDEL_NULL(stored) return ..() +/obj/item/ammo_casing/get_intrinsic_worth(flags) + return loaded()? ..() : 0 + //removes the projectile from the ammo casing // todo: refactor for actual on-shot or whatever /obj/item/ammo_casing/proc/expend() diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index 644644bfb5a0..e43c6248cb0e 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -252,12 +252,14 @@ projectile_type = /obj/projectile/bullet/shotgun materials_base = list(MAT_STEEL = 360) fall_sounds = list('sound/weapons/guns/shotgun_fall.ogg') + worth_intrinsic = 7.5 /obj/item/ammo_casing/a12g/pellet name = "shotgun shell" desc = "A 12 gauge shell." icon_state = "gshell" projectile_type = /obj/projectile/bullet/pellet/shotgun + worth_intrinsic = 7.5 /obj/item/ammo_casing/a12g/blank name = "shotgun shell" @@ -265,6 +267,7 @@ icon_state = "blshell" projectile_type = /obj/projectile/bullet/blank materials_base = list(MAT_STEEL = 90) + worth_intrinsic = 2.5 /obj/item/ammo_casing/a12g/practice name = "shotgun shell" @@ -272,6 +275,7 @@ icon_state = "pshell" projectile_type = /obj/projectile/bullet/practice materials_base = list(MAT_STEEL = 90) + worth_intrinsic = 2.5 /obj/item/ammo_casing/a12g/beanbag name = "beanbag shell" @@ -279,6 +283,7 @@ icon_state = "bshell" projectile_type = /obj/projectile/bullet/shotgun/beanbag materials_base = list(MAT_STEEL = 180) + worth_intrinsic = 3.5 /obj/item/ammo_casing/a12g/improvised name = "improvised shell" @@ -295,6 +300,7 @@ icon_state = "stunshell" projectile_type = /obj/projectile/energy/electrode/stunshot materials_base = list(MAT_STEEL = 360, MAT_GLASS = 720) + worth_intrinsic = 7.5 //Does not stun, only blinds, but has area of effect. /obj/item/ammo_casing/a12g/flare @@ -303,6 +309,7 @@ icon_state = "fshell" projectile_type = /obj/projectile/energy/flash/flare materials_base = list(MAT_STEEL = 90, MAT_GLASS = 90) + worth_intrinsic = 2.5 //Silver 12g /obj/item/ammo_casing/a12g/silver @@ -312,6 +319,7 @@ caliber = "12g" projectile_type = /obj/projectile/bullet/pellet/shotgun/silver materials_base = list(MAT_STEEL = 360, MAT_SILVER = 240) + worth_intrinsic = 20 //Wooden Stake 12g /obj/item/ammo_casing/a12g/stake @@ -321,6 +329,7 @@ caliber = "12g" projectile_type = /obj/projectile/bullet/shotgun/stake materials_base = list(MAT_STEEL = 500) + worth_intrinsic = 45 //Techshell & Derivatives /obj/item/ammo_casing/a12g/techshell @@ -330,6 +339,7 @@ caliber = "12g" projectile_type = null materials_base = list(MAT_STEEL = 500, MAT_PHORON = 200) + worth_intrinsic = 35 /obj/item/ammo_casing/a12g/techshell/meteorslug name = "meteorslug shell" @@ -337,6 +347,7 @@ icon_state = "mshell" projectile_type = /obj/projectile/meteor/slug materials_base = list(MAT_STEEL = 500, MAT_GOLD = 200) + worth_intrinsic = 75 /obj/item/ammo_casing/a12g/techshell/emp name = "ion shell" @@ -345,6 +356,7 @@ projectile_type = /obj/projectile/scatter/ion // projectile_type = /obj/projectile/bullet/shotgun/ion materials_base = list(MAT_STEEL = 360, MAT_URANIUM = 240) + worth_intrinsic = 50 /obj/item/ammo_casing/a12g/techshell/pulseslug name = "pulse slug" @@ -354,12 +366,14 @@ icon_state = "plshell" projectile_type = /obj/projectile/beam/pulse/shotgun materials_base = list(MAT_STEEL = 500, MAT_SILVER = 200) + worth_intrinsic = 75 /obj/item/ammo_casing/a12g/techshell/dragonsbreath name = "dragonsbreath shell" desc = "A shotgun shell which fires a spread of incendiary pellets." icon_state = "ishell" projectile_type = /obj/projectile/bullet/incendiary/shotgun + worth_intrinsic = 75 /obj/item/ammo_casing/a12g/techshell/frag12 name = "FRAG-12 slug" @@ -367,6 +381,7 @@ icon_state = "heshell" projectile_type = /obj/projectile/bullet/shotgun/frag12 materials_base = list(MAT_STEEL = 500, MAT_PHORON = 200) + worth_intrinsic = 100 /obj/item/ammo_casing/a12g/techshell/laserslug name = "scatter laser shell" @@ -374,6 +389,7 @@ icon_state = "lshell" projectile_type = /obj/projectile/scatter/laser materials_base = list(MAT_STEEL = 500, MAT_GLASS = 200) + worth_intrinsic = 75 /* * 7.62mm @@ -385,11 +401,13 @@ icon_state = "rifle-casing" projectile_type = /obj/projectile/bullet/rifle/a762 materials_base = list(MAT_STEEL = 200) + worth_intrinsic = 20 /obj/item/ammo_casing/a762/ap desc = "A 7.62mm armor-piercing bullet casing." projectile_type = /obj/projectile/bullet/rifle/a762/ap materials_base = list(MAT_STEEL = 300) + worth_intrinsic = 30 /obj/item/ammo_casing/a762/practice desc = "A 7.62mm practice bullet casing." @@ -401,6 +419,7 @@ desc = "A blank 7.62mm bullet casing." projectile_type = /obj/projectile/bullet/blank materials_base = list(MAT_STEEL = 90) + worth_intrinsic = 5 /obj/item/ammo_casing/a762/hp desc = "A 7.62mm hollow-point bullet casing." diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 99faceeee183..c67e1b855229 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -31,6 +31,8 @@ /obj/item/gun name = "gun" desc = "Its a gun. It's pretty terrible, though." + description_info = "This is a gun. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire." icon = 'icons/obj/gun/ballistic.dmi' item_icons = list( SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_guns.dmi', diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 3977ec6de2ce..19e9f2b2b73c 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -15,6 +15,8 @@ heavy = TRUE one_handed_penalty = 30 + worth_intrinsic = 350 + firemodes = list( list(mode_name="normal", fire_delay=8, projectile_type=/obj/projectile/beam/midlaser, charge_cost = 240), list(mode_name="suppressive", fire_delay=5, projectile_type=/obj/projectile/beam/weaklaser, charge_cost = 60), @@ -159,15 +161,22 @@ origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2) projectile_type = /obj/projectile/beam/xray charge_cost = 200 + worth_intrinsic = 500 // op as balls /obj/item/gun/energy/sniperrifle name = "marksman energy rifle" desc = "The HI DMR 9E is an older design of Hephaestus Industries. A designated marksman rifle capable of shooting powerful \ ionized beams, this is a weapon to kill from a distance." + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger. \ + To use the scope, use the appropriate verb in the object tab." icon_state = "sniper" item_state = "sniper" item_state_slots = list(SLOT_ID_RIGHT_HAND = "z8carbine", SLOT_ID_LEFT_HAND = "z8carbine") //placeholder origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4) + + worth_intrinsic = 750 + projectile_type = /obj/projectile/beam/sniper slot_flags = SLOT_BACK charge_cost = 600 diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index 84170a816f7c..b0ff6e0a1e65 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -1,10 +1,14 @@ /obj/item/gun/energy/gun name = "energy gun" desc = "Another bestseller of Lawson Arms and "+TSC_HEPH+", the LAEP90 Perun is a versatile energy based sidearm, capable of switching between low and high capacity projectile settings. In other words: Stun or Kill." + description_info = "This is an energy weapon. To fire the weapon, ensure your intent is *not* set to 'help', have your gun mode set to 'fire', \ + then click where you want to fire. Most energy weapons can fire through windows harmlessly. To recharge this weapon, use a weapon recharger." icon_state = "energystun100" item_state = null //so the human update icon uses the icon_state instead. fire_delay = 10 // Handguns should be inferior to two-handed weapons. + worth_intrinsic = 250 + projectile_type = /obj/projectile/beam/stun/med origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2) modifystate = "energystun" @@ -36,6 +40,7 @@ // requires_two_hands = 1 one_handed_penalty = 30 + worth_intrinsic = 450 firemodes = list( list(mode_name="stun", burst=1, projectile_type=/obj/projectile/beam/stun/weak, modifystate="fm-2tstun", charge_cost = 100), diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 11e1dd6ee286..4286b0cd921d 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -11,6 +11,7 @@ heavy = TRUE projectile_type = /obj/projectile/ion one_handed_penalty = 15 + worth_intrinsic = 500 /obj/item/gun/energy/ionrifle/emp_act(severity) ..(max(severity, 4)) //so it doesn't EMP itself, I guess diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 960100b4b6b3..347b32ad1c95 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -6,6 +6,8 @@ fire_delay = 4 + worth_intrinsic = 350 + projectile_type = /obj/projectile/energy/electrode modifystate = "taser" diff --git a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm index 650154c9ea91..b87c0e755a75 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm @@ -132,6 +132,8 @@ loaded = null empty_sound = 'sound/weapons/smg_empty_alarm.ogg' + worth_intrinsic = 500 + firemodes = list( list(mode_name="high power", power_cost = 400, projectile_type = /obj/projectile/bullet/magnetic/heated, burst=1, fire_delay=8, move_delay=null, one_handed_penalty=15), list(mode_name="low power", power_cost = 150, projectile_type = /obj/projectile/bullet/magnetic/heated/weak, burst=1, fire_delay=5, move_delay=null, one_handed_penalty=15), @@ -152,6 +154,8 @@ slot_flags = SLOT_BELT|SLOT_HOLSTER + worth_intrinsic = 350 + firemodes = list( list(mode_name="lethal", power_cost = 2000, projectile_type = /obj/projectile/bullet/magnetic/heated, burst=1, fire_delay=8, move_delay=null, one_handed_penalty=0), list(mode_name="stun", power_cost = 1500, projectile_type = /obj/projectile/energy/electrode/stunshot, burst=1, fire_delay=5, move_delay=null, one_handed_penalty=0), @@ -184,6 +188,8 @@ weight = ITEM_WEIGHT_GUN_NORMAL encumbrance = ITEM_ENCUMBRANCE_GUN_NORMAL + worth_intrinsic = 500 + power_cost = 200 projectile_type = /obj/projectile/bullet/magnetic/flechette/hunting empty_sound = 'sound/weapons/smg_empty_alarm.ogg' diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 0d623eb7b26d..f7e8c4edfb02 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -111,6 +111,7 @@ magazine_type = /obj/item/ammo_magazine/m9mmt/rubber allowed_magazines = list(/obj/item/ammo_magazine/m9mmt) projectile_type = /obj/projectile/bullet/pistol/medium + worth_intrinsic = 450 /obj/item/gun/ballistic/automatic/wt550/update_icon_state() . = ..() @@ -143,6 +144,7 @@ mag_remove_sound = 'sound/weapons/guns/interaction/batrifle_magout.ogg' heavy = TRUE one_handed_penalty = 60 + worth_intrinsic = 650 // milrp time burst_delay = 4 firemodes = list( diff --git a/code/modules/projectiles/guns/projectile/boltaction.dm b/code/modules/projectiles/guns/projectile/boltaction.dm index e19910e122dd..2f11bfa5cb00 100644 --- a/code/modules/projectiles/guns/projectile/boltaction.dm +++ b/code/modules/projectiles/guns/projectile/boltaction.dm @@ -13,6 +13,7 @@ ammo_type = /obj/item/ammo_casing/a762 load_method = SINGLE_CASING|SPEEDLOADER action_sound = 'sound/weapons/riflebolt.ogg' + worth_intrinsic = 300 /obj/item/gun/ballistic/shotgun/pump/rifle/practice // For target practice desc = "A bolt-action rifle with a lightweight synthetic wood stock, designed for competitive shooting. Comes shipped with practice rounds pre-loaded into the gun. Popular among professional marksmen. Uses 7.62mm rounds." diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 0e21977cc57a..32f77895c863 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -67,6 +67,7 @@ icon_state = "shotgun_c" item_state = "cshotgun" origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) + worth_intrinsic = 500 max_shells = 7 //match the ammo box capacity, also it can hold a round in the chamber anyways, for a total of 8. ammo_type = /obj/item/ammo_casing/a12g load_method = SINGLE_CASING|SPEEDLOADER @@ -284,6 +285,7 @@ ammo_type = /obj/item/ammo_casing/a12g/flare projectile_type = /obj/projectile/energy/flash one_handed_penalty = 0 + worth_intrinsic = 150 /obj/item/gun/ballistic/shotgun/flare/paramed name = "Paramedic Flare Gun" diff --git a/code/modules/projectiles/magazines/magazine.dm b/code/modules/projectiles/magazines/magazine.dm index 8a5326dc0093..c03ca5d1ad78 100644 --- a/code/modules/projectiles/magazines/magazine.dm +++ b/code/modules/projectiles/magazines/magazine.dm @@ -61,6 +61,11 @@ for(var/key in adding) .[key] += adding[key] * shell_amount +/obj/item/ammo_magazine/get_containing_worth(flags) + . = ..() + var/obj/item/ammo_casing/ammo_casted = ammo_type + . += (isnull(initial_ammo)? max_ammo : initial_ammo) * initial(ammo_casted.worth_intrinsic) + /obj/item/ammo_magazine/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/ammo_casing)) var/obj/item/ammo_casing/C = W diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index ba9f2aab0fcd..d8aef4eafd08 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -6,6 +6,7 @@ item_state = "pen" w_class = WEIGHT_CLASS_TINY attack_verb = list("poked") + worth_intrinsic = 25 var/fail_message = "INVALID USER." var/selfdestruct = 0 // Explode when user check is failed. var/pin_irremovable = 0 // Cannot be replaced by any pin. diff --git a/code/modules/reagents/distilling/distilling.dm b/code/modules/reagents/distilling/distilling.dm index bfce4bbdc5c5..04436f57fb1f 100644 --- a/code/modules/reagents/distilling/distilling.dm +++ b/code/modules/reagents/distilling/distilling.dm @@ -10,6 +10,8 @@ icon = 'icons/obj/machines/reagent.dmi' icon_state = "distiller" + + worth_intrinsic = 500 var/base_state // The string var used in update icon for overlays, either set manually or initialized. var/power_rating = 3000 @@ -309,3 +311,4 @@ desc = "A gas-operated variant of a chemical distillery. Able to reach much higher, and lower, temperatures through the use of treated gas." use_atmos = TRUE + worth_intrinsic = 1000 diff --git a/code/modules/reagents/machinery/dispenser/cartridge.dm b/code/modules/reagents/machinery/dispenser/cartridge.dm index f60e72fb8463..deedfbffa40a 100644 --- a/code/modules/reagents/machinery/dispenser/cartridge.dm +++ b/code/modules/reagents/machinery/dispenser/cartridge.dm @@ -56,11 +56,23 @@ /obj/item/reagent_containers/cartridge/dispenser/large name = "large dispenser cartridge" volume = 1000 + materials_base = list( + /datum/material/plastic::id = 5 * /datum/material/plastic::sheet_amount, + ) + worth_intrinsic = 100 /obj/item/reagent_containers/cartridge/dispenser/medium name = "medium dispenser cartridge" volume = 500 + materials_base = list( + /datum/material/plastic::id = 3 * /datum/material/plastic::sheet_amount, + ) + worth_intrinsic = 75 /obj/item/reagent_containers/cartridge/dispenser/small name = "small dispenser cartridge" volume = 250 + materials_base = list( + /datum/material/plastic::id = 1 * /datum/material/plastic::sheet_amount, + ) + worth_intrinsic = 50 diff --git a/code/modules/reagents/machinery/dispenser/dispenser.dm b/code/modules/reagents/machinery/dispenser/dispenser.dm index 2bbf1d68c28d..7e001e134515 100644 --- a/code/modules/reagents/machinery/dispenser/dispenser.dm +++ b/code/modules/reagents/machinery/dispenser/dispenser.dm @@ -27,6 +27,8 @@ interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OPEN | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OFFLINE_SILICON + worth_intrinsic = 150 + /// reagent synthesizers in us - set to list of typepaths to init on Initialize(). var/list/obj/item/reagent_synth/synthesizers /// synthesizers are swappable @@ -88,6 +90,15 @@ component_parts -= cell return ..() +/obj/machinery/chemical_dispenser/worth_contents(flags) + . = ..() + if(synthesizers) + . += synthesizers + if(cartridges) + . += cartridges + if(inserted) + . += inserted + /obj/machinery/chemical_dispenser/RefreshParts() var/total_capacitor_rating = 0 var/total_capacitors = 0 diff --git a/code/modules/reagents/machinery/dispenser/supply.dm b/code/modules/reagents/machinery/dispenser/supply.dm deleted file mode 100644 index d79d542e8f7e..000000000000 --- a/code/modules/reagents/machinery/dispenser/supply.dm +++ /dev/null @@ -1,57 +0,0 @@ -/datum/supply_pack/chemical_dispenser - name = "Reagent dispenser (Empty)" - contains = list( - /obj/item/circuitboard/machine/chemical_dispenser - ) - cost = 10 - container_type = /obj/structure/largecrate - container_name = "reagent dispenser crate" - group = "Reagents" - -/datum/supply_pack/beer_dispenser - name = "Booze dispenser" - contains = list( - /obj/machinery/chemical_dispenser/catering/bar_alc/unanchored - ) - cost = 20 - container_type = /obj/structure/largecrate - container_name = "booze dispenser crate" - group = "Reagents" - -/datum/supply_pack/soda_dispenser - name = "Soda dispenser" - contains = list( - /obj/machinery/chemical_dispenser/catering/bar_soft/unanchored - ) - cost = 20 - container_type = /obj/structure/largecrate - container_name = "soda dispenser crate" - group = "Reagents" - -/datum/supply_pack/coffee_dispenser - name = "Coffee dispenser" - contains = list( - /obj/machinery/chemical_dispenser/catering/bar_coffee/unanchored - ) - cost = 20 - container_type = /obj/structure/largecrate - container_name = "coffee dispenser crate" - group = "Reagents" - -/datum/supply_pack/reagent_synth_chemistry - name = "Reagent Synthesis Module - Chemistry" - contains = list( - /obj/item/reagent_synth/chemistry, - ) - cost = 20 - group = "Reagents" - -/datum/supply_pack/dispenser_cartridges - name = "Large Chemical Dispenser Cartridges" - contains = list( - /obj/item/reagent_containers/cartridge/dispenser/large = 10, - ) - cost = 15 - container_type = /obj/structure/closet/crate - container_name = "dispenser cartridge crate" - group = "Reagents" diff --git a/code/modules/reagents/machinery/dispenser/synthesizer.dm b/code/modules/reagents/machinery/dispenser/synthesizer.dm index daa54c516fdb..402cc2857e5e 100644 --- a/code/modules/reagents/machinery/dispenser/synthesizer.dm +++ b/code/modules/reagents/machinery/dispenser/synthesizer.dm @@ -55,6 +55,7 @@ /datum/reagent/sulfur, /datum/reagent/chlorine, ) + worth_intrinsic = 1000 /obj/item/reagent_synth/bar name = "reagent synthesis module (Bar)" @@ -80,6 +81,7 @@ /datum/reagent/ethanol/ale, /datum/reagent/ethanol/mead, ) + worth_intrinsic = 350 /obj/item/reagent_synth/cafe name = "reagent synthesis module (Cafe)" @@ -101,6 +103,7 @@ /datum/reagent/drink/juice/lime, /datum/reagent/drink/juice/berry, ) + worth_intrinsic = 350 /obj/item/reagent_synth/drink name = "reagent synthesis module (Soda)" @@ -126,6 +129,7 @@ /datum/reagent/drink/soda/gingerale, /datum/reagent/drink/soda/lemon_lime, ) + worth_intrinsic = 350 /obj/item/reagent_synth/medicine name = "reagent synthesis module (Medicine)" @@ -159,6 +163,7 @@ /datum/reagent/cryoxadone, /datum/reagent/clonexadone, ) + worth_intrinsic = 4000 /obj/item/reagent_synth/medicine_addon reagents_provided = list( @@ -171,6 +176,7 @@ /datum/reagent/nutriment, /datum/reagent/nutriment/protein ) + worth_intrinsic = 2000 /obj/item/reagent_synth/bioproduct reagents_provided = list( @@ -178,6 +184,7 @@ /datum/reagent/nutriment/protein, /datum/reagent/drink/milk, ) + worth_intrinsic = 500 /obj/item/reagent_synth/botanical reagents_provided = list( @@ -191,3 +198,4 @@ /datum/reagent/toxin/plantbgone, /datum/reagent/calcium, ) + worth_intrinsic = 1000 diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 173247f04f97..34a7123f39fd 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -123,6 +123,7 @@ item_state = "pepperspray" possible_transfer_amounts = null volume = 40 + worth_intrinsic = 85 var/safety = TRUE materials_base = list(MAT_STEEL = 1000) diff --git a/code/modules/shieldgen/sheldwallgen.dm b/code/modules/shieldgen/sheldwallgen.dm index 21caac55c0af..d5cbc172a198 100644 --- a/code/modules/shieldgen/sheldwallgen.dm +++ b/code/modules/shieldgen/sheldwallgen.dm @@ -7,6 +7,7 @@ anchored = 0 density = 1 req_access = list(ACCESS_ENGINEERING_ENGINE) + worth_intrinsic = 450 var/active = 0 var/power = 0 var/state = 0 diff --git a/code/modules/supply/README.md b/code/modules/supply/README.md new file mode 100644 index 000000000000..bb24743897a5 --- /dev/null +++ b/code/modules/supply/README.md @@ -0,0 +1,9 @@ +# Cargo Module + +The game's Supply and Cargo systems with their related things live here. + +While this can somewhat be associated with Cargo, remember that the station is not the only one with a supply controller. + +- supply - the supply buy/sell system, which is literally just an IC way for the game world to spawn/delete things for this abstract thing we call 'money' + +More modules to come. diff --git a/code/modules/supply/supply_pack.dm b/code/modules/supply/supply_pack.dm new file mode 100644 index 000000000000..4bab85362f7e --- /dev/null +++ b/code/modules/supply/supply_pack.dm @@ -0,0 +1,272 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 silicons *// + +/** + * a holder for a pack of objects that can be ordered + * + * todo: rename to supply_pack + */ +/datum/supply_pack + /// name of pack + var/name = "Supply Pack" + /// arbitrary category to group under + var/category = "Miscellaneous" + + /// flags + var/supply_pack_flags = NONE + + /// raw worth of everything in pack + /// + /// * if null, it will be autodetected. + var/worth + /// raw worth of non-deterministic parts of pack + /// + /// * required for non-deterministic packs if you don't want to hard-set worth + var/worth_additional + + //* Container *// + + /// type of the container + var/container_type = /obj/structure/closet/crate/plastic + /// override name of container + var/container_name + /// override desc of container + var/container_desc + + /// set access of container + var/list/container_access + /// set req one access of container + var/list/container_one_access + + //* Contents *// + + /// contains these entity descriptors + /// + /// * don't be fooled; this **is** a lazy list! this means it's null while empty. + /// * a descriptor associated to amount + /// * a list of list("entity" = ..., "amount" = number, "entity_hint" (optional), "container_hint" (optional)), associated to amount + var/list/contains = list() + /// contains some amount of these entity descriptor groups + /// + /// * don't be fooled; this **is** a lazy list! this means it's null while empty. + /// * this should be a list of lists with "entities", "amount" as keys + /// * "entities" should be associated to a list of entities as per [contains]; the entity can be associated to a number for weight + /// * "amount" should be associated to a random amount of them to spawn + /// * amount will be distrbuted randomly as needed, evenly, across the entities. + var/list/contains_some = list() + /// a list of custom 'contains' lines that get printed to the manifest/interface + /// + /// * don't be fooled; this **is** a lazy list! this means it's null while empty. + var/list/contains_custom_text = list() + + // * For Lazy People *// + + /// amount contained + var/lazy_gacha_amount = 1 + /// list of entities + var/list/lazy_gacha_contained + + //* legacy *// + /// if null, it will be auto-converted from worth + var/legacy_cost + var/legacy_contraband = FALSE + /// literally just a flag so the subsystem picks it up + var/legacy = FALSE + +/** + * **Always call this before using it!** + */ +/datum/supply_pack/proc/initialize() + populate() + generate() + compact() + +/** + * use this to manipulate our contents before generation. + */ +/datum/supply_pack/proc/populate() + return + +/datum/supply_pack/proc/generate() + // resolve accesses + for(var/i in 1 to length(container_access)) + var/key = container_access[i] + if(ispath(key, /datum/access)) + var/datum/access/resolved_access = SSjob.access_path_lookup[key] + container_access[i] = resolved_access.access_value + for(var/i in 1 to length(container_one_access)) + var/key = container_one_access[i] + if(ispath(key, /datum/access)) + var/datum/access/resolved_access = SSjob.access_path_lookup[key] + container_one_access[i] = resolved_access.access_value + // auto-detect worth + if(isnull(worth)) + worth = detect_worth() + if(!worth) + stack_trace("pack [src] ([type]) failed to detect worth.") + // autoset container name + if(isnull(container_name)) + container_name = name + // gacha + if(length(lazy_gacha_contained) && lazy_gacha_amount) + contains_some[++contains_some.len] = list( + "entities" = lazy_gacha_contained, + "amount" = lazy_gacha_amount, + ) + lazy_gacha_contained = null + // legacy + if(isnull(legacy_cost)) + legacy_cost = ceil(worth * 0.06) + +/datum/supply_pack/proc/compact() + if(!length(contains)) + contains = null + if(!length(contains_some)) + contains_some = null + if(!length(contains_custom_text)) + contains_custom_text = null + +/datum/supply_pack/proc/detect_worth() + . = 0 + + // if non-deterministic, must need that + if(length(contains_some) || length(contains_custom_text)) + if(isnull(worth_additional)) + . = INFINITY + CRASH("attempted to generate worth on a non-deterministic crate (has contains_some or contains_custom_text); fix this.") + // add worth additional + . += worth_additional + + // container + if(container_type) + . += SSsupply.value_entity_via_descriptor(container_type) + + // deterministic contents + for(var/descriptor as anything in contains) + var/amount = contains[descriptor] || 1 + var/worth + if(islist(descriptor)) + var/list/descriptor_list = descriptor + worth = SSsupply.value_entity_via_descriptor( + descriptor_list["entity"], + descriptor_list["amount"], + descriptor_list["entity_hint"], + descriptor_list["container_hint"], + ) + else + worth = SSsupply.value_entity_via_descriptor(descriptor, amount) + . += worth + +/** + * todo: return list of entities? + * + * @return container spawned, or null (which can also mean we don't use a container for some reason) + */ +/datum/supply_pack/proc/instantiate_pack_at(atom/where) + . = instantiate_container(where) + instantiate_contents(.) + +/datum/supply_pack/proc/instantiate_container(atom/where) + RETURN_TYPE(/atom/movable) + + if(!container_type) + return + + var/atom/movable/container = new container_type(where) + . = container + + container.name = container_name + container.desc = container_desc + + if(isobj(container)) + var/obj/obj_container = container + if(container_access) + // todo: getter / setter for req-accesses, enforced cached & deduped lists + obj_container.req_access = container_access.Copy() + if(container_one_access) + // todo: getter / setter for req-accesses, enforced cached & deduped lists + obj_container.req_one_access = container_one_access.Copy() + +/** + * todo: return list of entities? + */ +/datum/supply_pack/proc/instantiate_contents(atom/where) + var/list/descriptors_to_spawn = resolve_contents_descriptors() + for(var/descriptor in descriptors_to_spawn) + var/amount = descriptors_to_spawn[descriptor] || 1 + SSsupply.instantiate_entity_via_descriptor(descriptor, amount, null, null, where) + +/** + * @return list of descriptor associated to amount + */ +/datum/supply_pack/proc/resolve_contents_descriptors() + . = contains? contains.Copy() : list() + + if(length(contains_some)) + for(var/list/entry as anything in contains_some) + var/list/entities = entry["entities"] + var/amount = entry["amount"] + + // this is basically an inlined pickweight() + + var/total_weight = 0 + for(var/key in entities) + total_weight += entities[key] || 1 + + if(total_weight == length(entities)) + for(var/i in 1 to amount) + .[pick(entities)] += 1 + else + for(var/i in 1 to amount) + var/chosen = rand(1, total_weight) + var/remaining = chosen + for(var/j in 1 to length(entities)) + var/entity = entities[j] + var/weight = entities[entity] + remaining -= weight + if(remaining <= 0) + .[entity] += 1 + +//* LEGACY CRAP *// + +/** + * generates our HTML manifest as a **list** + * + * argument is provided for container incase you want to modify based on what actually spawned + */ +/datum/supply_pack/proc/get_html_manifest(atom/movable/container) + RETURN_TYPE(/list) + var/list/lines = list() + lines += "Contents:
" + lines += "" + return lines + +/datum/supply_pack/proc/nanoui_manifest_list() + . = list() + for(var/descriptor in contains) + var/amount = contains[descriptor] + var/described = SSsupply.describe_entity_via_descriptor(descriptor, amount) + . += described + for(var/list/gacha_list as anything in contains_some) + var/list/entities = gacha_list["entities"] + for(var/entity in entities) + var/described = SSsupply.describe_entity_via_descriptor(entity) + . += described + +/datum/supply_pack/proc/nanoui_is_random() + return !!length(contains_some) diff --git a/code/modules/vehicles_legacy/skateboard.dm b/code/modules/vehicles_legacy/skateboard.dm index a2d16724a2c1..1b500e707aed 100644 --- a/code/modules/vehicles_legacy/skateboard.dm +++ b/code/modules/vehicles_legacy/skateboard.dm @@ -98,7 +98,7 @@ egg?.fracture() H.adjustBrainLoss(rand(5, 10)) visible_message("[src] crashes into [A], sending [H] flying! They land on their head, that doesn't look good...") - else + else //Minor brain injury from hitting your head H.adjustBrainLoss(rand(1, 2)) visible_message("[src] crashes into [A], sending [H] flying!") @@ -116,7 +116,7 @@ egg?.fracture() H.adjustBrainLoss(rand(5, 10)) visible_message("[src] crashes into [A], sending [H] flying! They land on their head, that doesn't look good...") - else + else H.adjustBrainLoss(rand(1, 2)) visible_message("[src] crashes into [A], sending [H] flying!") H.update_health() @@ -223,6 +223,7 @@ board_item_type = /obj/item/melee/skateboard/improv icon_state = "skateboard" board_icon = "skateboard" + worth_intrinsic = 75 /obj/vehicle_old/skateboard/beginner name = "skateboard" @@ -230,6 +231,7 @@ board_item_type = /obj/item/melee/skateboard/beginner icon_state = "skateboard" board_icon = "skateboard" + worth_intrinsic = 125 /obj/vehicle_old/skateboard/pro name = "skateboard" @@ -238,6 +240,7 @@ icon_state = "skateboard2" board_icon = "skateboard2" move_delay = 1 + worth_intrinsic = 200 /* /obj/vehicle_old/skateboard/pro/Bump(atom/A) @@ -284,6 +287,7 @@ icon_state = "hoverboard_red" board_icon = "hoverboard_red" move_delay = 0 + worth_intrinsic = 275 /obj/vehicle_old/skateboard/hoverboard/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/stack/rods)) diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm index 718368872211..8124a1a7954c 100644 --- a/code/modules/virus2/items_devices.dm +++ b/code/modules/virus2/items_devices.dm @@ -41,6 +41,7 @@ name = "virus dish" icon = 'icons/obj/items.dmi' icon_state = "implantcase-b" + worth_intrinsic = 35 var/datum/disease2/disease/virus2 = null var/growth = 0 var/basic_info = null @@ -50,12 +51,20 @@ /obj/item/virusdish/random name = "virus sample" + /// the worth of the contained random virus + var/worth_contained_virus = 250 + /obj/item/virusdish/random/Initialize(mapload) . = ..() virus2 = new /datum/disease2/disease virus2.makerandom() growth = rand(5, 50) +/obj/item/virusdish/random/get_containing_worth(flags) + . = ..() + if(flags & GET_WORTH_DETECTING_PRICE) + . += worth_contained_virus + /obj/item/virusdish/attackby(var/obj/item/W as obj,var/mob/living/carbon/user as mob) if(istype(W,/obj/item/hand_labeler) || istype(W,/obj/item/reagent_containers/syringe)) return diff --git a/code/modules/xenoarcheaology/sampling.dm b/code/modules/xenoarcheaology/sampling.dm index d1a07aa1704c..be7e5bce0a54 100644 --- a/code/modules/xenoarcheaology/sampling.dm +++ b/code/modules/xenoarcheaology/sampling.dm @@ -22,6 +22,7 @@ icon_state = "sampler0" item_state = "screwdriver_brown" w_class = WEIGHT_CLASS_TINY + worth_intrinsic = 50 var/sampled_turf = "" var/num_stored_bags = 10 diff --git a/code/modules/xenoarcheaology/tools/equipment.dm b/code/modules/xenoarcheaology/tools/equipment.dm index 327169c1b7d4..2c25abf64771 100644 --- a/code/modules/xenoarcheaology/tools/equipment.dm +++ b/code/modules/xenoarcheaology/tools/equipment.dm @@ -9,6 +9,7 @@ min_pressure_protection = 0.4 * ONE_ATMOSPHERE encumbrance = ITEM_ENCUMBRANCE_ARMOR_ANOMALY weight = ITEM_WEIGHT_ARMOR_ANOMALY + worth_intrinsic = 75 /obj/item/clothing/head/bio_hood/anomaly name = "Anomaly hood" @@ -20,6 +21,7 @@ min_pressure_protection = 0.4 * ONE_ATMOSPHERE encumbrance = ITEM_ENCUMBRANCE_ARMOR_ANOMALY_HELMET weight = ITEM_WEIGHT_ARMOR_ANOMALY_HELMET + worth_intrinsic = 375 /obj/item/clothing/suit/space/anomaly name = "Excavation suit" @@ -31,6 +33,7 @@ encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_ANOMALY weight = ITEM_WEIGHT_VOIDSUIT_ANOMALY // Pressure protection inherited from space suits + worth_intrinsic = 450 /obj/item/clothing/head/helmet/space/anomaly name = "Excavation hood" @@ -40,3 +43,4 @@ armor_type = /datum/armor/general/biosuit/anomaly encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_ANOMALY_HELMET weight = ITEM_WEIGHT_VOIDSUIT_ANOMALY_HELMET + worth_intrinsic = 100 diff --git a/code/modules/xenoarcheaology/tools/tools.dm b/code/modules/xenoarcheaology/tools/tools.dm index 4a3cd03e2233..d8743d7905a2 100644 --- a/code/modules/xenoarcheaology/tools/tools.dm +++ b/code/modules/xenoarcheaology/tools/tools.dm @@ -337,6 +337,7 @@ materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 5000) w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT + worth_intrinsic = 250 var/mode = 1 //Start off scanning. 1 = scanning, 0 = measuring var/obj/item/ano_scanner/anomaly_scanner = null var/obj/item/depth_scanner/depth_scanner = null diff --git a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm index 24bd6ac819dc..54bebf67dffc 100644 --- a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm +++ b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm @@ -150,6 +150,7 @@ damage_force = 5 w_class = 2 attack_verb = list("drilled") + worth_intrinsic = 250 // this is gonna be very useful/powerful later /obj/item/pickaxe/excavationdrill/attack_self(mob/user) . = ..()