Codeside Cargo Refactor (#20030)

**NOTE TO SYSADMINS: See "SQL Details" section below for information on
SQL modifications.**

Moves the data containing cargo items (i.e. the ones you order from ops
and get in the cargo shuttle) from the online database to the codebase.
Everything from suppliers to categories to individual items is now
code-side and editable by developers/contributors.

Refactors cargo items to use `singletons` instead of `datums` for
`cargo_supplier`, `cargo_category`, and `cargo_item`. Multiple-instnace
things like cargo_orders, etc. still use `datums`.

Fixed a bunch of strange discrepancies in categories, suppliers, and
pricing for various cargo items. I did a little bit, but it's exhausting
to go through all of it right now.

Clicking the 'Details' button on the Cargo Order app now actually gives
you details instead of bluescreening. Also added some UI elements to the
Cargo Order app - Cargo Control and Delivery remain untouched.

Overhauled the Cargo Order console TGUI window. It now has tabs on the
left, displays restricted access, supplier information, and boasts
search functionality.

### SQL Details
<details>
<summary>SQL Details [Click to Expand]</summary>

The following SQL tables should be deleted or deprecated from the server
database, as they are no longer in use:

- `ss13_cargo_items`
- `ss13_cargo_categories`
- `ss13_cargo_suppliers`

The included migration file, `V011__codeside_cargo`, creates a new table
`ss13_cargo_item_orderlog` to the DB. This **replaces**
`ss13_cargo_orderlog_items`. Because of this,
`ss13_cargo_orderlog_items` is deprecated and should either be deleted
or locked & preserved for logging purposes.

</details>

## Screenshots


![image](https://github.com/user-attachments/assets/79129923-1fb6-4cee-ac8d-5505a52270a4)

![image](https://github.com/user-attachments/assets/a323be35-8ce6-4ec4-98f7-ee701d0931a3)

![image](https://github.com/user-attachments/assets/5ddb02c5-152f-4715-b2da-20903fa11c93)

![image](https://github.com/user-attachments/assets/420e45b0-6a9f-4420-beb8-a2c8423a5be4)

![image](https://github.com/user-attachments/assets/114f4755-ee51-41e6-8670-07aacc5326ae)

---------

Signed-off-by: naut <55491249+nauticall@users.noreply.github.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
This commit is contained in:
naut
2025-03-05 02:18:00 +08:00
committed by GitHub
parent 14d7425cee
commit 55f4e12614
32 changed files with 7869 additions and 583 deletions
+14
View File
@@ -0,0 +1,14 @@
--
-- Creates a new cargo order table for use with new codeside cargo (#20030)
--
ALTER TABLE ss13_cargo_orderlog
ADD INDEX (id);
CREATE TABLE IF NOT EXISTS `ss13_cargo_item_orderlog` (
id SERIAL PRIMARY KEY,
cargo_orderlog_id INT(10) UNSIGNED NOT NULL,
item_name VARCHAR(255) NOT NULL,
amount INT NOT NULL,
FOREIGN KEY (cargo_orderlog_id) REFERENCES ss13_cargo_orderlog (id) ON DELETE CASCADE
);
+19
View File
@@ -1784,6 +1784,8 @@
#include "code\modules\battlemonsters\items\furniture\dueling_area.dm"
#include "code\modules\blob\blob.dm"
#include "code\modules\cargo\bounty.dm"
#include "code\modules\cargo\cargo_categories.dm"
#include "code\modules\cargo\cargo_suppliers.dm"
#include "code\modules\cargo\export_scanner.dm"
#include "code\modules\cargo\exports.dm"
#include "code\modules\cargo\randomstock.dm"
@@ -1812,6 +1814,23 @@
#include "code\modules\cargo\exports\sheets.dm"
#include "code\modules\cargo\exports\tools.dm"
#include "code\modules\cargo\exports\weapons.dm"
#include "code\modules\cargo\items\atmos.dm"
#include "code\modules\cargo\items\cargo_items.dm"
#include "code\modules\cargo\items\cartridges.dm"
#include "code\modules\cargo\items\custodial.dm"
#include "code\modules\cargo\items\engineering.dm"
#include "code\modules\cargo\items\hospitality.dm"
#include "code\modules\cargo\items\hydroponics.dm"
#include "code\modules\cargo\items\medical.dm"
#include "code\modules\cargo\items\mining.dm"
#include "code\modules\cargo\items\miscellaneous.dm"
#include "code\modules\cargo\items\operations.dm"
#include "code\modules\cargo\items\recreation.dm"
#include "code\modules\cargo\items\robotics.dm"
#include "code\modules\cargo\items\science.dm"
#include "code\modules\cargo\items\security.dm"
#include "code\modules\cargo\items\supply.dm"
#include "code\modules\cargo\items\weaponry.dm"
#include "code\modules\cargo\random_stock\_defs.dm"
#include "code\modules\cargo\random_stock\large.dm"
#include "code\modules\cargo\random_stock\t1_common.dm"
+173 -286
View File
@@ -1,6 +1,6 @@
//Config stuff
#define SUPPLY_DOCKZ 1 //Z-level of the Dock.
#define SUPPLY_STATIONZ 6 //Z-level of the Station.
#define SUPPLY_DOCKZ 1 //Z-level of the Dock.
#define SUPPLY_STATIONZ 6 //Z-level of the Station.
#define SUPPLY_STATION_AREATYPE /area/supply/station //Type of the supply shuttle area for station
#define SUPPLY_DOCK_AREATYPE /area/supply/dock //Type of the supply shuttle area for dock
@@ -70,14 +70,7 @@ SUBSYSTEM_DEF(cargo)
supply_account = SSeconomy.get_department_account("Operations")
//Load in the cargo items config
if(GLOB.config.cargo_load_items_from == "sql")
log_subsystem_cargo("SScargo: Attempting to Load from SQL")
load_from_sql()
else if(GLOB.config.cargo_load_items_from == "json")
log_subsystem_cargo("SScargo: Attempting to Load from JSON")
load_from_json()
else
log_game("SScargo: invalid load option specified in config")
load_cargo_files()
setupExports()
setupBounties()
@@ -96,247 +89,73 @@ SUBSYSTEM_DEF(cargo)
/datum/controller/subsystem/cargo/proc/reset_cargo()
cargo_shipments = list() //List of the shipments to the station
current_shipment = null //The current cargo shipment
cargo_items = list() //The list of items
cargo_categories = list() //The list of categories
cargo_suppliers = list() //The list of suppliers
all_orders = list() //All orders
last_item_id = 0
//Load the cargo data from SQL
/datum/controller/subsystem/cargo/proc/load_from_sql()
if(!establish_db_connection(GLOB.dbcon))
log_subsystem_cargo("SQL ERROR - Failed to connect. - Falling back to JSON")
return load_from_json()
else
//Reset the currently loaded data
reset_cargo()
//Load categories
/datum/controller/subsystem/cargo/proc/load_cargo_categories()
for(var/singleton/cargo_category/C as anything in (GET_SINGLETON_SUBTYPE_LIST(/singleton/cargo_category)))
log_subsystem_cargo("Loading category '[C.name]'.")
SScargo.cargo_categories[C.name] = C
//Load the categories
var/DBQuery/category_query = GLOB.dbcon.NewQuery("SELECT id, name, display_name, description, icon, price_modifier FROM ss13_cargo_categories WHERE deleted_at IS NULL ORDER BY order_by ASC")
category_query.Execute()
while(category_query.NextRow())
CHECK_TICK
add_category(
category_query.item[2],
category_query.item[3],
category_query.item[4],
category_query.item[5],
text2num(category_query.item[6]))
//Load the suppliers
var/DBQuery/supplier_query = GLOB.dbcon.NewQuery("SELECT id, short_name, name, description, tag_line, shuttle_time, shuttle_price, available, price_modifier FROM ss13_cargo_suppliers WHERE deleted_at is NULL")
supplier_query.Execute()
while(supplier_query.NextRow())
CHECK_TICK
add_supplier(
supplier_query.item[2],
supplier_query.item[3],
supplier_query.item[4],
supplier_query.item[5],
supplier_query.item[6],
supplier_query.item[7],
supplier_query.item[8],
supplier_query.item[9])
//Load the items
var/DBQuery/item_query = GLOB.dbcon.NewQuery("SELECT id, name, supplier, description, categories, price, items, access, container_type, groupable, item_mul FROM ss13_cargo_items WHERE deleted_at IS NULL AND approved_at IS NOT NULL AND supplier IS NOT NULL ORDER BY order_by ASC, name ASC, supplier ASC")
item_query.Execute()
while(item_query.NextRow())
CHECK_TICK
var/item_id = item_query.item[1]
var/error_message = add_item(
item_query.item[1],
item_query.item[2],
item_query.item[3],
item_query.item[4],
item_query.item[5],
item_query.item[6],
item_query.item[7],
item_query.item[8],
item_query.item[9],
item_query.item[10],
item_query.item[11])
if(error_message && istext(error_message))
log_subsystem_cargo("SScargo: Error when loading item [item_id] from sql: [error_message]")
var/DBQuery/item_error_query = GLOB.dbcon.NewQuery("UPDATE ss13_cargo_items SET error_message = :error_message: WHERE id = :id:")
item_error_query.Execute(list("id"=item_id,"error_message"=error_message))
//Load Suppliers
/datum/controller/subsystem/cargo/proc/load_cargo_suppliers()
for(var/singleton/cargo_supplier/S as anything in (GET_SINGLETON_SUBTYPE_LIST(/singleton/cargo_supplier)))
log_subsystem_cargo("Loading supplier '[S.name]', with short name '[S.short_name]'.")
SScargo.cargo_suppliers[S.short_name] = S
/datum/controller/subsystem/cargo/proc/load_cargo_items()
log_subsystem_cargo("Loading cargo items.")
var/id = 1
//Loads the cargo data from JSON
/datum/controller/subsystem/cargo/proc/load_from_json()
var/list/cargoconfig = list()
if(!(rustg_file_exists("config/cargo.json") == "true"))
log_config("The file config/cargo.json was not found, cargo items will not be loaded.")
return
try
cargoconfig = json_decode(return_file_text("config/cargo.json"))
catch(var/exception/ej)
log_subsystem_cargo("Warning: Could not load config, as cargo.json is missing - [ej]")
return
//Reset the currently loaded data
reset_cargo()
//Load the cargo categories
for (var/category in cargoconfig["categories"])
CHECK_TICK
add_category(
cargoconfig["categories"][category]["name"],
cargoconfig["categories"][category]["display_name"],
cargoconfig["categories"][category]["description"],
cargoconfig["categories"][category]["icon"],
cargoconfig["categories"][category]["price_modifier"])
//Load the suppliers
for (var/supplier in cargoconfig["suppliers"])
CHECK_TICK
add_supplier(
supplier,
cargoconfig["suppliers"][supplier]["name"],
cargoconfig["suppliers"][supplier]["description"],
cargoconfig["suppliers"][supplier]["tag_line"],
cargoconfig["suppliers"][supplier]["shuttle_time"],
cargoconfig["suppliers"][supplier]["shuttle_price"],
cargoconfig["suppliers"][supplier]["available"],
cargoconfig["suppliers"][supplier]["price_modifier"])
//Load the cargoitems
for (var/item in cargoconfig["items"])
CHECK_TICK
var/error_message = add_item(
null,
cargoconfig["items"][item]["name"],
cargoconfig["items"][item]["supplier"],
cargoconfig["items"][item]["description"],
cargoconfig["items"][item]["categories"],
cargoconfig["items"][item]["price"],
cargoconfig["items"][item]["items"],
cargoconfig["items"][item]["access"],
cargoconfig["items"][item]["container_type"],
cargoconfig["items"][item]["groupable"],
cargoconfig["items"][item]["item_mul"])
if(error_message && istext(error_message))
log_subsystem_cargo("Error when loading item: [error_message]")
return 1
// Get the list of all valid cargo items
for (var/singleton/cargo_item/I as anything in (GET_SINGLETON_SUBTYPE_LIST(/singleton/cargo_item)))
cargo_items[I.name] = I
I.id = id++
I.get_adjusted_price()
//Add a new Category to the Cargo Subsystem
//Returns the /datum/cargo_category on success or a error message
/datum/controller/subsystem/cargo/proc/add_category(var/name,var/display_name,var/description,var/icon,var/price_modifier)
var/datum/cargo_category/cc = new()
cc.name = name
cc.display_name = display_name
cc.description = description
cc.icon = icon
cc.price_modifier = text2num(price_modifier)
//Add the category to the cargo_categories list
cargo_categories[cc.name] = cc
return cc
//Add a new Supplier to the Cargo Subsystem
//Returns the /datum/cargo_supplier/ on success or a error message
/datum/controller/subsystem/cargo/proc/add_supplier(var/short_name,var/name,var/description,var/tag_line,var/shuttle_time,var/shuttle_price,var/available,var/price_modifier)
var/datum/cargo_supplier/cs = new()
cs.short_name = short_name
cs.name = name
cs.description = description
cs.tag_line = tag_line
cs.shuttle_time = text2num(shuttle_time)
cs.shuttle_price = text2num(shuttle_price)
cs.available = text2num(available)
cs.price_modifier = text2num(price_modifier)
cargo_suppliers[cs.short_name] = cs
return cs
//Add a new item to the cargo subsystem, the categories and the items need to be a list or a JSON String
//Decoding of the string MUST take place before
//Returns the /datum/cargo_item on success or a error message
/datum/controller/subsystem/cargo/proc/add_item(var/id=null,var/name,var/supplier="nt",var/description,var/categories,var/price,var/items,var/access=0,var/container_type=CARGO_CONTAINER_CRATE,var/groupable=1,var/item_mul=1)
//TODO-CARGO: Maybe add the option to specify access as string instead of number
//If no item ID is supplied generate one ourselfs (use the next free id)
//If one is supplied, update the item id if the one supplied is higher
if(!id)
id=get_next_item_id()
else
id = text2num(id)
if(id > last_item_id)
last_item_id = id
var/datum/cargo_item/ci = new()
try
//Check if categories and items are a list and try decode them (from json) if they are not.
if(!islist(categories))
categories = json_decode(categories)
if(!islist(items))
items = json_decode(items)
ci.id = id
ci.name = name
ci.supplier = supplier
ci.description = description
ci.categories = categories
ci.price = text2num(price)
ci.items = items
ci.access = text2num(access)
ci.container_type = container_type
ci.groupable = text2num(groupable)
ci.item_mul = text2num(item_mul)
ci.amount = length(ci.items)*ci.item_mul
catch(var/exception/e)
log_subsystem_cargo("Error when loading item [name] - [id]: [e]")
qdel(ci)
return "Error when loading item [name] - [id]: [e]"
var/path_error = null
for(var/item in ci.items)
var/itempath = text2path(ci.items[item]["path"])
if(!ispath(itempath))
log_subsystem_cargo("Warning - Attempted to add item with invalid path - [ci.id] - [ci.name] - [ci.items[item]["path"]]")
path_error += "Attempted to add item with invalid path - [ci.id] - [ci.name] - [ci.items[item]["path"]].\n"
if(path_error)
return path_error
//Check if a valid container is specified
if(!(ci.container_type in list(CARGO_CONTAINER_CRATE, CARGO_CONTAINER_FREEZER, CARGO_CONTAINER_BOX, CARGO_CONTAINER_BODYBAG)))
log_subsystem_cargo("Invalid container type specified for item [name] - [id]: Aborting")
qdel(ci)
return "Invalid container type specified for item [name] - [id]"
//Verify the suppliers exist
var/datum/cargo_supplier/cs = get_supplier_by_name(ci.supplier)
if(!cs)
log_subsystem_cargo("[supplier] is not a valid supplier for item [name] - [id]")
qdel(ci)
return "[supplier] is not a valid supplier for item [name] - [id]"
//Setting the supplier
ci.supplier_datum = cs
//Add the item to the cargo_items list
cargo_items["[ci.id]"] = ci
//Add the item to the suppliers items list
ci.supplier_datum.items.Add(ci)
//Log a message if no categories are specified
if(ci.categories.len == 0)
log_subsystem_cargo("No categories specified for item [ci.name]")
ci.supplier_datum = null
qdel(ci)
return "No categories specified for item [name] - [id]"
//Add the item to the categories
for(var/category in ci.categories)
var/datum/cargo_category/cc = cargo_categories[category]
if(cc) //Check if the category exists
cc.items.Add(ci)
// Check if the category exists in SScargo.cargo_categories
if (!(I.category || SScargo.cargo_categories[I.category]))
log_subsystem_cargo("Error: Unable to find category '[I.category]' for item '[I.name]. Skipping.")
continue
else
log_subsystem_cargo("Warning - Attempted to add [ci.name] item to category [category] that does not exist.")
var/singleton/cargo_category/item_category = SScargo.cargo_categories[I.category]
if (!item_category.items)
item_category.items = list()
item_category.items += I
log_subsystem_cargo("Inserted item '[I.name]' into category '[I.category]' with ID '[I.id]'.")
return ci
if (!(I.supplier || SScargo.cargo_suppliers[I.supplier]))
log_subsystem_cargo("Error: Unable to find supplier '[I.supplier]' for item '[I.name]. Skipping.")
continue
else
var/singleton/cargo_supplier/item_supplier = SScargo.cargo_suppliers[I.supplier]
if (!item_supplier.items)
item_supplier.items = list()
item_supplier.items += I
I.supplier_data = item_supplier
log_subsystem_cargo("Finished loading cargo items.")
//Load cargo data from cargo_items.dm
/datum/controller/subsystem/cargo/proc/load_cargo_files()
log_subsystem_cargo("Starting to load cargo data from files.")
//Reset the loaded cargo data
reset_cargo()
//Add categories
load_cargo_categories()
//Load suppliers
load_cargo_suppliers()
//Load cargo items
load_cargo_items()
log_subsystem_cargo("Finished loading cargo data from files.")
/*
Getting items, categories, suppliers and shipments
@@ -352,23 +171,87 @@ SUBSYSTEM_DEF(cargo)
/datum/controller/subsystem/cargo/proc/get_next_item_id()
last_item_id++
return last_item_id
//Gets the items from a category
/datum/controller/subsystem/cargo/proc/get_items_for_category(var/category)
var/datum/cargo_category/cc = cargo_categories[category]
if(cc)
return cc.get_item_list()
else
return list()
//Gets the categories
/// Returns a "default" cargo_category for usage in situations where one is needed.
/datum/controller/subsystem/cargo/proc/get_default_category()
var/list/categories = GET_SINGLETON_SUBTYPE_LIST(/singleton/cargo_category)
var/singleton/cargo_category/default_cat = categories[1]
log_subsystem_cargo("Default category set to '[initial(default_cat.name)]'.")
return initial(default_cat.name)
/// Returns a string-formatted list of data for all suppliers and their information for use in TGUI.
/datum/controller/subsystem/cargo/proc/get_supplier_data(var/supplier_short_name)
var/list/supplier_data = list()
var/singleton/cargo_supplier/S = cargo_suppliers[supplier_short_name]
if(!S)
log_subsystem_cargo("Error: Unable to find supplier '[supplier_short_name]'.")
return
supplier_data += list(
"short_name" = S.short_name,
"name" = S.name,
"description" = S.description,
"tag_line" = S.tag_line,
"shuttle_time" = S.shuttle_time,
"shuttle_price" = S.shuttle_price,
"available" = S.available,
"price_modifier" = S.price_modifier,
)
return supplier_data
/// Returns a string-formatted list of every item in each category and their information for use in TGUI.
/datum/controller/subsystem/cargo/proc/get_items_for_category(var/category_name)
var/list/item_list = list()
var/singleton/cargo_category/C = cargo_categories[category_name]
if(!C)
log_subsystem_cargo("Error: get_items_for_category() was unable to find category '[category_name]'.")
return
for(var/singleton/cargo_item/ci as anything in C.items)
item_list += list(list(
"name" = ci.name,
"description" = ci.description,
"price" = ci.price,
"id" = ci.id,
"price_adjusted" = ci.adjusted_price,
"supplier" = ci.supplier,
"supplier_data" = get_supplier_data(ci.supplier),
"access" = ci.access != 0 ? get_access_desc(ci.access) : "none",
))
return item_list
/// Returns a string-formatted list of categories for use in TGUI.
/datum/controller/subsystem/cargo/proc/get_category_list()
var/list/category_list = list()
for (var/cat_name in cargo_categories)
var/datum/cargo_category/cc = cargo_categories[cat_name]
category_list.Add(list(cc.get_list()))
// Get the singleton instance for the current category
var/singleton/cargo_category/cc = cargo_categories[cat_name]
category_list += list(list(
"name" = cc.name,
"display_name" = cc.display_name,
"description" = cc.description,
"icon" = cc.icon,
"price_modifier" = cc.price_modifier,
))
return category_list
//Get a category by name
//Get category names
/datum/controller/subsystem/cargo/proc/get_category_by_name(var/name)
// Check if the category exists in cargo_categories
if (!cargo_categories[name])
log_subsystem_cargo("Error: Requested category '[name]' does not exist.")
return
// Return the category if it exists
return cargo_categories[name]
//Gets a order by order id
@@ -400,6 +283,7 @@ SUBSYSTEM_DEF(cargo)
/*
Submitting, Approving, Rejecting and Shipping Orders
*/
//Gets the orders based on their status (submitted, approved, shipped)
/datum/controller/subsystem/cargo/proc/get_orders_by_status(var/status, var/data_list=0)
if(!status)
@@ -413,6 +297,7 @@ SUBSYSTEM_DEF(cargo)
else
orders.Add(co)
return orders
//Gets the value of orders based on their status, type is passed on to co.get_value
/datum/controller/subsystem/cargo/proc/get_orders_value_by_status(var/status, var/type=0)
if(!status)
@@ -423,6 +308,7 @@ SUBSYSTEM_DEF(cargo)
if(co.status == status)
value += co.get_value(type)
return value
//Gets the suppliers of the orders of a specific type
/datum/controller/subsystem/cargo/proc/get_order_suppliers_by_status(var/status, var/pretty_names=0)
if(!status)
@@ -434,7 +320,7 @@ SUBSYSTEM_DEF(cargo)
//Get the list of supplirs and add it to the suppliers list
for(var/supplier in co.get_supplier_list())
if(pretty_names)
var/datum/cargo_supplier/cs = SScargo.cargo_suppliers[supplier]
var/singleton/cargo_supplier/cs = SScargo.cargo_suppliers[supplier]
suppliers[cs.short_name] = cs.name
else
suppliers[supplier] = supplier
@@ -498,13 +384,14 @@ SUBSYSTEM_DEF(cargo)
log_subsystem_cargo("Warning: Tried to charge supply account but supply acount doesnt exist")
return 0
return SSeconomy.charge_to_account(supply_account.account_number, "[commstation_name()] - Operations", "[charge_text]", "[commstation_name()] - Banking System", -charge_credits)
//Gets the pending shipment costs for the items that are about to be shipped to the station
/datum/controller/subsystem/cargo/proc/get_pending_shipment_cost(var/status="approved")
//Loop through all the orders marked as shipped and get the suppliers into a list of involved suppliers
var/list/suppliers = get_order_suppliers_by_status(status)
var/price = 0
for(var/supplier in suppliers)
var/datum/cargo_supplier/cs = SScargo.cargo_suppliers[supplier]
var/singleton/cargo_supplier/cs = SScargo.cargo_suppliers[supplier]
if(cs)
price += cs.shuttle_price
return price
@@ -514,7 +401,7 @@ SUBSYSTEM_DEF(cargo)
var/list/suppliers = get_order_suppliers_by_status(status)
var/time = 0
for(var/supplier in suppliers)
var/datum/cargo_supplier/cs = SScargo.cargo_suppliers[supplier]
var/singleton/cargo_supplier/cs = SScargo.cargo_suppliers[supplier]
if(cs)
time += cs.shuttle_time
return time
@@ -686,8 +573,8 @@ SUBSYSTEM_DEF(cargo)
//Check if the supplier is still available
for(var/datum/cargo_order_item/coi in co.items)
if(!coi.ci.supplier_datum.available)
log_subsystem_cargo("Order [co.order_id] could not be placed on the shuttle because supplier [coi.ci.supplier_datum.name] for item [coi.ci.name] is unavailable")
if(!coi.ci.supplier_data.available)
log_subsystem_cargo("Order [co.order_id] could not be placed on the shuttle because supplier [coi.ci.supplier_data.name] for item [coi.ci.name] is unavailable")
continue
//Check if there is enough money to ship the order
@@ -700,34 +587,27 @@ SUBSYSTEM_DEF(cargo)
//Spawn the crate
var/containertype = co.get_container_type()
var/obj/A = new containertype(pickedloc)
var/obj/crate = new containertype(pickedloc)
//Label the crate
A.name_unlabel = A.name
A.name = "[A.name] ([co.order_id] - [co.ordered_by])"
A.verbs += /atom/proc/remove_label
crate.name_unlabel = crate.name
crate.name = "[crate.name] ([co.order_id] - [co.ordered_by])"
crate.verbs += /atom/proc/remove_label
//Set the access requirement
if(co.required_access.len > 0)
A.req_access = co.required_access.Copy()
crate.req_access = co.required_access.Copy()
//Loop through the items and spawn them
for(var/datum/cargo_order_item/coi in co.items)
if(!coi)
continue
for(var/j=1;j<=coi.ci.item_mul;j++)
for(var/name in coi.ci.items)
var/path = coi.ci.items[name]["path"]
var/atom/item = new path(A)
//Customize the items
for(var/var_name in coi.ci.items[name]["vars"])
try
item.vars[var_name] = coi.ci.items[name]["vars"][var_name]
catch(var/exception/e)
log_subsystem_cargo("Bad variable name [var_name] for item name: [coi.ci.name] id: [coi.ci.id] - [e]")
for(var/_ in 1 to coi.ci.spawn_amount)
for(var/item_typepath in coi.ci.items)
new item_typepath(crate)
//Spawn the Paper Inside
var/obj/item/paper/P = new(A)
var/obj/item/paper/P = new(crate)
P.set_content_unsafe("[co.order_id] - [co.ordered_by]", co.get_report_delivery_order())
//Shuttle is loaded now - Charge cargo for it
@@ -735,16 +615,13 @@ SUBSYSTEM_DEF(cargo)
return 1
//Dumps the cargo orders to the database when the round ends
/// Dumps the cargo orders to the database when the round ends.
/datum/controller/subsystem/cargo/proc/dump_orders()
if(dumped_orders)
log_subsystem_cargo("Order Data Dump Aborted - Orders already dumped")
return
if(GLOB.config.cargo_load_items_from != "sql")
log_subsystem_cargo("Order Data Dump Aborted - Cargo not loaded from database")
log_subsystem_cargo("SQL: Orders already dumped. Cargo data dump has been aborted.")
return
if(!establish_db_connection(GLOB.dbcon))
log_subsystem_cargo("SQL ERROR - Failed to connect. - Unable to dump order data")
log_subsystem_cargo("SQL: Unable to connect to SQL database. Cargo data dump has been aborted.")
return
dumped_orders = TRUE
@@ -752,18 +629,24 @@ SUBSYSTEM_DEF(cargo)
// Loop through all the orders and dump them all
var/DBQuery/dump_query = GLOB.dbcon.NewQuery("INSERT INTO `ss13_cargo_orderlog` (`game_id`, `order_id`, `status`, `price`, `ordered_by_id`, `ordered_by`, `authorized_by_id`, `authorized_by`, `received_by_id`, `received_by`, `paid_by_id`, `paid_by`, `time_submitted`, `time_approved`, `time_shipped`, `time_delivered`, `time_paid`, `reason`) \
VALUES (:game_id:, :order_id:, :status:, :price:, :ordered_by_id:, :ordered_by:, :authorized_by_id:, :authorized_by:, :received_by_id:, :received_by:, :paid_by_id:, :paid_by:, :time_submitted:, :time_approved:, :time_shipped:, :time_delivered:, :time_paid:, :reason:)")
var/DBQuery/dump_item_query = GLOB.dbcon.NewQuery("INSERT INTO `ss13_cargo_orderlog_items` (`cargo_orderlog_id`, `cargo_item_id`, `amount`) \
VALUES (:cargo_orderlog_id:, :cargo_item_id:, :amount:)")
var/DBQuery/dump_item_query = GLOB.dbcon.NewQuery("INSERT INTO `ss13_cargo_item_orderlog` (`cargo_orderlog_id`, `item_name`, `amount`) \
VALUES (:cargo_orderlog_id:, :item_name:, :amount:)")
var/DBQuery/log_id = GLOB.dbcon.NewQuery("SELECT LAST_INSERT_ID() AS log_id")
for(var/datum/cargo_order/co in all_orders)
//Iterate over the items in the order and build the a list with the item count
var/list/itemcount = list()
var/list/itemnames = list()
for(var/datum/cargo_order_item/coi in co.items)
if(!isnull(itemcount["[coi.ci.id]"]))
itemcount["[coi.ci.id]"] = itemcount["[coi.ci.id]"] + 1
else
itemcount["[coi.ci.id]"] = 1
itemnames["[coi.ci.id]"] = coi.ci.name
if(!dump_query.Execute(list(
"game_id"=GLOB.round_id,
"order_id"=co.order_id,
@@ -784,7 +667,7 @@ SUBSYSTEM_DEF(cargo)
"time_paid"=co.time_paid,
"reason"=co.reason
)))
log_subsystem_cargo("SQL ERROR - Cound not write order to database")
log_subsystem_cargo("SQL: Could not write order to database. Cargo data dump has been aborted.")
continue
//Run the query to get the inserted id
@@ -796,13 +679,17 @@ SUBSYSTEM_DEF(cargo)
if(db_log_id)
for(var/item_id in itemcount)
dump_item_query.Execute(list(
"cargo_orderlog_id"=db_log_id,
"cargo_item_id"=item_id,
"amount"=itemcount[item_id]
))
if(!dump_item_query.Execute(list(
"cargo_orderlog_id" = db_log_id,
"item_name"= itemnames[item_id],
"amount" = itemcount[item_id]
)))
log_subsystem_cargo("SQL: Cound not write details of a cargo order.")
continue
CHECK_TICK
log_subsystem_cargo("SQL: Saved cargo order log to database.")
/hook/roundend/proc/dump_cargoorders()
SScargo.dump_orders()
+8 -120
View File
@@ -1,113 +1,5 @@
/*
A item orderable via cargo
*/
/datum/cargo_item
var/id = 0 //ID of the item
var/name = "Cargo Item" //Name of the item
var/supplier = "rand" //ID of the supplier
var/datum/cargo_supplier/supplier_datum = null //Datum of the supplier
var/description = "You should not see this" //Description of the item
var/list/categories = list() //List of categories this item appears in
var/price = 0 //The price of the item
var/list/items = list()
var/amount = 1 //Total Amount of items in the crate (including multiplier)
var/item_mul = 1 //Multiplier of the items
var/access = null //What access requirement should be added to the container
var/container_type = "crate" //crate or box
var/groupable = 1 //If the item can be thrown into the same container as other items
//NOTE: Cargo orders, categories and suppliers have been moved to singletons (10/11/2024).
//Gets a list of the cargo item - To be json encoded
/datum/cargo_item/proc/get_list()
var/list/data = list()
data["id"] = id
data["name"] = name
data["description"] = description
data["categories"] = categories
data["price"] = price
data["amount"] = amount
data["items"] = items
data["supplier"] = supplier
data["supplier_data"] = supplier_datum.get_list()
//Adjust the price based on the supplier adjustment and the categories
data["price_adjusted"] = get_adjusted_price()
return data
/datum/cargo_item/proc/get_adjusted_price()
. = price
. *= supplier_datum.get_total_price_coefficient()
for(var/category in categories)
var/datum/cargo_category/cc = SScargo.get_category_by_name(category)
if(cc)
. *= cc.price_modifier
/*
A supplier of items
*/
/datum/cargo_supplier
var/short_name = "" //Short name of the cargo supplier
var/name = "" //Long name of the cargo supplier
var/description = "" //Description of the supplier
var/tag_line = "" //Tag line of the supplier
var/shuttle_time = 0 //Time the shuttle takes to get to the supplier
var/shuttle_price = 0 //Price to call the shuttle
var/available = 1 //If the supplier is available
var/price_modifier = 1 //Price modifier for the supplier
var/list/items = list() //List of items of tha supplier
//Gets a list of supplier - to be json encoded
/datum/cargo_supplier/proc/get_list()
var/list/data = list()
data["short_name"] = short_name
data["name"] = name
data["description"] = description
data["tag_line"] = tag_line
data["shuttle_time"] = shuttle_time
data["shuttle_price"] = shuttle_price
data["available"] = available
data["price_modifier"] = price_modifier
return data
/datum/cargo_supplier/proc/get_total_price_coefficient()
var/final_coef = price_modifier
if(SSatlas.current_sector)
if(short_name in SSatlas.current_sector.cargo_price_coef)
final_coef = SSatlas.current_sector.cargo_price_coef[short_name] * price_modifier
return final_coef
/*
A category displayed in the cargo order app
*/
/datum/cargo_category
var/name = "cargo_category" //Name of the category
var/display_name = "Cargo Category"
var/description = "You should not see this" //Description of the Category
var/icon = "gear" //NanoUI Icon for the category
var/price_modifier = 1 //Price Modifier for the category
var/list/items = list() //List of items in the category
// Gets a list of the cargo category - to be json encoded
/datum/cargo_category/proc/get_list()
var/list/data = list()
data["name"] = name
data["display_name"] = display_name
data["description"] = description
data["icon"] = icon
data["price_modifier"] = price_modifier
return data
// Gets a list of the items in the cargo category - to be json encoded
/datum/cargo_category/proc/get_item_list()
var/list/item_list = list()
for(var/datum/cargo_item/ci in items)
item_list.Add(list(ci.get_list()))
return item_list
/*
A order placed in the cargo order app.
Contains multiple order items
*/
/datum/cargo_order
var/list/items = list() //List of cargo_items in the order
var/order_id = 0 //ID of the order
@@ -151,8 +43,8 @@
/datum/cargo_order/proc/get_object_list()
var/list/object_list = list()
for (var/datum/cargo_order_item/coi in items)
for(var/object in coi.ci.items)
object_list.Add(object)
for(var/atom/object in coi.ci.items)
object_list.Add(object.name)
return object_list
// Gets a list of the order data - Formatted as list to be json_encoded
@@ -306,7 +198,7 @@
var/list/supplier_list = get_supplier_list()
var/cost = 0
for(var/supplier in supplier_list)
var/datum/cargo_supplier/cs = SScargo.cargo_suppliers[supplier]
var/singleton/cargo_supplier/cs = SScargo.cargo_suppliers[supplier]
if(cs)
cost += cs.shuttle_price
return cost
@@ -467,26 +359,22 @@
paid_by_id = user_id
return "The order has been paid for"
/*
A cargo order item. Part of a category.
specifies the item, the supplier and the price of the item
*/
/// A cargo order item. Part of a category. Specifies the item, the supplier and the price of the item
/datum/cargo_order_item
var/datum/cargo_item/ci //Item that has been ordered
var/singleton/cargo_item/ci //Item that has been ordered
var/price //Price of the item with the given supplier
var/item_id //Item id in the order
//TODO-CARGO: Maybe add the option to set a fake item for traitors here -> So that cargo cant see what they are really ordering
//Calculate Price
/datum/cargo_order_item/proc/calculate_price()
price = ci.get_adjusted_price()
return price
price = ci.adjusted_price
// Gets a list of the cargo order item - to be json encoded
/datum/cargo_order_item/proc/get_list()
var/list/data = list()
data["name"] = ci.name
data["supplier_name"] = ci.supplier_datum.name
data["supplier_data"] = ci.supplier_data
data["amount"] = ci.amount
data["price"] = price
data["item_id"] = item_id
@@ -82,7 +82,23 @@
guaranteed_exoplanets = list(/obj/effect/overmap/visitable/sector/exoplanet/adhomai)
scheduled_port_visits = list("Thursday", "Sunday")
ports_of_call = list("the city of Nal'tor", "the city of Kaltir", "the city of Crevus")
cargo_price_coef = list("nt" = 1.2, "hpi" = 1.2, "zhu" = 1.2, "een" = 1.2, "get" = 1.2, "arz" = 1.2, "blm" = 1.2, "iac" = 1.2, "zsc" = 0.5, "vfc" = 1.2, "bis" = 1.2, "xmg" = 1.2, "npi" = 1.2)
cargo_price_coef = list(
"nanotrasen" = 1.2,
"orion" = 1.1,
"hephaestus" = 1.2,
"zeng_hu" = 1.2,
"eckharts" = 1.2,
"getmore" = 1.2,
"arizi" = 1.2,
"blam" = 1.2,
"iac" = 1.2,
"zharkov" = 0.5,
"virgo" = 1.2,
"bishop" = 1.2,
"xion" = 1.2,
"zavodskoi" = 1.2,
)
starlight_color = "#50b7bb"
starlight_power = 2
starlight_range = 4
@@ -140,7 +156,22 @@
starlight_color = "#f8711e"
starlight_power = 2
starlight_range = 4
cargo_price_coef = list("nt" = 1.5, "hpi" = 0.5, "zhu" = 1.5, "een" = 1.5, "get" = 1.2, "arz" = 0.5, "blm" = 1.2, "iac" = 1.0, "zsc" = 0.9, "vfc" = 1.2, "bis" = 1.5, "xmg" = 0.6, "npi" = 1.5)
cargo_price_coef = list(
"nanotrasen" = 1.5,
"orion" = 0.8,
"hephaestus" = 0.5,
"zeng_hu" = 1.5,
"eckharts" = 1.5,
"getmore" = 1.2,
"arizi" = 0.5,
"blam" = 1.2,
"iac" = 1.0,
"zharkov" = 0.9,
"virgo" = 1.2,
"bishop" = 1.5,
"xion" = 0.6,
"zavodskoi" = 1.5,
)
sector_welcome_message = 'sound/AI/welcome_hegemony.ogg'
scheduled_port_visits = list("Thursday", "Sunday")
ports_of_call = list("the city of Skalamar")
@@ -16,7 +16,23 @@
description = "The region most devastated by the Interstellar War, the majority of the Weeping Stars has yet to recover from the damage it suffered during the War and much of it remains underdeveloped and sparsely inhabited. During the hegemonic era of the Solarian Alliance, when the Alliance stretched from Sol to the edge of known space, this region was known as the Inner Solarian Frontier and was intended to serve as a highly-developed region for humanity to thrive in. Massive amounts of funds were used to build an infrastructure which was still incomplete when war broke out in 2277, and the shattered ruins of long-lost Solarian hegemonic era structures and projects are present throughout the region."
skybox_icon = "weeping_stars"
possible_exoplanets = list(/obj/effect/overmap/visitable/sector/exoplanet/barren/asteroid, /obj/effect/overmap/visitable/sector/exoplanet/grass/grove, /obj/effect/overmap/visitable/sector/exoplanet/barren, /obj/effect/overmap/visitable/sector/exoplanet/lava, /obj/effect/overmap/visitable/sector/exoplanet/desert, /obj/effect/overmap/visitable/sector/exoplanet/snow)
cargo_price_coef = list("nt" = 1.2, "hpi" = 0.8, "zhu" = 0.8, "een" = 1.2, "get" = 1.2, "arz" = 1.2, "blm" = 1.2, "iac" = 1.2, "zsc" = 0.8, "vfc" = 1.2, "bis" = 0.8, "xmg" = 0.8, "npi" = 0.8)
cargo_price_coef = list(
"nanotrasen" = 1.2,
"orion" = 0.8,
"hephaestus" = 0.8,
"zeng_hu" = 0.8,
"eckharts" = 1.2,
"getmore" = 1.2,
"arizi" = 1.2,
"blam" = 1.2,
"iac" = 1.2,
"zharkov" = 0.8,
"virgo" = 1.2,
"bishop" = 0.8,
"xion" = 0.8,
"zavodskoi" = 0.8,
)
starlight_color = "#615bff"
starlight_power = 2
starlight_range = 4
@@ -46,7 +62,23 @@
description = "The system of Burzsia serves as a resource hub solely for the corporate interests of Hephaestus Industries, with vast mining infrastructure and sprawling supply ports dotted all over the system. Hephaestus ships, enormous freighters and personnel transportation vessels dominate the area, with corporate security being extremely tight. Private vessels are allowed transit and rest if needed, though always under the close surveillance of Hephaestus security and local executives. A population of local off-worlders has also been present before corporate domination, but mostly leave any external relations to the company that has, at this point, taken upon it to represent virtually all interests of the natives."
skybox_icon = "weeping_stars"
possible_exoplanets = list(/obj/effect/overmap/visitable/sector/exoplanet/barren/asteroid/burzsia, /obj/effect/overmap/visitable/sector/exoplanet/burzsia)
cargo_price_coef = list("nt" = 1.2, "hpi" = 0.4, "zhu" = 0.8, "een" = 1.2, "get" = 1.2, "arz" = 1.2, "blm" = 1.2, "iac" = 1.2, "zsc" = 0.8, "vfc" = 1.2, "bis" = 0.8, "xmg" = 0.8, "npi" = 0.8)
cargo_price_coef = list(
"nanotrasen" = 1.2,
"orion" = 1,
"hephaestus" = 0.4,
"zeng_hu" = 0.8,
"eckharts" = 1.2,
"getmore" = 1.2,
"arizi" = 1.2,
"blam" = 1.2,
"iac" = 1.2,
"zharkov" = 1.2,
"virgo" = 1.2,
"bishop" = 0.8,
"xion" = 0.8,
"zavodskoi" = 0.8,
)
starlight_color = "#615bff"
starlight_power = 2
starlight_range = 4
@@ -59,7 +91,19 @@
skybox_icon = "haneunim"
possible_exoplanets = list(/obj/effect/overmap/visitable/sector/exoplanet/barren/qixi, /obj/effect/overmap/visitable/sector/exoplanet/barren/asteroid/ice/haneunim, /obj/effect/overmap/visitable/sector/exoplanet/barren/hwanung, /obj/effect/overmap/visitable/sector/exoplanet/lava/huozhu)
guaranteed_exoplanets = list(/obj/effect/overmap/visitable/sector/exoplanet/konyang)
cargo_price_coef = list("nt" = 1.1, "hpi" = 0.7, "zhu" = 0.4, "een" = 1.0, "get" = 1.1, "arz" = 1.8, "blm" = 0.9, "iac" = 1.2, "zsc" = 1.8, "vfc" = 0.9, "bis" = 0.4, "xmg" = 0.7, "npi" = 0.8)
cargo_price_coef = list(
"nanotrasen" = 1.1,
"orion" = 0.7,
"hephaestus" = 0.7,
"zeng_hu" = 0.6,
"eckharts" = 1,
"blam" = 0.9,
"zharkov" = 1.2,
"virgo" = 0.9,
"bishop" = 0.5,
"xion" = 0.8,
"zavodskoi" = 0.8,
)
ports_of_call = list("the corporate district of Aoyama")
scheduled_port_visits = list("Saturday", "Sunday")
@@ -12,8 +12,23 @@
var/list/possible_exoplanets = list(/obj/effect/overmap/visitable/sector/exoplanet/snow, /obj/effect/overmap/visitable/sector/exoplanet/desert)
///Guaranteed planets to spawn. This ignores the map exoplanet limit, so don't put too many planets in here.
var/list/guaranteed_exoplanets = list()
var/list/cargo_price_coef = list("nt" = 1, "hpi" = 1, "zhu" = 1, "een" = 1, "get" = 1, "arz" = 1, "blm" = 1,
"iac" = 1, "zsc" = 1, "vfc" = 1, "bis" = 1, "xmg" = 1, "npi" = 1) //how much the space sector afffects how expensive is ordering from that cargo supplier
var/list/cargo_price_coef = list( //how much the space sector afffects how expensive is ordering from that cargo supplier
"nanotrasen" = 1,
"orion" = 1,
"hephaestus" = 1,
"zeng_hu" = 1,
"eckharts" = 1,
"getmore" = 1,
"arizi" = 1,
"blam" = 1,
"iac" = 1,
"zharkov" = 1,
"virgo" = 1,
"bishop" = 1,
"xion" = 1,
"zavodskoi" = 1,
)
var/skybox_icon = "ceti"
/// An associated list of lore radio stations formatted like so: list("station name" = "path_to_broadcast.txt")
@@ -3,8 +3,14 @@
description = "Tau Ceti is a system located in close proximity of Sol, and serves as the main base of operation for the megacorporation NanoTrasen. Tau Ceti is governed by the \
Republic of Biesel, a young Republic that became independent of the economically troubled Sol Alliance in 2452 due to heavy pressure by NanoTrasen. There is still resentment in \
the Sol Alliance over the loss of such a wealthy system, while NanoTrasen continues to have a heavy hand in all levels of Tau Ceti."
cargo_price_coef = list("nt" = 0.8, "hpi" = 0.8, "zhu" = 0.8, "een" = 1, "get" = 0.8, "arz" = 1, "blm" = 1,
"iac" = 1, "zsc" = 1, "vfc" = 1, "bis" = 0,8, "xmg" = 0.8, "npi" = 0.8)
cargo_price_coef = list(
"nanotrasen" = 0.8,
"orion" = 1,
"getmore" = 0.7,
"arizi" = 1.2,
"vysoka" = 1.2,
)
guaranteed_exoplanets = list(/obj/effect/overmap/visitable/sector/exoplanet/biesel)
possible_exoplanets = list(/obj/effect/overmap/visitable/sector/exoplanet/lava/caprice, /obj/effect/overmap/visitable/sector/exoplanet/desert/luthien, /obj/effect/overmap/visitable/sector/exoplanet/barren/valkyrie,
/obj/effect/overmap/visitable/sector/exoplanet/snow/new_gibson, /obj/effect/overmap/visitable/sector/exoplanet/barren/asteroid/ice/chandras, /obj/effect/overmap/visitable/sector/exoplanet/barren/asteroid/dumas)
+155
View File
@@ -0,0 +1,155 @@
/singleton/cargo_category
/// The internal name of the category. Items belonging to the category must have their "category" name match this exactly.
var/name = "category"
/// The display name of this category. Displayed as the "category" on user interfaces such as the Cargo Order console.
var/display_name = "Generic Category"
/// The description of the category.
var/description = "A generic category."
/// The FontAwesome icon of this category.
var/icon = "box"
/// Items belonging to this category will have their prices multiplied by this factor. Default 1.
var/price_modifier = 1
/// AUTO-POPULATED: The list of items in this category.
var/list/items = list()
/// The shipment data of this category.
var/list/shipment_data = list(
"shipment_num" = 0,
"shipment_cost_sell" = 0,
"shipment_cost_purchase" = 0,
"shipment_invoice" = "",
"shuttle_fee" = 0,
"shuttle_time" = 0,
"shuttle_called_by" = "",
"shuttle_recalled_by" = "",
"completed" = 0
)
/// Returns a string-formatted list of the cargo category's properties, to be used in TGUI.
/singleton/cargo_category/proc/get_list()
var/list/data = list()
data["name"] = src.name
data["display_name"] = src.display_name
data["description"] = src.description
data["icon"] = src.icon
data["price_modifier"] = src.price_modifier
return data
// Categories are displayed in the console in the order below.
/singleton/cargo_category/supply
name = "supply"
display_name = "Supply"
description = "Supplies, supplies, and supplies for the Supply department."
icon = "box"
price_modifier = 1
/singleton/cargo_category/operations
name = "operations"
display_name = "Operations"
description = "Maintenance and utility items for ship operations."
icon = "clipboard"
price_modifier = 1
/singleton/cargo_category/mining
name = "mining"
display_name = "Mining"
description = "Equipment for miners."
icon = "gem"
price_modifier = 1
/singleton/cargo_category/robotics
name = "robotics"
display_name = "Robotics"
description = "Equipment for robots, and the people that make them."
icon = "robot"
price_modifier = 1
/singleton/cargo_category/engineering
name = "engineering"
display_name = "Engineering"
description = "Tools, machinery, and supplies for the Engineering department."
icon = "wrench"
price_modifier = 1
/singleton/cargo_category/atmos
name = "atmos"
display_name = "Atmospherics"
description = "Canisters and tanks for Atmospherics."
icon = "gauge-high"
price_modifier = 1
/singleton/cargo_category/hospitality
name = "hospitality"
display_name = "Hospitality"
description = "Food, beverage, and supplies for hospitality establishments like the bar or kitchen."
icon = "utensils"
price_modifier = 1
/singleton/cargo_category/custodial
name = "custodial"
display_name = "Custodial"
description = "Cleaning and maintenance supplies for janitors and the neat freaks."
icon = "soap"
price_modifier = 1
/singleton/cargo_category/hydroponics
name = "hydroponics"
display_name = "Hydroponics"
description = "Seeds, fertilizers, and supplies for the hydroponics bay."
icon = "leaf"
price_modifier = 1
/singleton/cargo_category/recreation
name = "recreation"
display_name = "Recreation"
description = "Fun toys and games."
icon = "guitar"
price_modifier = 1
/singleton/cargo_category/medical
name = "medical"
display_name = "Medical"
description = "Medicine, chemicals, and supplies for the Medical department."
icon = "suitcase-medical"
price_modifier = 1
/singleton/cargo_category/cartridges
name = "cartridges"
display_name = "Cartridges"
description = "Chemical cartridges for reagent dispensers."
icon = "prescription-bottle"
price_modifier = 1
/singleton/cargo_category/science
name = "science"
display_name = "Science"
description = "Experimental tools, trinkets, and supplies for the Science department."
icon = "atom"
price_modifier = 1
/singleton/cargo_category/security
name = "security"
display_name = "Security"
description = "Tools, and supplies for the Security department."
icon = "shield"
price_modifier = 1
/singleton/cargo_category/weaponry
name = "weaponry"
display_name = "Weaponry"
description = "Arms and ammunition."
icon = "gun"
price_modifier = 1
/singleton/cargo_category/miscellaneous
name = "miscellaneous"
display_name = "Misc"
description = "Other stuff."
icon = "cube"
+167
View File
@@ -0,0 +1,167 @@
/singleton/cargo_supplier
/// The short name (ID name) of the supplier. Used to denote the "supplier" of individual cargo items. These MUST match exactly.
var/short_name = "generic_supplier"
/// The display name of the supplier, shown in cargo orders as the "Shipped By" entity.
var/name = "Generic Supplies Ltd."
/// The description of the supplier. Shows up when mousing over a supplier entry in the Cargo Order console.
var/description = "You're not supposed to see this. File a bug report."
/// The catchphrase of the supplier.
var/tag_line = "You're not supposed to see this."
/// Time, in ticks, it takes for a shuttle carrying orders from this supplier to arrive.
var/shuttle_time = 100
/// The additional price an order incurs for ordering a shuttle from this supplier.
var/shuttle_price = 100
/// Whether or not this supplier is available or not.
var/available = TRUE
/// The price multiplier for all items this supplier sells.
var/price_modifier = 1
var/list/items = list()
/// Returns a string-formatted list of the cargo supplier's properties, to be used in TGUI.
/singleton/cargo_supplier/proc/get_list()
var/list/data = list()
data["short_name"] = short_name
data["name"] = name
data["description"] = description
data["tag_line"] = tag_line
data["shuttle_time"] = shuttle_time
data["shuttle_price"] = shuttle_price
data["available"] = available
data["price_modifier"] = price_modifier
return data
/// Multiplies the price modifier by any sector-dependent price modifier this supplier has and returns it. Used for sectors in which a certain supplier might be more expensive or cheaper due to regional influences, tariffs, etc.
/singleton/cargo_supplier/proc/get_total_price_coefficient()
var/final_coef = price_modifier
if(SSatlas.current_sector)
if(short_name in SSatlas.current_sector.cargo_price_coef)
final_coef = SSatlas.current_sector.cargo_price_coef[short_name] * price_modifier
log_subsystem_cargo("get_total_price_coefficient() called on suppliers '[name]' is multiplying original value [price_modifier] to [final_coef].")
return final_coef
/singleton/cargo_supplier/generic_supplier
/singleton/cargo_supplier/arizi
short_name = "arizi"
name = "Arizi Guild"
description = "An Unathi guild of craftsmen dedicated to making artisan products such as fine liquor."
tag_line = "Arizi: The best of Moghes."
/singleton/cargo_supplier/bishop
short_name = "bishop"
name = "Bishop Cybernetics"
description = "A robotics company that specializes in manufacturing high-end IPC chassis, mechanical organs, and prosthetics. A subsidiary of Zeng-Hu."
tag_line = "Without compromise."
/singleton/cargo_supplier/blam
short_name = "blam"
name = "BLAM! Products"
description = "A janitorial supplies company best known for their highly-effective and mostly-non-toxic 'space cleaner' formula, in wide usage throughout the Spur."
tag_line = "Just say BLAM! And it's gone!"
/singleton/cargo_supplier/eckharts
short_name = "eckharts"
name = "Eckhart's Energy Solutions Limited"
description = "A small Solarian energy company mostly concerned with the research and development of antimatter and antimatter power."
tag_line = "The future is in the atom."
/singleton/cargo_supplier/einstein
short_name = "einstein"
name = "Einstein Engines"
description = "A Solarian megacorporation that specializes in faster-than-light warp travel and robotics."
tag_line = "Lead by our history, leading our future."
/singleton/cargo_supplier/getmore
short_name = "getmore"
name = "Getmore Products"
description = "A food and beverage company that provides many snacks and drinks. A subsidiary of Nanotrasen."
tag_line = "Get more with Getmore!"
/singleton/cargo_supplier/heph
short_name = "hephaestus"
name = "Hephaestus Industries"
description = "An industrial giant, Hephaestus Industries specializes in all things from mining, to robotics, to manufacturing everything under the stars."
tag_line = "The anvil on which the world is shaped."
/singleton/cargo_supplier/iac
short_name = "iac"
name = "Interstellar Aid Corps"
description = "A nonprofit humanitarian organization dedicated to providing aid to the needy, especially in the less-affluent areas of the galaxy."
tag_line = "Making the Spur a better place."
/singleton/cargo_supplier/idris
short_name = "idris"
name = "Idris Incorporated"
description = "A financial and service giant that operates the largest banking and finances network in the galaxy."
tag_line = "Astronomical figures. Unlimited power."
/singleton/cargo_supplier/molinaris
short_name = "molinaris"
name = "Molinari's Animal Shipping Company"
description = "A logistics courier specializing in delivering live animals across the galaxy. It's become well-known for being the only large carrier to deliver animals alive, well-fed, and not violently killed by blunt force trauma."
tag_line = "We care about the little guys."
/singleton/cargo_supplier/nanotrasen
short_name = "nanotrasen"
name = "NanoTrasen Corporation"
description = "NanoTrasen is a technology, energy and scientific behemoth. While they built their fortunes off of phoron and biotechnics, they also manufacture and sell plenty of consumer goods under their many subsidiaries."
tag_line = "The leader in all things phoron!"
/singleton/cargo_supplier/orion
short_name = "orion"
name = "Orion Express"
description = "A massive logistics and shipping company that operates as the logistics division of the Stellar Corporate Conglomerate's constitutent companies."
tag_line = "Faster than light."
/singleton/cargo_supplier/virgo
short_name = "virgo"
name = "Virgo Freight Carriers"
description = "A Xanan shipping company that operates across the Spur. It's carved a niche in making small-volume, high-priority deliveries from smaller manufacturers and suppliers."
tag_line = "Virgo: There when you need us, and not a moment too late."
/singleton/cargo_supplier/vysoka
short_name = "vysoka"
name = "Vysoka Farming Supplies Association"
description = "A collective of farming vendors from Vysoka that provide high-quality agricultural products to farmers, gardeners and hydroponicists across the galaxy."
tag_line = "All organic. All Vysokan."
/singleton/cargo_supplier/xion
short_name = "xion"
name = "Xion Manufacturing Group"
description = "A Hephaestus-owned robotics company primarily focused on building synthetics and prosthetics intended for durable, hard-labor tasks that focus on function above all else - looks be damned."
tag_line = "Advancing the fields of robotics, one step at a time."
/singleton/cargo_supplier/zavodskoi
short_name = "zavodskoi"
name = "Zavodskoi Interstellar"
description = "A massive weapons and aerospace manufacturing and development conglomerate that distributes everything from light to heavy arms, space vessel weapons, ship-building, aircraft, ground vehicles, combat spacesuits, and military software."
tag_line = "Even one matters on the battlefield."
/singleton/cargo_supplier/zeng_hu
short_name = "zeng_hu"
name = "Zeng-Hu Pharmaceuticals"
description = "A trans-stellar medical, research, and pharmaceutical conglomerate who has a hand in almost every form of medicine and science throughout the Orion Spur."
tag_line = "Building a brighter future."
/singleton/cargo_supplier/zharkov
short_name = "zharkov"
name = "Zharkov Shipping Company"
description = "One of the largest logistics companies native to Adhomai, Zharkov specializes in interstellar exports bringing Adhomian goods to alien worlds."
tag_line = "All around Adhomai in a day or less."
/singleton/cargo_supplier/zora
short_name = "zora"
name = "Zo'ra Hive Logistics"
description = "The logistics branch of the Zo'ra hive, one of the main Vaurca hive societies."
tag_line = "The Unstoppable."
+265
View File
@@ -0,0 +1,265 @@
/singleton/cargo_item/oxygentank
category = "atmos"
name = "oxygen tank"
supplier = "hephaestus"
description = "A man-portable tank containing oxygen, the precious gas of life. Unless you're Vaurca, in which case it's pure poison."
price = 85
items = list(
/obj/item/tank/oxygen
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/phorontank
category = "atmos"
name = "phoron tank"
supplier = "nanotrasen"
description = "A man-portable tank containing phoron, pure poison. Unless you're Vaurca, in which case it's the precious gas of life."
price = 750
items = list(
/obj/item/tank/phoron
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hydrogentank
category = "atmos"
name = "hydrogen tank"
supplier = "hephaestus"
description = "A man-portable tank containing hydrogen. Do not inhale. Warning: extremely flammable."
price = 150
items = list(
/obj/item/tank/hydrogen
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/portable_air_pump
category = "atmos"
name = "portable air pump"
supplier = "hephaestus"
description = "Used to fill or drain rooms without differentiating between gasses. NOTE: Does not come pre-filled. Air sold separately."
price = 750
items = list(
/obj/machinery/portable_atmospherics/powered/pump
)
access = ACCESS_ENGINE
container_type = "box"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/portable_air_scrubber
category = "atmos"
name = "portable air scrubber"
supplier = "hephaestus"
description = "Scrubs contaminants from the local atmosphere or the connected portable tank."
price = 850
items = list(
/obj/machinery/portable_atmospherics/powered/scrubber
)
access = ACCESS_ENGINE
container_type = "box"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/canister_air
category = "atmos"
name = "Canister (Air)"
supplier = "hephaestus"
description = "Holds nitrogen-oxygen breatheable air. Has a built-in valve to allow for filling portable tanks."
price = 1100
items = list(
/obj/machinery/portable_atmospherics/canister/air
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/canister_bo
category = "atmos"
name = "Canister (Boron)"
supplier = "hephaestus"
description = "Holds boron gas. Has a built-in valve to allow for filling portable tanks."
price = 1500
items = list(
/obj/machinery/portable_atmospherics/canister/boron
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/canister_co2
category = "atmos"
name = "Canister (CO2)"
supplier = "hephaestus"
description = "Holds heavy CO2 gas. Has a built-in valve to allow for filling portable tanks."
price = 800
items = list(
/obj/machinery/portable_atmospherics/canister/carbon_dioxide
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/canister_h2
category = "atmos"
name = "Canister (Hydrogen)"
supplier = "hephaestus"
description = "Holds flammable hydrogen. Has a built-in valve to allow for filling portable tanks."
price = 800
items = list(
/obj/machinery/portable_atmospherics/canister/hydrogen
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/canister_he
category = "atmos"
name = "Canister (Helium)"
supplier = "hephaestus"
description = "Holds voice-changing helium. Has a built-in valve to allow for filling portable tanks."
price = 800
items = list(
/obj/machinery/portable_atmospherics/canister/helium
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/canister_n2
category = "atmos"
name = "Canister (Nitrogen)"
supplier = "hephaestus"
description = "Holds inert nitrogen. Has a built-in valve to allow for filling portable tanks."
price = 1000
items = list(
/obj/machinery/portable_atmospherics/canister/nitrogen
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/canister_n2o
category = "atmos"
name = "Canister (Nitrous Oxide)"
supplier = "hephaestus"
description = "Holds sleepy nitrous oxide. Has a built-in valve to allow for filling portable tanks."
price = 1500
items = list(
/obj/machinery/portable_atmospherics/canister/sleeping_agent
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/canister_o2
category = "atmos"
name = "Canister (Oxygen)"
supplier = "hephaestus"
description = "Holds precious oxygen. Has a built-in valve to allow for filling portable tanks."
price = 1500
items = list(
/obj/machinery/portable_atmospherics/canister/oxygen
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/canister_phoron
category = "atmos"
name = "Canister (Phoron)"
supplier = "nanotrasen"
description = "Holds valuable phoron gas. Has a built-in valve to allow for filling portable tanks."
price = 5000
items = list(
/obj/machinery/portable_atmospherics/canister/phoron
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/pipedispenser
category = "atmos"
name = "pipe dispenser"
supplier = "hephaestus"
description = "It dispenses pipes, no idea how though."
price = 500
items = list(
/obj/machinery/pipedispenser/orderable
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/pipepainter
category = "atmos"
name = "pipe painter"
supplier = "hephaestus"
description = "Its said that green pipes are safe to travel through."
price = 135
items = list(
/obj/item/device/pipe_painter
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/rpd
category = "atmos"
name = "Rapid Fabrication Device P-Class"
supplier = "hephaestus"
description = "A heavily modified RFD, modified to construct pipes and piping accessories."
price = 255
items = list(
/obj/item/rfd/piping
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/atmosvoidsuit
category = "atmos"
name = "atmospherics voidsuit"
supplier = "hephaestus"
description = "A special suit that protects against hazardous, low pressure environments. Has unmatched thermal protection and minor radiation."
price = 1200
items = list(
/obj/item/clothing/suit/space/void/atmos
)
access = ACCESS_ATMOSPHERICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/atmosphericsvoidsuithelmet
category = "atmos"
name = "atmospherics voidsuit helmet"
supplier = "hephaestus"
description = "A special helmet designed for work in a hazardous, low pressure environments. Has unmatched thermal and minor radiation protect."
price = 850
items = list(
/obj/item/clothing/head/helmet/space/void/atmos
)
access = ACCESS_ATMOSPHERICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+54
View File
@@ -0,0 +1,54 @@
/// Master singleton for cargo items. Contains data relating to what a cargo item spawns, price, desc, supplier, access, etc.
/singleton/cargo_item
/// The category this item belongs to. This MUST match the cargo_category "name" this item belongs to.
var/category = "miscellaneous"
/// The name of the item.
var/name = "generic cargo item"
/// The category this item belongs to. This MUST match the cargo_supplier "short_name" this item belongs to.
var/supplier = "generic_supplier"
/// The description of this item.
var/description = "A basic cargo item."
/// The amount of 'things' this "item" has. Defaults to 1. Change this for cargo items that have multiple objects packaged in them.
var/amount = 1
/// The base price of the item, in credits.
var/price = 1
/// The list of objects this item has. Duplicate items are handled by the "spawn_amount" variable.
var/list/items = list()
/// The req_access level required to order/open the crate.
var/access = 0
/// What kind of container this object spawns in. Valid options: "crate", "freezer", "box" (wooden box, or shipping container if restricted), and "bodybag".
var/container_type = "crate"
/// Whether or not this item can be shipped with other objects in the same crate. Switch to FALSE for large items that realistically cannot fit multiple in a container.
var/groupable = TRUE
/// How many of the given items to spawn. A value of 2 spawns double the items, 5 spawns 5x, etc. Applied to EVERYTHING in the "items" list.
var/spawn_amount = 1
/// The numerical ID of this item. Assigned automatically during initialization. DO NOT MANUALLY MODIFY.
var/id = 0
/// The adjusted price of this item. Automatically calculated during initialization. DO NOT MANUALLY MODIFY.
var/adjusted_price = 1
/// The "supplier data" of this item, containing all the data of this item's "supplier". Automatically calculated during initialization. DO NOT MANUALLY MODIFY.
var/singleton/cargo_supplier/supplier_data = /singleton/cargo_supplier/generic_supplier
/// Sets the item's adjusted_price according to different price modifiers. Returns nothing.
/singleton/cargo_item/proc/get_adjusted_price()
var/return_price = price
for(var/category_name in SScargo.cargo_categories)
var/singleton/cargo_category/cc = SScargo.get_category_by_name(category_name)
if(cc)
return_price *= cc.price_modifier
adjusted_price = return_price
+759
View File
@@ -0,0 +1,759 @@
/singleton/cargo_item/chemicalcartridge
category = "cartridges"
name = "empty chemical cartridge"
supplier = "zeng_hu"
description = "A metal canister containing absolutely nothing. Fill to your heart's desire."
price = 10
items = list(
/obj/item/reagent_containers/chem_disp_cartridge
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_ale
category = "cartridges"
name = "drink cartridge - ale"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/ale
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_beer
category = "cartridges"
name = "chemical cartridge - beer"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/beer
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_champagne
category = "cartridges"
name = "drink cartridge - champagne"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/champagne
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_coffee
category = "cartridges"
name = "drink cartridge - coffee"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/coffee
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_cognac
category = "cartridges"
name = "drink cartridge - cognac"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/cognac
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_cola
category = "cartridges"
name = "drink cartridge - cola"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/cola
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_cream
category = "cartridges"
name = "drink cartridge - cream"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/cream
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_drgibb
category = "cartridges"
name = "drink cartridge - dr gibb"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/dr_gibb
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_gin
category = "cartridges"
name = "drink cartridge - gin"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/gin
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_ice
category = "cartridges"
name = "drink cartridge - ice"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/ice
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_icetea
category = "cartridges"
name = "drink cartridge - iced tea"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/icetea
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_kahlua
category = "cartridges"
name = "drink cartridge - kahlua"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/kahlua
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_lemonlime
category = "cartridges"
name = "drink cartridge - lemon lime"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/lemon_lime
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_lime
category = "cartridges"
name = "drink cartridge - lime juice"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/lime
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_mead
category = "cartridges"
name = "drink cartridge - mead"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/mead
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_orange
category = "cartridges"
name = "drink cartridge - orange juice"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/orange
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_rum
category = "cartridges"
name = "drink cartridge - rum"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/rum
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_smw
category = "cartridges"
name = "drink cartridge - Stellar Jolt"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/smw
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_sodawater
category = "cartridges"
name = "drink cartridge - soda water"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/sodawater
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_spaceup
category = "cartridges"
name = "drink cartridge - Vacuum Fizz"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/spaceup
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_tea
category = "cartridges"
name = "drink cartridge - tea"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/tea
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_tequila
category = "cartridges"
name = "drink cartridge - tequila"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/tequila
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_tonic
category = "cartridges"
name = "drink cartridge - tonic"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/tonic
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_vermouth
category = "cartridges"
name = "drink cartridge - vermouth"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/vermouth
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_vodka
category = "cartridges"
name = "drink cartridge - vodka"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/vodka
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_watermelon
category = "cartridges"
name = "drink cartridge - watermelon"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/watermelon
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_whiskey
category = "cartridges"
name = "drink cartridge - whiskey"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/whiskey
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_wine
category = "cartridges"
name = "drink cartridge - wine"
supplier = "getmore"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 80
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/wine
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
// Chemicals
/singleton/cargo_item/chemicalcartridge_acetone
category = "cartridges"
name = "chemical cartridge - acetone"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/acetone
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_aluminum
category = "cartridges"
name = "chemical cartridge - aluminum"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/aluminum
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_ammonia
category = "cartridges"
name = "chemical cartridge - ammonia"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/ammonia
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_carbon
category = "cartridges"
name = "chemical cartridge - carbon"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/carbon
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_copper
category = "cartridges"
name = "chemical cartridge - copper"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/copper
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_ethanol
category = "cartridges"
name = "chemical cartridge - ethanol"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/ethanol
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_hydrazine
category = "cartridges"
name = "chemical cartridge - hydrazine"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/hydrazine
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_hydrochloricacid
category = "cartridges"
name = "chemical cartridge - hydrochloric acid"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/hclacid
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_iron
category = "cartridges"
name = "chemical cartridge - iron"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/iron
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_lithium
category = "cartridges"
name = "chemical cartridge - lithium"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/lithium
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_mercury
category = "cartridges"
name = "chemical cartridge - mercury"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/mercury
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_phosphorus
category = "cartridges"
name = "chemical cartridge - phosphorus"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/phosphorus
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_potassium
category = "cartridges"
name = "chemical cartridge - potassium"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/potassium
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_radium
category = "cartridges"
name = "chemical cartridge - radium"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/radium
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_silicon
category = "cartridges"
name = "chemical cartridge - silicon"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/silicon
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_sodium
category = "cartridges"
name = "chemical cartridge - sodium"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/sodium
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_sugar
category = "cartridges"
name = "chemical cartridge - sugar"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/sugar
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_sulfur
category = "cartridges"
name = "chemical cartridge - sulfur"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/sulfur
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_sulfuricacid
category = "cartridges"
name = "chemical cartridge - sulfuric acid"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/sacid
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_tungsten
category = "cartridges"
name = "chemical cartridge - tungsten"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/tungsten
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_water
category = "cartridges"
name = "chemical cartridge - water"
supplier = "zeng_hu"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 150
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/water
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
// Medicines
/singleton/cargo_item/chemicalcartridge_dylovene
category = "cartridges"
name = "chemical cartridge - dylovene"
supplier = "iac"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 350
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/dylovene
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_inaprovaline
category = "cartridges"
name = "chemical cartridge - inaprovaline"
supplier = "iac"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 350
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/inaprov
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_thetamycin
category = "cartridges"
name = "chemical cartridge - thetamycin"
supplier = "iac"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 350
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/thetamycin
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chemicalcartridge_perconol
category = "cartridges"
name = "chemical cartridge - perconol"
supplier = "iac"
description = "A metal canister containing 500 units of a substance. Mostly for use in liquid dispensers, though you can also pour it straight out of the can."
price = 350
items = list(
/obj/item/reagent_containers/chem_disp_cartridge/perconol
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+153
View File
@@ -0,0 +1,153 @@
/singleton/cargo_item/spacecleaner
category = "custodial"
name = "space cleaner"
supplier = "blam"
description = "BLAM!-brand non-foaming space cleaner! Perfect for those pesky stains."
price = 50
items = list(
/obj/item/reagent_containers/spray/cleaner
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/basic_soap
category = "custodial"
name = "basic soap"
supplier = "blam"
description = "A basic bar of soap. It cleans, and does absolutely nothing else."
price = 8
items = list(
/obj/item/soap
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/premium_soap
category = "custodial"
name = "random premium soaps (x3)"
supplier = "blam"
description = "A selection of premium random soaps, as part of a variety pack."
price = 70
items = list(
/obj/random/soap
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 3
/singleton/cargo_item/trashbag
category = "custodial"
name = "trash bag (x3)"
supplier = "blam"
description = "Heavy duty polymer trash bags."
price = 20
items = list(
/obj/item/storage/bag/trash
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 3
/singleton/cargo_item/lightreplacer
category = "custodial"
name = "light replacer"
supplier = "blam"
description = "A device to automatically replace lights. Refill with working lightbulbs or sheets of glass."
price = 135
items = list(
/obj/item/device/lightreplacer
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/replacementlights_box
category = "custodial"
name = "box of replacement lights"
supplier = "blam"
description = "This box is shaped on the inside so that only light tubes and bulbs fit."
price = 100
items = list(
/obj/item/storage/box/lights/mixed
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/wetfloorsign
category = "custodial"
name = "wet floor sign (x5)"
supplier = "blam"
description = "A resupply pack of wet floor signs."
price = 20
items = list(
/obj/item/clothing/suit/caution
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/mop
category = "custodial"
name = "mop"
supplier = "blam"
description = "A cleaning utensil consisting of a fabric head attached to a stick."
price = 40
items = list(
/obj/item/mop
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/mopbucket
category = "custodial"
name = "mop bucket"
supplier = "blam"
description = "Fits onto a standard janitorial cart. Fill it with water, but don't forget a mop!"
price = 40
items = list(
/obj/structure/mopbucket
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/cleanergrenade
category = "custodial"
name = "cleaner grenade"
supplier = "blam"
description = "Space cleaner packaged into a wide area dispersal system for rapid and efficient cleaning of surfaces. Slippery."
price = 225
items = list(
/obj/item/grenade/chem_grenade/cleaner
)
access = ACCESS_JANITOR
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/janitorial_cart
category = "custodial"
name = "custodial cart"
supplier = "blam"
description = "The ultimate in custodial carts. Has space for water, mops, signs, trash bags, and more."
price = 850
items = list(
/obj/structure/janitorialcart
)
access = ACCESS_JANITOR
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+869
View File
@@ -0,0 +1,869 @@
/singleton/cargo_item/glasssheets
category = "engineering"
name = "glass sheets"
supplier = "hephaestus"
description = "50 sheets of glass."
price = 275
items = list(
/obj/item/stack/material/glass/full
)
access = 0
container_type = "crate"
groupable = TRUE
/singleton/cargo_item/plasteelsheets
category = "engineering"
name = "plasteel sheets"
supplier = "hephaestus"
description = "50 sheets of plasteel."
price = 700
items = list(
/obj/item/stack/material/plasteel/full
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/plasticsheets
category = "engineering"
name = "plastic sheets"
supplier = "hephaestus"
description = "50 sheets of plastic."
price = 250
items = list(
/obj/item/stack/material/plastic/full
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/steelsheets
category = "engineering"
name = "steel sheets"
supplier = "hephaestus"
description = "50 sheets of steel."
price = 400
items = list(
/obj/item/stack/material/steel/full
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/woodplanks
category = "engineering"
name = "wood planks"
supplier = "hephaestus"
description = "50 planks of wood."
price = 350
items = list(
/obj/item/stack/material/wood/full
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/phoronsheets
category = "engineering"
name = "phoron crystals"
supplier = "hephaestus"
description = "A bunch of 50 phoron crystals. Highly valuable."
price = 2200
items = list(
/obj/item/stack/material/phoron/full
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
/singleton/cargo_item/cardboardsheets
category = "engineering"
name = "cardboard sheets"
supplier = "orion"
description = "50 sheets of cardboard."
price = 50
items = list(
/obj/item/stack/material/cardboard/full
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/carpet
category = "engineering"
name = "carpet (x10)"
supplier = "hephaestus"
description = "Ten carpet sheets. It is the same size as a normal floor tile!"
price = 350
items = list(
/obj/item/stack/tile/carpet
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 10
/singleton/cargo_item/antifuelgrenade
category = "engineering"
name = "antifuel grenade"
supplier = "hephaestus"
description = "This grenade is loaded with a foaming antifuel compound -- the twenty-fifth century standard for eliminating industrial spills."
price = 250
items = list(
/obj/item/grenade/chem_grenade/antifuel
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/brownwebbingvest
category = "engineering"
name = "brown webbing vest"
supplier = "hephaestus"
description = "Worn brownish synthcotton vest with lots of pockets to unload your hands."
price = 83
items = list(
/obj/item/clothing/accessory/storage/brown_vest
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/circuitboard_bubbleshield
category = "engineering"
name = "circuit board (bubble shield generator)"
supplier = "hephaestus"
description = "Looks like a circuit. Probably is."
price = 1500
items = list(
/obj/item/circuitboard/shield_gen
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/circuitboard_hullshield
category = "engineering"
name = "circuit board (hull shield generator)"
supplier = "hephaestus"
description = "Looks like a circuit. Probably is."
price = 1500
items = list(
/obj/item/circuitboard/shield_gen_ex
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/circuitboard_shieldcapacitor
category = "engineering"
name = "circuit board (shield capacitor)"
supplier = "hephaestus"
description = "Looks like a circuit. Probably is."
price = 1500
items = list(
/obj/item/circuitboard/shield_cap
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/circuitboard_solarcontrol
category = "engineering"
name = "circuit board (solar control console)"
supplier = "hephaestus"
description = "Looks like a circuit. Probably is."
price = 1500
items = list(
/obj/item/circuitboard/solar_control
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/coolanttank
category = "engineering"
name = "coolant tank"
supplier = "hephaestus"
description = "A tank of industrial coolant."
price = 45
items = list(
/obj/structure/reagent_dispensers/coolanttank
)
access = ACCESS_ENGINE
container_type = "box"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/disposalpipedispenser
category = "engineering"
name = "Disposal Pipe Dispenser"
supplier = "hephaestus"
description = "It dispenses bigger pipes for things to travel through. No, the pipes aren't green."
price = 150
items = list(
/obj/machinery/pipedispenser/disposal/orderable
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/toolbox
category = "engineering"
name = "mechanical toolbox"
supplier = "hephaestus"
description = "Danger. Very robust."
price = 200
items = list(
/obj/item/storage/toolbox/mechanical
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/electricaltoolbox
category = "engineering"
name = "electrical toolbox"
supplier = "hephaestus"
description = "Danger. Very robust."
price = 200
items = list(
/obj/item/storage/toolbox/electrical
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/emergencytoolbox
category = "engineering"
name = "emergency toolbox"
supplier = "hephaestus"
description = "Danger. Very robust."
price = 120
items = list(
/obj/item/storage/toolbox/emergency
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/emaccelerationchamber
category = "engineering"
name = "EM Acceleration Chamber"
supplier = "hephaestus"
description = "Part of a Particle Accelerator."
price = 3000
items = list(
/obj/structure/particle_accelerator/fuel_chamber
)
access = ACCESS_CE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/emcontainmentgridcenter
category = "engineering"
name = "EM Containment Grid Center"
supplier = "hephaestus"
description = "Part of a Particle Accelerator."
price = 3000
items = list(
/obj/structure/particle_accelerator/particle_emitter/center
)
access = ACCESS_CE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/emcontainmentgridleft
category = "engineering"
name = "EM Containment Grid Left"
supplier = "hephaestus"
description = "Part of a Particle Accelerator."
price = 3000
items = list(
/obj/structure/particle_accelerator/particle_emitter/left
)
access = ACCESS_CE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/emcontainmentgridright
category = "engineering"
name = "EM Containment Grid Right"
supplier = "hephaestus"
description = "Part of a Particle Accelerator."
price = 3000
items = list(
/obj/structure/particle_accelerator/particle_emitter/right
)
access = ACCESS_CE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/emergencybluespacerelaycircuit
category = "engineering"
name = "emergency bluespace relay circuit"
supplier = "hephaestus"
description = "Looks like a circuit. Probably is."
price = 3000
items = list(
/obj/item/circuitboard/bluespacerelay
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/emitter
category = "engineering"
name = "emitter"
supplier = "hephaestus"
description = "It is a heavy duty industrial laser."
price = 1500
items = list(
/obj/machinery/power/emitter
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/doorlock_engineering
category = "engineering"
name = "engineering magnetic door lock - engineering"
supplier = "hephaestus"
description = "A large, ID locked device used for completely locking down airlocks. It is painted with Engineering colors."
price = 135
items = list(
/obj/item/device/magnetic_lock/engineering
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/engineeringvoidsuit
category = "engineering"
name = "engineering voidsuit"
supplier = "hephaestus"
description = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
price = 1200
items = list(
/obj/item/clothing/suit/space/void/engineering
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/engineeringvoidsuithelmet
category = "engineering"
name = "engineering voidsuit helmet"
supplier = "hephaestus"
description = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
price = 850
items = list(
/obj/item/clothing/head/helmet/space/void/engineering
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/fieldgenerator
category = "engineering"
name = "Field Generator"
supplier = "hephaestus"
description = "A large thermal battery that projects a high amount of energy when powered."
price = 1500
items = list(
/obj/machinery/field_generator
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/fireaxe
category = "engineering"
name = "fireaxe"
supplier = "hephaestus"
description = "The fire axe is a wooden handled axe with a heavy steel head intended for firefighting use."
price = 1500
items = list(
/obj/item/material/twohanded/fireaxe
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/fueltank
category = "engineering"
name = "fuel tank"
supplier = "hephaestus"
description = "A tank filled with welding fuel."
price = 45
items = list(
/obj/structure/reagent_dispensers/fueltank
)
access = ACCESS_ENGINE
container_type = "box"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/gasmask
category = "engineering"
name = "gas mask"
supplier = "hephaestus"
description = "A face-covering mask that can be connected to an air supply. Filters harmful gases from the air."
price = 75
items = list(
/obj/item/clothing/mask/gas
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
spawn_amount = 1
/singleton/cargo_item/hardhat
category = "engineering"
name = "hard hat"
supplier = "hephaestus"
description = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight."
price = 35
items = list(
/obj/item/clothing/head/hardhat
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hazardvest
category = "engineering"
name = "hazard vest"
supplier = "hephaestus"
description = "A high-visibility vest used in work zones."
price = 90
items = list(
/obj/item/clothing/suit/storage/hazardvest
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/toolbelt
category = "engineering"
name = "full toolbelt"
supplier = "hephaestus"
description = "A toolbelt, filled with basic mechanics' tools."
price = 500
items = list(
/obj/item/storage/belt/utility/full
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/highcapacitypowercell
category = "engineering"
name = "high-capacity power cell"
supplier = "hephaestus"
description = "A high-capacity rechargable electrochemical power cell."
price = 240
items = list(
/obj/item/cell/high
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/powercell
category = "engineering"
name = "power cell"
supplier = "hephaestus"
description = "A rechargable electrochemical power cell."
price = 90
items = list(
/obj/item/cell
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hoistkit
category = "engineering"
name = "hoist kit"
supplier = "hephaestus"
description = "A setup kit for a hoist that can be used to lift things. The hoist will deploy in the direction you're facing."
price = 225
items = list(
/obj/item/hoist_kit
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/inflatablebarrierbox
category = "engineering"
name = "inflatable barrier box"
supplier = "hephaestus"
description = "Contains inflatable walls and doors."
price = 360
items = list(
/obj/item/storage/bag/inflatable
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/insulatedgloves
category = "engineering"
name = "insulated gloves"
supplier = "hephaestus"
description = "These gloves will protect the wearer from electric shock."
price = 450
items = list(
/obj/item/clothing/gloves/yellow
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/tajaranelectricalgloves
category = "engineering"
name = "tajaran electrical gloves"
supplier = "hephaestus"
description = "These gloves will protect the wearer from electric shock. Made special for Tajaran use."
price = 450
items = list(
/obj/item/clothing/gloves/yellow/specialt
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/unathielectricalgloves
category = "engineering"
name = "unathi electrical gloves"
supplier = "hephaestus"
description = "These gloves will protect the wearer from electric shock. Made special for Unathi use."
price = 450
items = list(
/obj/item/clothing/gloves/yellow/specialu
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/packagedantimatterreactorsection
category = "engineering"
name = "packaged antimatter reactor section"
supplier = "eckharts"
description = "A section of antimatter reactor shielding. Do not eat."
price = 1000
items = list(
/obj/item/device/am_shielding_container
)
access = ACCESS_CE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/debugger
category = "engineering"
name = "Debugger"
supplier = "hephaestus"
description = "Used to debug electronic equipment."
price = 50
items = list(
/obj/item/device/debugger
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 2
/singleton/cargo_item/paintgun
category = "engineering"
name = "paint gun"
supplier = "hephaestus"
description = "Useful for designating areas and pissing off coworkers."
price = 135
items = list(
/obj/item/device/paint_sprayer
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/particleacceleratorcontrolcomputer
category = "engineering"
name = "Particle Accelerator Control Computer"
supplier = "hephaestus"
description = "This controls the density of the particles."
price = 1500
items = list(
/obj/machinery/particle_accelerator/control_box
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/particlefocusingemlens
category = "engineering"
name = "Particle Focusing EM Lens"
supplier = "hephaestus"
description = "Part of a Particle Accelerator."
price = 3000
items = list(
/obj/structure/particle_accelerator/power_box
)
access = ACCESS_CE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/portableladder
category = "engineering"
name = "portable ladder"
supplier = "hephaestus"
description = "A lightweight deployable ladder, which you can use to move up or down. Or alternatively, you can bash some faces in."
price = 200
items = list(
/obj/item/ladder_mobile
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/radiationhood
category = "engineering"
name = "radiation Hood"
supplier = "hephaestus"
description = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation."
price = 375
items = list(
/obj/item/clothing/head/radiation
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/radiationsuit
category = "engineering"
name = "radiation suit"
supplier = "hephaestus"
description = "A suit that protects against radiation. Label: Made with lead, do not eat insulation."
price = 675
items = list(
/obj/item/clothing/suit/radiation
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/researchshuttleconsoleboard
category = "engineering"
name = "research shuttle console board"
supplier = "hephaestus"
description = "A replacement board for the research shuttle console, in case the original console is destroyed."
price = 500
items = list(
/obj/item/circuitboard/research_shuttle
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/singularitygenerator
category = "engineering"
name = "singularity generator"
supplier = "hephaestus"
description = "Used to generate a Singularity. It is not adviced to use this on the asteroid."
price = 20000
items = list(
/obj/machinery/the_singularitygen
)
access = ACCESS_HEADS
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/superconductivemagneticcoil
category = "engineering"
name = "superconductive magnetic coil"
supplier = "hephaestus"
description = "Standard superconductive magnetic coil with average capacity and I/O rating."
price = 1800
items = list(
/obj/item/smes_coil
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/supermattercore
category = "engineering"
name = "supermatter crystal"
supplier = "hephaestus"
description = "An unstable, radioactive crystal that forms the power source of several experimental ships and stations. Extremely dangerous."
price = 30000
items = list(
/obj/machinery/power/supermatter
)
access = ACCESS_CAPTAIN
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/thermoelectricgenerator
category = "engineering"
name = "thermoelectric generator kit"
supplier = "hephaestus"
description = "A kit that comes with a thermoelectric generator and two circulators that attach to it. For usage in high-power energy generation."
price = 7500
items = list(
/obj/machinery/power/generator,
/obj/machinery/atmospherics/binary/circulator,
/obj/machinery/atmospherics/binary/circulator
)
access = ACCESS_ENGINE
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/solarpanelassembly
category = "engineering"
name = "solar panel assembly"
supplier = "hephaestus"
description = "A solar panel assembly kit, allows constructions of a solar panel, or with a tracking circuit board, a solar tracker."
price = 1020
items = list(
/obj/item/solar_assembly
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/trackerelectronics
category = "engineering"
name = "tracker electronics"
supplier = "hephaestus"
description = "Electronic guidance systems for a solar array."
price = 225
items = list(
/obj/item/tracker_electronics
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/watertank
category = "engineering"
name = "watertank"
supplier = "hephaestus"
description = "A tank filled with water."
price = 45
items = list(
/obj/structure/reagent_dispensers/watertank
)
access = ACCESS_ENGINE
container_type = "box"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/weldinghelmet
category = "engineering"
name = "welding helmet"
supplier = "hephaestus"
description = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
price = 225
items = list(
/obj/item/clothing/head/welding
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/antimattercontainmentjar
category = "engineering"
name = "antimatter containment jar"
supplier = "eckharts"
description = "Holds antimatter. Warranty void if exposed to matter."
price = 1000
items = list(
/obj/item/am_containment
)
access = ACCESS_CE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/antimattercontrolunit
category = "engineering"
name = "antimatter control unit"
supplier = "eckharts"
description = "The control unit for an antimatter reactor. Probably safe."
price = 5500
items = list(
/obj/machinery/power/am_control_unit
)
access = ACCESS_CE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/alphaparticlegenerationarray
category = "engineering"
name = "Alpha Particle Generation Array"
supplier = "hephaestus"
description = "Part of a Particle Accelerator."
price = 3000
items = list(
/obj/structure/particle_accelerator/end_cap
)
access = ACCESS_CE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+773
View File
@@ -0,0 +1,773 @@
/singleton/cargo_item/meat
category = "hospitality"
name = "meat (x5)"
supplier = "getmore"
description = "Slabs of real meat, from real animals. Freshly frozen and extremely not-vegan."
price = 160
items = list(
/obj/item/reagent_containers/food/snacks/meat
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/chicken
category = "hospitality"
name = "chicken breast (x5)"
supplier = "getmore"
description = "Boneless chicken breast fillets, for chicken-y recipes."
price = 160
items = list(
/obj/item/reagent_containers/food/snacks/meat/chicken
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/synthmeat
category = "hospitality"
name = "synthetic meat (x5)"
supplier = "getmore"
description = "Slabs of synthetic meat, grown in a factory. More or less identical to the real thing, but without the animal sacrifice."
price = 140
items = list(
/obj/item/reagent_containers/food/snacks/meat/syntiflesh
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/adhomianmeat
category = "hospitality"
name = "adhomian meat (x5)"
supplier = "zharkov"
description = "A handful of meat slices from Adhomian animals. Freshly frozen."
price = 200
items = list(
/obj/item/reagent_containers/food/snacks/meat/adhomai
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/fishfillet
category = "hospitality"
name = "fish fillet (x5)"
supplier = "getmore"
description = "Raw fish fillets, sourced from an aquaponics farm. Freshly frozen."
price = 150
items = list(
/obj/item/reagent_containers/food/snacks/fish/fishfillet
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/moghresianmeat
category = "hospitality"
name = "moghresian meat (x5)"
supplier = "arizi"
description = "Slabs of meat from animals native to Moghes. Freshly frozen."
price = 200
items = list(
/obj/item/reagent_containers/food/snacks/meat/moghes
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/squidmeat
category = "hospitality"
name = "squid meat (x5)"
supplier = "getmore"
description = "Squid meat, meat from squid. Makes for some tasty calamari."
price = 150
items = list(
/obj/item/reagent_containers/food/snacks/squidmeat
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/wormfillet
category = "hospitality"
name = "worm fillet (x5)"
supplier = "nanotrasen"
description = "Exotic meat from a Cavern Dweller. Mildly toxic if prepared improperly."
price = 350
items = list(
/obj/item/reagent_containers/food/snacks/dwellermeat
)
access = ACCESS_KITCHEN
container_type = "freezer"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/roesack
category = "hospitality"
name = "roe sack (x5)"
supplier = "getmore"
description = "A fleshy organ filled with fish eggs."
price = 160
items = list(
/obj/item/reagent_containers/food/snacks/fish/roe
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/crablegs_box
category = "hospitality"
name = "box of Silversun crab legs"
supplier = "idris"
description = "A box filled with high-quality crab legs from Silversun. Shipped by popular demand!"
price = 200
items = list(
/obj/item/storage/box/crabmeat
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/rasvalclams_box
category = "hospitality"
name = "box of Ras'val clams"
supplier = "zharkov"
description = "A box filled with clams from the Ras'val sea, imported from Adhomai."
price = 200
items = list(
/obj/item/storage/box/clams
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/producebox
category = "hospitality"
name = "produce box"
supplier = "nanotrasen"
description = "A large box of random, leftover produce."
price = 50
items = list(
/obj/item/storage/box/produce
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/spacespices
category = "hospitality"
name = "space spices"
supplier = "getmore"
description = "An exotic blend of spices for cooking. It must flow."
price = 60
items = list(
/obj/item/reagent_containers/food/condiment/shaker/spacespice
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/peppermill
category = "hospitality"
name = "pepper mill"
supplier = "getmore"
description = "Often used to flavor food or make people sneeze."
price = 20
items = list(
/obj/item/reagent_containers/food/condiment/shaker/peppermill
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/saltshaker
category = "hospitality"
name = "salt shaker"
supplier = "getmore"
description = "Salt. From space oceans, presumably."
price = 10
items = list(
/obj/item/reagent_containers/food/condiment/shaker/salt
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/barbecuesauce
category = "hospitality"
name = "barbecue sauce"
supplier = "getmore"
description = "A bottle of tangy barbecue sauce."
price = 50
items = list(
/obj/item/reagent_containers/food/condiment/barbecue
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hotsauce
category = "hospitality"
name = "hot sauce"
supplier = "getmore"
description = "A bottle of spicy hot sauce."
price = 50
items = list(
/obj/item/reagent_containers/food/condiment/hot_sauce
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/garlicsauce
category = "hospitality"
name = "garlic sauce"
supplier = "getmore"
description = "A bottle of pungent garlic sauce."
price = 50
items = list(
/obj/item/reagent_containers/food/condiment/garlicsauce
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/honey
category = "hospitality"
name = "honey"
supplier = "vysoka"
description = "A premium bottle of bee honey."
price = 200
items = list(
/obj/item/reagent_containers/food/condiment/honey
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/soy_sauce
category = "hospitality"
name = "soy sauce"
supplier = "getmore"
description = "Savory, savory soy sauce."
price = 50
items = list(
/obj/item/reagent_containers/food/condiment/soysauce
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ketchup
category = "hospitality"
name = "ketchup"
supplier = "getmore"
description = "Tomato ketchup. The condiment that needs no introduction."
price = 50
items = list(
/obj/item/reagent_containers/food/condiment/ketchup
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/mayonnaise
category = "hospitality"
name = "mayonnaise"
supplier = "getmore"
description = "A bottle of creamy mayonnaise."
price = 50
items = list(
/obj/item/reagent_containers/food/condiment/mayonnaise
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/NTella_jar
category = "hospitality"
name = "NTella jar"
supplier = "getmore"
description = "A jar of popular NTella-brand hazelnut chocolate spread."
price = 40
items = list(
/obj/item/reagent_containers/food/condiment/ntella
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/peanutbutterjar
category = "hospitality"
name = "peanut butter jar"
supplier = "getmore"
description = "Simultaneously smooth and chunky."
price = 40
items = list(
/obj/item/reagent_containers/food/condiment/peanut_butter
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/cherryjellyjar
category = "hospitality"
name = "cherry jelly jar"
supplier = "getmore"
description = "A cherry jelly jar."
price = 40
items = list(
/obj/item/reagent_containers/food/condiment/cherry_jelly
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/grapejellyjar
category = "hospitality"
name = "grape jelly jar"
supplier = "getmore"
description = "A grape jelly jar."
price = 40
items = list(
/obj/item/reagent_containers/food/condiment/grape_jelly
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/triglyceridebottle
category = "hospitality"
name = "triglyceride bottle"
supplier = "virgo"
description = "A small bottle. Contains triglyceride."
price = 50
items = list(
/obj/item/reagent_containers/glass/bottle/triglyceride
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/drinkingglasses_box
category = "hospitality"
name = "box of drinking glasses"
supplier = "virgo"
description = "A box of drinking glasses, for drinking purposes."
price = 21
items = list(
/obj/item/storage/box/drinkingglasses
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/eggcarton
category = "hospitality"
name = "egg carton"
supplier = "vysoka"
description = "Eggs from mostly chicken."
price = 40
items = list(
/obj/item/storage/box/fancy/egg_box
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/floursack
category = "hospitality"
name = "flour sack"
supplier = "getmore"
description = "A big bag of flour. Good for baking!"
price = 50
items = list(
/obj/item/reagent_containers/food/condiment/flour
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/sugarsack
category = "hospitality"
name = "sugar sack"
supplier = "getmore"
description = "A big bag of sugar. Highly addictive."
price = 40
items = list(
/obj/item/reagent_containers/food/condiment/sugar
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ricesack
category = "hospitality"
name = "rice sack"
supplier = "vysoka"
description = "A big bag of rice. For all your rice needs."
price = 50
items = list(
/obj/item/reagent_containers/food/condiment/rice
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/universalenzyme
category = "hospitality"
name = "universal enzyme"
supplier = "getmore"
description = "Used in cooking various dishes."
price = 30
items = list(
/obj/item/reagent_containers/food/condiment/enzyme
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/milk
category = "hospitality"
name = "milk carton"
supplier = "getmore"
description = "It's milk. White and nutritious goodness!"
price = 10
items = list(
/obj/item/reagent_containers/food/drinks/carton/milk
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/soymilk
category = "hospitality"
name = "soymilk carton"
supplier = "getmore"
description = "It's soy milk. White and nutritious vegan goodness!"
price = 15
items = list(
/obj/item/reagent_containers/food/drinks/carton/soymilk
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chipmultipackcrate
category = "hospitality"
name = "chip multipack crate"
supplier = "getmore"
description = "A Getmore supply crate of multipack chip bags."
price = 400
items = list(
/obj/item/storage/box/fancy/chips,
/obj/item/storage/box/fancy/chips/cucumber,
/obj/item/storage/box/fancy/chips/chicken,
/obj/item/storage/box/fancy/chips/dirtberry,
/obj/item/storage/box/fancy/chips/phoron,
/obj/item/storage/box/fancy/chips/variety
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/dryrag
category = "hospitality"
name = "dry rags (x5)"
supplier = "blam"
description = "For cleaning up messes, you suppose."
price = 20
items = list(
/obj/item/reagent_containers/glass/rag,
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/flask
category = "hospitality"
name = "flask"
supplier = "virgo"
description = "For those who can't be bothered to hang out at the bar to drink."
price = 55
items = list(
/obj/item/reagent_containers/food/drinks/flask/barflask
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/goldschlager
category = "hospitality"
name = "Goldschlager"
supplier = "zharkov"
description = "A gold laced drink imported from noble houses within S'rand'marr."
price = 460
items = list(
/obj/item/reagent_containers/food/drinks/bottle/goldschlager
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/burszi_ale
category = "hospitality"
name = "Burszi-ale"
supplier = "getmore"
description = "A half-dozen crate of Burszi-ale bottles, for cracking open a cold one."
price = 220
items = list(
/obj/item/reagent_containers/food/drinks/bottle/small/ale
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 6
/singleton/cargo_item/beer
category = "hospitality"
name = "Virklunder beer (x6)"
supplier = "getmore"
description = "A half-dozen crate of Virklunder beers, for cracking open a cold one."
price = 220
items = list(
/obj/item/reagent_containers/food/drinks/bottle/small/beer
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 6
/singleton/cargo_item/champagne
category = "hospitality"
name = "Silverport champagne"
supplier = "idris"
description = "A rather fancy bottle of champagne, fit for collecting and storing in a cellar for decades."
price = 450
items = list(
/obj/item/reagent_containers/food/drinks/bottle/champagne
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/wrappartistepatron
category = "hospitality"
name = "Wrapp Artiste patron"
supplier = "idris"
description = "Silver laced tequila, served in space night clubs across the galaxy."
price = 510
items = list(
/obj/item/reagent_containers/food/drinks/bottle/patron
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/sarezhiwine
category = "hospitality"
name = "Sarezhi Wine"
supplier = "arizi"
description = "A premium Moghean wine made from Sareszhi berries. Bottled by the Arizi Guild for over 200 years."
price = 400
items = list(
/obj/item/reagent_containers/food/drinks/bottle/sarezhiwine
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/shaker
category = "hospitality"
name = "shaker"
supplier = "virgo"
description = "A metal shaker to mix drinks in."
price = 85
items = list(
/obj/item/reagent_containers/food/drinks/shaker
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pizzabox_margherita
category = "hospitality"
name = "pizza box, margherita"
supplier = "orion"
description = "Classic Orion Express Pizza, delivered across the galaxy piping hot and ready to eat."
price = 50
items = list(
/obj/item/pizzabox/margherita
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pizzabox_meat
category = "hospitality"
name = "pizza box, meat"
supplier = "orion"
description = "Meaty Orion Express Pizza, delivered across the galaxy piping hot and ready to eat."
price = 50
items = list(
/obj/item/pizzabox/meat
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pizzabox_mushroom
category = "hospitality"
name = "pizza box, mushroom"
supplier = "orion"
description = "Earthy Orion Express Pizza, delivered across the galaxy piping hot and ready to eat."
price = 50
items = list(
/obj/item/pizzabox/mushroom
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pizzabox_pineapple
category = "hospitality"
name = "pizza box, pineapple"
supplier = "orion"
description = "Tropical Orion Express Pizza, delivered across the galaxy piping hot and ready to eat."
price = 50
items = list(
/obj/item/pizzabox/pineapple
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pizzabox_vegetable
category = "hospitality"
name = "pizza box, vegetable"
supplier = "orion"
description = "Vegetarian Orion Express Pizza, delivered across the galaxy piping hot and ready to eat."
price = 50
items = list(
/obj/item/pizzabox/vegetable
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pizzabox_random
category = "hospitality"
name = "pizza box, random"
supplier = "orion"
description = "An order of Orion Express ready-to-eat pizza with special instructions, 'Surprise Me'."
price = 40
items = list(
/obj/random/pizzabox
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/redlipstick
category = "hospitality"
name = "red lipstick"
supplier = "nanotrasen"
description = "A generic brand of lipstick."
price = 8
items = list(
/obj/item/lipstick/random
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/xuizijuicekeg
category = "hospitality"
name = "xuizi juice keg"
supplier = "virgo"
description = "A keg full of Xuizi juice, blended flower buds from the Moghean Xuizi cactus. The export stamp of the Arizi Guild is imprinted on the side."
price = 200
items = list(
/obj/structure/reagent_dispensers/keg/xuizikeg
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/beerkeg
category = "hospitality"
name = "beer keg"
supplier = "virgo"
description = "A keg of refreshing, intoxicating beer."
price = 500
items = list(
/obj/structure/reagent_dispensers/keg/beerkeg
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/meadbarrel
category = "hospitality"
name = "mead barrel"
supplier = "virgo"
description = "A wooden mead barrel."
price = 650
items = list(
/obj/structure/reagent_dispensers/keg/mead
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+434
View File
@@ -0,0 +1,434 @@
/singleton/cargo_item/ammoniabottle
category = "hydroponics"
name = "ammonia bottle"
supplier = "getmore"
description = "A small bottle."
price = 90
items = list(
/obj/item/reagent_containers/glass/bottle/ammonia
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/apron
category = "hydroponics"
name = "apron"
supplier = "getmore"
description = "A basic blue apron."
price = 25
items = list(
/obj/item/clothing/accessory/apron/blue
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/beenet
category = "hydroponics"
name = "bee net"
supplier = "vysoka"
description = "A needed tool to maintain bee imprisonment."
price = 55
items = list(
/obj/item/bee_net
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/beesmoker
category = "hydroponics"
name = "bee smoker"
supplier = "vysoka"
description = "For when you need to show those bees whos boss."
price = 120
items = list(
/obj/item/bee_smoker
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/beehiveassembly
category = "hydroponics"
name = "beehive assembly"
supplier = "vysoka"
description = "Beehive frame, some assembly required."
price = 75
items = list(
/obj/item/beehive_assembly
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 2
/singleton/cargo_item/cat
category = "hydroponics"
name = "cat"
supplier = "molinaris"
description = "A domesticated, feline pet. Has a tendency to adopt crewmembers."
price = 300
items = list(
/mob/living/simple_animal/cat
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/chicken
category = "hydroponics"
name = "chicken"
supplier = "molinaris"
description = "Adorable! They make such a racket though."
price = 150
items = list(
/mob/living/simple_animal/chick
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/corgi
category = "hydroponics"
name = "corgi"
supplier = "molinaris"
description = "Studies have shown corgis are the most well adapted canines in space, for some reason."
price = 400
items = list(
/obj/structure/largecrate/animal/corgi
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/cow
category = "hydroponics"
name = "cow"
supplier = "molinaris"
description = "Known for their milk, just don't tip them over."
price = 500
items = list(
/mob/living/simple_animal/cow
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/schlorrgoegg
category = "hydroponics"
name = "schlorrgo egg"
supplier = "zharkov"
description = "A large egg that will eventually grow into a Schlorrgo."
price = 700
items = list(
/obj/item/reagent_containers/food/snacks/egg/schlorrgo
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/fatshouter
category = "hydroponics"
name = "fatshouter"
supplier = "zharkov"
description = "A crate containing a fatshouter, an Adhomian animal."
price = 500
items = list(
/obj/structure/largecrate/animal/adhomai/fatshouter
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/floradiskbox
category = "hydroponics"
name = "flora disk box"
supplier = "nanotrasen"
description = "A box of flora data disks, apparently."
price = 660
items = list(
/obj/item/storage/box/botanydisk
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/goat
category = "hydroponics"
name = "goat"
supplier = "molinaris"
description = "Not known for their pleasant disposition."
price = 400
items = list(
/mob/living/simple_animal/hostile/retaliate/goat
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/hakhma
category = "hydroponics"
name = "hakhma"
supplier = "molinaris"
description = "An oversized insect breed by Scarab colony ships, known for their milk."
price = 600
items = list(
/mob/living/simple_animal/hakhma
)
access = 0
container_type = "box"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/honeyextractor
category = "hydroponics"
name = "honey extractor"
supplier = "vysoka"
description = "Needed equipment to extract sweet liquid gold."
price = 300
items = list(
/obj/machinery/honey_extractor
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/hydroponicstray
category = "hydroponics"
name = "hydroponics tray"
supplier = "nanotrasen"
description = "A safe space to raise your plants."
price = 45
items = list(
/obj/machinery/portable_atmospherics/hydroponics
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/icetunneler
category = "hydroponics"
name = "ice tunneler"
supplier = "zharkov"
description = "A crate containing a ice tunneler."
price = 300
items = list(
/obj/structure/largecrate/animal/adhomai
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/leathergloves
category = "hydroponics"
name = "leather gloves"
supplier = "getmore"
description = "These leather work gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
price = 9
items = list(
/obj/item/clothing/gloves/botanic_leather
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/packetofdionanodes
category = "hydroponics"
name = "packet of diona nodes"
supplier = "nanotrasen"
description = "It has a picture of diona pods on the front."
price = 15
items = list(
/obj/item/seeds/replicapod
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/packetofkudzuseeds
category = "hydroponics"
name = "packet of kudzu seeds"
supplier = "vysoka"
description = "It has a picture of kudzu vines on the front."
price = 15
items = list(
/obj/item/seeds/kudzuseed
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/packetofstrangeplantnodes
category = "hydroponics"
name = "packet of strange plant nodes"
supplier = "zeng_hu"
description = "It has a picture of strange plants on the front."
price = 15
items = list(
/obj/item/seeds/random
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/plantanalyzer
category = "hydroponics"
name = "plant analyzer"
supplier = "getmore"
description = "A hand-held environmental scanner which reports current gas levels."
price = 135
items = list(
/obj/item/device/analyzer/plant_analyzer
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/plant_b_gone
category = "hydroponics"
name = "Plant-B-Gone"
supplier = "blam"
description = "Kills those pesky weeds!"
price = 200
items = list(
/obj/item/reagent_containers/spray/plantbgone
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/queenbeepack
category = "hydroponics"
name = "queen bee pack"
supplier = "vysoka"
description = "Contains one queen bee, bee kingdom not included."
price = 150
items = list(
/obj/item/bee_pack
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/sampleoflibertycapspores
category = "hydroponics"
name = "sample of liberty cap spores"
supplier = "vysoka"
description = "It's labelled as coming from liberty cap mushrooms."
price = 15
items = list(
/obj/item/seeds/libertymycelium
)
access = ACCESS_HYDROPONICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/sampleofreishispores
category = "hydroponics"
name = "sample of reishi spores"
supplier = "vysoka"
description = "It's labelled as coming from reishi."
price = 15
items = list(
/obj/item/seeds/reishimycelium
)
access = ACCESS_HYDROPONICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/wulumunushaseed
category = "hydroponics"
name = "wulumunusha seed"
supplier = "zeng_hu"
description = "A Skrellian plant used in religious ceremonies and drinks."
price = 100
items = list(
/obj/item/seeds/wulumunushaseed
)
access = ACCESS_HYDROPONICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chainsaw
category = "hydroponics"
name = "chainsaw"
supplier = "nanotrasen"
description = "A portable mechanical saw commonly used to fell trees."
price = 600
items = list(
/obj/item/material/twohanded/chainsaw
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/steelhatchet
category = "hydroponics"
name = "steel hatchet"
supplier = "nanotrasen"
description = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
price = 36
items = list(
/obj/item/material/hatchet
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/steelminihoe
category = "hydroponics"
name = "steel mini hoe"
supplier = "nanotrasen"
description = "It's used for removing weeds or scratching your back."
price = 15
items = list(
/obj/item/material/minihoe
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/weedkillergrenade
category = "hydroponics"
name = "weedkiller grenade"
supplier = "blam"
description = "Used for purging large areas of invasive plant species. Contents under pressure. Do not directly inhale contents."
price = 225
items = list(
/obj/item/grenade/chem_grenade/antiweed
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+719
View File
@@ -0,0 +1,719 @@
/singleton/cargo_item/medicalaidset
category = "medical"
name = "medical aid set"
supplier = "iac"
description = "A set of medical first aid kits."
price = 2000
items = 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
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/firstaidkit
category = "medical"
name = "first-aid kit"
supplier = "nanotrasen"
description = "A basic medical kit for those boo-boos."
price = 250
items = list(
/obj/item/storage/firstaid/regular
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/advancedfirstaidkit
category = "medical"
name = "advanced first-aid kit"
supplier = "nanotrasen"
description = "An emergency medical kit for general severe injuries."
price = 500
items = list(
/obj/item/storage/firstaid/adv
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/advancedfirstaidkit_large
category = "medical"
name = "large advanced first-aid kit"
supplier = "nanotrasen"
description = "A large emergency medical kit for many general severe injuries."
price = 900
items = list(
/obj/item/storage/firstaid/large/adv
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/firefirstaidkit
category = "medical"
name = "fire first-aid kit"
supplier = "nanotrasen"
description = "An emergency medical kit for serious burns, either chemical or temperature."
price = 450
items = list(
/obj/item/storage/firstaid/fire
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/oxygendeprivationfirstaid
category = "medical"
name = "oxygen deprivation first aid"
supplier = "nanotrasen"
description = "An emergency medical kit for oxygen deprivation, including cardiac arrest."
price = 450
items = list(
/obj/item/storage/firstaid/o2
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/toxinfirstaid
category = "medical"
name = "toxin first aid"
supplier = "nanotrasen"
description = "An emergency medical kit for toxin exposure."
price = 450
items = list(
/obj/item/storage/firstaid/toxin
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/radfirstaid
category = "medical"
name = "radiation first aid"
supplier = "nanotrasen"
description = "An emergency medical kit for severe radiation exposure."
price = 450
items = list(
/obj/item/storage/firstaid/radiation
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bloodpack_ominus
category = "medical"
name = "O- blood pack (x1)"
supplier = "zeng_hu"
description = "A blood pack filled with universally-compatible O- Blood."
price = 300
items = list(
/obj/item/reagent_containers/blood/OMinus
)
access = ACCESS_MEDICAL
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bloodpack_sbs
category = "medical"
name = "SBS blood pack (x1)"
supplier = "zeng_hu"
description = "A blood pack filled with Synthetic Blood Substitute. WARNING: Not compatible with organic blood!"
price = 270
items = list(
/obj/item/reagent_containers/blood/sbs
)
access = ACCESS_MEDICAL
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bloodpacksbags
category = "medical"
name = "empty IV bags"
supplier = "nanotrasen"
description = "This box contains empty IV bags."
price = 85
items = list(
/obj/item/storage/box/bloodpacks
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/dexplus_autoinjector
category = "medical"
name = "dexalin plus autoinjector"
supplier = "nanotrasen"
description = "An autoinjector designed to treat oxygen deprivation."
price = 150
items = list(
/obj/item/reagent_containers/hypospray/autoinjector/oxygen
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/peridaxonautoinjector
category = "medical"
name = "peridaxon autoinjector"
supplier = "nanotrasen"
description = "An autoinjector designed to treat broad-spectrum organ damage."
price = 300
items = list(
/obj/item/reagent_containers/hypospray/autoinjector/peridaxon
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pneumalin_inhaler
category = "medical"
name = "pneumalin autoinhaler"
supplier = "nanotrasen"
description = "An autoinhaler used to treat lung damage."
price = 200
items = list(
/obj/item/reagent_containers/inhaler/pneumalin
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bodybags
category = "medical"
name = "body bags boxes (x3)"
supplier = "nanotrasen"
description = "This box contains body bags."
price = 155
items = list(
/obj/item/storage/box/bodybags
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/injectors_box
category = "medical"
name = "box of empty autoinjectors"
supplier = "nanotrasen"
description = "Contains empty autoinjectors."
price = 120
items = list(
/obj/item/storage/box/autoinjectors
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/sterilegloves_box
category = "medical"
name = "box of sterile gloves"
supplier = "zeng_hu"
description = "Contains sterile gloves."
price = 55
items = list(
/obj/item/storage/box/gloves
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/sterilemasks_box
category = "medical"
name = "box of sterile masks"
supplier = "zeng_hu"
description = "This box contains masks of sterility."
price = 55
items = list(
/obj/item/storage/box/masks
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/syringes_box
category = "medical"
name = "box of syringes"
supplier = "nanotrasen"
description = "A box full of syringes."
price = 60
items = list(
/obj/item/storage/box/syringes
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/butazoline_bottle
category = "medical"
name = "butazoline autoinjector"
supplier = "nanotrasen"
description = "A bottle of butazoline, a medicine used to treat severe trauma."
price = 50
items = list(
/obj/item/reagent_containers/glass/bottle/butazoline
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/dermaline_bottle
category = "medical"
name = "dermaline autoinjector"
supplier = "nanotrasen"
description = "A bottle of dermaline, a medicine used to treat severe burns."
price = 50
items = list(
/obj/item/reagent_containers/glass/bottle/dermaline
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/dylovene_bottle
category = "medical"
name = "dylovene bottle"
supplier = "nanotrasen"
description = "A small bottle of dylovene, a broad-spectrum antitoxin and liver regenerative."
price = 20
items = list(
/obj/item/reagent_containers/glass/bottle/antitoxin
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hyronalin_bottle
category = "medical"
name = "hyronalin bottle"
supplier = "nanotrasen"
description = "A bottle containing hyronalin, used to treat radiation poisoning."
price = 35
items = list(
/obj/item/reagent_containers/glass/bottle/hyronalin
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/inaprovaline_bottle
category = "medical"
name = "inaprovaline bottle"
supplier = "nanotrasen"
description = "A bottle of inaprovaline, a broad-spectrum stimulant and cardiac stabilizer."
price = 25
items = list(
/obj/item/reagent_containers/glass/bottle/inaprovaline
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/soporific_bottle
category = "medical"
name = "soporific bottle"
supplier = "nanotrasen"
description = "A bottle of soporific. Just the fumes make you sleepy."
price = 55
items = list(
/obj/item/reagent_containers/glass/bottle/stoxin
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/mortaphenyl_bottle
category = "medical"
name = "inaprovaline bottle"
supplier = "nanotrasen"
description = "A bottle of mortaphenyl, a strong non-opioid painkiller."
price = 85
items = list(
/obj/item/reagent_containers/glass/bottle/mortaphenyl
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/medicalbelt
category = "medical"
name = "medical belt"
supplier = "nanotrasen"
description = "Can hold various medical equipment."
price = 75
items = list(
/obj/item/storage/belt/medical
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/medicalmask
category = "medical"
name = "medical mask"
supplier = "nanotrasen"
description = "A close-fitting sterile mask that can be connected to an air supply."
price = 35
items = list(
/obj/item/clothing/mask/breath/medical
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/surgicalcap
category = "medical"
name = "surgical cap"
supplier = "nanotrasen"
description = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs."
price = 70
items = list(
/obj/item/clothing/head/surgery
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/medicalscrubs
category = "medical"
name = "medical scrubs"
supplier = "nanotrasen"
description = "It's made of a special fiber that provides minor protection against biohazards."
price = 100
items = list(
/obj/item/clothing/under/rank/medical/surgeon
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/medicalgown
category = "medical"
name = "medical gown"
supplier = "nanotrasen"
description = "A loose-fitting gown for medical patients."
price = 60
items = list(
/obj/item/clothing/under/medical_gown
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/medicalvoidsuit
category = "medical"
name = "medical voidsuit"
supplier = "nanotrasen"
description = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
price = 1200
items = list(
/obj/item/clothing/suit/space/void/medical
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/medicalvoidsuithelmet
category = "medical"
name = "medical voidsuit helmet"
supplier = "nanotrasen"
description = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
price = 850
items = list(
/obj/item/clothing/head/helmet/space/void/medical
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/nanopaste
category = "medical"
name = "nanopaste"
supplier = "zeng_hu"
description = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
price = 2000
items = list(
/obj/item/stack/nanopaste
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pillbottles
category = "medical"
name = "pill bottles"
supplier = "nanotrasen"
description = "A storage box containing pill bottles."
price = 155
items = list(
/obj/item/storage/pill_bottle
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/stasisbag
category = "medical"
name = "stasis bag"
supplier = "zeng_hu"
description = "A folded, non-reusable bag designed to keep patients in stasis for transport."
price = 900
items = list(
/obj/item/bodybag/cryobag
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/stabilizer_harness
category = "medical"
name = "stabilizer harness"
supplier = "nanotrasen"
description = "A specialized medical harness that gives regular compressions to the patient's ribcage for cases of urgent heart issues, and functions as an emergency artificial respirator for cases of urgent lung issues."
price = 300
items = list(
/obj/item/auto_cpr
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hypospray
category = "medical"
name = "hypospray"
supplier = "zeng_hu"
description = "A sterile, air-needle autoinjector for administration of drugs to patients."
price = 200
items = list(
/obj/item/reagent_containers/hypospray
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
//Surgery stuff
/singleton/cargo_item/surgerykit
category = "medical"
name = "surgery kit"
supplier = "zeng_hu"
description = "A kit containing surgical tools, either for resupply or for use on-the-go."
price = 2000
items = list(
/obj/item/storage/firstaid/surgery
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/anesthetictank
category = "medical"
name = "anesthetic tank"
supplier = "nanotrasen"
description = "A tank with an N2O/O2 gas mix."
price = 200
items = list(
/obj/item/tank/anesthetic
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/scalpel
category = "medical"
name = "scalpel"
supplier = "zeng_hu"
description = "Cut, cut, and once more cut."
price = 100
items = list(
/obj/item/surgery/scalpel
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/retractor
category = "medical"
name = "retractor"
supplier = "zeng_hu"
description = "Retracts stuff."
price = 115
items = list(
/obj/item/surgery/retractor
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hemostat
category = "medical"
name = "hemostat"
supplier = "zeng_hu"
description = "You think you have seen this before."
price = 135
items = list(
/obj/item/surgery/hemostat
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/circularsaw
category = "medical"
name = "circular saw"
supplier = "zeng_hu"
description = "For heavy duty cutting."
price = 195
items = list(
/obj/item/surgery/circular_saw
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/fix_o_vein
category = "medical"
name = "vascular recoupler"
supplier = "zeng_hu"
description = "An advanced automatic surgical instrument that operates with extreme finesse."
price = 495
items = list(
/obj/item/surgery/fix_o_vein
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/cautery
category = "medical"
name = "cautery"
supplier = "zeng_hu"
description = "This stops bleeding."
price = 165
items = list(
/obj/item/surgery/cautery
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/surgicaldrill
category = "medical"
name = "surgical drill"
supplier = "zeng_hu"
description = "You can drill using this item. You dig?"
price = 195
items = list(
/obj/item/surgery/surgicaldrill
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bonegel
category = "medical"
name = "bone gel"
supplier = "zeng_hu"
description = "A bottle-and-nozzle applicator containing a specialized gel. When applied to bone tissue, it can reinforce and repair breakages and act as a glue to keep bones in place while they heal."
price = 495
items = list(
/obj/item/surgery/bone_gel
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bonesetter
category = "medical"
name = "bone setter"
supplier = "zeng_hu"
description = "Sets bones into place."
price = 225
items = list(
/obj/item/surgery/bonesetter
)
access = ACCESS_SURGERY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/tajaranlatexgloves
category = "medical"
name = "tajaran latex gloves"
supplier = "zharkov"
description = "Sterile latex gloves. Designed for Tajara use."
price = 8
items = list(
/obj/item/clothing/gloves/latex/tajara
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/unathilatexgloves
category = "medical"
name = "unathi latex gloves"
supplier = "arizi"
description = "Sterile latex gloves. Designed for Unathi use."
price = 8
items = list(
/obj/item/clothing/gloves/latex/unathi
)
access = ACCESS_MEDICAL
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+127
View File
@@ -0,0 +1,127 @@
/singleton/cargo_item/miningvoidsuit
category = "mining"
name = "mining voidsuit"
supplier = "nanotrasen"
description = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
price = 1200
items = list(
/obj/item/clothing/suit/space/void/mining
)
access = ACCESS_MINING
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/miningvoidsuithelmet
category = "mining"
name = "mining voidsuit helmet"
supplier = "nanotrasen"
description = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
price = 850
items = list(
/obj/item/clothing/head/helmet/space/void/mining
)
access = ACCESS_MINING
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/classakineticaccelerator
category = "mining"
name = "Class A Kinetic Accelerator"
supplier = "hephaestus"
description = "Contains a tactical KA frame, an experimental core KA power converter, a recoil reloading KA cell, and a upgrade chip - damage increase."
price = 7999
items = list(
/obj/item/gun/custom_ka/frame05/prebuilt
)
access = ACCESS_MINING
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/classbkineticaccelerator
category = "mining"
name = "Class B Kinetic Accelerator"
supplier = "hephaestus"
description = "Contains a heavy KA frame, a planet core KA power converter, a uranium recharging KA cell, and a upgrade chip - efficiency increase."
price = 5599
items = list(
/obj/item/gun/custom_ka/frame04/prebuilt
)
access = ACCESS_MINING
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/classckineticaccelerator
category = "mining"
name = "Class C Kinetic Accelerator"
supplier = "hephaestus"
description = "Contains a medium KA frame, a meteor core KA power converter, a kinetic KA cell, and a upgrade chip - focusing."
price = 3299
items = list(
/obj/item/gun/custom_ka/frame03/prebuilt
)
access = ACCESS_MINING
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/classdkineticaccelerator
category = "mining"
name = "Class D Kinetic Accelerator"
supplier = "hephaestus"
description = "Contains a light KA frame, a professional core KA power converter, an advanced pump recharging KA cell, and a upgrade chip - firedelay increase."
price = 2299
items = list(
/obj/item/gun/custom_ka/frame02/prebuilt
)
access = ACCESS_MINING
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/classekineticaccelerator
category = "mining"
name = "Class E Kinetic Accelerator"
supplier = "hephaestus"
description = "Contains a compact KA frame, a standard core KA power converter, a pump recharging KA cell, and a upgrade chip - focusing."
price = 1499
items = list(
/obj/item/gun/custom_ka/frame01/prebuilt
)
access = ACCESS_MINING
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/industrialminingdrill
category = "mining"
name = "mining drill"
supplier = "hephaestus"
description = "A large industrial drill. Its bore does not penetrate deep enough to access the sublevels."
price = 4000
items = list(
/obj/machinery/mining/drill,
/obj/machinery/mining/brace,
/obj/machinery/mining/brace
)
access = ACCESS_MINING
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/orebox
category = "mining"
name = "ore box"
supplier = "hephaestus"
description = "Contains a box for storing ore."
price = 250
items = list(
/obj/structure/ore_box
)
access = 0
container_type = "box"
groupable = TRUE
spawn_amount = 1
+42
View File
@@ -0,0 +1,42 @@
/singleton/cargo_item/auto_chisel
category = "miscellaneous"
name = "auto-chisel"
supplier = "nanotrasen"
description = "With an integrated AI chip and hair-trigger precision, this baby makes sculpting almost automatic!"
price = 500
items = list(
/obj/item/autochisel
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/sculptingblock
category = "miscellaneous"
name = "sculpting block"
supplier = "nanotrasen"
description = "A finely chiselled sculpting block, it is ready to be your canvas."
price = 200
items = list(
/obj/structure/sculpting_block
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/spaceac
category = "miscellaneous"
name = "space air conditioner"
supplier = "nanotrasen"
description = "Made by Space Amish using traditional space techniques, this A/C unit can heat or cool a room to your liking."
price = 200
items = list(
/obj/machinery/space_heater
)
access = 0
container_type = "box"
groupable = TRUE
spawn_amount = 1
+625
View File
@@ -0,0 +1,625 @@
/singleton/cargo_item/autakhlimbs
category = "operations"
name = "autakh limbs"
supplier = "hephaestus"
description = "A box with various autakh limbs."
price = 3000
items = list(
/obj/item/organ/external/hand/right/autakh/tool,
/obj/item/organ/external/hand/right/autakh/tool/mining,
/obj/item/organ/external/hand/right/autakh/medical
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 2
/singleton/cargo_item/battlemonstersresupplycanister
category = "operations"
name = "battlemonsters resupply canister"
supplier = "nanotrasen"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/battlemonsters
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/blackpaint
category = "operations"
name = "black paint"
supplier = "hephaestus"
description = "Black paint, the color of space."
price = 10
items = list(
/obj/item/reagent_containers/glass/paint/black
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bluepaint
category = "operations"
name = "blue paint"
supplier = "hephaestus"
description = "Blue paint, for when you're on a mission from god."
price = 10
items = list(
/obj/item/reagent_containers/glass/paint/blue
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/boozeresupplycanister
category = "operations"
name = "booze resupply canister"
supplier = "orion"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/booze
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/camera
category = "operations"
name = "camera"
supplier = "nanotrasen"
description = "A polaroid camera. 10 photos left."
price = 80
items = list(
/obj/item/device/camera
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/cargotraintrolley
category = "operations"
name = "cargo train trolley"
supplier = "orion"
description = "A cargo trolley for carrying cargo, NOT people."
price = 1500
items = list(
/obj/vehicle/train/cargo/trolley
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/cargotraintug
category = "operations"
name = "cargo train tug"
supplier = "orion"
description = "A ridable electric car designed for pulling cargo trolleys."
price = 500
items = list(
/obj/vehicle/train/cargo/engine
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/coathanger
category = "operations"
name = "Coat Hanger"
supplier = "nanotrasen"
description = "To hang your coat."
price = 150
items = list(
/obj/structure/coatrack
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/coffeeresupplycanister
category = "operations"
name = "coffee resupply canister"
supplier = "getmore"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/coffee
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/colaresupplycanister
category = "operations"
name = "cola resupply canister"
supplier = "idris"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/cola
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/cutleryresupplycanister
category = "operations"
name = "cutlery resupply canister"
supplier = "nanotrasen"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/cutlery
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/eftposscanner
category = "operations"
name = "EFTPOS scanner"
supplier = "orion"
description = "Swipe your ID card to make purchases electronically."
price = 45
items = list(
/obj/item/device/eftpos
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/emptyspraybottle
category = "operations"
name = "empty spray bottle"
supplier = "blam"
description = "A empty spray bottle."
price = 50
items = list(
/obj/item/reagent_containers/spray
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/faxmachine
category = "operations"
name = "fax machine"
supplier = "nanotrasen"
description = "Needed office equipment for any space based corporation to function."
price = 300
items = list(
/obj/machinery/photocopier/faxmachine
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/filmcartridge
category = "operations"
name = "film cartridge"
supplier = "nanotrasen"
description = "A camera film cartridge. Insert it into a camera to reload it."
price = 15
items = list(
/obj/item/device/camera_film
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/flare
category = "operations"
name = "flare"
supplier = "hephaestus"
description = "Good for illuminating dark areas or burning someones face off."
price = 80
items = list(
/obj/item/device/flashlight/flare
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/formalwearcrate
category = "operations"
name = "formal wear crate"
supplier = "nanotrasen"
description = "Formalwear for the best occasions."
price = 800
items = list(
/obj/item/clothing/head/bowler,
/obj/item/clothing/head/that,
/obj/item/clothing/under/suit_jacket,
/obj/item/clothing/under/suit_jacket/really_black,
/obj/item/clothing/under/suit_jacket/red,
/obj/item/clothing/under/suit_jacket/navy,
/obj/item/clothing/under/suit_jacket/burgundy,
/obj/item/clothing/shoes/sneakers/black,
/obj/item/clothing/shoes/laceup,
/obj/item/clothing/shoes/laceup/grey,
/obj/item/clothing/suit/wcoat
)
access = 0
container_type = "crate"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/giftwrappingpaper
category = "operations"
name = "gift wrapping paper"
supplier = "orion"
description = "You can use this to wrap items in."
price = 8
items = list(
/obj/item/stack/wrapping_paper
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/greenpaint
category = "operations"
name = "green paint"
supplier = "orion"
description = "Green paint, a aesthetic replacement for grass."
price = 10
items = list(
/obj/item/reagent_containers/glass/paint/green
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hmatrrafillet
category = "operations"
name = "Hma'trra fillet"
supplier = "zharkov"
description = "A fillet of glacier worm meat."
price = 45
items = list(
/obj/item/reagent_containers/food/snacks/hmatrrameat
)
access = 0
container_type = "freezer"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hydroresupplycanister
category = "operations"
name = "hydro resupply canister"
supplier = "nanotrasen"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/hydro
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/janitorialresupplyset
category = "operations"
name = "janitorial resupply set"
supplier = "blam"
description = "A set of items to restock the janitors closet."
price = 2000
items = list(
/obj/structure/janitorialcart,
/obj/structure/mopbucket,
/obj/item/mop,
/obj/item/storage/bag/trash,
/obj/item/reagent_containers/spray/cleaner,
/obj/item/reagent_containers/glass/rag,
/obj/item/clothing/suit/caution,
/obj/item/clothing/suit/caution,
/obj/item/clothing/suit/caution,
/obj/item/grenade/chem_grenade/cleaner,
/obj/item/grenade/chem_grenade/cleaner,
/obj/item/grenade/chem_grenade/cleaner,
/obj/item/soap/nanotrasen
)
access = 0
container_type = "crate"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/loadbearingequipment
category = "operations"
name = "load bearing equipment"
supplier = "orion"
description = "Used to hold things when you don't have enough hands."
price = 83
items = list(
/obj/item/clothing/accessory/storage
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/medsresupplycanister
category = "operations"
name = "meds resupply canister"
supplier = "zeng_hu"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/meds
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/packagewrapper
category = "operations"
name = "package wrapper"
supplier = "orion"
description = "A roll of paper used to enclose an object for delivery."
price = 8
items = list(
/obj/item/stack/packageWrap
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pda
category = "operations"
name = "PDA"
supplier = "nanotrasen"
description = "The latest in portable microcomputer solutions from Thinktronic Systems, LTD."
price = 90
items = list(
/obj/item/modular_computer/handheld/pda
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/photoalbum
category = "operations"
name = "Photo album"
supplier = "nanotrasen"
description = "A place to store fond memories you made in space."
price = 45
items = list(
/obj/item/storage/photo_album
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/photocopier
category = "operations"
name = "photo copier"
supplier = "nanotrasen"
description = "When you're too lazy to write a copy yourself."
price = 300
items = list(
/obj/machinery/photocopier
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/purplepaint
category = "operations"
name = "purple paint"
supplier = "orion"
description = "Purple paint, it makes you feel like royalty."
price = 10
items = list(
/obj/item/reagent_containers/glass/paint/purple
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/redpaint
category = "operations"
name = "red paint"
supplier = "orion"
description = "Red paint, its not blood we promise."
price = 10
items = list(
/obj/item/reagent_containers/glass/paint/red
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/robotoolsresupplycanister
category = "operations"
name = "robo-tools resupply canister"
supplier = "blam"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/robo
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/poster19
category = "operations"
name = "rolled-up poster - No. 19"
supplier = "orion"
description = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface."
price = 38
items = list(
/obj/item/contraband/poster
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/securityresupplycanister
category = "operations"
name = "security resupply canister"
supplier = "blam"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/robust
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/shoulderholster
category = "operations"
name = "shoulder holster"
supplier = "zavodskoi"
description = "A handgun holster."
price = 23
items = list(
/obj/item/clothing/accessory/holster
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/smokesresupplycanister
category = "operations"
name = "smokes resupply canister"
supplier = "getmore"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/smokes
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/snacksresupplycanister
category = "operations"
name = "snacks resupply canister"
supplier = "getmore"
description = "A vending machine restock cart."
price = 967
items = list(
/obj/item/device/vending_refill/snack
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/space_bike
category = "operations"
name = "space-bike"
supplier = "zharkov"
description = "Space wheelies! Woo!"
price = 1200
items = list(
/obj/vehicle/bike
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/toolsresupplycanister
category = "operations"
name = "tools resupply canister"
supplier = "hephaestus"
description = "A vending machine restock cart."
price = 500
items = list(
/obj/item/device/vending_refill/tools
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/webbing
category = "operations"
name = "webbing"
supplier = "nanotrasen"
description = "Sturdy mess of synthcotton belts and buckles, ready to share your burden."
price = 83
items = list(
/obj/item/clothing/accessory/storage/webbing
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/whitepaint
category = "operations"
name = "white paint"
supplier = "nanotrasen"
description = "White paint, perfect for sterile boring lab environments."
price = 10
items = list(
/obj/item/reagent_containers/glass/paint/white
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/yellowpaint
category = "operations"
name = "yellow paint"
supplier = "orion"
description = "Yellow paint, for when you need to make eyes sore."
price = 10
items = list(
/obj/item/reagent_containers/glass/paint/yellow
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/zorasodaresupplycanister
category = "operations"
name = "zora soda resupply canister"
supplier = "zora"
description = "A vending machine restock cart."
price = 800
items = list(
/obj/item/device/vending_refill/zora
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+356
View File
@@ -0,0 +1,356 @@
/singleton/cargo_item/crayonbox
category = "recreation"
name = "box of crayons"
supplier = "getmore"
description = "Nontoxic crayons! For drawing, writing, painting. Warranty void if consumed."
price = 30
items = list(
/obj/item/storage/box/fancy/crayons
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/painting_kit
category = "recreation"
name = "painting kit"
supplier = "virgo"
description = "A painter's kit containing an easel, a small canvas, and some paints. Additional canvases sold separately."
price = 350
items = list(
/obj/structure/easel,
/obj/item/canvas,
/obj/item/storage/box/fancy/crayons,
/obj/item/reagent_containers/glass/rag,
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/canvas_small
category = "recreation"
name = "small canvas"
supplier = "virgo"
description = "A painting canvas. Does not include the tools required to use it."
price = 50
items = list(
/obj/item/canvas
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/canvas_medium
category = "recreation"
name = "medium canvas"
supplier = "virgo"
description = "A painting canvas. Does not include the tools required to use it."
price = 80
items = list(
/obj/item/canvas/nineteen_nineteen
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/canvas_large
category = "recreation"
name = "large canvas"
supplier = "virgo"
description = "A painting canvas. Does not include the tools required to use it."
price = 100
items = list(
/obj/item/canvas/twentythree_twentythree
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/trumpet
category = "recreation"
name = "trumpet"
supplier = "virgo"
description = "A trumpet for those triumphant tooting sessions."
price = 300
items = list(
/obj/item/device/synthesized_instrument/trumpet
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/guitar
category = "recreation"
name = "guitar"
supplier = "virgo"
description = "An acoustic guitar for those balcony serenades."
price = 190
items = list(
/obj/item/device/synthesized_instrument/guitar
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/violin
category = "recreation"
name = "violin"
supplier = "virgo"
description = "A wooden musical instrument with four strings and a bow."
price = 250
items = list(
/obj/item/device/synthesized_instrument/violin
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/polyguitar
category = "recreation"
name = "polyguitar"
supplier = "virgo"
description = "An electric polyguitar. 100% digital audio."
price = 250
items = list(
/obj/item/device/synthesized_instrument/guitar/multi
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/piano
category = "recreation"
name = "piano"
supplier = "virgo"
description = "Like a regular piano, but always in tune! Even if the musician isn't."
price = 1200
items = list(
/obj/structure/synthesized_instrument/synthesizer/piano
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/pianosoundsynthesizer
category = "recreation"
name = "synthesizer 3.0"
supplier = "virgo"
description = "An expensive sound synthesizer. Great for those orchestra-of-one performances."
price = 1900
items = list(
/obj/structure/synthesized_instrument/synthesizer
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/jukebox
category = "recreation"
name = "juke box"
supplier = "nanotrasen"
description = "A common sight in any modern space bar, this jukebox has all the space classics."
price = 500
items = list(
/obj/machinery/media/jukebox
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/adhomian_phonograph
category = "recreation"
name = "adhomian phonograph"
supplier = "zharkov"
description = "An Adhomian record player."
price = 700
items = list(
/obj/machinery/media/jukebox/phonograph
)
access = 0
container_type = "box"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/waterballoons
category = "recreation"
name = "water balloons (x10)"
supplier = "nanotrasen"
description = "Ten empty water balloons for water balloon fights."
price = 100
items = list(
/obj/item/toy/waterballoon
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 10
/singleton/cargo_item/balloons
category = "recreation"
name = "balloons (x10)"
supplier = "nanotrasen"
description = "Ten empty regular balloons. Can be filled using a tank of air or other gas. Warranty void if filled with hydrogen."
price = 80
items = list(
/obj/item/toy/balloon
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 10
/singleton/cargo_item/toysword
category = "recreation"
name = "toy sword"
supplier = "nanotrasen"
description = "A cheap, plastic replica of a blue energy sword. Realistic sounds and colors! Ages 8 and up."
price = 200
items = list(
/obj/item/toy/sword
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/replicakatana
category = "recreation"
name = "replica katana"
supplier = "nanotrasen"
description = "A cheap plastic katana. Useful for pretending you're a samurai or for tabletop roleplaying sessions."
price = 200
items = list(
/obj/item/toy/katana
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/foamdart
category = "recreation"
name = "foam darts (x5)"
supplier = "nanotrasen"
description = "It's some foam darts, for use in foam weaponry. Ages 8 and up."
price = 20
items = list(
/obj/item/toy/ammo/crossbow
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/foamdartcrossbow
category = "recreation"
name = "foam dart crossbow"
supplier = "nanotrasen"
description = "A weapon favored by many overactive children. Ages 8 and up."
price = 200
items = list(
/obj/item/toy/crossbow
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/gravitationalsingularitytoy
category = "recreation"
name = "gravitational singularity toy"
supplier = "getmore"
description = "'Singulo' brand spinning toy. Certified mesmerizing since 2440."
price = 100
items = list(
/obj/item/toy/spinningtoy
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/randomplushies
category = "recreation"
name = "random plushies (x4)"
supplier = "nanotrasen"
description = "Four random surplus plushies from a local toy store's clearance sale. People grow old, apparently."
price = 250
items = list(
/obj/random/plushie
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 4
/singleton/cargo_item/therapydoll
category = "recreation"
name = "therapy doll"
supplier = "virgo"
description = "A toy for therapeutic and recreational purposes."
price = 120
items = list(
/obj/item/toy/plushie/therapy
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/snappop
category = "recreation"
name = "snap pop (x5)"
supplier = "nanotrasen"
description = "A number of snap pops."
price = 200
items = list(
/obj/item/toy/snappop
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/redlasertagequipmentset
category = "recreation"
name = "red laser tag equipment set"
supplier = "nanotrasen"
description = "A two-player set of red-team laser tag equipment consisting of a helmet, armor, and a gun."
price = 200
items = list(
/obj/item/clothing/head/helmet/riot/laser_tag,
/obj/item/clothing/suit/armor/riot/laser_tag,
/obj/item/gun/energy/lasertag/red
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 2
/singleton/cargo_item/bluelasertagequipmentset
category = "recreation"
name = "blue laser tag equipment set"
supplier = "nanotrasen"
description = "A two-player set of blue-team laser blue equipment consisting of a helmet, armor, and a gun."
price = 200
items = list(
/obj/item/clothing/head/helmet/riot/laser_tag/blue,
/obj/item/clothing/suit/armor/riot/laser_tag/blue,
/obj/item/gun/energy/lasertag/blue
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 2
+126
View File
@@ -0,0 +1,126 @@
/singleton/cargo_item/positronicbrain
category = "robotics"
name = "positronic brain"
supplier = "hephaestus"
description = "An IPC-grade inactivated positronic brain fresh off the factory line. These sentient, enigmatic computers are the brains of advanced synthetics across the galaxy."
price = 8000
items = list(
/obj/item/device/mmi/digital/posibrain
)
access = ACCESS_ROBOTICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/torso_baseline
category = "robotics"
name = "Torso - Baseline"
supplier = "hephaestus"
description = "A torso for a baseline frame IPC."
price = 3200
items = list(
/obj/item/robot_parts/chest/ipc
)
access = ACCESS_ROBOTICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/torso_bishop
category = "robotics"
name = "Torso - Bishop Cybernetics"
supplier = "bishop"
description = "A bishop cybernetics torso."
price = 4000
items = list(
/obj/item/robot_parts/chest/bishop
)
access = ACCESS_ROBOTICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/torso_g1
category = "robotics"
name = "Torso - Hephaestus G1 Industrial Frame"
supplier = "hephaestus"
description = "A torso for a Hephaestus G1 Industrial Frame."
price = 3500
items = list(
/obj/item/robot_parts/chest/industrial
)
access = ACCESS_ROBOTICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/torso_g2
category = "robotics"
name = "Torso - Hephaestus G2 Industrial Frame"
supplier = "hephaestus"
description = "A torso for a Hephaestus G2 Industrial Frame."
price = 5000
items = list(
/obj/item/robot_parts/chest/hephaestus
)
access = ACCESS_ROBOTICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/torso_heph
category = "robotics"
name = "Torso - Hephaestus Integrated"
supplier = "hephaestus"
description = "A torso for a Hephaestus Integrated Frame."
price = 3000
items = list(
/obj/item/robot_parts/chest/ipc
)
access = ACCESS_ROBOTICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/torso_synthskin
category = "robotics"
name = "Torso - Synthskin"
supplier = "zeng_hu"
description = "A synthskin torso."
price = 9000
items = list(
/obj/item/robot_parts/chest/synthskin
)
access = ACCESS_ROBOTICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/torso_xion
category = "robotics"
name = "Torso - Xion Manufacturing"
supplier = "xion"
description = "A Xion Manufacturing torso."
price = 4500
items = list(
/obj/item/robot_parts/chest/xion
)
access = ACCESS_ROBOTICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/torso_zenghu
category = "robotics"
name = "Torso - Zeng - Hu Pharmaceuticals"
supplier = "zeng_hu"
description = "A Zeng - Hu Pharmaceuticals torso."
price = 3000
items = list(
/obj/item/robot_parts/chest/zenghu
)
access = ACCESS_ROBOTICS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+236
View File
@@ -0,0 +1,236 @@
/singleton/cargo_item/stokcubebox
category = "science"
name = "stok cube box"
supplier = "nanotrasen"
description = "Drymate brand stok cubes, shipped from Moghes. Just add water!"
price = 60
items = list(
/obj/item/storage/box/monkeycubes/stokcubes
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/vkrexicubebox
category = "science"
name = "vkrexi cube box"
supplier = "nanotrasen"
description = "Drymate brand vkrexi cubes. Just add water!"
price = 60
items = list(
/obj/item/storage/box/monkeycubes/vkrexicubes
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/farwacubebox
category = "science"
name = "farwa cube box"
supplier = "nanotrasen"
description = "Drymate brand farwa cubes, shipped from Adhomai. Just add water!"
price = 55
items = list(
/obj/item/storage/box/monkeycubes/farwacubes
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/monkeycubebox
category = "science"
name = "monkey cube box"
supplier = "nanotrasen"
description = "Drymate brand monkey cubes. Just add water!"
price = 60
items = list(
/obj/item/storage/box/monkeycubes
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/neaeracubebox
category = "science"
name = "neaera cube box"
supplier = "nanotrasen"
description = "Drymate brand neaera cubes, shipped from Jargon 4. Just add water!"
price = 65
items = list(
/obj/item/storage/box/monkeycubes/neaeracubes
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hazmathood
category = "science"
name = "hazmat hood"
supplier = "nanotrasen"
description = "This hood protects against biological hazards."
price = 105
items = list(
/obj/item/clothing/head/hazmat/general
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/hazmatsuit
category = "science"
name = "hazmat suit"
supplier = "nanotrasen"
description = "This suit protects against biological hazards."
price = 105
items = list(
/obj/item/clothing/suit/hazmat/general
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/igniter
category = "science"
name = "igniter"
supplier = "nanotrasen"
description = "A small electronic device able to ignite combustable substances."
price = 23
items = list(
/obj/item/device/assembly/igniter
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/mindshieldfiringpin
category = "science"
name = "mindshield firing pin"
supplier = "nanotrasen"
description = "This implant - locked firing pin authorizes the weapon for only loyalty - implanted users."
price = 2000
items = list(
/obj/item/device/firing_pin/implant/loyalty
)
access = ACCESS_HEADS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/protohuman
category = "science"
name = "Proto-Human"
supplier = "zeng_hu"
description = "A human body, vat-grown and artificially raised without a functional brain. The everyman's relatively-ethical solution to organ harvesting."
price = 2300
items = list(
/mob/living/carbon/human
)
access = ACCESS_RESEARCH
container_type = "bodybag"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/proto_skrell
category = "science"
name = "Proto-Skrell"
supplier = "zeng_hu"
description = "A Skrell body, vat-grown and artificially raised without a functional brain. The everyman's relatively-ethical solution to organ harvesting."
price = 4000
items = list(
/mob/living/carbon/human/skrell
)
access = ACCESS_RESEARCH
container_type = "bodybag"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/proto_tajara
category = "science"
name = "Proto-Tajara"
supplier = "zeng_hu"
description = "A Tajara body, vat-grown and artificially raised without a functional brain. The everyman's relatively-ethical solution to organ harvesting."
price = 1800
items = list(
/mob/living/carbon/human/tajaran
)
access = ACCESS_RESEARCH
container_type = "bodybag"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/proto_unathi
category = "science"
name = "Proto-Unathi"
supplier = "zeng_hu"
description = "An Unathi body, vat-grown and artificially raised without a functional brain. The everyman's relatively-ethical solution to organ harvesting."
price = 2000
items = list(
/mob/living/carbon/human/unathi
)
access = ACCESS_RESEARCH
container_type = "bodybag"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/blankvaurcadrone
category = "science"
name = "Blank Vaurca Drone"
supplier = "zora"
description = "A surplus Vaurca drone body. Thousands of these are thrown at the wayside every day. The everyman's relatively-ethical solution to organ harvesting."
price = 300
items = list(
/mob/living/carbon/human/type_a/cargo
)
access = ACCESS_RESEARCH
container_type = "bodybag"
groupable = FALSE
spawn_amount = 1
/singleton/cargo_item/proximitysensor
category = "science"
name = "proximity sensor"
supplier = "nanotrasen"
description = "Used for scanning and alerting when someone enters a certain proximity."
price = 75
items = list(
/obj/item/device/assembly/prox_sensor
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/testrange_firingpin
category = "science"
name = "test - range firing pin"
supplier = "nanotrasen"
description = "This safety firing pin allows weapons to be fired within proximity to a firing range."
price = 500
items = list(
/obj/item/device/firing_pin/test_range
)
access = ACCESS_RESEARCH
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/timer
category = "science"
name = "timer"
supplier = "nanotrasen"
description = "Used to time things. Works well with contraptions which has to count down. Tick tock."
price = 75
items = list(
/obj/item/device/assembly/timer
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+564
View File
@@ -0,0 +1,564 @@
//Basic sec items
/singleton/cargo_item/stunbaton
category = "security"
name = "stunbaton"
supplier = "nanotrasen"
description = "A stun baton for incapacitating people with."
price = 320
items = list(
/obj/item/melee/baton
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/flash
category = "security"
name = "flash"
supplier = "nanotrasen"
description = "Used for blinding and being an asshole."
price = 235
items = list(
/obj/item/device/flash
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/uvlight
category = "security"
name = "UV light"
supplier = "nanotrasen"
description = "A small handheld black light."
price = 115
items = list(
/obj/item/device/uv_light
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ipcimplanter
category = "security"
name = "IPC tag implanter"
supplier = "nanotrasen"
description = "A special implanter used for implanting synthetics with a special tag."
price = 400
items = list(
/obj/item/implanter/ipc_tag
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/maglight
category = "security"
name = "maglight"
supplier = "nanotrasen"
description = "A heavy flashlight designed for security personnel."
price = 150
items = list(
/obj/item/device/flashlight/maglight
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/doorlock_security
category = "security"
name = "magnetic door lock - security"
supplier = "nanotrasen"
description = "A large, ID locked device used for completely locking down airlocks. It is painted with Security colors."
price = 135
items = list(
/obj/item/device/magnetic_lock/security
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/handcuffs_box
category = "security"
name = "box of handcuffs"
supplier = "nanotrasen"
description = "A box full of handcuffs."
price = 345
items = list(
/obj/item/storage/box/handcuffs
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/zipties_box
category = "security"
name = "box of zipties"
supplier = "nanotrasen"
description = "A box full of zipties."
price = 145
items = list(
/obj/item/storage/box/zipties
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/shieldgenerator
category = "security"
name = "Shield Generator"
supplier = "nanotrasen"
description = "A shield generator."
price = 1500
items = list(
/obj/machinery/shieldwallgen
)
access = ACCESS_ENGINE
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pepperspraygrenades_box
category = "security"
name = "box of pepperspray grenades"
supplier = "zavodskoi"
description = "A box containing 7 tear gas grenades. A gas mask is printed on the label. WARNING: Exposure carries risk of serious injuries."
price = 750
items = list(
/obj/item/storage/box/teargas
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/flashbangs_box
category = "security"
name = "box of flashbangs"
supplier = "zavodskoi"
description = "A box containing 7 antipersonnel flashbang grenades. WARNING: Can cause permanent vision or hearing loss. Use with caution."
price = 520
items = list(
/obj/item/storage/box/flashbangs
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/empgrenades_box
category = "security"
name = "box of EMP grenades"
supplier = "zavodskoi"
description = "A box containing 5 military grade EMP grenades. WARNING: Do not use near unshielded electronics or biomechanical augmentations."
price = 4395
items = list(
/obj/item/storage/box/emps
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/deployablebarrier
category = "security"
name = "deployable barrier"
supplier = "zavodskoi"
description = "A deployable barrier. Swipe your ID card to lock/unlock it."
price = 750
items = list(
/obj/machinery/deployable/barrier
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
//Armor and clothing
/singleton/cargo_item/armor
category = "security"
name = "armored vest"
supplier = "zavodskoi"
description = "An armored vest that protects against some damage."
price = 350
items = list(
/obj/item/clothing/suit/armor/vest
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/tacticalhelmet
category = "security"
name = "standard helmet"
supplier = "zavodskoi"
description = "An armored helmet, for keeping that head of yours intact."
price = 280
items = list(
/obj/item/clothing/head/helmet
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/tacticalarmor
category = "security"
name = "standard plate carrier"
supplier = "zavodskoi"
description = "A plate carrier with basic accessories and an armor plate."
price = 800
items = list(
/obj/item/clothing/suit/armor/carrier/officer
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ablativehelmet
category = "security"
name = "ablative helmet"
supplier = "zavodskoi"
description = "A helmet made from advanced materials which protects against concentrated energy weapons."
price = 320
items = list(
/obj/item/clothing/head/helmet/ablative
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/platecarrier_ablative
category = "security"
name = "plate carrier - ablative"
supplier = "zavodskoi"
description = "A plate carrier equipped with ablative armor plates."
price = 875
items = list(
/obj/item/clothing/suit/armor/carrier/ablative
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ballistichelmet
category = "security"
name = "ballistic helmet"
supplier = "zavodskoi"
description = "A helmet with reinforced plating to protect against ballistic projectiles."
price = 360
items = list(
/obj/item/clothing/head/helmet/ballistic
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/platecarrier_ballistic
category = "security"
name = "plate carrier - ballistic"
supplier = "zavodskoi"
description = "A plate carrier equipped with ballistic armor plates."
price = 850
items = list(
/obj/item/clothing/suit/armor/carrier/ballistic
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/riothelmet
category = "security"
name = "riot helmet"
supplier = "zavodskoi"
description = "It's a helmet specifically designed to protect against close range attacks."
price = 750
items = list(
/obj/item/clothing/head/helmet/riot
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/platecarrier_riot
category = "security"
name = "plate carrier - riot"
supplier = "zavodskoi"
description = "A plate carrier equipped with riot armor plates."
price = 1050
items = list(
/obj/item/clothing/suit/armor/carrier/riot
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/riotshield
category = "security"
name = "riot shield"
supplier = "zavodskoi"
description = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder."
price = 225
items = list(
/obj/item/shield/riot
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/securityvoidsuit
category = "security"
name = "security voidsuit"
supplier = "zavodskoi"
description = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
price = 1500
items = list(
/obj/item/clothing/suit/space/void/security
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/securityvoidsuithelmet
category = "security"
name = "security voidsuit helmet"
supplier = "zavodskoi"
description = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
price = 900
items = list(
/obj/item/clothing/head/helmet/space/void/security
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/tacticalhud
category = "security"
name = "tactical hud"
supplier = "zharkov"
description = "A tactical hud for tactical operations that ensures they proceed tactically."
price = 200
items = list(
/obj/item/clothing/glasses/sunglasses/sechud/tactical
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/blackgloves
category = "security"
name = "black gloves"
supplier = "nanotrasen"
description = "Black gloves that are somewhat fire resistant."
price = 70
items = list(
/obj/item/clothing/gloves/black
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bandolier
category = "security"
name = "bandolier"
supplier = "zharkov"
description = "A pocketed belt designated to hold shotgun shells."
price = 300
items = list(
/obj/item/clothing/accessory/storage/bandolier
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/combatbelt
category = "security"
name = "combat belt"
supplier = "zharkov"
description = "The only utility belt you will ever need."
price = 300
items = list(
/obj/item/storage/belt/security/tactical
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/tacticaljumpsuit
category = "security"
name = "tactical jumpsuit"
supplier = "zharkov"
description = "Tactical fatigues guaranteed to bring out the space marine in you."
price = 200
items = list(
/obj/item/clothing/under/tactical
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/jackboots
category = "security"
name = "jack boots"
supplier = "zavodskoi"
description = "Classic law enforcement footwear, comes with handy knife holder for when you need to enforce law up close."
price = 100
items = list(
/obj/item/clothing/shoes/jackboots
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bayonet
category = "security"
name = "bayonet"
supplier = "zharkov"
description = "A sharp military knife, can be attached to a rifle."
price = 300
items = list(
/obj/item/clothing/accessory/storage/bayonet
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/electronicfiringpin
category = "security"
name = "electronic firing pin"
supplier = "nanotrasen"
description = "A small authentication device, to be inserted into a firearm receiver to allow operation."
price = 2000
items = list(
/obj/item/device/firing_pin
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/holographicammodisplay
category = "security"
name = "holographic ammo display"
supplier = "nanotrasen"
description = "A device that can be attached to most firearms, providing a holographic display of the remaining ammunition to the user."
price = 200
items = list(
/obj/item/ammo_display
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
//Forensics
/singleton/cargo_item/crimescenekit
category = "security"
name = "empty crime scene kit"
supplier = "nanotrasen"
description = "A stainless steel-plated carrycase for all of your forensic needs. This one is empty."
price = 145
items = list(
/obj/item/storage/briefcase/crimekit
)
access = ACCESS_FORENSICS_LOCKERS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/luminolbottle
category = "security"
name = "luminol bottle"
supplier = "nanotrasen"
description = "A bottle containing an odourless, colorless liquid."
price = 115
items = list(
/obj/item/reagent_containers/spray/luminol
)
access = ACCESS_FORENSICS_LOCKERS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/microscopeslidebox
category = "security"
name = "microscope slide box"
supplier = "nanotrasen"
description = "It's just an ordinary box."
price = 35
items = list(
/obj/item/storage/box/slides
)
access = ACCESS_FORENSICS_LOCKERS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/fibercollectionkit
category = "security"
name = "fiber collection kit"
supplier = "nanotrasen"
description = "A magnifying glass and tweezers. Used to lift suit fibers."
price = 115
items = list(
/obj/item/forensics/sample_kit
)
access = ACCESS_FORENSICS_LOCKERS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/fingerprintpowder
category = "security"
name = "fingerprint powder"
supplier = "nanotrasen"
description = "A jar containing aluminum powder and a specialized brush."
price = 75
items = list(
/obj/item/forensics/sample_kit/powder
)
access = ACCESS_FORENSICS_LOCKERS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/swabkits_box
category = "security"
name = "box of swab kits"
supplier = "nanotrasen"
description = "Sterilized equipment within. Do not contaminate."
price = 25
items = list(
/obj/item/storage/box/swabs
)
access = ACCESS_FORENSICS_LOCKERS
container_type = "crate"
groupable = TRUE
spawn_amount = 1
+281
View File
@@ -0,0 +1,281 @@
/singleton/cargo_item/box
category = "supply"
name = "boxes (x5)"
supplier = "orion"
description = "Versatile cardboard boxes."
price = 45
items = list(
/obj/item/storage/box
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 5
/singleton/cargo_item/bucket
category = "supply"
name = "bucket"
supplier = "blam"
description = "It's a bucket."
price = 10
items = list(
/obj/item/reagent_containers/glass/bucket
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/chestdrawer
category = "supply"
name = "chest drawer"
supplier = "orion"
description = "A large cabinet with drawers."
price = 45
items = list(
/obj/structure/filingcabinet/chestdrawer
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/clipboard
category = "supply"
name = "clipboard"
supplier = "orion"
description = "The timeless prop for looking like your working."
price = 23
items = list(
/obj/item/clipboard
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/folderblue
category = "supply"
name = "blue folder"
supplier = "orion"
description = "A blue folder."
price = 8
items = list(
/obj/item/folder/blue
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/folderyellow
category = "supply"
name = "yellow folder"
supplier = "orion"
description = "A yellow folder."
price = 8
items = list(
/obj/item/folder/yellow
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/folderred
category = "supply"
name = "red folder"
supplier = "orion"
description = "A red folder."
price = 8
items = list(
/obj/item/folder/red
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/folderwhite
category = "supply"
name = "white folder"
supplier = "orion"
description = "A white folder."
price = 8
items = list(
/obj/item/folder/white
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/handlabeler
category = "supply"
name = "hand labeler"
supplier = "nanotrasen"
description = "Yes, it has your name on it!"
price = 8
items = list(
/obj/item/device/hand_labeler
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/inflatableduck
category = "supply"
name = "inflatable duck"
supplier = "nanotrasen"
description = "No bother to sink or swim when you can just float!"
price = 200
items = list(
/obj/item/inflatable_duck
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/paperbin
category = "supply"
name = "paper bin"
supplier = "nanotrasen"
description = "A bin filled with paper - a paper bin!"
price = 12
items = list(
/obj/item/paper_bin
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pen
category = "supply"
name = "pen"
supplier = "nanotrasen"
description = "A normal black ink ballpen."
price = 8
items = list(
/obj/item/pen
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/penblue
category = "supply"
name = "blue pen"
supplier = "nanotrasen"
description = "A normal blue ink ballpen."
price = 8
items = list(
/obj/item/pen/blue
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/penred
category = "supply"
name = "red pen"
supplier = "nanotrasen"
description = "A normal red ink ballpen."
price = 8
items = list(
/obj/item/pen/red
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pen_multi
category = "supply"
name = "multicolor pen"
supplier = "nanotrasen"
description = "A fancy pen that has several nibs in different colors that you can slide up and down."
price = 20
items = list(
/obj/item/pen/multi
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pen_fountain
category = "supply"
name = "fountain pen"
supplier = "nanotrasen"
description = "It's an expensive fountain pen."
price = 30
items = list(
/obj/item/pen/fountain
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/taperoll
category = "supply"
name = "tape roll"
supplier = "nanotrasen"
description = "A roll of sticky tape. Possibly for taping ducks... or was that ducts?"
price = 8
items = list(
/obj/item/tape_roll
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/tonercartridge
category = "supply"
name = "toner cartridge (x2)"
supplier = "nanotrasen"
description = "Toner is the back bone of any space based litigation."
price = 135
items = list(
/obj/item/device/toner
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 2
/singleton/cargo_item/potted_plant_small
category = "supply"
name = "small potted plant"
supplier = "nanotrasen"
description = "A random small potted plant, for when you want to add some greenery to your desk."
price = 100
items = list(
/obj/random/pottedplant_small
)
access = 0
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/potted_plant
category = "supply"
name = "large potted plant"
supplier = "nanotrasen"
description = "A random large potted plant, for when you want to add some greenery to your office space."
price = 300
items = list(
/obj/random/pottedplant
)
access = 0
container_type = "box"
groupable = FALSE
spawn_amount = 1
+645
View File
@@ -0,0 +1,645 @@
//Weapons//
/singleton/cargo_item/disruptorpistol
category = "weaponry"
name = "disruptor pistol"
supplier = "nanotrasen"
description = "A nanotrasen designed blaster pistol with two settings: stun and lethal."
price = 500
items = list(
/obj/item/gun/energy/disruptorpistol
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/tasergun
category = "weaponry"
name = "taser gun"
supplier = "nanotrasen"
description = "The NT Mk30 NL is a small, low capacity gun used for non-lethal takedowns."
price = 150
items = list(
/obj/item/gun/energy/taser
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/pistol45
category = "weaponry"
name = ".45 pistol"
supplier = "nanotrasen"
description = "The NanoTrasen Mk58 .45-caliber pistol. Inexpensive, reliable, and ubiquitous among security forces galaxy-wide."
price = 1100
items = list(
/obj/item/gun/projectile/sec
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/machinepistol
category = "weaponry"
name = "machine pistol"
supplier = "zavodskoi"
description = "The ZI 550 Saber is a cheap self-defense weapon, mass-produced by Zavodskoi Interstellar for paramilitary and private use."
price = 1600
items = list(
/obj/item/gun/projectile/automatic/wt550
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ballisticcarbine
category = "weaponry"
name = "ballistic carbine"
supplier = "virgo"
description = "A durable, rugged looking semi-automatic weapon of a make popular on the frontier worlds. Uses 5.56mm rounds."
price = 2400
items = list(
/obj/item/gun/projectile/automatic/rifle/carbine
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/bullpupassaultcarbine
category = "weaponry"
name = "Z8 bullpup assault carbine"
supplier = "zavodskoi"
description = "The ZI Bulldog 5.56mm bullpup assault carbine, Zavodskoi Industries' answer to any problem that can be solved by an assault rifle."
price = 2650
items = list(
/obj/item/gun/projectile/automatic/rifle/z8
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/combatshotgun
category = "weaponry"
name = "combat shotgun"
supplier = "hephaestus"
description = "Built for close quarters combat, the Hephaestus Industries KS-40 is widely regarded as a weapon of choice for repelling boarders."
price = 2250
items = list(
/obj/item/gun/projectile/shotgun/pump/combat
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/energycarbine
category = "weaponry"
name = "energy carbine"
supplier = "nanotrasen"
description = "An energy-based carbine with two settings: Stun and kill."
price = 1800
items = list(
/obj/item/gun/energy/gun
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/energypistol
category = "weaponry"
name = "energy pistol"
supplier = "nanotrasen"
description = "A basic energy-based pistol gun with two settings: Stun and kill."
price = 1200
items = list(
/obj/item/gun/energy/pistol
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ionrifle
category = "weaponry"
name = "ion rifle"
supplier = "nanotrasen"
description = "The NT Mk60 EW Halicon is a man portable anti-armor weapon designed to disable mechanical threats."
price = 2500
items = list(
/obj/item/gun/energy/rifle/ionrifle
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/marksmanenergyrifle
category = "weaponry"
name = "marksman energy rifle"
supplier = "hephaestus"
description = "The HI L.W.A.P. is an older design of Hephaestus Industries. A designated marksman rifle capable of shooting powerful ionized bolts."
price = 3100
items = list(
/obj/item/gun/energy/sniperrifle
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/laserrifle
category = "weaponry"
name = "laser rifle"
supplier = "nanotrasen"
description = "A common laser weapon, designed to kill with concentrated energy blasts."
price = 2200
items = list(
/obj/item/gun/energy/rifle/laser
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/peac
category = "weaponry"
name = "point entry anti-materiel cannon"
supplier = "nanotrasen"
description = "An SCC-designed, man-portable cannon meant to neutralize mechanized threats. Spectacularly effective, though equally spectacularly unwieldy."
price = 3200
items = list(
/obj/item/gun/projectile/peac
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/adhomianrecoillessrifle
category = "weaponry"
name = "adhomian recoilless rifle"
supplier = "zharkov"
description = "Shoulder-fired man-portable anti-tank recoilless rifle with a single shot. Relatively inexpensive and does its job."
price = 1300
items = list(
/obj/item/gun/projectile/recoilless_rifle
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/boltactionrifle
category = "weaponry"
name = "bolt action rifle"
supplier = "zharkov"
description = "An Adhomian bolt-action rifle."
price = 850
items = list(
/obj/item/gun/projectile/shotgun/pump/rifle
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/derringer
category = "weaponry"
name = "derringer"
supplier = "zharkov"
description = "A blast from the past that can fit in your pocket."
price = 650
items = list(
/obj/item/gun/projectile/revolver/derringer
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/silencedpistol
category = "weaponry"
name = "silenced pistol"
supplier = "zharkov"
description = "Internally silenced for stealthy operations."
price = 1950
items = list(
/obj/item/gun/projectile/silenced
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
//Ammunition
/singleton/cargo_item/ammunitionbox_beanbag
category = "weaponry"
name = "shotgun ammunition box (beanbag shells)"
supplier = "zavodskoi"
description = "A box of less-lethal beanbag shells."
price = 65
items = list(
/obj/item/storage/box/beanbags
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ammunitionbox_haywire
category = "weaponry"
name = "shotgun ammunition box (haywire shells)"
supplier = "zavodskoi"
description = "A box of EMP-inducing 'haywire' shotgun shells."
price = 120
items = list(
/obj/item/storage/box/haywireshells
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ammunitionbox_incendiary
category = "weaponry"
name = "shotgun ammunition box (incendiary shells)"
supplier = "zavodskoi"
description = "A box of incendiary shotgun shells."
price = 95
items = list(
/obj/item/storage/box/incendiaryshells
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ammunitionbox_shells
category = "weaponry"
name = "shotgun ammunition box (buckshot)"
supplier = "zavodskoi"
description = "A box of shotgun buckshot shells."
price = 85
items = list(
/obj/item/storage/box/shotgunshells
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/ammunitionbox_slugs
category = "weaponry"
name = "shotgun ammunition box (slug)"
supplier = "zavodskoi"
description = "A box of shotgun slugs."
price = 100
items = list(
/obj/item/storage/box/shotgunammo
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/illuminationshells_box
category = "weaponry"
name = "shotgun ammunition box (illumination)"
supplier = "zavodskoi"
description = "A box of illuminating shotgun shells."
price = 65
items = list(
/obj/item/storage/box/flashshells
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/anti_materiel_cannon_cartridge
category = "weaponry"
name = "anti-materiel cannon cartridge"
supplier = "zavodskoi"
description = "A single use cartridge for a point-entry anti-materiel cannon."
price = 300
items = list(
/obj/item/ammo_casing/peac
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/apcarbinemagazine_556
category = "weaponry"
name = "C-type armor-piercing carbine magazine (5.56mm)"
supplier = "zavodskoi"
description = "Civilian-issue 5.56mm magazine with reduced capacity. Fits most private-issue 5.56mm weapons."
price = 60
items = list(
/obj/item/ammo_magazine/a556/carbine/ap
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/carbinemagazine_556
category = "weaponry"
name = "C-type carbine magazine (5.56mm)"
supplier = "zavodskoi"
description = "Civilian-issue 5.56mm magazine with reduced capacity. Fits most private-issue 5.56mm weapons."
price = 55
items = list(
/obj/item/ammo_magazine/a556/carbine
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/magazine_556
category = "weaponry"
name = "M-type rifle magazine (5.56mm)"
supplier = "zavodskoi"
description = "A 5.56 ammo magazine for military assault rifles. Incompatible with weapons that take C-type magazines."
price = 65
items = list(
/obj/item/ammo_magazine/a556
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/magazine_762
category = "weaponry"
name = "rifle magazine (7.62mm)"
supplier = "zharkov"
description = "A 7.62mm rifle magazine."
price = 70
items = list(
/obj/item/ammo_magazine/d762
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/magazine_9
category = "weaponry"
name = "pistol magazine (9mm)"
supplier = "zharkov"
description = "A 9mm pistol magazine."
price = 40
items = list(
/obj/item/ammo_magazine/mc9mm
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/magazine_45
category = "weaponry"
name = "pistol magazine (.45)"
supplier = "nanotrasen"
description = "A .45-caliber pistol magazine."
price = 50
items = list(
/obj/item/ammo_magazine/c45m
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/magazine_45flash
category = "weaponry"
name = "pistol magazine (.45 flash)"
supplier = "nanotrasen"
description = "A .45-caliber less-lethal flash magazine."
price = 40
items = list(
/obj/item/ammo_magazine/c45m/flash
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/topmounted_9mm
category = "weaponry"
name = "top mounted magazine (9mm)"
supplier = "zavodskoi"
description = "A top-mounted 9mm magazine designed for the ZI 550 machine pistol. Contains lethal rounds."
price = 60
items = list(
/obj/item/ammo_magazine/mc9mmt
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/topmounted_9mmrubber
category = "weaponry"
name = "top mounted magazine (9mm rubber)"
supplier = "zavodskoi"
description = "A top-mounted 9mm magazine designed for the ZI 550 machine pistol. Contains less-lethal rubber rounds."
price = 50
items = list(
/obj/item/ammo_magazine/mc9mmt/rubber
)
access = ACCESS_SECURITY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/tranquilizerdarts_50cal_pps
category = "security"
name = "tranquilizer darts (.50 cal PPS)"
supplier = "nanotrasen"
description = "A magazine for some kind of gun."
price = 60
items = list(
/obj/item/storage/box/tranquilizer
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/compacttungstenslug
category = "weaponry"
name = "compact tungsten slug"
supplier = "virgo"
description = "A box with several compact tungsten slugs, aimed for use in gauss carbines."
price = 125
items = list(
/obj/item/storage/box/tungstenslugs
)
access = ACCESS_ARMORY
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/franciscaapammo
category = "weaponry"
name = "francisca rotary cannon AP ammunition box"
supplier = "zavodskoi"
description = "A box of 40mm AP ammo for the francisca rotary cannon."
price = 1200
items = list(
/obj/item/ship_ammunition/grauwolf_bundle/ap
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/franciscafmjammo
category = "weaponry"
name = "francisca rotary cannon FMJ ammunition box"
supplier = "zavodskoi"
description = "A box of 40mm FMJ ammo for a Francisca-type rotary cannon."
price = 1100
items = list(
/obj/item/ship_ammunition/grauwolf_bundle
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/grauwolfapflak
category = "weaponry"
name = "grauwolf AP flak shells"
supplier = "zavodskoi"
description = "Armor-Piercing shells for a Grauwolf-type flak battery."
price = 2500
items = list(
/obj/item/ship_ammunition/grauwolf_bundle/ap
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/grauwolfheflak
category = "weaponry"
name = "grauwolf HE flak shells"
supplier = "zavodskoi"
description = "High-explosive shells for a Grauwolf-type flak battery."
price = 2200
items = list(
/obj/item/ship_ammunition/grauwolf_bundle
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/longbowcasing
category = "weaponry"
name = "longbow casing"
supplier = "zavodskoi"
description = "A casing for a 406mm warhead, designed for a Longbow-type cannon."
price = 2000
items = list(
/obj/item/ship_ammunition/longbow
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/longbowapwarhead
category = "weaponry"
name = "longbow AP warhead"
supplier = "zavodskoi"
description = "An armor-piercing 406mm warhead, designed for a Longbow-type cannon."
price = 3500
items = list(
/obj/item/warhead/longbow/ap
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/longbowepwarhead
category = "weaponry"
name = "longbow EP warhead"
supplier = "zavodskoi"
description = "A bunker-buster 406mm warhead, designed for a Longbow-type cannon."
price = 3500
items = list(
/obj/item/warhead/longbow/bunker
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/longbowhewarhead
category = "weaponry"
name = "longbow HE warhead"
supplier = "zavodskoi"
description = "A high-explosive 406mm warhead, designed for a Longbow-type cannon."
price = 3200
items = list(
/obj/item/warhead/longbow
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/highpowerlongbowprimer
category = "weaponry"
name = "high-power longbow primer"
supplier = "zavodskoi"
description = "A high-power primer for a 406mm warhead, designed for a Longbow-type cannon."
price = 2000
items = list(
/obj/item/primer/high
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/longbowwarheadprimer
category = "weaponry"
name = "longbow warhead primer"
supplier = "zavodskoi"
description = "A standard primer for a 406mm warhead, designed for a Longbow-type cannon."
price = 1200
items = list(
/obj/item/primer
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
/singleton/cargo_item/lowpowerlongbowprimer
category = "weaponry"
name = "low-power longbow primer"
supplier = "zavodskoi"
description = "A low-power primer for a 406mm warhead, designed for a Longbow-type cannon."
price = 700
items = list(
/obj/item/primer/low
)
access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -12,7 +12,7 @@
ui_auto_update = FALSE
var/page = "main" //main - Main Menu, order - Order Page, item_details - Item Details Page, tracking - Tracking Page
var/selected_category = "" // Category that is currently selected
var/selected_category = null // Category that is currently selected
var/selected_item = "" // Path of the currently selected item
var/datum/cargo_order/co
var/status_message //Status Message to be displayed to the user
@@ -34,6 +34,9 @@
data["order_value"] = co.get_value(0)
data["order_item_count"] = co.get_item_count()
if(!selected_category)
selected_category = SScargo.get_default_category()
//Pass Data for Main page
if(page == "main")
//Pass all available categories and the selected category
@@ -98,14 +101,14 @@
co.set_submitted(GetNameAndAssignmentFromId(I), usr.character_id, reason)
status_message = "Order submitted successfully. Order ID: [co.order_id] Tracking code: [co.get_tracking_code()]"
//TODO: Print a list with the order data
co = null
return TRUE
//Add item to the order list
if("add_item")
var/datum/cargo_order_item/coi = new
var/datum/cargo_item/ci = SScargo.cargo_items[params["add_item"]]
var/singleton/cargo_item/ci = SScargo.cargo_items[params["add_item"]]
if(ci)
coi.ci = ci
coi.calculate_price()
@@ -8,14 +8,15 @@
/datum/topic_command/cargo_reload/run_command(queryparams)
var/force = text2num(queryparams["force"])
if(!SScargo.get_order_count())
SScargo.load_from_sql()
if(!SScargo.load_cargo_files())
SScargo.load_cargo_files()
message_admins("Cargo has been reloaded via the API.")
statuscode = 200
response = "Cargo Reloaded from SQL."
else
if(force)
SScargo.load_from_sql()
SScargo.load_cargo_files()
message_admins("Cargo has been force-reloaded via the API. All current orders have been purged.")
statuscode = 200
response = "Cargo Force-Reloaded from SQL."
-83
View File
@@ -1,83 +0,0 @@
{
"categories": {
"security": {
"name": "security",
"display_name": "Security",
"description": "Security Items",
"icon": "person",
"price_modifier": 1
},
"engineering": {
"name": "engineering",
"display_name": "Engineering",
"description": "Engineering Items",
"icon": "wrench",
"price_modifier": 1
}
},
"suppliers": {
"nanotrasen": {
"name": "Nano Trasen",
"description": "Your default supplier.",
"tag_line": "For all your station supplies.",
"shuttle_time": 100,
"shuttle_price": 500,
"available": 1,
"price_modifier": 1
},
"einsteinengines": {
"name": "Einstein Engies",
"description": "Manufacturer of high tech engineering equipment.",
"tag_line": "Everything your engineers need and more.",
"shuttle_time": 200,
"shuttle_price": 200,
"available": 1,
"price_modifier": 1
},
"weaponsco": {
"name": "Weapons Co",
"description": "Mass producing weapons. Nothing too fancy, but cheap.",
"tag_line": "Need to shoot stuff badly ? - We got you covered.",
"shuttle_time": 300,
"shuttle_price": 300,
"available": 1,
"price_modifier": 1
}
},
"items": {
".45 Pistol": {
"name": ".45 Pistol",
"supplier": "weaponsco",
"description": "A standard sidearm, found pretty much everywhere humans are. Uses .45 rounds.",
"categories": ["medical", "security", "engineering", "civilian"],
"price": 100,
"items": {
".45 Pistol": {
"path": "/obj/item/gun/projectile/sec",
"vars": []
}
},
"access": 3,
"container_type": "crate",
"groupable": 1,
"item_mul": 1
},
"/obj/item/clothing/gloves/yellow": {
"name": "Insulated Gloves",
"supplier": "einsteinengines",
"description": "Rubber Insulated Gloves",
"categories": ["engineering"],
"price": 20,
"items": {
"Insulated Gloves": {
"path": "/obj/item/clothing/gloves/yellow",
"vars": []
}
},
"access": 10,
"container_type": "crate",
"groupable": 1,
"item_mul": 2
}
}
}
+62
View File
@@ -0,0 +1,62 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# - (fixes bugs)
# wip
# - (work in progress)
# qol
# - (quality of life)
# soundadd
# - (adds a sound)
# sounddel
# - (removes a sound)
# rscadd
# - (adds a feature)
# rscdel
# - (removes a feature)
# imageadd
# - (adds an image or sprite)
# imagedel
# - (removes an image or sprite)
# spellcheck
# - (fixes spelling or grammar)
# experiment
# - (experimental change)
# balance
# - (balance changes)
# code_imp
# - (misc internal code change)
# refactor
# - (refactors code)
# config
# - (makes a change to the config files)
# admin
# - (makes changes to administrator tools)
# server
# - (miscellaneous changes to server)
#################################
# Your name.
author: nauticall
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
changes:
- refactor: "Moves the data containing cargo items (i.e. the ones you order from ops and get in the cargo shuttle) from the online database to the codebase."
- refactor: "Refactors cargo items to use singletons instead of datums for cargo_supplier, cargo_category, and cargo_item. Multiple-instnace things like cargo_orders, etc. still use datums."
- bugfix: "Fixed a bunch of strange discrepancies in categories, suppliers, and pricing for various cargo items."
- bugfix: "Clicking the 'Details' button on the Cargo Order app now actually gives you details instead of bluescreening."
- qol: "Added some UI elements to the Cargo Order app to make it prettier and show tooltips on suppliers. Also now has search functionality."
+128 -79
View File
@@ -1,6 +1,6 @@
import { BooleanLike } from '../../common/react';
import { useBackend, useLocalState } from '../backend';
import { Box, Button, Icon, LabeledList, Section, Table, Tabs } from '../components';
import { Box, Button, Icon, LabeledList, Section, Table, Tabs, Tooltip, Stack, Input } from '../components';
import { NtosWindow } from '../layouts';
import { sanitizeText } from '../sanitize';
@@ -34,6 +34,7 @@ type Item = {
id: number;
supplier: string;
supplier_data: Supplier;
access: string;
};
type Supplier = {
@@ -83,9 +84,9 @@ export const CargoOrder = (props, context) => {
const { act, data } = useBackend<CargoData>(context);
return (
<NtosWindow resizable>
<NtosWindow resizable width={800} height={800}>
<NtosWindow.Content scrollable>
<Tabs fitted>
<Tabs fluid>
<Tabs.Tab
onClick={() => act('page', { page: 'main' })}
selected={data.page === 'main'}>
@@ -110,85 +111,137 @@ export const MainPage = (props, context) => {
'details',
false
);
const [searchTerm, setSearchTerm] = useLocalState<string>(
context,
`searchTerm`,
``
);
return (
<Section>
<Stack vertical>
<Section title={'Welcome, ' + data.username}>
<Box fontSize={1.3} bold>
Order
</Box>
<LabeledList>
<LabeledList.Item label="Items">
{data.order_item_count}
</LabeledList.Item>
<LabeledList.Item label="Price">
{data.order_value}
</LabeledList.Item>
{data.status_message && (
<LabeledList.Item label="Status">
{data.status_message}
</LabeledList.Item>
)}
</LabeledList>
<Box py={1}>
<Button
content="Details"
icon="shopping-cart"
onClick={() => setDetails(!details)}
/>
<Button
content="Clear"
color="red"
icon="stop"
onClick={() => act('clear_order')}
/>
<Button
content="Submit Order"
icon="check"
onClick={() => act('submit_order')}
/>
</Box>
{details && <ShowDetails />}
</Section>
<Section title="Catalog">
<Tabs>
{data.cargo_categories.map((category) => (
<Tabs.Tab
key={category.name}
selected={data.selected_category === category.name}
onClick={() =>
act('select_category', { select_category: category.name })
}>
<Icon name={category.icon} /> {category.display_name}
</Tabs.Tab>
))}
</Tabs>
{data.category_items.map((item) => (
<Section
title={item.name}
key={item.name}
buttons={
<Button
content={item.price_adjusted + '电'}
disabled={
!item.supplier_data.available && item.price_adjusted <= 0
}
icon="shopping-basket"
onClick={
() => act('add_item', { add_item: item.id.toString() }) // don't ask why this is the way it is
}
/>
}>
{item.description}
<Stack vertical>
<Stack.Item fontSize={1.4} bold>
Your Basket
</Stack.Item>
<Stack.Item>
<LabeledList>
<LabeledList.Item label="Shipped By">
{item.supplier_data.name}
<LabeledList.Item label="Items">
{data.order_item_count}
</LabeledList.Item>
<LabeledList.Item label="Price">
{data.order_value}
</LabeledList.Item>
{data.status_message && (
<LabeledList.Item label="Status">
{data.status_message}
</LabeledList.Item>
)}
</LabeledList>
</Section>
))}
</Stack.Item>
<Stack.Item>
<Button
content="Details"
icon="list"
onClick={() => setDetails(!details)}
/>
<Button
content="Clear"
color="red"
icon="stop"
onClick={() => act('clear_order')}
/>
<Button
content="Submit Order"
icon="check"
onClick={() => act('submit_order')}
/>
</Stack.Item>
{details && <ShowDetails />}
</Stack>
</Section>
</Section>
<Section
title="Catalog"
buttons={
<Input
autoFocus
autoSelect
placeholder="Search by name"
maxLength={512}
onInput={(e, value) => {
setSearchTerm(value);
}}
value={searchTerm}
/>
}
/>
<Stack>
{/* Left Side: Tabs Section */}
<Stack.Item width={'175px'}>
<Tabs vertical>
{data.cargo_categories.map((category) => (
<Tabs.Tab
key={category.name}
selected={data.selected_category === category.name}
onClick={() =>
act('select_category', { select_category: category.name })
}>
<Icon name={category.icon} /> {category.display_name}
</Tabs.Tab>
))}
</Tabs>
</Stack.Item>
{/* Right Side: Content Section */}
<Stack.Item grow>
{data.category_items
.filter(
(c) =>
c.name?.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1
)
.map((item) => (
<Section
title={item.name}
key={item.name}
buttons={
<Button
content={item.price_adjusted + '电'}
disabled={
!item.supplier_data.available && item.price_adjusted <= 0
}
tooltip="Add to Basket"
icon="shopping-basket"
onClick={() =>
act('add_item', { add_item: item.name.toString() })
}
/>
}>
<Stack vertical>
<Stack.Item>{item.description}</Stack.Item>
<Stack.Item>
<LabeledList>
<Tooltip content={item.supplier_data.description}>
<LabeledList.Item label="Shipped By">
{item.supplier_data.name}
</LabeledList.Item>
</Tooltip>
<LabeledList.Item label="Required Access">
{item.access !== 'none' ? (
<Tooltip content="This item has restricted access.">
<Icon name="lock" /> {item.access}
</Tooltip>
) : (
<>None</>
)}
</LabeledList.Item>
</LabeledList>
</Stack.Item>
</Stack>
</Section>
))}
</Stack.Item>
</Stack>
</Stack>
);
};
@@ -200,23 +253,19 @@ export const ShowDetails = (props, context) => {
<Table>
<Table.Row header>
<Table.Cell>Name</Table.Cell>
<Table.Cell>Supplier</Table.Cell>
<Table.Cell>Price</Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>Handling Fee</Table.Cell>
<Table.Cell>Operations</Table.Cell>
<Table.Cell>{data.handling_fee} </Table.Cell>
</Table.Row>
<Table.Row>
<Table.Cell>Crate Fee</Table.Cell>
<Table.Cell>Operations</Table.Cell>
<Table.Cell>{data.crate_fee} </Table.Cell>
</Table.Row>
{data.order_items.map((item) => (
<Table.Row key={item.name}>
<Table.Cell>{item.name}</Table.Cell>
<Table.Cell>{item.supplier_data.name}</Table.Cell>
<Table.Cell>{item.price} </Table.Cell>
</Table.Row>
))}