12/21 modernizations from TG live (#103)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes
This commit is contained in:
Poojawa
2016-12-22 03:57:55 -06:00
committed by GitHub
parent f5e143a452
commit cf59ac1c3d
2215 changed files with 707445 additions and 87041 deletions
+7 -6
View File
@@ -8,7 +8,6 @@
var/safety_warning = "For safety reasons the automated supply shuttle \
cannot transport live organisms, classified nuclear weaponry or \
homing beacons."
light_color = LIGHT_COLOR_BROWN
/obj/machinery/computer/cargo/request
name = "supply request console"
@@ -62,7 +61,7 @@
"name" = P.group,
"packs" = list()
)
if((P.hidden && !emagged) || (P.contraband && !contraband))
if((P.hidden && !emagged) || (P.contraband && !contraband) || (P.special && !P.special_enabled))
continue
data["supplies"][P.group]["packs"] += list(list(
"name" = P.name,
@@ -97,7 +96,7 @@
return
switch(action)
if("send")
if(SSshuttle.supply.canMove())
if(!SSshuttle.supply.canMove())
say(safety_warning)
return
if(SSshuttle.supply.getDockedId() == "supply_home")
@@ -114,10 +113,11 @@
if("loan")
if(!SSshuttle.shuttle_loan)
return
if(SSshuttle.supply.canMove())
say(safety_warning)
else if(SSshuttle.supply.mode != SHUTTLE_IDLE)
return
else if(SSshuttle.supply.mode == SHUTTLE_IDLE)
else if(SSshuttle.supply.getDockedId() != "supply_away")
return
else
SSshuttle.shuttle_loan.loan_shuttle()
say("The supply shuttle has been loaned to Centcom.")
. = TRUE
@@ -198,3 +198,4 @@
status_signal.data["command"] = command
frequency.post_signal(src, status_signal)
+1 -1
View File
@@ -4,7 +4,7 @@
icon_state = "export_scanner"
item_state = "radio"
flags = NOBLUDGEON
w_class = 2
w_class = WEIGHT_CLASS_SMALL
siemens_coefficient = 1
var/obj/machinery/computer/cargo/cargo_console = null
@@ -81,23 +81,11 @@
unit_name = "pipe dispenser"
export_types = list(/obj/machinery/pipedispenser)
/datum/export/large/singularitygen
cost = 4000 // If you have one left after engine setup, sell it.
unit_name = "unused gravitational singularity generator"
export_types = list(/obj/machinery/the_singularitygen)
include_subtypes = FALSE
/datum/export/large/singularitygen/tesla
unit_name = "unused energy ball generator"
export_types = list(/obj/machinery/the_singularitygen/tesla)
/datum/export/large/supermatter
cost = 9000
unit_name = "supermatter shard"
export_types = list(/obj/machinery/power/supermatter_shard)
// Misc
/datum/export/large/iv
cost = 300
+6
View File
@@ -73,6 +73,12 @@
material_id = MAT_SILVER
message = "cm3 of silver"
// Titanium.
/datum/export/material/titanium
cost = 250
material_id = MAT_TITANIUM
message = "cm3 of titanium"
// Metal. Common building material.
/datum/export/material/metal
message = "cm3 of metal"
+12 -6
View File
@@ -7,13 +7,19 @@
/datum/export/tech/get_cost(obj/O)
var/obj/item/weapon/disk/tech_disk/D = O
if(!D.stored)
return 0
var/datum/tech/tech = D.stored
return ..() * tech.getCost(techLevels[tech.id])
var/cost = 0
for(var/V in D.tech_stored)
if(!V)
continue
var/datum/tech/tech = V
cost += tech.getCost(techLevels[tech.id])
return ..() * cost
/datum/export/tech/sell_object(obj/O)
..()
var/obj/item/weapon/disk/tech_disk/D = O
var/datum/tech/tech = D.stored
techLevels[tech.id] = tech.level
for(var/V in D.tech_stored)
if(!V)
continue
var/datum/tech/tech = V
techLevels[tech.id] = tech.level
+3 -3
View File
@@ -31,6 +31,6 @@
if(!cost)
return 0
var/potDiff = max(S.potency - discoveredPlants[S.type], 0)
return round(..() * potDiff)
var/potDiff = (S.potency - discoveredPlants[S.type])
return round(..() * potDiff)
+4 -4
View File
@@ -19,7 +19,7 @@
/datum/export/weapon/taser
cost = 250
unit_name = "advanced taser"
export_types = list(/obj/item/weapon/gun/energy/gun/advtaser)
export_types = list(/obj/item/weapon/gun/energy/e_gun/advtaser)
/datum/export/weapon/laser
cost = 250
@@ -34,18 +34,18 @@
/datum/export/weapon/energy_gun
cost = 900
unit_name = "energy gun"
export_types = list(/obj/item/weapon/gun/energy/gun)
export_types = list(/obj/item/weapon/gun/energy/e_gun)
/datum/export/weapon/wt550
cost = 1400
unit_name = "WT-550 automatic rifle"
export_types = list(/obj/item/weapon/gun/projectile/automatic/wt550)
export_types = list(/obj/item/weapon/gun/ballistic/automatic/wt550)
/datum/export/weapon/shotgun
cost = 350
unit_name = "combat shotgun"
export_types = list(/obj/item/weapon/gun/projectile/shotgun/automatic/combat)
export_types = list(/obj/item/weapon/gun/ballistic/shotgun/automatic/combat)
/datum/export/weapon/flashbang
+242 -40
View File
@@ -5,16 +5,21 @@
var/contraband = FALSE
var/cost = 700 // Minimum cost, or infinite points are possible.
var/access = FALSE
var/access_any = FALSE
var/list/contains = null
var/crate_name = "crate"
var/crate_type = /obj/structure/closet/crate
var/dangerous = FALSE // Should we message admins?
var/special = FALSE //Event/Station Goals/Admin enabled packs
var/special_enabled = FALSE
/datum/supply_pack/proc/generate(turf/T)
var/obj/structure/closet/crate/C = new crate_type(T)
C.name = crate_name
if(access)
C.req_access = list(access)
if(access_any)
C.req_one_access = access_any
fill(C)
@@ -31,6 +36,19 @@
/datum/supply_pack/emergency
group = "Emergency"
/datum/supply_pack/emergency/vehicle
name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN
cost = 2000
contraband = TRUE
contains = list(/obj/vehicle/atv,
/obj/item/key,
/obj/item/clothing/suit/jacket/leather/overcoat,
/obj/item/clothing/gloves/color/black,
/obj/item/clothing/head/soft,
/obj/item/clothing/mask/bandana/skull)//so you can properly #cargoniabikergang
crate_name = "Biker Kit"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/emergency/equipment
name = "Emergency Equipment"
@@ -101,7 +119,12 @@
contains = list(/obj/item/clothing/head/radiation,
/obj/item/clothing/head/radiation,
/obj/item/clothing/suit/radiation,
/obj/item/clothing/suit/radiation)
/obj/item/clothing/suit/radiation,
/obj/item/device/geiger_counter,
/obj/item/device/geiger_counter,
/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass,
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass)
crate_name = "radiation protection crate"
crate_type = /obj/structure/closet/crate/radiation
@@ -147,11 +170,26 @@
name = "NULL_ENTRY"
hidden = TRUE
cost = 14000
contains = list(/obj/item/weapon/storage/box/syndicate)
contains = list()
crate_name = "emergency crate"
crate_type = /obj/structure/closet/crate/internals
dangerous = TRUE
/datum/supply_pack/emergency/syndicate/fill(obj/structure/closet/crate/C)
var/crate_value = 50
var/list/uplink_items = get_uplink_items(ticker.mode)
while(crate_value)
var/category = pick(uplink_items)
var/item = pick(uplink_items[category])
var/datum/uplink_item/I = uplink_items[category][item]
if(!I.surplus || prob(100 - I.surplus))
continue
if(crate_value < I.cost)
continue
crate_value -= I.cost
new I.item(C)
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Security ////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
@@ -205,7 +243,7 @@
/datum/supply_pack/security/laser
name = "Lasers Crate"
cost = 1500
cost = 2000
contains = list(/obj/item/weapon/gun/energy/laser,
/obj/item/weapon/gun/energy/laser,
/obj/item/weapon/gun/energy/laser)
@@ -213,15 +251,15 @@
/datum/supply_pack/security/taser
name = "Taser Crate"
cost = 1500
contains = list(/obj/item/weapon/gun/energy/gun/advtaser,
/obj/item/weapon/gun/energy/gun/advtaser,
/obj/item/weapon/gun/energy/gun/advtaser)
cost = 3000
contains = list(/obj/item/weapon/gun/energy/e_gun/advtaser,
/obj/item/weapon/gun/energy/e_gun/advtaser,
/obj/item/weapon/gun/energy/e_gun/advtaser)
crate_name = "taser crate"
/datum/supply_pack/security/disabler
name = "Disabler Crate"
cost = 1000
cost = 1500
contains = list(/obj/item/weapon/gun/energy/disabler,
/obj/item/weapon/gun/energy/disabler,
/obj/item/weapon/gun/energy/disabler)
@@ -307,10 +345,10 @@
/datum/supply_pack/security/armory/ballistic
name = "Combat Shotguns Crate"
cost = 2000
contains = list(/obj/item/weapon/gun/projectile/shotgun/automatic/combat,
/obj/item/weapon/gun/projectile/shotgun/automatic/combat,
/obj/item/weapon/gun/projectile/shotgun/automatic/combat,
cost = 4000
contains = list(/obj/item/weapon/gun/ballistic/shotgun/automatic/combat,
/obj/item/weapon/gun/ballistic/shotgun/automatic/combat,
/obj/item/weapon/gun/ballistic/shotgun/automatic/combat,
/obj/item/weapon/storage/belt/bandolier,
/obj/item/weapon/storage/belt/bandolier,
/obj/item/weapon/storage/belt/bandolier)
@@ -319,8 +357,8 @@
/datum/supply_pack/security/armory/energy
name = "Energy Guns Crate"
cost = 2500
contains = list(/obj/item/weapon/gun/energy/gun,
/obj/item/weapon/gun/energy/gun)
contains = list(/obj/item/weapon/gun/energy/e_gun,
/obj/item/weapon/gun/energy/e_gun)
crate_name = "energy gun crate"
crate_type = /obj/structure/closet/crate/secure/plasma
@@ -342,8 +380,8 @@
/datum/supply_pack/security/armory/wt550
name = "WT-550 Auto Rifle Crate"
cost = 3500
contains = list(/obj/item/weapon/gun/projectile/automatic/wt550,
/obj/item/weapon/gun/projectile/automatic/wt550)
contains = list(/obj/item/weapon/gun/ballistic/automatic/wt550,
/obj/item/weapon/gun/ballistic/automatic/wt550)
crate_name = "auto rifle crate"
/datum/supply_pack/security/armory/wt550ammo
@@ -390,7 +428,7 @@
/datum/supply_pack/security/firingpins
name = "Standard Firing Pins Crate"
cost = 1000
cost = 2000
contains = list(/obj/item/weapon/storage/box/firingpins,
/obj/item/weapon/storage/box/firingpins)
crate_name = "firing pins crate"
@@ -435,6 +473,35 @@
crate_name = "fuel tank crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/engineering/oxygen
name = "Oxygen Canister"
cost = 1500
contains = list(/obj/machinery/portable_atmospherics/canister/oxygen)
crate_name = "oxygen canister crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/engineering/nitrogen
name = "Nitrogen Canister"
cost = 2000
contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen)
crate_name = "nitrogen canister crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/engineering/carbon_dio
name = "Carbon Dioxide Canister"
cost = 3000
contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide)
crate_name = "carbon dioxide canister crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/science/nitrous_oxide_canister
name = "Nitrous Oxide Canister"
cost = 3000
access = access_atmospherics
contains = list(/obj/machinery/portable_atmospherics/canister/nitrous_oxide)
crate_name = "nitrous oxide canister crate"
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/engineering/tools
name = "Toolbox Crate"
contains = list(/obj/item/weapon/storage/toolbox/electrical,
@@ -607,6 +674,34 @@
crate_type = /obj/structure/closet/crate/secure/engineering
dangerous = TRUE
/datum/supply_pack/engineering/engine/am_shielding
name = "Antimatter Shielding Crate"
cost = 2000
contains = list(/obj/item/device/am_shielding_container,
/obj/item/device/am_shielding_container,
/obj/item/device/am_shielding_container,
/obj/item/device/am_shielding_container,
/obj/item/device/am_shielding_container,
/obj/item/device/am_shielding_container,
/obj/item/device/am_shielding_container,
/obj/item/device/am_shielding_container,
/obj/item/device/am_shielding_container,
/obj/item/device/am_shielding_container)//10 shields: 3x3 containment and a core
crate_name = "antimatter shielding crate"
/datum/supply_pack/engineering/engine/am_core
name = "Antimatter Control Crate"
cost = 5000
contains = list(/obj/machinery/power/am_control_unit)
crate_name = "antimatter control crate"
/datum/supply_pack/engineering/engine/am_jar
name = "Antimatter Containment Jar Crate"
cost = 2000
contains = list(/obj/item/weapon/am_containment,
/obj/item/weapon/am_containment)
crate_name = "antimatter jar crate"
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Medical /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
@@ -812,6 +907,24 @@
crate_type = /obj/structure/closet/crate/secure
dangerous = TRUE
/datum/supply_pack/science/bz_canister
name = "BZ Canister"
cost = 2000
access_any = list(access_rd, access_atmospherics)
contains = list(/obj/machinery/portable_atmospherics/canister/bz)
crate_name = "bz canister crate"
crate_type = /obj/structure/closet/crate/secure
dangerous = TRUE
/datum/supply_pack/science/freon_canister
name = "Freon Canister"
cost = 6000
access_any = list(access_rd, access_atmospherics)
contains = list(/obj/machinery/portable_atmospherics/canister/freon)
crate_name = "freon canister crate"
crate_type = /obj/structure/closet/crate/secure
dangerous = TRUE
/datum/supply_pack/science/research
name = "Machine Prototype Crate"
cost = 8000
@@ -820,6 +933,16 @@
crate_name = "machine prototype crate"
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/science/tablets
name = "Tablet Crate"
cost = 5000
contains = list(/obj/item/device/modular_computer/tablet/preset/cargo,
/obj/item/device/modular_computer/tablet/preset/cargo,
/obj/item/device/modular_computer/tablet/preset/cargo,
/obj/item/device/modular_computer/tablet/preset/cargo,
/obj/item/device/modular_computer/tablet/preset/cargo)
crate_name = "tablet crate"
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Organic /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
@@ -909,7 +1032,7 @@
name = "Corgi Crate"
cost = 5000
contains = list(/mob/living/simple_animal/pet/dog/corgi,
/obj/item/clothing/tie/petcollar)
/obj/item/clothing/neck/petcollar)
crate_name = "corgi crate"
/datum/supply_pack/organic/critter/corgi/generate()
@@ -923,7 +1046,7 @@
name = "Cat Crate"
cost = 5000 //Cats are worth as much as corgis.
contains = list(/mob/living/simple_animal/pet/cat,
/obj/item/clothing/tie/petcollar,
/obj/item/clothing/neck/petcollar,
/obj/item/toy/cattoy)
crate_name = "cat crate"
@@ -938,14 +1061,14 @@
name = "Pug Crate"
cost = 5000
contains = list(/mob/living/simple_animal/pet/dog/pug,
/obj/item/clothing/tie/petcollar)
/obj/item/clothing/neck/petcollar)
crate_name = "pug crate"
/datum/supply_pack/organic/critter/fox
name = "Fox Crate"
cost = 5000
contains = list(/mob/living/simple_animal/pet/fox,
/obj/item/clothing/tie/petcollar)
/obj/item/clothing/neck/petcollar)
crate_name = "fox crate"
/datum/supply_pack/organic/critter/butterfly
@@ -1024,7 +1147,9 @@
/obj/item/seeds/amanita,
/obj/item/seeds/reishi,
/obj/item/seeds/banana,
/obj/item/seeds/eggplant/eggy)
/obj/item/seeds/eggplant/eggy,
/obj/item/seeds/random,
/obj/item/seeds/random)
crate_name = "exotic seeds crate"
/datum/supply_pack/organic/hydroponics/beekeeping_fullkit
@@ -1036,7 +1161,8 @@
/obj/item/honey_frame,
/obj/item/queen_bee/bought,
/obj/item/clothing/head/beekeeper_head,
/obj/item/clothing/suit/beekeeper_suit)
/obj/item/clothing/suit/beekeeper_suit,
/obj/item/weapon/melee/flyswatter)
crate_name = "beekeeping starter crate"
/datum/supply_pack/organic/hydroponics/beekeeping_suits
@@ -1139,6 +1265,20 @@
/datum/supply_pack/misc
group = "Miscellaneous Supplies"
/datum/supply_pack/misc/minerkit
name = "Shaft Miner Starter Kit"
cost = 2500
access = access_qm
contains = list(/obj/item/weapon/pickaxe/mini,
/obj/item/clothing/glasses/meson,
/obj/item/device/t_scanner/adv_mining_scanner/lesser,
/obj/item/device/radio/headset/headset_cargo/mining,
/obj/item/weapon/storage/bag/ore,
/obj/item/clothing/suit/hooded/explorer,
/obj/item/clothing/mask/gas/explorer)
crate_name = "shaft miner starter kit"
crate_type = /obj/structure/closet/crate/secure
/datum/supply_pack/misc/mule
name = "MULEbot Crate"
cost = 2000
@@ -1173,6 +1313,13 @@
crate_name = "high-capacity water tank crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/misc/water_vapor
name = "Water Vapor Canister"
cost = 2500
contains = list(/obj/machinery/portable_atmospherics/canister/water_vapor)
crate_name = "water vapor canister crate"
crate_type = /obj/structure/closet/crate/large
/datum/supply_pack/misc/lasertag
name = "Laser Tag Crate"
cost = 1500
@@ -1198,7 +1345,7 @@
/datum/supply_pack/misc/lasertag/pins
name = "Laser Tag Firing Pins Crate"
cost = 2000
cost = 3000
contraband = TRUE
contains = list(/obj/item/weapon/storage/box/lasertagpins)
crate_name = "laser tag crate"
@@ -1408,7 +1555,7 @@
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims,
/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori,
/obj/item/seeds/ambrosia/deus,
/obj/item/clothing/tie/dope_necklace)
/obj/item/clothing/neck/necklace/dope)
crate_name = "crate"
/datum/supply_pack/misc/randomised/toys
@@ -1427,7 +1574,7 @@
/obj/item/toy/carpplushie,
/obj/item/weapon/coin/antagtoken,
/obj/item/stack/tile/fakespace/loaded,
/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,
/obj/item/weapon/gun/ballistic/shotgun/toy/crossbow,
/obj/item/toy/redbutton)
crate_name = "toy crate"
@@ -1451,9 +1598,9 @@
/obj/item/clothing/under/lawyer/blacksuit,
/obj/item/clothing/suit/toggle/lawyer/black,
/obj/item/clothing/tie/waistcoat,
/obj/item/clothing/tie/blue,
/obj/item/clothing/tie/red,
/obj/item/clothing/tie/black,
/obj/item/clothing/neck/tie/blue,
/obj/item/clothing/neck/tie/red,
/obj/item/clothing/neck/tie/black,
/obj/item/clothing/head/bowler,
/obj/item/clothing/head/fedora,
/obj/item/clothing/head/flatcap,
@@ -1473,22 +1620,22 @@
/datum/supply_pack/misc/foamforce
name = "Foam Force Crate"
cost = 1000
contains = list(/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy,
/obj/item/weapon/gun/projectile/shotgun/toy)
contains = list(/obj/item/weapon/gun/ballistic/shotgun/toy,
/obj/item/weapon/gun/ballistic/shotgun/toy,
/obj/item/weapon/gun/ballistic/shotgun/toy,
/obj/item/weapon/gun/ballistic/shotgun/toy,
/obj/item/weapon/gun/ballistic/shotgun/toy,
/obj/item/weapon/gun/ballistic/shotgun/toy,
/obj/item/weapon/gun/ballistic/shotgun/toy,
/obj/item/weapon/gun/ballistic/shotgun/toy)
crate_name = "foam force crate"
/datum/supply_pack/misc/foamforce/bonus
name = "Foam Force Pistols Crate"
contraband = TRUE
cost = 4000
contains = list(/obj/item/weapon/gun/projectile/automatic/toy/pistol,
/obj/item/weapon/gun/projectile/automatic/toy/pistol,
contains = list(/obj/item/weapon/gun/ballistic/automatic/toy/pistol,
/obj/item/weapon/gun/ballistic/automatic/toy/pistol,
/obj/item/ammo_box/magazine/toy/pistol,
/obj/item/ammo_box/magazine/toy/pistol)
crate_name = "foam force crate"
@@ -1506,4 +1653,59 @@
/obj/item/weapon/canvas/twentythreeXtwentythree,
/obj/item/toy/crayon/rainbow,
/obj/item/toy/crayon/rainbow)
crate_name= "art supply crate"
crate_name= "art supply crate"
/datum/supply_pack/misc/bsa
name = "Bluespace Artillery Parts"
cost = 15000
special = TRUE
contains = list(/obj/item/weapon/circuitboard/machine/bsa/front,
/obj/item/weapon/circuitboard/machine/bsa/middle,
/obj/item/weapon/circuitboard/machine/bsa/back,
/obj/item/weapon/circuitboard/machine/computer/bsa_control
)
crate_name= "bluespace artillery parts crate"
/datum/supply_pack/misc/dna_vault
name = "DNA Vault Parts"
cost = 12000
special = TRUE
contains = list(
/obj/item/weapon/circuitboard/machine/dna_vault
)
crate_name= "dna vault parts crate"
/datum/supply_pack/misc/dna_probes
name = "DNA Vault Samplers"
cost = 3000
special = TRUE
contains = list(/obj/item/device/dna_probe,
/obj/item/device/dna_probe,
/obj/item/device/dna_probe,
/obj/item/device/dna_probe,
/obj/item/device/dna_probe
)
crate_name= "dna samplers crate"
/datum/supply_pack/misc/shield_sat
name = "Shield Generator Satellite"
cost = 3000
special = TRUE
contains = list(
/obj/machinery/satellite/meteor_shield,
/obj/machinery/satellite/meteor_shield,
/obj/machinery/satellite/meteor_shield
)
crate_name= "shield sat crate"
/datum/supply_pack/misc/shield_sat_control
name = "Shield System Control Board"
cost = 5000
special = TRUE
contains = list(
/obj/item/weapon/circuitboard/machine/computer/sat_control
)
crate_name= "shield control board crate"