Skip to content
Werner edited this page Nov 5, 2022 · 1 revision

Background Info

Cargo Items on Aurora are loaded in one of two ways:

  • Via a JSON file in the config folder
  • Via the database.

On the live server the cargo items are loaded via the Database. On your local test-server you can use the config/example/cargo.json file to test cargo items.

Each "cargo item" can contain one or more individual items. For example, you can create a "space suit set" item that contains both the space suit and the helmet. Details about that below.

Contributing cargo items

As cargo items are loaded via the DB it is not possible to add/edit cargo items by editing the code. If you would like items to be added to cargo, fill out the following .csv file and send it to a Head-Admin/-Developer

The following is a example that shows how to add Inaprovaline as a chem bottle and as a chemical dispenser cartridge.

name;supplier;description;categories;price;items;item_mul;access;container_type;groupable;order_by;error_message
inaprovaline bottle;nt;A small bottle. Contains inaprovaline - used to stabilize patients.;["medical"];25;{"inaprovaline bottle":{"path":"/obj/item/reagent_containers/glass/bottle/inaprovaline","vars":[]}};1;0;crate;1;\N;\N
chemical cartridge-inaprovaline;iac;A square plastic cartridge, this one is filled with 500 units of liquid.;["medical"];200;{"chemical cartridge-inaprovaline":{"path":"/obj/item/reagent_containers/chem_disp_cartridge/inaprov","vars":[]}};1;5;crate;1;\N;\N

This CSV contains the following fields:

Name:

The name that should be displayed in the cargo order application

Supplier:

The short name of the supplier that supplies the item.

You can create the same item multiple times with the same name and a different supplier. With that it is possible to create corporate branded-versions of the same item.

Currently the following suppliers exist:

short_name name description tag_line
nt NanoTrasen Your default supplier Standard NT supplies. Quality assumed, but not garunteed.
hpi Haephaestus Mass produced engineering robotics and security supplies. We're the Rockefeller of space!
zhu Zeng-Hu Medical and robotics supplies. We're not saying we sell organs, but that's basically one of our services.
een Eckhart's Energy Engineering and security supplies. We do more than engine repair!
get Getmore Products Hydroponic and service supplies. Need supplies for work or home? Get 'em here!
arz Arizi Guild Unathi wares for Unathi clients. Not Your Ancestors Wine!
blm BLAM! Products Service and Mining products. BLAM The mess away! (Warning: This tag-line does not promote, encourage, condone, demand, or permit assault with BLAM! based products.)
iac Interstellar Aid Corps Medical products. We'd be the Red Cross in space, but that would violate copyright.
zsc Zharrkov Shipping Company Tajara xenowear, outdated security supplies. Exporting the Revolution!
vfc Virgo Freight Carriers Service and miscellaneous products. Bringing home the groceries.
bis Bishop Cybernetics State of the art cybernetics and augmentation suppliers. Without compromise.
xmg Xion Manufacturing Group Industrial goods and cybernetics manufacturer A new world awaits
npi Zavodskoi Interstellar Biological products and cybernetics supplier. Genetic perfection.
zra ZoRa Hive New and "hip" energy drinks. Selling redundancy.

Description:

The description is displayed in the cargo order application and is used to describe what that item is.

Caregories:

The Categories are a JSON-Formated List of the categories the item should appear in. If you want the item to appear in one category, you would use ["category-name"] If you want the item to appear in multple categories, you would use ["category-name-1","category-name-2"]

Currently the following Categories exist:

name display_name description
engineering Engineering Engineering Items
security Security Security Items
medical Medical Medical Items
hydroponics Hydroponics Hydroponic Items
supply Supply General Supply Items
hospitality Hospitality Food, Drinks
science Science Toys for Nerds
operations Operations Items required for station operation
mining Mining Mining Items

Additional categories can be created if needed.

Price:

The price of that item without shuttle/handling-fee

Items:

This row contains the actual items that should be included in the "cargo item". The items are formatted in json as follows. Not that the following example uses # To prefix a comment. THIS IS NOT STANDARD JSON AND NEEDS TO BE REMOVED.

When editing the CSV file, you need to minify the JSON before you use it. -> There are online tools for that.

The key in the json is the name of the actual item that should be displayed on the shipping manifest. The variable path contains the path of the ingame item path of the item that should be added. The variable vars can be used to modify any variable of the item that is spawned in.

Example: Single Item (Proto-Human)

{"A brain dead, generic human clone":{"path":"/mob/living/carbon/human","vars":[]}}

Example: Multiple Items (Janitorial Resupply Set; In JSON Pretty Print)

{
	"janitorial cart": {
		"path": "/obj/structure/janitorialcart",
		"vars": []
	},
	"mop bucket": {
		"path": "/obj/structure/mopbucket",
		"vars": []
	},
	"mop": {
		"path": "/obj/item/mop",
		"vars": []
	},
	"trash bag": {
		"path": "/obj/item/storage/bag/trash",
		"vars": []
	},
	"space cleaner": {
		"path": "/obj/item/reagent_containers/spray/cleaner",
		"vars": []
	},
	"rag": {
		"path": "/obj/item/reagent_containers/glass/rag",
		"vars": []
	},
	"wet floor sign 1": {
		"path": "/obj/item/clothing/suit/caution",
		"vars": []
	},
	"wet floor sign 2": {
		"path": "/obj/item/clothing/suit/caution",
		"vars": []
	},
	"wet floor sign 3": {
		"path": "/obj/item/clothing/suit/caution",
		"vars": []
	},
	"cleaner grenade 1": {
		"path": "/obj/item/grenade/chem_grenade/cleaner",
		"vars": []
	},
	"cleaner grenade 2": {
		"path": "/obj/item/grenade/chem_grenade/cleaner",
		"vars": []
	},
	"cleaner grenade 3": {
		"path": "/obj/item/grenade/chem_grenade/cleaner",
		"vars": []
	},
	"soap": {
		"path": "/obj/item/soap/nanotrasen",
		"vars": []
	}
}

item_mul:

Item_mul is a simple multiplicator that can be used to add more of a single item to a set of items.

access:

Access is the numerical access level required for the item. If multiple cargo items with a different access level are ordered, then all of the access levels are required to access the shipping container.

container_type:

The container_type determines the container in which the items should be shipped. Currently the following container types exist:

container_type description item_limit
crate Items are shipped in a /obj/structure/closet/crate or /obj/structure/closet/crate/secure if access is not 0 40
freezer Items are shipped in a /obj/structure/closet/crate/freezer 40
box Items are shipped in a /obj/structure/largecrate or /obj/structure/closet/crate/secure/large if access is not 0 5
bodybag Items are shipped in a /obj/structure/closet/body_bag 1

groupaable:

This is a binary flag (0 or 1) and is used to determine if the item can be grouped together with other items in one order. The following conditions exist for grouping items together in one order:

  • They need to be from the same supplier
  • They need to use the same container_type
  • groupable must be set to 1 on all items
  • Te maximum item limit for a container must not be exceeded.

Standards and Guidelines

A collection of standards and guidelines applied to the codebase.

Common API Documentation

Documentation regarding common APIs which speed up feature implementation and should be known by all coders.

Less Common APIs

Documentation for less used APIs that are not often needed.

Subsystems

Documentation regarding our implementation of StonedMC (SMC).

Decrepit

Decrepit or unused systems.

  • Dynamic Maps (Not to be confused with the newer away mission implementation.)
Clone this wiki locally