Files
Bubberstation/code/game/objects/items/storage/boxes/science_boxes.dm
r3dj4ck0424 23929b39b6 Adds a new cytology-focused vending machine to the science area (#85338)
## About The Pull Request
Creates a new vending machine in the science area, called the CytoPro
and filled with cytology gear (and a few things that might be useful in
xenobiology). This vending machine is added to the cytology labs of all
maps.
Here's how it looks in-game (with the panel screwed open, I was hacking
it to test at the time)
![CytoPro -
Metastation](https://github.com/user-attachments/assets/695c12e6-ee63-47ff-b885-a3c0ca029afc)
The current product list is shown below.
![CytoPro -
Products](https://github.com/user-attachments/assets/95f3cf47-4f2e-4988-958c-1064584d41f6)
![CytoPro -
Contraband](https://github.com/user-attachments/assets/e7918f44-588d-4acd-9025-b12d3da08602)
I've put them in the locations shown below.
Birdshot:
![CytoPro -
Birdshot](https://github.com/user-attachments/assets/8f0eba2e-d118-481d-8122-04ab5815fbb8)
Delta:
![CytoPro -
Deltastation](https://github.com/user-attachments/assets/176a4207-e3cf-4a17-8b19-c20bbce86ff0)
Icebox:
![CytoPro -
Icebox](https://github.com/user-attachments/assets/8eda8bd2-cb88-4adf-bb9e-b54b76281f8c)
Northstar:
![CytoPro -
Northstar](https://github.com/user-attachments/assets/0abec84d-9343-4d28-81b9-7f6cf9efa4f7)
Tram:
![CytoPro -
Tramstation](https://github.com/user-attachments/assets/7a27aa08-655c-468b-a690-bd031b02dfb4)
Wawa:
![CytoPro -
Wawa](https://github.com/user-attachments/assets/6a1dc37a-9834-4613-8cfe-0634184c3caa)

**Feedback on more products welcome!**

## Why It's Good For The Game
Currently, there aren't a lot of backup sources for cytology gear. Most
maps spawn with a single cytology closet containing the necessary gear,
and good luck to you if someone makes off with the supplies before you
get there. In addition to adding a source of backup cytology equipment,
I'm hoping that this new vendor makes cytology quicker and more
accessible.
Plus, science really needed a new vending machine, and I think the
purple-white colour and stylized microscope are neat.
Since the cytology lab is usually located very close to the slime pens,
the addition of monkey cube boxes, xeno bags, and bio suits also helps
support xenobiology projects. If the 14 cubes supplied at round start
are insufficient (which they really shouldn't be) then they can
supplement their supply with the boxes in the CytoPro.
## Changelog
🆑
add: A new vendor of cytology equipment, the CytoPro, is now available
in your local science department!
/🆑
2024-08-18 14:54:19 +02:00

149 lines
5.1 KiB
Plaintext

// This file contains all boxes used by the Science department and its purpose on the station.
/obj/item/storage/box/swab
name = "box of microbiological swabs"
desc = "Contains a number of sterile swabs for collecting microbiological samples."
illustration = "swab"
/obj/item/storage/box/swab/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/swab(src)
/obj/item/storage/box/petridish
name = "box of petridishes"
desc = "This box purports to contain a number of high rim petridishes."
illustration = "petridish"
/obj/item/storage/box/petridish/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/petri_dish(src)
/obj/item/storage/box/plumbing
name = "box of plumbing supplies"
desc = "Contains a small supply of pipes, water recyclers, and iron to connect to the rest of the station."
//Disk boxes
/obj/item/storage/box/disks
name = "diskette box"
illustration = "disk_kit"
/obj/item/storage/box/disks/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/disk/data(src)
/obj/item/storage/box/monkeycubes
name = "monkey cube box"
desc = "Drymate brand monkey cubes. Just add water!"
icon_state = "monkeycubebox"
illustration = null
/// Which type of cube are we spawning in this box?
var/cube_type = /obj/item/food/monkeycube
custom_price = PAYCHECK_CREW * 2
/obj/item/storage/box/monkeycubes/Initialize(mapload)
. = ..()
atom_storage.max_slots = 7
atom_storage.set_holdable(/obj/item/food/monkeycube)
/obj/item/storage/box/monkeycubes/PopulateContents()
for(var/i in 1 to 5)
new cube_type(src)
/obj/item/storage/box/monkeycubes/syndicate
desc = "Waffle Corp. brand monkey cubes. Just add water and a dash of subterfuge!"
cube_type = /obj/item/food/monkeycube/syndicate
/obj/item/storage/box/gorillacubes
name = "gorilla cube box"
desc = "Waffle Corp. brand gorilla cubes. Do not taunt."
icon_state = "monkeycubebox"
illustration = null
/obj/item/storage/box/gorillacubes/Initialize(mapload)
. = ..()
atom_storage.max_slots = 3
atom_storage.set_holdable(/obj/item/food/monkeycube)
/obj/item/storage/box/gorillacubes/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/food/monkeycube/gorilla(src)
/obj/item/storage/box/stockparts/basic //for ruins where it's a bad idea to give access to an autolathe/protolathe, but still want to make stock parts accessible
name = "box of stock parts"
desc = "Contains a variety of basic stock parts."
/obj/item/storage/box/stockparts/basic/PopulateContents()
var/static/items_inside = list(
/obj/item/stock_parts/capacitor = 3,
/obj/item/stock_parts/servo = 3,
/obj/item/stock_parts/matter_bin = 3,
/obj/item/stock_parts/micro_laser = 3,
/obj/item/stock_parts/scanning_module = 3,
)
generate_items_inside(items_inside,src)
/obj/item/storage/box/stockparts/deluxe
name = "box of deluxe stock parts"
desc = "Contains a variety of deluxe stock parts."
icon_state = "syndiebox"
/obj/item/storage/box/stockparts/deluxe/PopulateContents()
var/static/items_inside = list(
/obj/item/stock_parts/capacitor/quadratic = 3,
/obj/item/stock_parts/scanning_module/triphasic = 3,
/obj/item/stock_parts/servo/femto = 3,
/obj/item/stock_parts/micro_laser/quadultra = 3,
/obj/item/stock_parts/matter_bin/bluespace = 3,
)
generate_items_inside(items_inside,src)
/obj/item/storage/box/rndboards
name = "\proper the liberator's legacy"
desc = "A box containing a gift for worthy golems."
illustration = "scicircuit"
/obj/item/storage/box/rndboards/PopulateContents()
new /obj/item/circuitboard/machine/protolathe/offstation(src)
new /obj/item/circuitboard/machine/destructive_analyzer(src)
new /obj/item/circuitboard/machine/circuit_imprinter/offstation(src)
new /obj/item/circuitboard/computer/rdconsole(src)
/obj/item/storage/box/stabilized //every single stabilized extract from xenobiology
name = "box of stabilized extracts"
icon_state = "syndiebox"
/obj/item/storage/box/stabilized/Initialize(mapload)
. = ..()
atom_storage.allow_big_nesting = TRUE
atom_storage.max_slots = 99
atom_storage.max_specific_storage = WEIGHT_CLASS_GIGANTIC
atom_storage.max_total_storage = 99
/obj/item/storage/box/stabilized/PopulateContents()
var/static/items_inside = list(
/obj/item/slimecross/stabilized/adamantine=1,
/obj/item/slimecross/stabilized/black=1,
/obj/item/slimecross/stabilized/blue=1,
/obj/item/slimecross/stabilized/bluespace=1,
/obj/item/slimecross/stabilized/cerulean=1,
/obj/item/slimecross/stabilized/darkblue=1,
/obj/item/slimecross/stabilized/darkpurple=1,
/obj/item/slimecross/stabilized/gold=1,
/obj/item/slimecross/stabilized/green=1,
/obj/item/slimecross/stabilized/grey=1,
/obj/item/slimecross/stabilized/lightpink=1,
/obj/item/slimecross/stabilized/metal=1,
/obj/item/slimecross/stabilized/oil=1,
/obj/item/slimecross/stabilized/orange=1,
/obj/item/slimecross/stabilized/pink=1,
/obj/item/slimecross/stabilized/purple=1,
/obj/item/slimecross/stabilized/pyrite=1,
/obj/item/slimecross/stabilized/rainbow=1,
/obj/item/slimecross/stabilized/red=1,
/obj/item/slimecross/stabilized/sepia=1,
/obj/item/slimecross/stabilized/silver=1,
/obj/item/slimecross/stabilized/yellow=1,
)
generate_items_inside(items_inside,src)