mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 01:34:01 +00:00
Part 3: Storage Improvements (#90476)
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
This commit is contained in:
@@ -499,14 +499,7 @@
|
||||
icon_state = "skubpack"
|
||||
illustration = "label_skub"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/storage/box/stickers/skub/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 3
|
||||
atom_storage.set_holdable(exception_hold_list = list(
|
||||
/obj/item/skub,
|
||||
/obj/item/clothing/suit/costume/wellworn_shirt/skub,
|
||||
))
|
||||
storage_type = /datum/storage/box/skub
|
||||
|
||||
/obj/item/storage/box/stickers/skub/PopulateContents()
|
||||
new /obj/item/skub(src)
|
||||
@@ -518,10 +511,7 @@
|
||||
desc = "The enemy may have been given a skub and a shirt, but I've got more stickers! Plus the pack can hold my anti-skub shirt."
|
||||
icon_state = "skubpack"
|
||||
illustration = "label_anti_skub"
|
||||
|
||||
/obj/item/storage/box/stickers/anti_skub/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(exception_hold_list = /obj/item/clothing/suit/costume/wellworn_shirt/skub)
|
||||
storage_type = /datum/storage/box/anti_skub
|
||||
|
||||
/obj/item/storage/box/stickers/anti_skub/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
/datum/storage/backpack
|
||||
max_total_storage = 21
|
||||
max_slots = 21
|
||||
|
||||
/datum/storage/backpack/New(
|
||||
atom/parent,
|
||||
max_slots,
|
||||
max_specific_storage,
|
||||
max_total_storage,
|
||||
)
|
||||
. = ..()
|
||||
|
||||
set_holdable(exception_hold_list = /obj/item/fish_tank)
|
||||
|
||||
/datum/storage/backpack/santabag
|
||||
max_total_storage = 60
|
||||
max_slots = 21
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
29
code/datums/storage/subtypes/backpacks.dm
Normal file
29
code/datums/storage/subtypes/backpacks.dm
Normal file
@@ -0,0 +1,29 @@
|
||||
///Regular backpack
|
||||
/datum/storage/backpack
|
||||
max_total_storage = 21
|
||||
max_slots = 21
|
||||
|
||||
/datum/storage/backpack/New(
|
||||
atom/parent,
|
||||
max_slots,
|
||||
max_specific_storage,
|
||||
max_total_storage,
|
||||
)
|
||||
. = ..()
|
||||
set_holdable(exception_hold_list = /obj/item/fish_tank)
|
||||
|
||||
///Saddle backpack
|
||||
/datum/storage/backpack/saddle
|
||||
max_total_storage = 26
|
||||
|
||||
///Satchel flat
|
||||
/datum/storage/backpack/satchel_flat
|
||||
max_total_storage = 15
|
||||
|
||||
/datum/storage/backpack/satchel_flat/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(cant_hold_list = /obj/item/storage/backpack/satchel/flat) //muh recursive backpacks
|
||||
|
||||
///Santa bag
|
||||
/datum/storage/backpack/santabag
|
||||
max_total_storage = 60
|
||||
317
code/datums/storage/subtypes/bags.dm
Normal file
317
code/datums/storage/subtypes/bags.dm
Normal file
@@ -0,0 +1,317 @@
|
||||
///Normal bag
|
||||
/datum/storage/bag
|
||||
allow_quick_gather = TRUE
|
||||
allow_quick_empty = TRUE
|
||||
numerical_stacking = TRUE
|
||||
|
||||
///Trash Bag
|
||||
/datum/storage/bag/trash
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
max_total_storage = 30
|
||||
max_slots = 30
|
||||
supports_smart_equip = FALSE
|
||||
|
||||
/datum/storage/bag/trash/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(cant_hold_list = /obj/item/disk/nuclear)
|
||||
|
||||
/datum/storage/bag/trash/remove_single(mob/removing, obj/item/thing, atom/remove_to_loc, silent)
|
||||
real_location.visible_message(
|
||||
span_notice("[removing] starts fishing around inside [parent]."),
|
||||
span_notice("You start digging around in [parent] to try and pull something out."),
|
||||
)
|
||||
if(!do_after(removing, 1.5 SECONDS, parent))
|
||||
return FALSE
|
||||
|
||||
return ..()
|
||||
|
||||
///Bluespace trash bag
|
||||
/datum/storage/bag/trash/bluespace
|
||||
max_total_storage = 60
|
||||
max_slots = 60
|
||||
|
||||
///Ore Bag
|
||||
/datum/storage/bag/ore
|
||||
max_specific_storage = WEIGHT_CLASS_HUGE
|
||||
max_total_storage = 50
|
||||
silent_for_user = TRUE
|
||||
|
||||
/datum/storage/bag/ore/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/stack/ore)
|
||||
|
||||
///Ore bag of holding
|
||||
/datum/storage/bag/ore/holding
|
||||
max_slots = INFINITY
|
||||
max_specific_storage = INFINITY
|
||||
max_total_storage = INFINITY
|
||||
|
||||
///Plant bag
|
||||
/datum/storage/bag/plants
|
||||
max_total_storage = 100
|
||||
max_slots = 100
|
||||
|
||||
/datum/storage/bag/plants/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/food/grown,
|
||||
/obj/item/graft,
|
||||
/obj/item/grown,
|
||||
/obj/item/food/honeycomb,
|
||||
/obj/item/seeds,
|
||||
))
|
||||
|
||||
///Sheet snatcher bag
|
||||
/datum/storage/bag/sheet_snatcher
|
||||
max_total_storage = 150
|
||||
|
||||
/datum/storage/bag/sheet_snatcher/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(
|
||||
can_hold_list = /obj/item/stack/sheet,
|
||||
cant_hold_list = list(
|
||||
/obj/item/stack/sheet/mineral/sandstone,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
),
|
||||
)
|
||||
|
||||
///Borg sheet snatcher bag
|
||||
/datum/storage/bag/sheet_snatcher/borg
|
||||
max_total_storage = 250
|
||||
|
||||
///Debug sheet snatcher bag
|
||||
/datum/storage/bag/sheet_snatcher_debug
|
||||
allow_big_nesting = TRUE
|
||||
max_slots = 99
|
||||
max_specific_storage = WEIGHT_CLASS_GIGANTIC
|
||||
max_total_storage = 5000
|
||||
|
||||
/datum/storage/bag/sheet_snatcher_debug/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/stack/sheet,
|
||||
/obj/item/stack/sheet/mineral/sandstone,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
))
|
||||
|
||||
///Book bag
|
||||
/datum/storage/bag/books
|
||||
max_total_storage = 21
|
||||
max_slots = 7
|
||||
|
||||
/datum/storage/bag/books/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/book,
|
||||
/obj/item/spellbook,
|
||||
/obj/item/poster,
|
||||
))
|
||||
|
||||
///Tray bag
|
||||
/datum/storage/bag/tray
|
||||
max_specific_storage = WEIGHT_CLASS_BULKY //Plates are required bulky to keep them out of backpacks
|
||||
insert_preposition = "on"
|
||||
max_slots = 8
|
||||
max_total_storage = 16
|
||||
|
||||
/datum/storage/bag/tray/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(
|
||||
can_hold_list = list(
|
||||
/obj/item/cigarette,
|
||||
/obj/item/food,
|
||||
/obj/item/kitchen,
|
||||
/obj/item/lighter,
|
||||
/obj/item/organ,
|
||||
/obj/item/plate,
|
||||
/obj/item/reagent_containers/condiment,
|
||||
/obj/item/reagent_containers/cup,
|
||||
/obj/item/rollingpaper,
|
||||
/obj/item/storage/box/gum,
|
||||
/obj/item/storage/box/matches,
|
||||
/obj/item/storage/fancy,
|
||||
/obj/item/trash,
|
||||
),
|
||||
cant_hold_list = list(
|
||||
/obj/item/plate/oven_tray,
|
||||
/obj/item/reagent_containers/cup/soup_pot,
|
||||
),
|
||||
) //Should cover: Bottles, Beakers, Bowls, Booze, Glasses, Food, Food Containers, Food Trash, Organs, Tobacco Products, Lighters, and Kitchen Tools.
|
||||
|
||||
///Chemistry bag
|
||||
/datum/storage/bag/chemistry
|
||||
max_total_storage = 200
|
||||
max_slots = 50
|
||||
|
||||
/datum/storage/bag/chemistry/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/reagent_containers/chem_pack,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/glass/waterbottle,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/medigel,
|
||||
/obj/item/reagent_containers/applicator,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
))
|
||||
|
||||
///Bio bag
|
||||
/datum/storage/bag/bio
|
||||
max_total_storage = 200
|
||||
max_slots = 25
|
||||
|
||||
/datum/storage/bag/bio/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/bodypart,
|
||||
/obj/item/food/monkeycube,
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/item/organ,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/hypospray/medipen,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
))
|
||||
|
||||
///Xeno bag
|
||||
/datum/storage/bag/xeno
|
||||
max_total_storage = 200
|
||||
max_slots = 25
|
||||
|
||||
/datum/storage/bag/xeno/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/bodypart,
|
||||
/obj/item/food/deadmouse,
|
||||
/obj/item/food/monkeycube,
|
||||
/obj/item/organ,
|
||||
/obj/item/petri_dish,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/slime_extract,
|
||||
/obj/item/swab,
|
||||
))
|
||||
|
||||
///Construction bag
|
||||
/datum/storage/bag/construction
|
||||
max_total_storage = 100
|
||||
max_slots = 50
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
|
||||
/datum/storage/bag/construction/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/assembly,
|
||||
/obj/item/circuitboard,
|
||||
/obj/item/electronics,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/stack/cable_coil,
|
||||
/obj/item/stack/ore/bluespace_crystal,
|
||||
/obj/item/stock_parts,
|
||||
/obj/item/wallframe/camera,
|
||||
))
|
||||
|
||||
///Harpoon quiver bag
|
||||
/datum/storage/bag/harpoon_quiver
|
||||
max_specific_storage = WEIGHT_CLASS_TINY
|
||||
max_slots = 40
|
||||
max_total_storage = 100
|
||||
|
||||
/datum/storage/bag/harpoon_quiver/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/ammo_casing/harpoon)
|
||||
|
||||
///Rebar quiber bag
|
||||
/datum/storage/bag/rebar_quiver
|
||||
max_specific_storage = WEIGHT_CLASS_TINY
|
||||
max_slots = 10
|
||||
max_total_storage = 15
|
||||
|
||||
/datum/storage/bag/rebar_quiver/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/ammo_casing/rebar,
|
||||
))
|
||||
|
||||
///Syndicate rebar quiver bag
|
||||
/datum/storage/bag/rebar_quiver/syndicate
|
||||
max_slots = 20
|
||||
max_total_storage = 20
|
||||
|
||||
///Mail bag
|
||||
/datum/storage/bag/mail
|
||||
max_total_storage = 42
|
||||
max_slots = 21
|
||||
numerical_stacking = FALSE
|
||||
|
||||
/datum/storage/bag/mail/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/mail,
|
||||
/obj/item/delivery/small,
|
||||
/obj/item/paper
|
||||
))
|
||||
|
||||
///Garment bag
|
||||
/datum/storage/bag/garment
|
||||
numerical_stacking = FALSE
|
||||
max_total_storage = 200
|
||||
max_slots = 15
|
||||
insert_preposition = "in"
|
||||
|
||||
/datum/storage/bag/garment/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/clothing)
|
||||
|
||||
///Quiver bag
|
||||
/datum/storage/bag/quiver
|
||||
max_specific_storage = WEIGHT_CLASS_TINY
|
||||
max_slots = 40
|
||||
max_total_storage = 100
|
||||
|
||||
/datum/storage/bag/quiver/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/ammo_casing/arrow)
|
||||
|
||||
///Quiver bag less
|
||||
/datum/storage/bag/quiver/less
|
||||
max_slots = 10
|
||||
|
||||
///Quiver bag endless
|
||||
/datum/storage/bag/quiver/endless
|
||||
max_slots = 1
|
||||
|
||||
/datum/storage/bag/quiver/endless/handle_exit(datum/source, obj/item/gone)
|
||||
. = ..()
|
||||
var/obj/item/storage/bag/quiver/endless/store = real_location
|
||||
new store.arrow_path(store)
|
||||
|
||||
///Money bag
|
||||
/datum/storage/bag/money
|
||||
max_slots = 40
|
||||
max_specific_storage = 40
|
||||
|
||||
/datum/storage/bag/money/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/coin,
|
||||
/obj/item/stack/spacecash,
|
||||
/obj/item/holochip
|
||||
))
|
||||
|
||||
///Fishing bag
|
||||
/datum/storage/bag/fishing
|
||||
max_total_storage = 24 // Up to 8 normal fish
|
||||
max_slots = 21
|
||||
|
||||
/datum/storage/bag/fishing/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/fish)
|
||||
338
code/datums/storage/subtypes/belts.dm
Normal file
338
code/datums/storage/subtypes/belts.dm
Normal file
@@ -0,0 +1,338 @@
|
||||
///Utility belt
|
||||
/datum/storage/utility_belt
|
||||
max_total_storage = 21
|
||||
|
||||
/datum/storage/utility_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(GLOB.tool_items + list(
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/radio,
|
||||
/obj/item/melee/sickly_blade/lock,
|
||||
/obj/item/reagent_containers/cup/soda_cans,
|
||||
))
|
||||
|
||||
///Medical belt
|
||||
/datum/storage/medical_belt
|
||||
max_total_storage = 21
|
||||
|
||||
/datum/storage/medical_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/bikehorn/rubberducky,
|
||||
/obj/item/blood_filter,
|
||||
/obj/item/bonesetter,
|
||||
/obj/item/cautery,
|
||||
/obj/item/circular_saw,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/clothing/neck/stethoscope,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/mask/muzzle,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
/obj/item/clothing/head/utility/surgerycap,
|
||||
/obj/item/construction/plumbing,
|
||||
/obj/item/dnainjector,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/flashlight/pen,
|
||||
/obj/item/geiger_counter,
|
||||
/obj/item/gun/syringe/syndicate,
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/item/hemostat,
|
||||
/obj/item/holosign_creator/medical,
|
||||
/obj/item/implant,
|
||||
/obj/item/implantcase,
|
||||
/obj/item/implanter,
|
||||
/obj/item/lazarus_injector,
|
||||
/obj/item/lighter,
|
||||
/obj/item/pinpointer/crew,
|
||||
/obj/item/plunger,
|
||||
/obj/item/radio,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/hypospray,
|
||||
/obj/item/reagent_containers/medigel,
|
||||
/obj/item/reagent_containers/applicator,
|
||||
/obj/item/reagent_containers/spray,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/retractor,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/shears,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/stack/sticky_tape, //surgical tape
|
||||
/obj/item/stamp,
|
||||
/obj/item/sensor_device,
|
||||
/obj/item/storage/fancy/cigarettes,
|
||||
/obj/item/storage/pill_bottle,
|
||||
/obj/item/surgical_drapes, //for true paramedics
|
||||
/obj/item/surgicaldrill,
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/wrench/medical,
|
||||
/obj/item/knife/ritual,
|
||||
/obj/item/flesh_shears,
|
||||
))
|
||||
|
||||
///Security belt
|
||||
/datum/storage/security_belt
|
||||
max_slots = 5
|
||||
open_sound = 'sound/items/handling/holster_open.ogg'
|
||||
open_sound_vary = TRUE
|
||||
rustle_sound = null
|
||||
|
||||
/datum/storage/security_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/ammo_box,
|
||||
/obj/item/ammo_casing/shotgun,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/flashlight/seclite,
|
||||
/obj/item/food/donut,
|
||||
/obj/item/grenade,
|
||||
/obj/item/holosign_creator/security,
|
||||
/obj/item/knife/combat,
|
||||
/obj/item/melee/baton,
|
||||
/obj/item/radio,
|
||||
/obj/item/reagent_containers/spray/pepper,
|
||||
/obj/item/restraints/handcuffs,
|
||||
/obj/item/restraints/legcuffs/bola,
|
||||
))
|
||||
|
||||
///Webbing security belt
|
||||
/datum/storage/security_belt/webbing
|
||||
max_slots = 6
|
||||
|
||||
///Mining belt
|
||||
/datum/storage/mining_belt
|
||||
max_slots = 6
|
||||
max_total_storage = 20
|
||||
|
||||
/datum/storage/mining_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/analyzer,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/crowbar,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/gps,
|
||||
/obj/item/mining_stabilizer,
|
||||
/obj/item/key/lasso,
|
||||
/obj/item/knife,
|
||||
/obj/item/lighter,
|
||||
/obj/item/mining_scanner,
|
||||
/obj/item/multitool,
|
||||
/obj/item/organ/monster_core,
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/radio,
|
||||
/obj/item/reagent_containers/cup/glass,
|
||||
/obj/item/reagent_containers/cup/glass/bottle,
|
||||
/obj/item/reagent_containers/hypospray,
|
||||
/obj/item/reagent_containers/applicator/pill,
|
||||
/obj/item/resonator,
|
||||
/obj/item/screwdriver,
|
||||
/obj/item/shovel,
|
||||
/obj/item/stack/cable_coil,
|
||||
/obj/item/stack/marker_beacon,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/stack/ore,
|
||||
/obj/item/stack/sheet/animalhide,
|
||||
/obj/item/stack/sheet/bone,
|
||||
/obj/item/stack/sheet/sinew,
|
||||
/obj/item/storage/bag/ore,
|
||||
/obj/item/storage/fancy/cigarettes,
|
||||
/obj/item/storage/pill_bottle,
|
||||
/obj/item/survivalcapsule,
|
||||
/obj/item/t_scanner/adv_mining_scanner,
|
||||
/obj/item/weldingtool,
|
||||
/obj/item/wirecutters,
|
||||
/obj/item/wrench,
|
||||
/obj/item/wormhole_jaunter,
|
||||
/obj/item/skeleton_key,
|
||||
))
|
||||
|
||||
///Primitive mining belt
|
||||
/datum/storage/mining_belt/primitive
|
||||
max_slots = 5
|
||||
|
||||
///Soulstone belt
|
||||
/datum/storage/soulstone_belt
|
||||
max_slots = 6
|
||||
|
||||
/datum/storage/soulstone_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/soulstone)
|
||||
|
||||
///Champion belt
|
||||
/datum/storage/champion_belt
|
||||
max_slots = 1
|
||||
|
||||
/datum/storage/champion_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/clothing/mask/luchador)
|
||||
|
||||
///Military belt
|
||||
/datum/storage/military_belt
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
|
||||
///Military snack belt
|
||||
/datum/storage/military_belt/snack
|
||||
max_slots = 6
|
||||
|
||||
/datum/storage/military_belt/snack/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/food,
|
||||
/obj/item/reagent_containers/cup/glass,
|
||||
))
|
||||
|
||||
///Military assault belt
|
||||
/datum/storage/military_belt/assault
|
||||
max_slots = 6
|
||||
|
||||
///Grenade belt
|
||||
/datum/storage/grenade_belt
|
||||
max_slots = 30
|
||||
numerical_stacking = TRUE
|
||||
max_total_storage = 60
|
||||
max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
|
||||
/datum/storage/grenade_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/food/grown/cherry_bomb,
|
||||
/obj/item/food/grown/firelemon,
|
||||
/obj/item/grenade,
|
||||
/obj/item/grenade/c4,
|
||||
/obj/item/lighter,
|
||||
/obj/item/multitool,
|
||||
/obj/item/reagent_containers/cup/glass/bottle/molotov,
|
||||
/obj/item/screwdriver,
|
||||
))
|
||||
|
||||
///Wands belt
|
||||
/datum/storage/wands_belt
|
||||
max_slots = 7
|
||||
|
||||
/datum/storage/wands_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/gun/magic/wand)
|
||||
|
||||
///Janitor belt
|
||||
/datum/storage/janitor_belt
|
||||
max_slots = 6
|
||||
|
||||
/datum/storage/janitor_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/access_key,
|
||||
/obj/item/assembly/mousetrap,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/forcefield_projector,
|
||||
/obj/item/grenade/chem_grenade,
|
||||
/obj/item/holosign_creator,
|
||||
/obj/item/key/janitor,
|
||||
/obj/item/lightreplacer,
|
||||
/obj/item/melee/flyswatter,
|
||||
/obj/item/paint/paint_remover,
|
||||
/obj/item/plunger,
|
||||
/obj/item/pushbroom,
|
||||
/obj/item/reagent_containers/spray,
|
||||
/obj/item/soap,
|
||||
/obj/item/wirebrush,
|
||||
))
|
||||
|
||||
///Bandolier belt
|
||||
/datum/storage/bandolier_belt
|
||||
max_slots = 24
|
||||
max_total_storage = 24
|
||||
numerical_stacking = TRUE
|
||||
allow_quick_gather = TRUE
|
||||
allow_quick_empty = TRUE
|
||||
|
||||
/datum/storage/bandolier_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/ammo_casing/strilka310,
|
||||
/obj/item/ammo_casing/shotgun,
|
||||
/obj/item/ammo_casing/c357,
|
||||
/obj/item/ammo_casing/junk,
|
||||
))
|
||||
|
||||
///Fanny pack
|
||||
/datum/storage/fanny_pack
|
||||
max_slots = 3
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
silent = TRUE
|
||||
|
||||
///Sabre belt
|
||||
/datum/storage/sabre_belt
|
||||
max_slots = 1
|
||||
do_rustle = FALSE
|
||||
max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
click_alt_open = FALSE
|
||||
|
||||
/datum/storage/sabre_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/melee/sabre)
|
||||
|
||||
///Green sabre belt
|
||||
/datum/storage/green_sabre_belt
|
||||
max_slots = 1
|
||||
do_rustle = FALSE
|
||||
max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
click_alt_open = FALSE
|
||||
|
||||
/datum/storage/green_sabre_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/melee/parsnip_sabre)
|
||||
|
||||
///Plant belt
|
||||
/datum/storage/plant_belt
|
||||
max_slots = 6
|
||||
|
||||
/datum/storage/plant_belt/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/cultivator,
|
||||
/obj/item/geneshears,
|
||||
/obj/item/graft,
|
||||
/obj/item/gun/energy/floragun,
|
||||
/obj/item/hatchet,
|
||||
/obj/item/plant_analyzer,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/spray/pestspray,
|
||||
/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/secateurs,
|
||||
/obj/item/seeds,
|
||||
/obj/item/shovel/spade,
|
||||
))
|
||||
|
||||
///Unfathomable curio
|
||||
/datum/storage/unfathomable_curio
|
||||
max_total_storage = 21
|
||||
|
||||
/datum/storage/unfathomable_curio/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/ammo_box/strilka310/lionhunter,
|
||||
/obj/item/heretic_labyrinth_handbook,
|
||||
/obj/item/bodypart, // Bodyparts are often used in rituals.
|
||||
/obj/item/clothing/neck/eldritch_amulet,
|
||||
/obj/item/clothing/neck/heretic_focus,
|
||||
/obj/item/codex_cicatrix,
|
||||
/obj/item/eldritch_potion,
|
||||
/obj/item/food/grown/poppy, // Used to regain a Living Heart.
|
||||
/obj/item/food/grown/harebell, // Used to reroll targets
|
||||
/obj/item/melee/rune_carver,
|
||||
/obj/item/melee/sickly_blade,
|
||||
/obj/item/organ, // Organs are also often used in rituals.
|
||||
/obj/item/reagent_containers/cup/beaker/eldritch,
|
||||
/obj/item/stack/sheet/glass, // Glass is often used by moon heretics
|
||||
))
|
||||
179
code/datums/storage/subtypes/boxes.dm
Normal file
179
code/datums/storage/subtypes/boxes.dm
Normal file
@@ -0,0 +1,179 @@
|
||||
///Normal box
|
||||
/datum/storage/box
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
open_sound = 'sound/items/handling/cardboard_box/cardboard_box_open.ogg'
|
||||
rustle_sound = 'sound/items/handling/cardboard_box/cardboard_box_rustle.ogg'
|
||||
|
||||
///Debug tools box
|
||||
/datum/storage/box/debug
|
||||
allow_big_nesting = TRUE
|
||||
max_slots = 99
|
||||
max_specific_storage = WEIGHT_CLASS_GIGANTIC
|
||||
max_total_storage = 99
|
||||
|
||||
///Donk Pocket box
|
||||
/datum/storage/box/donk_pockets/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/food/donkpocket)
|
||||
|
||||
///Coffee box
|
||||
/datum/storage/box/coffee
|
||||
max_slots = 5
|
||||
|
||||
/datum/storage/box/coffee/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/food/grown/coffee)
|
||||
|
||||
///Bandage box
|
||||
/datum/storage/box/bandages
|
||||
max_slots = 6
|
||||
|
||||
/datum/storage/box/bandages/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/stack/medical/bandage,
|
||||
/obj/item/reagent_containers/applicator/pill,
|
||||
/obj/item/reagent_containers/applicator/patch,
|
||||
))
|
||||
|
||||
///Monkey cube box
|
||||
/datum/storage/box/monkey_cube
|
||||
max_slots = 7
|
||||
|
||||
/datum/storage/box/monkey_cube/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(
|
||||
can_hold_list = /obj/item/food/monkeycube,
|
||||
cant_hold_list = /obj/item/food/monkeycube/gorilla,
|
||||
)
|
||||
|
||||
///Gorilla cube box
|
||||
/datum/storage/box/gorilla_cube_box
|
||||
max_slots = 3
|
||||
|
||||
/datum/storage/box/gorilla_cube_box/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/food/monkeycube/gorilla)
|
||||
|
||||
///Stabalized extract box
|
||||
/datum/storage/box/stabilized
|
||||
allow_big_nesting = TRUE
|
||||
max_slots = 99
|
||||
max_specific_storage = WEIGHT_CLASS_GIGANTIC
|
||||
max_total_storage = 99
|
||||
|
||||
///Snappops box
|
||||
/datum/storage/box/snappops
|
||||
max_slots = 8
|
||||
|
||||
/datum/storage/box/snappops/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/toy/snappop)
|
||||
|
||||
///Match box
|
||||
/datum/storage/box/match
|
||||
max_slots = 10
|
||||
|
||||
/datum/storage/box/match/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/match)
|
||||
|
||||
///Light Box
|
||||
/datum/storage/box/lights
|
||||
max_slots = 21
|
||||
max_total_storage = 21
|
||||
allow_quick_gather = FALSE //temp workaround to re-enable filling the light replacer with the box
|
||||
|
||||
/datum/storage/box/lights/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/light/tube,
|
||||
/obj/item/light/bulb
|
||||
))
|
||||
|
||||
///Balloon box
|
||||
/datum/storage/box/balloon
|
||||
max_slots = 24
|
||||
max_total_storage = 24
|
||||
allow_quick_gather = FALSE
|
||||
|
||||
/datum/storage/box/balloon/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/toy/balloon/long)
|
||||
|
||||
///Stickers Box
|
||||
/datum/storage/box/stickers
|
||||
max_slots = 8
|
||||
max_specific_storage = WEIGHT_CLASS_TINY
|
||||
|
||||
/datum/storage/box/stickers/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/sticker)
|
||||
|
||||
///Syndicate space box
|
||||
/datum/storage/box/syndicate_space
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/datum/storage/box/syndicate_space/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/clothing/suit/space/syndicate,
|
||||
/obj/item/clothing/head/helmet/space/syndicate
|
||||
))
|
||||
|
||||
///Syndicate chemical box
|
||||
/datum/storage/box/syndicate_chemical
|
||||
max_slots = 15
|
||||
|
||||
///Syndicate throwing weapons box
|
||||
/datum/storage/box/syndicate_throwing
|
||||
max_slots = 9 // 5 + 2 + 2
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
max_total_storage = 18 // 5*2 + 2*1 + 3*2
|
||||
|
||||
/datum/storage/box/syndicate_throwing/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/restraints/legcuffs/bola/tactical,
|
||||
/obj/item/paperplane/syndicate,
|
||||
/obj/item/throwing_star,
|
||||
))
|
||||
|
||||
///Stickers skub box
|
||||
/datum/storage/box/skub
|
||||
max_slots = 3
|
||||
|
||||
/datum/storage/box/skub/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(exception_hold_list = list(
|
||||
/obj/item/skub,
|
||||
/obj/item/clothing/suit/costume/wellworn_shirt/skub,
|
||||
))
|
||||
|
||||
///Stickers anti skub box
|
||||
/datum/storage/box/anti_skub/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(exception_hold_list = /obj/item/clothing/suit/costume/wellworn_shirt/skub)
|
||||
|
||||
///Flat box
|
||||
/datum/storage/box/flat
|
||||
max_slots = 3
|
||||
|
||||
///Gum Box
|
||||
/datum/storage/box/gum
|
||||
max_slots = 4
|
||||
allow_big_nesting = TRUE
|
||||
|
||||
/datum/storage/box/gum/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/storage/bubblegum_wrapper)
|
||||
|
||||
///Fishing lures box
|
||||
/datum/storage/box/fishing_lures/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
//adds an extra slot, so we can put back the lures even if we didn't take out the instructions.
|
||||
var/static/slots = length(typesof(/obj/item/fishing_lure)) + 1
|
||||
max_slots = slots
|
||||
max_total_storage = WEIGHT_CLASS_SMALL * slots
|
||||
. = ..()
|
||||
set_holdable(/obj/item/fishing_lure) //can only hold lures
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/datum/storage/drone
|
||||
max_total_storage = 40
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
max_slots = 10
|
||||
do_rustle = FALSE
|
||||
|
||||
/datum/storage/drone/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
|
||||
var/static/list/drone_builtins = list(
|
||||
/obj/item/crowbar/drone,
|
||||
/obj/item/screwdriver/drone,
|
||||
/obj/item/wrench/drone,
|
||||
/obj/item/weldingtool/drone,
|
||||
/obj/item/wirecutters/drone,
|
||||
/obj/item/multitool/drone,
|
||||
/obj/item/pipe_dispenser/drone,
|
||||
/obj/item/t_scanner/drone,
|
||||
/obj/item/analyzer/drone,
|
||||
/obj/item/soap/drone,
|
||||
)
|
||||
|
||||
set_holdable(drone_builtins)
|
||||
|
||||
/datum/storage/drone/dump_content_at(atom/dest_object, dump_loc, mob/user)
|
||||
return //no dumping of contents allowed
|
||||
@@ -1,3 +1,4 @@
|
||||
///Normal duffle bag
|
||||
/datum/storage/duffel
|
||||
max_total_storage = 30
|
||||
max_slots = 21
|
||||
@@ -9,7 +10,6 @@
|
||||
max_total_storage,
|
||||
)
|
||||
. = ..()
|
||||
|
||||
set_holdable(exception_hold_list = /obj/item/fish_tank)
|
||||
|
||||
// Syndi bags get some FUN extras
|
||||
@@ -27,7 +27,6 @@
|
||||
max_total_storage,
|
||||
)
|
||||
. = ..()
|
||||
|
||||
var/static/list/exception_type_list = list(
|
||||
// Gun and gun-related accessories
|
||||
/obj/item/gun,
|
||||
122
code/datums/storage/subtypes/holsters.dm
Normal file
122
code/datums/storage/subtypes/holsters.dm
Normal file
@@ -0,0 +1,122 @@
|
||||
///Holster
|
||||
/datum/storage/holster
|
||||
max_slots = 1
|
||||
max_total_storage = 16
|
||||
open_sound = 'sound/items/handling/holster_open.ogg'
|
||||
open_sound_vary = TRUE
|
||||
|
||||
/datum/storage/holster/New(atom/parent, max_slots, max_specific_storage, max_total_storage, list/holdables)
|
||||
. = ..()
|
||||
if(length(holdables))
|
||||
set_holdable(holdables)
|
||||
return
|
||||
|
||||
set_holdable(list(
|
||||
/obj/item/gun/ballistic/automatic/pistol,
|
||||
/obj/item/gun/ballistic/revolver,
|
||||
/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/dueling,
|
||||
/obj/item/food/grown/banana,
|
||||
/obj/item/gun/energy/laser/thermal,
|
||||
/obj/item/gun/ballistic/rifle/boltaction, //fits if you make it an obrez
|
||||
/obj/item/gun/energy/laser/captain,
|
||||
/obj/item/gun/energy/e_gun/hos,
|
||||
))
|
||||
|
||||
///Energy holster
|
||||
/datum/storage/holster/energy
|
||||
max_slots = 2
|
||||
|
||||
/datum/storage/holster/energy/New(atom/parent, max_slots, max_specific_storage, max_total_storage, list/holdables)
|
||||
holdables = list(
|
||||
/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/dueling,
|
||||
/obj/item/food/grown/banana,
|
||||
/obj/item/gun/energy/laser/thermal,
|
||||
/obj/item/gun/energy/recharge/ebow,
|
||||
/obj/item/gun/energy/laser/captain,
|
||||
/obj/item/gun/energy/e_gun/hos,
|
||||
)
|
||||
|
||||
return ..()
|
||||
|
||||
///Detective holster
|
||||
/datum/storage/holster/detective
|
||||
max_slots = 3
|
||||
|
||||
/datum/storage/holster/detective/New(atom/parent, max_slots, max_specific_storage, max_total_storage, list/holdables)
|
||||
holdables = list(
|
||||
/obj/item/gun/ballistic/automatic/pistol,
|
||||
/obj/item/ammo_box/magazine/m9mm, // Pistol magazines.
|
||||
/obj/item/ammo_box/magazine/m9mm_aps,
|
||||
/obj/item/ammo_box/magazine/m10mm,
|
||||
/obj/item/ammo_box/magazine/m45,
|
||||
/obj/item/ammo_box/magazine/m50,
|
||||
/obj/item/gun/ballistic/revolver,
|
||||
/obj/item/ammo_box/c38, // Revolver speedloaders.
|
||||
/obj/item/ammo_box/a357,
|
||||
/obj/item/ammo_box/strilka310,
|
||||
/obj/item/ammo_box/magazine/toy/pistol,
|
||||
/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/dueling,
|
||||
/obj/item/gun/energy/laser/thermal,
|
||||
/obj/item/gun/energy/laser/captain,
|
||||
/obj/item/gun/energy/e_gun/hos,
|
||||
/obj/item/gun/ballistic/rifle/boltaction, //fits if you make it an obrez
|
||||
)
|
||||
|
||||
return ..()
|
||||
|
||||
///Chameleon Holster
|
||||
/datum/storage/holster/chameleon
|
||||
max_slots = 2
|
||||
silent = TRUE
|
||||
|
||||
/datum/storage/holster/chameleon/New(atom/parent, max_slots, max_specific_storage, max_total_storage, list/holdables)
|
||||
holdables = list(
|
||||
/obj/item/gun/ballistic/automatic/pistol,
|
||||
/obj/item/ammo_box/magazine/m9mm,
|
||||
/obj/item/ammo_box/magazine/m9mm_aps,
|
||||
/obj/item/ammo_box/magazine/m10mm,
|
||||
/obj/item/ammo_box/magazine/m45,
|
||||
/obj/item/ammo_box/magazine/m50,
|
||||
/obj/item/gun/ballistic/revolver,
|
||||
/obj/item/ammo_box/c38,
|
||||
/obj/item/ammo_box/a357,
|
||||
/obj/item/ammo_box/strilka310,
|
||||
/obj/item/ammo_box/magazine/toy/pistol,
|
||||
/obj/item/gun/energy/recharge/ebow,
|
||||
/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/dueling,
|
||||
/obj/item/gun/energy/laser/captain,
|
||||
/obj/item/gun/energy/e_gun/hos,
|
||||
)
|
||||
|
||||
return ..()
|
||||
|
||||
///Nukie holster
|
||||
/datum/storage/holster/nukie
|
||||
max_slots = 2
|
||||
max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
|
||||
/datum/storage/holster/nukie/New(atom/parent, max_slots, max_specific_storage, max_total_storage, list/holdables)
|
||||
holdables = list(
|
||||
/obj/item/gun, // ALL guns.
|
||||
/obj/item/ammo_box/magazine, // ALL magazines.
|
||||
/obj/item/ammo_box/c38, //There isn't a speedloader parent type, so I just put these three here by hand.
|
||||
/obj/item/ammo_box/a357, //I didn't want to just use /obj/item/ammo_box, because then this could hold huge boxes of ammo.
|
||||
/obj/item/ammo_box/strilka310,
|
||||
/obj/item/ammo_casing, // For shotgun shells, rockets, launcher grenades, and a few other things.
|
||||
/obj/item/grenade, // All regular grenades, the big grenade launcher fires these.
|
||||
)
|
||||
|
||||
return ..()
|
||||
|
||||
///Nukie cowboy holster
|
||||
/datum/storage/holster/nukie/cowboy
|
||||
max_slots = 3
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
@@ -1,15 +0,0 @@
|
||||
/datum/storage/implant
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
max_total_storage = 6
|
||||
max_slots = 2
|
||||
silent = TRUE
|
||||
allow_big_nesting = TRUE
|
||||
|
||||
/datum/storage/implant/New(
|
||||
atom/parent,
|
||||
max_slots,
|
||||
max_specific_storage,
|
||||
max_total_storage,
|
||||
)
|
||||
. = ..()
|
||||
set_holdable(cant_hold_list = /obj/item/disk/nuclear)
|
||||
36
code/datums/storage/subtypes/lockboxes.dm
Normal file
36
code/datums/storage/subtypes/lockboxes.dm
Normal file
@@ -0,0 +1,36 @@
|
||||
///Normal lockbox
|
||||
/datum/storage/lockbox
|
||||
max_total_storage = 14
|
||||
max_slots = 4
|
||||
|
||||
/datum/storage/lockbox/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_locked(STORAGE_FULLY_LOCKED)
|
||||
|
||||
///Medal lockbox
|
||||
/datum/storage/lockbox/medal
|
||||
max_slots = 10
|
||||
max_total_storage = 20
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
|
||||
/datum/storage/lockbox/medal/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/clothing/accessory/medal)
|
||||
|
||||
///Dueling lockbox
|
||||
/datum/storage/lockbox/dueling
|
||||
max_slots = 2
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
|
||||
/datum/storage/lockbox/dueling/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/gun/energy/dueling)
|
||||
|
||||
///Bitrunning decrypted lockbox
|
||||
/datum/storage/lockbox/bitrunning_decrypted
|
||||
max_slots = 1
|
||||
max_total_storage = 3
|
||||
|
||||
/datum/storage/lockbox/bitrunning_decrypted/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_locked(STORAGE_NOT_LOCKED)
|
||||
133
code/datums/storage/subtypes/medkits.dm
Normal file
133
code/datums/storage/subtypes/medkits.dm
Normal file
@@ -0,0 +1,133 @@
|
||||
///Regular medkit
|
||||
/datum/storage/medkit
|
||||
open_sound = 'sound/items/handling/medkit/medkit_open.ogg'
|
||||
open_sound_vary = TRUE
|
||||
rustle_sound = 'sound/items/handling/medkit/medkit_rustle.ogg'
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
|
||||
///List of everything a medkit can hold
|
||||
VAR_FINAL/static/list/obj/item/list_of_everything_medkits_can_hold = list(
|
||||
//surgery tools
|
||||
/obj/item/surgical_drapes,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/circular_saw,
|
||||
/obj/item/bonesetter,
|
||||
/obj/item/surgicaldrill,
|
||||
/obj/item/retractor,
|
||||
/obj/item/cautery,
|
||||
/obj/item/hemostat,
|
||||
/obj/item/blood_filter,
|
||||
|
||||
//special tools
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/item/dnainjector,
|
||||
/obj/item/lazarus_injector,
|
||||
/obj/item/implantcase,
|
||||
/obj/item/implant,
|
||||
/obj/item/implanter,
|
||||
|
||||
//stacks
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/stack/sticky_tape,
|
||||
|
||||
//containers
|
||||
/obj/item/reagent_containers/applicator,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/reagent_containers/medigel,
|
||||
/obj/item/reagent_containers/spray,
|
||||
/obj/item/reagent_containers/hypospray,
|
||||
/obj/item/reagent_containers/blood,
|
||||
|
||||
//storage items
|
||||
/obj/item/storage/box/bandages,
|
||||
/obj/item/storage/fancy/cigarettes,
|
||||
/obj/item/storage/pill_bottle,
|
||||
/obj/item/storage/box/evilmeds,
|
||||
|
||||
//clothing
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
/obj/item/clothing/neck/stethoscope,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/clothing/mask/muzzle,
|
||||
/obj/item/clothing/glasses,
|
||||
|
||||
//mod suite
|
||||
/obj/item/mod/module/thread_ripper,
|
||||
/obj/item/mod/module/surgical_processor/preloaded,
|
||||
/obj/item/mod/module/defibrillator/combat,
|
||||
/obj/item/mod/module/health_analyzer,
|
||||
|
||||
//misc
|
||||
/obj/item/lighter,
|
||||
/obj/item/sensor_device,
|
||||
/obj/item/radio,
|
||||
/obj/item/bikehorn/rubberducky,
|
||||
/obj/item/shears,
|
||||
/obj/item/geiger_counter,
|
||||
/obj/item/flashlight/pen,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/stamp,
|
||||
/obj/item/wrench/medical,
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/gun/syringe/syndicate,
|
||||
/obj/item/pinpointer/crew,
|
||||
/obj/item/holosign_creator/medical,
|
||||
/obj/item/autosurgeon/syndicate/emaggedsurgerytoolset,
|
||||
)
|
||||
|
||||
/datum/storage/medkit/New(atom/parent, max_slots, max_specific_storage, max_total_storage, list/holdables = null)
|
||||
. = ..()
|
||||
if(!isnull(holdables))
|
||||
set_holdable(holdables)
|
||||
|
||||
///Surgery medkit
|
||||
/datum/storage/medkit/surgery
|
||||
max_slots = 12
|
||||
max_total_storage = 24
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL //holds the same equipment as a medibelt
|
||||
|
||||
/datum/storage/medkit/surgery/New(atom/parent, max_slots, max_specific_storage, max_total_storage, list/holdables)
|
||||
holdables = list_of_everything_medkits_can_hold
|
||||
return ..()
|
||||
|
||||
///Tactical medkit
|
||||
/datum/storage/medkit/tactical
|
||||
max_slots = 21
|
||||
max_total_storage = 24
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/datum/storage/medkit/tactical/New(atom/parent, max_slots, max_specific_storage, max_total_storage, list/holdables)
|
||||
holdables = list_of_everything_medkits_can_hold
|
||||
return ..()
|
||||
|
||||
///Premium tactical medkit
|
||||
/datum/storage/medkit/tactical/premium
|
||||
allow_big_nesting = TRUE // so you can put back the box you took out
|
||||
max_total_storage = 34
|
||||
|
||||
///Coroner medkit
|
||||
/datum/storage/medkit/coroner
|
||||
max_slots = 14
|
||||
max_total_storage = 24
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/datum/storage/medkit/coroner/New(atom/parent, max_slots, max_specific_storage, max_total_storage, list/holdables)
|
||||
holdables = list(
|
||||
/obj/item/reagent_containers,
|
||||
/obj/item/bodybag,
|
||||
/obj/item/toy/crayon,
|
||||
/obj/item/pen,
|
||||
/obj/item/paper,
|
||||
/obj/item/surgical_drapes,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/retractor,
|
||||
/obj/item/hemostat,
|
||||
/obj/item/cautery,
|
||||
/obj/item/autopsy_scanner,
|
||||
)
|
||||
return ..()
|
||||
@@ -1,17 +0,0 @@
|
||||
/datum/storage/organ_box
|
||||
|
||||
/datum/storage/organ_box/handle_enter(obj/item/storage/organbox/source, obj/item/arrived)
|
||||
. = ..()
|
||||
|
||||
if(!istype(arrived) || !istype(source) || !source.coolant_to_spend())
|
||||
return
|
||||
|
||||
arrived.freeze()
|
||||
|
||||
/datum/storage/organ_box/handle_exit(datum/source, obj/item/gone)
|
||||
. = ..()
|
||||
|
||||
if(!istype(gone))
|
||||
return
|
||||
|
||||
gone.unfreeze()
|
||||
@@ -1,6 +1,19 @@
|
||||
/datum/storage/carpskin_bag
|
||||
max_total_storage = 42 // Up to 14 normal fish, but we're assuming that you'll be storing a bunch of gear as well
|
||||
|
||||
var/forced_pickup = FALSE
|
||||
|
||||
/datum/storage/carpskin_bag/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/fish,
|
||||
/obj/item/fishing_line,
|
||||
/obj/item/fishing_hook,
|
||||
/obj/item/fishing_lure,
|
||||
/obj/item/fish_analyzer,
|
||||
/obj/item/bait_can,
|
||||
))
|
||||
|
||||
// All hooks, lines and lures are classified as one type
|
||||
/datum/storage/carpskin_bag/process_numerical_display()
|
||||
var/list/toreturn = list()
|
||||
@@ -6,7 +6,8 @@
|
||||
/datum/storage/fish_case/can_insert(obj/item/to_insert, mob/user, messages, force)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return .
|
||||
return
|
||||
|
||||
if(!HAS_TRAIT(to_insert, TRAIT_AQUARIUM_CONTENT))
|
||||
if(messages && user)
|
||||
user.balloon_alert(user, "can't hold!")
|
||||
327
code/datums/storage/subtypes/others/misc.dm
Normal file
327
code/datums/storage/subtypes/others/misc.dm
Normal file
@@ -0,0 +1,327 @@
|
||||
//For storage types that are small enough to fit in this file
|
||||
|
||||
///Test tube rack
|
||||
/datum/storage/test_tube_rack
|
||||
max_slots = 8
|
||||
screen_max_columns = 4
|
||||
screen_max_rows = 2
|
||||
allow_quick_gather = TRUE
|
||||
allow_quick_empty = TRUE
|
||||
|
||||
/datum/storage/test_tube_rack/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/reagent_containers/cup/tube)
|
||||
|
||||
///Surgery tray
|
||||
/datum/storage/surgery_tray
|
||||
max_total_storage = 30
|
||||
max_slots = 14
|
||||
animated = FALSE
|
||||
|
||||
/datum/storage/surgery_tray/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/autopsy_scanner,
|
||||
/obj/item/blood_filter,
|
||||
/obj/item/bonesetter,
|
||||
/obj/item/cautery,
|
||||
/obj/item/circular_saw,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
/obj/item/hemostat,
|
||||
/obj/item/razor,
|
||||
/obj/item/retractor,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/stack/medical/bone_gel,
|
||||
/obj/item/stack/sticky_tape/surgical,
|
||||
/obj/item/surgical_drapes,
|
||||
/obj/item/surgicaldrill,
|
||||
))
|
||||
|
||||
///Organ box
|
||||
/datum/storage/organ_box
|
||||
max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
max_total_storage = 21
|
||||
|
||||
/datum/storage/organ_box/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/organ,
|
||||
/obj/item/bodypart,
|
||||
/obj/item/food/icecream,
|
||||
))
|
||||
|
||||
/datum/storage/organ_box/handle_enter(obj/item/storage/organbox/source, obj/item/arrived)
|
||||
. = ..()
|
||||
if(istype(arrived) && istype(source) && source.coolant_to_spend())
|
||||
arrived.freeze()
|
||||
|
||||
/datum/storage/organ_box/handle_exit(datum/source, obj/item/gone)
|
||||
. = ..()
|
||||
if(istype(gone))
|
||||
gone.unfreeze()
|
||||
|
||||
///Portable chem mixer
|
||||
/datum/storage/portable_chem_mixer
|
||||
max_total_storage = 200
|
||||
max_slots = 50
|
||||
|
||||
/datum/storage/portable_chem_mixer/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/cup/glass/waterbottle,
|
||||
/obj/item/reagent_containers/condiment,
|
||||
))
|
||||
|
||||
///Implant
|
||||
/datum/storage/implant
|
||||
max_total_storage = 6
|
||||
max_slots = 2
|
||||
silent = TRUE
|
||||
allow_big_nesting = TRUE
|
||||
|
||||
/datum/storage/implant/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(cant_hold_list = /obj/item/disk/nuclear)
|
||||
|
||||
///Drone storage
|
||||
/datum/storage/drone
|
||||
max_total_storage = 40
|
||||
max_slots = 10
|
||||
do_rustle = FALSE
|
||||
|
||||
/datum/storage/drone/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/crowbar/drone,
|
||||
/obj/item/screwdriver/drone,
|
||||
/obj/item/wrench/drone,
|
||||
/obj/item/weldingtool/drone,
|
||||
/obj/item/wirecutters/drone,
|
||||
/obj/item/multitool/drone,
|
||||
/obj/item/pipe_dispenser/drone,
|
||||
/obj/item/t_scanner/drone,
|
||||
/obj/item/analyzer/drone,
|
||||
/obj/item/soap/drone,
|
||||
))
|
||||
|
||||
/datum/storage/drone/dump_content_at(atom/dest_object, dump_loc, mob/user)
|
||||
return //no dumping of contents allowed
|
||||
|
||||
///Basket
|
||||
/datum/storage/basket
|
||||
max_total_storage = 21
|
||||
|
||||
///Easter basket
|
||||
/datum/storage/basket/easter/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/food/egg,
|
||||
/obj/item/food/chocolateegg,
|
||||
/obj/item/food/boiledegg,
|
||||
/obj/item/surprise_egg
|
||||
))
|
||||
|
||||
/datum/storage/basket/easter/handle_enter(datum/source, obj/item/arrived)
|
||||
. = ..()
|
||||
countEggs(source)
|
||||
|
||||
/datum/storage/basket/easter/proc/countEggs(obj/item/storage/basket/easter/basket)
|
||||
basket.cut_overlays()
|
||||
basket.add_overlay("basket-grass")
|
||||
basket.add_overlay("basket-egg[min(basket.contents.len, 5)]")
|
||||
|
||||
/datum/storage/basket/easter/handle_exit(datum/source, obj/item/gone)
|
||||
. = ..()
|
||||
countEggs(source)
|
||||
|
||||
///Briefcase
|
||||
/datum/storage/briefcase
|
||||
max_total_storage = 21
|
||||
|
||||
//=======================Fancy storages======================
|
||||
///Donut box
|
||||
/datum/storage/donut/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/food/donut)
|
||||
|
||||
///Egg box
|
||||
/datum/storage/egg_box/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/food/egg)
|
||||
|
||||
///Generic fancy holder
|
||||
/datum/storage/fancy_holder/New(obj/item/storage/fancy/candle_box/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(parent.spawn_type)
|
||||
|
||||
///Heart box
|
||||
/datum/storage/heart_box/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/food/bonbon)
|
||||
|
||||
///Cigrate boxes
|
||||
/datum/storage/cigarette_box
|
||||
display_contents = FALSE
|
||||
|
||||
/datum/storage/cigarette_box/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/cigarette,
|
||||
/obj/item/lighter,
|
||||
))
|
||||
|
||||
///Coffee condiment display
|
||||
/datum/storage/coffee_condi_display
|
||||
max_slots = 14
|
||||
|
||||
/datum/storage/coffee_condi_display/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/reagent_containers/condiment/pack/sugar,
|
||||
/obj/item/reagent_containers/condiment/creamer,
|
||||
/obj/item/reagent_containers/condiment/pack/astrotame,
|
||||
/obj/item/reagent_containers/condiment/chocolate,
|
||||
))
|
||||
|
||||
///Coffee cart rack
|
||||
/datum/storage/coffee_cart_rack
|
||||
max_slots = 4
|
||||
|
||||
/datum/storage/coffee_cart_rack/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/coffee_cartridge)
|
||||
|
||||
//=================================================
|
||||
|
||||
///Pill bottle
|
||||
/datum/storage/pillbottle
|
||||
allow_quick_gather = TRUE
|
||||
open_sound = 'sound/items/handling/pill_bottle_open.ogg'
|
||||
open_sound_vary = FALSE
|
||||
|
||||
/datum/storage/pillbottle/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/reagent_containers/applicator,
|
||||
/obj/item/food/bait/natural,
|
||||
))
|
||||
|
||||
|
||||
///Six pack beer
|
||||
/datum/storage/sixcan
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
max_total_storage = 12
|
||||
max_slots = 6
|
||||
|
||||
/datum/storage/sixcan/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/reagent_containers/cup/soda_cans,
|
||||
/obj/item/reagent_containers/cup/glass/bottle/beer,
|
||||
/obj/item/reagent_containers/cup/glass/bottle/ale,
|
||||
/obj/item/reagent_containers/cup/glass/waterbottle,
|
||||
))
|
||||
|
||||
///Wallet storage
|
||||
/datum/storage/wallet
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
max_slots = 4
|
||||
|
||||
/datum/storage/wallet/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(
|
||||
can_hold_list = list(
|
||||
/obj/item/stack/spacecash,
|
||||
/obj/item/holochip,
|
||||
/obj/item/card,
|
||||
/obj/item/cigarette,
|
||||
/obj/item/clothing/accessory/dogtag,
|
||||
/obj/item/coin,
|
||||
/obj/item/coupon,
|
||||
/obj/item/dice,
|
||||
/obj/item/disk,
|
||||
/obj/item/flashlight/pen,
|
||||
/obj/item/folder/biscuit,
|
||||
/obj/item/food/chococoin,
|
||||
/obj/item/implanter,
|
||||
/obj/item/laser_pointer,
|
||||
/obj/item/lighter,
|
||||
/obj/item/lipstick,
|
||||
/obj/item/match,
|
||||
/obj/item/paper,
|
||||
/obj/item/pen,
|
||||
/obj/item/photo,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/reagent_containers/applicator,
|
||||
/obj/item/screwdriver,
|
||||
/obj/item/seeds,
|
||||
/obj/item/spess_knife,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/stamp,
|
||||
/obj/item/toy/crayon,
|
||||
),
|
||||
cant_hold_list = list(
|
||||
/obj/item/screwdriver/power
|
||||
)
|
||||
)
|
||||
|
||||
///Crayons storage
|
||||
/datum/storage/crayons/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(
|
||||
can_hold_list = /obj/item/toy/crayon,
|
||||
cant_hold_list = list(
|
||||
/obj/item/toy/crayon/spraycan,
|
||||
/obj/item/toy/crayon/mime,
|
||||
/obj/item/toy/crayon/rainbow,
|
||||
),
|
||||
)
|
||||
|
||||
///Dice storage
|
||||
/datum/storage/dice
|
||||
allow_quick_gather = TRUE
|
||||
|
||||
/datum/storage/dice/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/dice)
|
||||
|
||||
///Mail counterfeit
|
||||
/datum/storage/mail_counterfeit
|
||||
max_slots = 1
|
||||
allow_big_nesting = TRUE
|
||||
|
||||
///Mail counterfeit advanced
|
||||
/datum/storage/mail_counterfeit/advanced
|
||||
max_slots = 21
|
||||
max_total_storage = 21
|
||||
|
||||
///Mail counterfeit bluespace
|
||||
/datum/storage/mail_counterfeit/bluespace
|
||||
max_total_storage = 35
|
||||
max_slots = 30
|
||||
max_specific_storage = WEIGHT_CLASS_GIGANTIC
|
||||
|
||||
///Card binder
|
||||
/datum/storage/card_binder
|
||||
max_total_storage = 120
|
||||
max_slots = 60
|
||||
|
||||
/datum/storage/card_binder/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/tcgcard)
|
||||
|
||||
///Toilet bong
|
||||
/datum/storage/toiletbong
|
||||
max_slots = 12
|
||||
max_total_storage = 100
|
||||
attack_hand_interact = FALSE
|
||||
do_rustle = FALSE
|
||||
animated = FALSE
|
||||
|
||||
/datum/storage/toiletbong/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/food)
|
||||
51
code/datums/storage/subtypes/others/pod.dm
Normal file
51
code/datums/storage/subtypes/others/pod.dm
Normal file
@@ -0,0 +1,51 @@
|
||||
/datum/storage/pod
|
||||
max_slots = 14
|
||||
max_total_storage = WEIGHT_CLASS_BULKY * 14
|
||||
allow_big_nesting = TRUE
|
||||
/// If TRUE, we unlock regardless of security level
|
||||
var/always_unlocked = FALSE
|
||||
|
||||
/datum/storage/pod/open_storage(mob/to_show)
|
||||
if(isliving(to_show) && SSsecurity_level.get_current_level_as_number() < SEC_LEVEL_RED)
|
||||
to_chat(to_show, span_warning("The storage unit will only unlock during a Red or Delta security alert."))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/storage/pod/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
// all of these are a type below what actually spawn with
|
||||
// (IE all space suits instead of just the emergency ones)
|
||||
// because an enterprising traitor might be able to hide things,
|
||||
// like their syndicate toolbox or softsuit. may be fun?
|
||||
set_holdable(exception_hold_list = list(
|
||||
/obj/item/clothing/suit/space,
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/storage/toolbox,
|
||||
))
|
||||
|
||||
RegisterSignal(SSsecurity_level, COMSIG_SECURITY_LEVEL_CHANGED, PROC_REF(update_lock))
|
||||
update_lock(new_level = SSsecurity_level.get_current_level_as_number())
|
||||
|
||||
/datum/storage/pod/set_parent(atom/new_parent)
|
||||
. = ..()
|
||||
RegisterSignal(parent, COMSIG_ATOM_AFTER_SHUTTLE_MOVE, PROC_REF(pod_launch))
|
||||
|
||||
/datum/storage/pod/proc/update_lock(datum/source, new_level)
|
||||
SIGNAL_HANDLER
|
||||
if(always_unlocked)
|
||||
return
|
||||
|
||||
locked = (new_level < SEC_LEVEL_RED) ? STORAGE_FULLY_LOCKED : STORAGE_NOT_LOCKED
|
||||
parent.update_appearance(UPDATE_ICON_STATE)
|
||||
if(locked) // future todo : make `locked` a setter so this behavior can be built in (avoids exploits)
|
||||
close_all()
|
||||
|
||||
/datum/storage/pod/proc/pod_launch(datum/source, turf/old_turf)
|
||||
SIGNAL_HANDLER
|
||||
// This check is to ignore the movement of the shuttle from the transit level to the station as it is loaded in.
|
||||
if(old_turf && is_reserved_level(old_turf.z))
|
||||
return
|
||||
// If the pod was launched, the storage will always open.
|
||||
always_unlocked = TRUE
|
||||
locked = STORAGE_NOT_LOCKED
|
||||
parent.update_appearance(UPDATE_ICON_STATE)
|
||||
@@ -43,7 +43,10 @@
|
||||
/obj/item/circuitboard/computer,
|
||||
)
|
||||
|
||||
return is_type_in_list(to_insert, exceptions) ? ..() : FALSE
|
||||
if(!is_type_in_list(to_insert, exceptions))
|
||||
return FALSE
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/storage/rped/attempt_insert(obj/item/to_insert, mob/user, override, force, messages)
|
||||
if(isstack(to_insert))
|
||||
@@ -1,3 +1,4 @@
|
||||
///Regular pockets
|
||||
/datum/storage/pockets
|
||||
max_slots = 2
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
@@ -17,16 +18,18 @@
|
||||
else
|
||||
to_chat(user, span_notice("You discreetly slip [to_insert] into [parent]."))
|
||||
|
||||
///Small pockets
|
||||
/datum/storage/pockets/small
|
||||
max_slots = 1
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
attack_hand_interact = FALSE
|
||||
|
||||
///Tiny pockets
|
||||
/datum/storage/pockets/tiny
|
||||
max_slots = 1
|
||||
max_specific_storage = WEIGHT_CLASS_TINY
|
||||
attack_hand_interact = FALSE
|
||||
|
||||
///Fedora pockets
|
||||
/datum/storage/pockets/small/fedora/New(
|
||||
atom/parent,
|
||||
max_slots,
|
||||
@@ -34,7 +37,6 @@
|
||||
max_total_storage,
|
||||
)
|
||||
. = ..()
|
||||
|
||||
set_holdable(exception_hold_list = list(
|
||||
/obj/item/katana,
|
||||
/obj/item/toy/katana,
|
||||
@@ -43,10 +45,12 @@
|
||||
/obj/item/gun/ballistic/automatic/tommygun,
|
||||
))
|
||||
|
||||
///Fedora detective pockets
|
||||
/datum/storage/pockets/small/fedora/detective
|
||||
attack_hand_interact = TRUE // so the detectives would discover pockets in their hats
|
||||
click_alt_open = FALSE
|
||||
|
||||
///Chef hat pocket
|
||||
/datum/storage/pockets/chefhat
|
||||
attack_hand_interact = TRUE
|
||||
max_slots = 1
|
||||
@@ -72,6 +76,7 @@
|
||||
return
|
||||
return FALSE
|
||||
|
||||
///Shoe pockets
|
||||
/datum/storage/pockets/shoes
|
||||
max_slots = 2
|
||||
attack_hand_interact = FALSE
|
||||
@@ -85,44 +90,48 @@
|
||||
max_total_storage,
|
||||
)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/knife,
|
||||
/obj/item/spess_knife,
|
||||
/obj/item/switchblade,
|
||||
/obj/item/boxcutter,
|
||||
/obj/item/pen,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/dnainjector,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/reagent_containers/applicator/pill,
|
||||
/obj/item/reagent_containers/hypospray/medipen,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/implanter,
|
||||
/obj/item/screwdriver,
|
||||
/obj/item/weldingtool/mini,
|
||||
/obj/item/firing_pin,
|
||||
/obj/item/suppressor,
|
||||
/obj/item/ammo_box/magazine/m9mm,
|
||||
/obj/item/ammo_box/magazine/m10mm,
|
||||
/obj/item/ammo_box/magazine/m45,
|
||||
/obj/item/ammo_box/magazine/toy/pistol,
|
||||
/obj/item/ammo_casing,
|
||||
/obj/item/lipstick,
|
||||
/obj/item/cigarette,
|
||||
/obj/item/lighter,
|
||||
/obj/item/match,
|
||||
/obj/item/holochip,
|
||||
/obj/item/toy/crayon,
|
||||
/obj/item/reagent_containers/cup/glass/flask),
|
||||
list(/obj/item/screwdriver/power,
|
||||
/obj/item/ammo_casing/rocket,
|
||||
/obj/item/cigarette/pipe,
|
||||
/obj/item/toy/crayon/spraycan,
|
||||
/obj/item/seeds, // BUBBER EDIT ADDITION
|
||||
/obj/item/card, // BUBBER EDIT ADDITION
|
||||
set_holdable(
|
||||
can_hold_list = list(
|
||||
/obj/item/knife,
|
||||
/obj/item/spess_knife,
|
||||
/obj/item/switchblade,
|
||||
/obj/item/boxcutter,
|
||||
/obj/item/pen,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/dnainjector,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/reagent_containers/applicator/pill,
|
||||
/obj/item/reagent_containers/hypospray/medipen,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/implanter,
|
||||
/obj/item/screwdriver,
|
||||
/obj/item/weldingtool/mini,
|
||||
/obj/item/firing_pin,
|
||||
/obj/item/suppressor,
|
||||
/obj/item/ammo_box/magazine/m9mm,
|
||||
/obj/item/ammo_box/magazine/m10mm,
|
||||
/obj/item/ammo_box/magazine/m45,
|
||||
/obj/item/ammo_box/magazine/toy/pistol,
|
||||
/obj/item/ammo_casing,
|
||||
/obj/item/lipstick,
|
||||
/obj/item/cigarette,
|
||||
/obj/item/lighter,
|
||||
/obj/item/match,
|
||||
/obj/item/holochip,
|
||||
/obj/item/toy/crayon,
|
||||
/obj/item/reagent_containers/cup/glass/flask,
|
||||
),
|
||||
cant_hold_list = list(
|
||||
/obj/item/screwdriver/power,
|
||||
/obj/item/ammo_casing/rocket,
|
||||
/obj/item/cigarette/pipe,
|
||||
/obj/item/toy/crayon/spraycan,
|
||||
/obj/item/seeds, // BUBBER EDIT ADDITION
|
||||
/obj/item/card, // BUBBER EDIT ADDITION
|
||||
)
|
||||
)
|
||||
|
||||
///Clown shoe pockets
|
||||
/datum/storage/pockets/shoes/clown/New(
|
||||
atom/parent,
|
||||
max_slots,
|
||||
@@ -167,6 +176,7 @@
|
||||
),
|
||||
)
|
||||
|
||||
///Protector pocket
|
||||
/datum/storage/pockets/pocketprotector
|
||||
max_slots = 3
|
||||
max_specific_storage = WEIGHT_CLASS_TINY
|
||||
@@ -187,6 +197,7 @@
|
||||
/obj/item/reagent_containers/cup/rag, //BUBBER EDIT ADDITION: A POCKET PROTECTOR CAN CARRY A RAG
|
||||
))
|
||||
|
||||
///Helmet pockets
|
||||
/datum/storage/pockets/helmet
|
||||
max_slots = 2
|
||||
quickdraw = TRUE
|
||||
@@ -206,7 +217,7 @@
|
||||
/obj/item/ammo_box/strilka310
|
||||
))
|
||||
|
||||
|
||||
///Void cloak pocket
|
||||
/datum/storage/pockets/void_cloak
|
||||
quickdraw = TRUE
|
||||
max_total_storage = 5 // 2 small items + 1 tiny item, or 1 normal item + 1 small item
|
||||
@@ -235,6 +246,7 @@
|
||||
),
|
||||
exception_hold_list = list(
|
||||
/obj/item/bodypart,
|
||||
/obj/item/melee/sickly_blade,
|
||||
/obj/item/melee/sickly_blade
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
/datum/storage/portable_chem_mixer
|
||||
max_total_storage = 200
|
||||
max_slots = 50
|
||||
|
||||
/datum/storage/portable_chem_mixer/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
|
||||
set_holdable(list(
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/cup/glass/waterbottle,
|
||||
/obj/item/reagent_containers/condiment,
|
||||
))
|
||||
@@ -1,32 +0,0 @@
|
||||
/datum/storage/surgery_tray
|
||||
max_total_storage = 30
|
||||
max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
max_slots = 14
|
||||
animated = FALSE
|
||||
|
||||
/datum/storage/surgery_tray/New(
|
||||
atom/parent,
|
||||
max_slots,
|
||||
max_specific_storage,
|
||||
max_total_storage,
|
||||
)
|
||||
. = ..()
|
||||
set_holdable(list(
|
||||
/obj/item/autopsy_scanner,
|
||||
/obj/item/blood_filter,
|
||||
/obj/item/bonesetter,
|
||||
/obj/item/cautery,
|
||||
/obj/item/circular_saw,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
/obj/item/reagent_containers/medigel/sterilizine, // BUBBER EDIT ADDITION
|
||||
/obj/item/clothing/suit/toggle/labcoat/hospitalgown, // BUBBER EDIT ADDITION
|
||||
/obj/item/storage/pill_bottle/lidocaine, // BUBBER EDIT ADDITION
|
||||
/obj/item/hemostat,
|
||||
/obj/item/razor,
|
||||
/obj/item/retractor,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/stack/medical/bone_gel,
|
||||
/obj/item/stack/sticky_tape/surgical,
|
||||
/obj/item/surgical_drapes,
|
||||
/obj/item/surgicaldrill,
|
||||
))
|
||||
@@ -1,15 +0,0 @@
|
||||
/datum/storage/test_tube_rack
|
||||
max_slots = 8
|
||||
screen_max_columns = 4
|
||||
screen_max_rows = 2
|
||||
allow_quick_gather = TRUE
|
||||
allow_quick_empty = TRUE
|
||||
|
||||
/datum/storage/test_tube_rack/New(
|
||||
atom/parent,
|
||||
max_slots,
|
||||
max_specific_storage,
|
||||
max_total_storage,
|
||||
)
|
||||
. = ..()
|
||||
set_holdable(/obj/item/reagent_containers/cup/tube)
|
||||
37
code/datums/storage/subtypes/toolboxes.dm
Normal file
37
code/datums/storage/subtypes/toolboxes.dm
Normal file
@@ -0,0 +1,37 @@
|
||||
///Normal toolbox
|
||||
/datum/storage/toolbox
|
||||
open_sound = 'sound/items/handling/toolbox/toolbox_open.ogg'
|
||||
rustle_sound = 'sound/items/handling/toolbox/toolbox_rustle.ogg'
|
||||
|
||||
///Heirloom toolbox
|
||||
/datum/storage/toolbox/heirloom
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
|
||||
///Syndicate toolbox
|
||||
/datum/storage/toolbox/syndicate
|
||||
silent = TRUE
|
||||
|
||||
///Artistic toolbox
|
||||
/datum/storage/toolbox/artistic
|
||||
max_total_storage = 20
|
||||
max_slots = 11
|
||||
|
||||
///Guncase toolbox
|
||||
/datum/storage/toolbox/guncase
|
||||
max_total_storage = 7 //enough to hold ONE bulky gun and the ammo boxes
|
||||
max_slots = 4
|
||||
max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
|
||||
///Doublesword toolbox
|
||||
/datum/storage/toolbox/guncase/doublesword
|
||||
max_slots = 5
|
||||
max_total_storage = 10 //it'll hold enough
|
||||
|
||||
///Fishing toolbox
|
||||
/datum/storage/toolbox/fishing/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
set_holdable(exception_hold_list = /obj/item/fishing_rod)
|
||||
|
||||
///Fishing toolbox small
|
||||
/datum/storage/toolbox/fishing/small
|
||||
max_specific_storage = WEIGHT_CLASS_SMALL //It can still hold a fishing rod
|
||||
@@ -1,11 +0,0 @@
|
||||
/datum/storage/trash
|
||||
|
||||
/datum/storage/trash/remove_single(mob/removing, obj/item/thing, atom/remove_to_loc, silent)
|
||||
real_location.visible_message(
|
||||
span_notice("[removing] starts fishing around inside [parent]."),
|
||||
span_notice("You start digging around in [parent] to try and pull something out."),
|
||||
)
|
||||
if(!do_after(removing, 1.5 SECONDS, parent))
|
||||
return FALSE
|
||||
|
||||
return ..()
|
||||
@@ -725,17 +725,7 @@
|
||||
icon_state = "crayonbox"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
custom_materials = list(/datum/material/cardboard = SHEET_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/item/storage/crayons/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(
|
||||
can_hold_list = /obj/item/toy/crayon,
|
||||
cant_hold_list = list(
|
||||
/obj/item/toy/crayon/spraycan,
|
||||
/obj/item/toy/crayon/mime,
|
||||
/obj/item/toy/crayon/rainbow,
|
||||
),
|
||||
)
|
||||
storage_type = /datum/storage/crayons
|
||||
|
||||
/obj/item/storage/crayons/PopulateContents()
|
||||
new /obj/item/toy/crayon/red(src)
|
||||
|
||||
@@ -9,11 +9,7 @@
|
||||
icon = 'icons/obj/toys/dice.dmi'
|
||||
icon_state = "dicebag"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/storage/dice/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.allow_quick_gather = TRUE
|
||||
atom_storage.set_holdable(/obj/item/dice)
|
||||
storage_type = /datum/storage/dice
|
||||
|
||||
/obj/item/storage/dice/PopulateContents()
|
||||
new /obj/item/dice/d4(src)
|
||||
|
||||
@@ -351,18 +351,7 @@
|
||||
worn_icon_state = "mailbag"
|
||||
resistance_flags = FLAMMABLE
|
||||
custom_premium_price = PAYCHECK_LOWER
|
||||
|
||||
/obj/item/storage/bag/mail/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 42
|
||||
atom_storage.max_slots = 21
|
||||
atom_storage.numerical_stacking = FALSE
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/mail,
|
||||
/obj/item/delivery/small,
|
||||
/obj/item/paper
|
||||
))
|
||||
storage_type = /datum/storage/bag/mail
|
||||
|
||||
/obj/item/paper/fluff/junkmail_redpill
|
||||
name = "smudged paper"
|
||||
@@ -501,12 +490,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
icon = 'icons/obj/antags/syndicate_tools.dmi'
|
||||
icon_state = "mail_counterfeit_device"
|
||||
|
||||
/obj/item/storage/mail_counterfeit_device/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 1
|
||||
atom_storage.allow_big_nesting = TRUE
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
storage_type = /datum/storage/mail_counterfeit
|
||||
|
||||
/obj/item/storage/mail_counterfeit_device/examine_more(mob/user)
|
||||
. = ..()
|
||||
@@ -578,19 +562,17 @@
|
||||
/// Unobtainable item mostly for (b)admin purposes.
|
||||
/obj/item/storage/mail_counterfeit_device/advanced
|
||||
name = "GLA-MACRO mail counterfeit device"
|
||||
storage_type = /datum/storage/mail_counterfeit/advanced
|
||||
|
||||
/obj/item/storage/mail_counterfeit_device/advanced/Initialize(mapload)
|
||||
. = ..()
|
||||
desc += " This model is highly advanced and capable of compressing items, making mail's storage space comparable to standard backpack."
|
||||
create_storage(max_slots = 21, max_total_storage = 21)
|
||||
atom_storage.allow_big_nesting = TRUE
|
||||
|
||||
/// Unobtainable item mostly for (b)admin purposes.
|
||||
/obj/item/storage/mail_counterfeit_device/bluespace
|
||||
name = "GLA-ULTRA mail counterfeit device"
|
||||
storage_type = /datum/storage/mail_counterfeit/bluespace
|
||||
|
||||
/obj/item/storage/mail_counterfeit_device/bluespace/Initialize(mapload)
|
||||
. = ..()
|
||||
desc += " This model is the most advanced and capable of performing crazy bluespace compressions, making mail's storage space comparable to bluespace backpack."
|
||||
create_storage(max_specific_storage = WEIGHT_CLASS_GIGANTIC, max_total_storage = 35, max_slots = 30)
|
||||
atom_storage.allow_big_nesting = TRUE
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
icon_state = "giftbag0"
|
||||
inhand_icon_state = "giftbag"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
storage_type = /datum/storage/backpack/santabag
|
||||
|
||||
/obj/item/storage/backpack/santabag/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -238,10 +239,7 @@
|
||||
icon = 'icons/obj/storage/ethereal.dmi'
|
||||
worn_icon = 'icons/mob/clothing/back/ethereal.dmi'
|
||||
icon_state = "saddlepack"
|
||||
|
||||
/obj/item/storage/backpack/saddlepack/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 26
|
||||
storage_type = /datum/storage/backpack/saddle
|
||||
|
||||
// MEAT MEAT MEAT MEAT MEAT
|
||||
|
||||
@@ -388,12 +386,11 @@
|
||||
icon_state = "satchel-flat"
|
||||
inhand_icon_state = "satchel-flat"
|
||||
w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself.
|
||||
storage_type = /datum/storage/backpack/satchel_flat
|
||||
|
||||
/obj/item/storage/backpack/satchel/flat/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, INVISIBILITY_MAXIMUM, use_anchor = TRUE) // SKYRAT EDIT - Ghosts can't see smuggler's satchels
|
||||
atom_storage.max_total_storage = 15
|
||||
atom_storage.set_holdable(cant_hold_list = /obj/item/storage/backpack/satchel/flat) //muh recursive backpacks
|
||||
ADD_TRAIT(src, TRAIT_CONTRABAND_BLOCKER, INNATE_TRAIT)
|
||||
|
||||
/obj/item/storage/backpack/satchel/flat/PopulateContents()
|
||||
|
||||
@@ -21,12 +21,7 @@
|
||||
/obj/item/storage/bag
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/storage/bag/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.allow_quick_gather = TRUE
|
||||
atom_storage.allow_quick_empty = TRUE
|
||||
atom_storage.numerical_stacking = TRUE
|
||||
storage_type = /datum/storage/bag
|
||||
|
||||
// -----------------------------
|
||||
// Trash bag
|
||||
@@ -40,17 +35,13 @@
|
||||
worn_icon_state = "trashbag"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
|
||||
storage_type = /datum/storage/trash
|
||||
storage_type = /datum/storage/bag/trash
|
||||
///If true, can be inserted into the janitor cart
|
||||
var/insertable = TRUE
|
||||
|
||||
/obj/item/storage/bag/trash/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
atom_storage.max_total_storage = 30
|
||||
atom_storage.max_slots = 30
|
||||
atom_storage.set_holdable(cant_hold_list = /obj/item/disk/nuclear)
|
||||
atom_storage.supports_smart_equip = FALSE
|
||||
|
||||
RegisterSignal(atom_storage, COMSIG_STORAGE_DUMP_POST_TRANSFER, PROC_REF(post_insertion))
|
||||
|
||||
/// If you dump a trash bag into something, anything that doesn't get inserted will spill out onto your feet
|
||||
@@ -89,8 +80,6 @@
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, CYBORG_ITEM_TRAIT)
|
||||
|
||||
/obj/item/storage/bag/trash/filled
|
||||
|
||||
/obj/item/storage/bag/trash/filled/PopulateContents()
|
||||
. = ..()
|
||||
for(var/i in 1 to rand(1, 7))
|
||||
@@ -103,11 +92,7 @@
|
||||
icon_state = "bluetrashbag"
|
||||
inhand_icon_state = "bluetrashbag"
|
||||
item_flags = NO_MAT_REDEMPTION
|
||||
|
||||
/obj/item/storage/bag/trash/bluespace/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 60
|
||||
atom_storage.max_slots = 60
|
||||
storage_type = /datum/storage/bag/trash/bluespace
|
||||
|
||||
/obj/item/storage/bag/trash/bluespace/cyborg
|
||||
insertable = FALSE
|
||||
@@ -124,22 +109,13 @@
|
||||
worn_icon_state = "satchel"
|
||||
slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_POCKETS
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
storage_type = /datum/storage/bag/ore
|
||||
///If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it
|
||||
var/spam_protection = FALSE
|
||||
var/mob/listeningTo
|
||||
///Cooldown on balloon alerts when picking ore
|
||||
COOLDOWN_DECLARE(ore_bag_balloon_cooldown)
|
||||
|
||||
/obj/item/storage/bag/ore/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_HUGE
|
||||
atom_storage.max_total_storage = 50
|
||||
atom_storage.numerical_stacking = TRUE
|
||||
atom_storage.allow_quick_empty = TRUE
|
||||
atom_storage.allow_quick_gather = TRUE
|
||||
atom_storage.set_holdable(/obj/item/stack/ore)
|
||||
atom_storage.silent_for_user = TRUE
|
||||
|
||||
/obj/item/storage/bag/ore/equipped(mob/user)
|
||||
. = ..()
|
||||
if(listeningTo == user)
|
||||
@@ -218,12 +194,7 @@
|
||||
name = "mining satchel of holding"
|
||||
desc = "A revolution in convenience, this satchel allows for huge amounts of ore storage. It's been outfitted with anti-malfunction safety measures."
|
||||
icon_state = "satchel_bspace"
|
||||
|
||||
/obj/item/storage/bag/ore/holding/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = INFINITY
|
||||
atom_storage.max_specific_storage = INFINITY
|
||||
atom_storage.max_total_storage = INFINITY
|
||||
storage_type = /datum/storage/bag/ore/holding
|
||||
|
||||
// -----------------------------
|
||||
// Plant bag
|
||||
@@ -235,19 +206,7 @@
|
||||
icon_state = "plantbag"
|
||||
worn_icon_state = "plantbag"
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/plants/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 100
|
||||
atom_storage.max_slots = 100
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/food/grown,
|
||||
/obj/item/graft,
|
||||
/obj/item/grown,
|
||||
/obj/item/food/honeycomb,
|
||||
/obj/item/seeds,
|
||||
))
|
||||
storage_type = /datum/storage/bag/plants
|
||||
|
||||
/obj/item/storage/bag/plants/portaseeder
|
||||
name = "portable seed extractor"
|
||||
@@ -292,24 +251,7 @@
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "sheetsnatcher"
|
||||
worn_icon_state = "satchel"
|
||||
|
||||
var/capacity = 300 //the number of sheets it can carry.
|
||||
|
||||
/obj/item/storage/bag/sheetsnatcher/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.allow_quick_empty = TRUE
|
||||
atom_storage.allow_quick_gather = TRUE
|
||||
atom_storage.numerical_stacking = TRUE
|
||||
atom_storage.set_holdable(
|
||||
can_hold_list = list(
|
||||
/obj/item/stack/sheet
|
||||
),
|
||||
cant_hold_list = list(
|
||||
/obj/item/stack/sheet/mineral/sandstone,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
),
|
||||
)
|
||||
atom_storage.max_total_storage = capacity / 2
|
||||
storage_type = /datum/storage/bag/sheet_snatcher
|
||||
|
||||
// -----------------------------
|
||||
// Sheet Snatcher (Cyborg)
|
||||
@@ -318,7 +260,7 @@
|
||||
/obj/item/storage/bag/sheetsnatcher/borg
|
||||
name = "sheet snatcher 9000"
|
||||
desc = ""
|
||||
capacity = 500//Borgs get more because >specialization
|
||||
storage_type = /datum/storage/bag/sheet_snatcher/borg
|
||||
|
||||
|
||||
// -----------------------------
|
||||
@@ -329,8 +271,8 @@
|
||||
name = "sheet snatcher EXTREME EDITION"
|
||||
desc = "A Nanotrasen storage system designed which has been given post-market alterations to hold any type of sheet. Comes pre-populated with "
|
||||
color = "#ff3737" // I'm too lazy to make a unique sprite
|
||||
capacity = 5000 // Hopefully enough to fit anything you need
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
storage_type = /datum/storage/bag/sheet_snatcher_debug
|
||||
|
||||
// Copy-pasted from the former /obj/item/storage/box/material, w/ small additions like rods, cardboard, plastic.
|
||||
// "Only 20 uranium 'cause of radiation"
|
||||
@@ -360,24 +302,10 @@
|
||||
/obj/item/stack/sheet/mineral/abductor = 50,
|
||||
/obj/item/stack/sheet/cardboard/fifty = null,
|
||||
)
|
||||
//This needs to be done here and not in Initialize() because the stacks get merged and fall out when their weight updates if this is set after PopulateContents()
|
||||
atom_storage.allow_big_nesting = TRUE
|
||||
atom_storage.max_slots = 99
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_GIGANTIC
|
||||
atom_storage.max_total_storage = capacity
|
||||
for(var/obj/item/stack/stack_type as anything in items_inside)
|
||||
var/amt = items_inside[stack_type]
|
||||
new stack_type(src, amt, FALSE)
|
||||
|
||||
/obj/item/storage/bag/sheetsnatcher/debug/Initialize(mapload)
|
||||
. = ..()
|
||||
// Overrides so it can hold all possible sheets
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/stack/sheet,
|
||||
/obj/item/stack/sheet/mineral/sandstone,
|
||||
/obj/item/stack/sheet/mineral/wood,
|
||||
))
|
||||
|
||||
// -----------------------------
|
||||
// Book bag
|
||||
// -----------------------------
|
||||
@@ -389,17 +317,7 @@
|
||||
icon_state = "bookbag"
|
||||
worn_icon_state = "bookbag"
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/books/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 21
|
||||
atom_storage.max_slots = 7
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/book,
|
||||
/obj/item/spellbook,
|
||||
/obj/item/poster,
|
||||
))
|
||||
storage_type = /datum/storage/bag/books
|
||||
|
||||
/*
|
||||
* Trays - Agouri
|
||||
@@ -418,34 +336,7 @@
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*1.5)
|
||||
custom_price = PAYCHECK_CREW * 0.6
|
||||
|
||||
/obj/item/storage/bag/tray/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY //Plates are required bulky to keep them out of backpacks
|
||||
atom_storage.set_holdable(
|
||||
can_hold_list = list(
|
||||
/obj/item/cigarette,
|
||||
/obj/item/food,
|
||||
/obj/item/kitchen,
|
||||
/obj/item/lighter,
|
||||
/obj/item/organ,
|
||||
/obj/item/plate,
|
||||
/obj/item/reagent_containers/condiment,
|
||||
/obj/item/reagent_containers/cup,
|
||||
/obj/item/rollingpaper,
|
||||
/obj/item/storage/box/gum,
|
||||
/obj/item/storage/box/matches,
|
||||
/obj/item/storage/fancy,
|
||||
/obj/item/trash,
|
||||
),
|
||||
cant_hold_list = list(
|
||||
/obj/item/plate/oven_tray,
|
||||
/obj/item/reagent_containers/cup/soup_pot,
|
||||
),
|
||||
) //Should cover: Bottles, Beakers, Bowls, Booze, Glasses, Food, Food Containers, Food Trash, Organs, Tobacco Products, Lighters, and Kitchen Tools.
|
||||
atom_storage.insert_preposition = "on"
|
||||
atom_storage.max_slots = 8
|
||||
atom_storage.max_total_storage = 16
|
||||
storage_type = /datum/storage/bag/tray
|
||||
|
||||
/obj/item/storage/bag/tray/attack(mob/living/M, mob/living/user)
|
||||
. = ..()
|
||||
@@ -512,22 +403,7 @@
|
||||
worn_icon_state = "chembag"
|
||||
desc = "A bag for storing pills, patches, and bottles."
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/chemistry/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 200
|
||||
atom_storage.max_slots = 50
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/reagent_containers/chem_pack,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/glass/waterbottle,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/medigel,
|
||||
/obj/item/reagent_containers/applicator,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
))
|
||||
storage_type = /datum/storage/bag/chemistry
|
||||
|
||||
|
||||
/obj/item/storage/bag/bio
|
||||
@@ -537,24 +413,7 @@
|
||||
worn_icon_state = "biobag"
|
||||
desc = "A bag for the safe transportation and disposal of biowaste and other virulent materials."
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/bio/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 200
|
||||
atom_storage.max_slots = 25
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/bodypart,
|
||||
/obj/item/food/monkeycube,
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/item/organ,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/hypospray/medipen,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
))
|
||||
storage_type = /datum/storage/bag/bio
|
||||
|
||||
/*
|
||||
* Science bag (mostly for xenobiologists)
|
||||
@@ -567,25 +426,7 @@
|
||||
worn_icon_state = "xenobag"
|
||||
desc = "A bag for the storage and transport of anomalous materials."
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/xeno/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 200
|
||||
atom_storage.max_slots = 25
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/bodypart,
|
||||
/obj/item/food/deadmouse,
|
||||
/obj/item/food/monkeycube,
|
||||
/obj/item/organ,
|
||||
/obj/item/petri_dish,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/slime_extract,
|
||||
/obj/item/swab,
|
||||
))
|
||||
storage_type = /datum/storage/bag/xeno
|
||||
|
||||
/*
|
||||
* Construction bag (for engineering, holds stock parts and electronics)
|
||||
@@ -599,22 +440,7 @@
|
||||
desc = "A bag for storing small construction components."
|
||||
slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_POCKETS
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/construction/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 100
|
||||
atom_storage.max_slots = 50
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/assembly,
|
||||
/obj/item/circuitboard,
|
||||
/obj/item/electronics,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/stack/cable_coil,
|
||||
/obj/item/stack/ore/bluespace_crystal,
|
||||
/obj/item/stock_parts,
|
||||
/obj/item/wallframe/camera,
|
||||
))
|
||||
storage_type = /datum/storage/bag/construction
|
||||
|
||||
/obj/item/storage/bag/harpoon_quiver
|
||||
name = "harpoon quiver"
|
||||
@@ -623,13 +449,7 @@
|
||||
icon_state = "quiver"
|
||||
inhand_icon_state = null
|
||||
worn_icon_state = "harpoon_quiver"
|
||||
|
||||
/obj/item/storage/bag/harpoon_quiver/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_TINY
|
||||
atom_storage.max_slots = 40
|
||||
atom_storage.max_total_storage = 100
|
||||
atom_storage.set_holdable(/obj/item/ammo_casing/harpoon)
|
||||
storage_type = /datum/storage/bag/harpoon_quiver
|
||||
|
||||
/obj/item/storage/bag/harpoon_quiver/PopulateContents()
|
||||
for(var/i in 1 to 40)
|
||||
@@ -644,20 +464,7 @@
|
||||
desc = "A oxygen tank cut in half, used for holding sharpened rods for the rebar crossbow."
|
||||
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_SUITSTORE|ITEM_SLOT_NECK
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/rebar_quiver/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_TINY
|
||||
atom_storage.max_slots = 10
|
||||
atom_storage.max_total_storage = 15
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/ammo_casing/rebar,
|
||||
/obj/item/ammo_casing/rebar/syndie,
|
||||
/obj/item/ammo_casing/rebar/healium,
|
||||
/obj/item/ammo_casing/rebar/hydrogen,
|
||||
/obj/item/ammo_casing/rebar/zaukerite,
|
||||
/obj/item/ammo_casing/rebar/paperball,
|
||||
))
|
||||
storage_type = /datum/storage/bag/rebar_quiver
|
||||
|
||||
/obj/item/storage/bag/rebar_quiver/syndicate
|
||||
icon_state = "syndie_quiver_0"
|
||||
@@ -670,11 +477,10 @@
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
actions_types = list(/datum/action/item_action/reload_rebar)
|
||||
action_slots = ALL
|
||||
storage_type = /datum/storage/bag/rebar_quiver/syndicate
|
||||
|
||||
/obj/item/storage/bag/rebar_quiver/syndicate/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 20
|
||||
atom_storage.max_total_storage = 20
|
||||
update_appearance(UPDATE_OVERLAYS)
|
||||
|
||||
/obj/item/storage/bag/rebar_quiver/syndicate/PopulateContents()
|
||||
|
||||
@@ -5,8 +5,5 @@
|
||||
icon_state = "basket"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
resistance_flags = FLAMMABLE
|
||||
storage_type = /datum/storage/basket
|
||||
|
||||
/obj/item/storage/basket/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 21
|
||||
|
||||
@@ -41,17 +41,7 @@
|
||||
custom_premium_price = PAYCHECK_CREW * 2
|
||||
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
|
||||
|
||||
/obj/item/storage/belt/utility/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 21
|
||||
atom_storage.set_holdable(GLOB.tool_items + list(
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/radio,
|
||||
/obj/item/melee/sickly_blade/lock,
|
||||
/obj/item/reagent_containers/cup/soda_cans,
|
||||
))
|
||||
storage_type = /datum/storage/utility_belt
|
||||
|
||||
/obj/item/storage/belt/utility/chief
|
||||
name = "chief engineer's toolbelt"
|
||||
@@ -205,73 +195,7 @@
|
||||
worn_icon_state = "medical"
|
||||
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
|
||||
|
||||
/obj/item/storage/belt/medical/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 21
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/bikehorn/rubberducky,
|
||||
/obj/item/blood_filter,
|
||||
/obj/item/bonesetter,
|
||||
/obj/item/cautery,
|
||||
/obj/item/circular_saw,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/clothing/neck/stethoscope,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/mask/muzzle,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
/obj/item/clothing/suit/toggle/labcoat/hospitalgown, //SKYRAT EDIT ADDITION - adds surgery gowns to belts
|
||||
/obj/item/clothing/head/utility/surgerycap,
|
||||
/obj/item/construction/plumbing,
|
||||
/obj/item/dnainjector,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/flashlight/pen,
|
||||
/obj/item/geiger_counter,
|
||||
/obj/item/gun/syringe/syndicate,
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/item/hemostat,
|
||||
/obj/item/holosign_creator/medical,
|
||||
/obj/item/hypospray/mkii, //SKYRAT EDIT ADDITION - HYPOSPRAYS
|
||||
/obj/item/storage/hypospraykit/, //SKYRAT EDIT ADDITION - HYPOSPRAYS
|
||||
/obj/item/implant,
|
||||
/obj/item/implantcase,
|
||||
/obj/item/implanter,
|
||||
/obj/item/lazarus_injector,
|
||||
/obj/item/lighter,
|
||||
/obj/item/pinpointer/crew,
|
||||
/obj/item/plunger,
|
||||
/obj/item/radio,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/vial, //SKYRAT EDIT ADDITION - HYPOSPRAYS
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/hypospray,
|
||||
/obj/item/reagent_containers/medigel,
|
||||
/obj/item/reagent_containers/applicator,
|
||||
/obj/item/reagent_containers/spray,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/retractor,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/shears,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/stack/sticky_tape, //surgical tape
|
||||
/obj/item/stamp,
|
||||
/obj/item/sensor_device,
|
||||
/obj/item/storage/fancy/cigarettes,
|
||||
/obj/item/storage/pill_bottle,
|
||||
/obj/item/surgical_drapes, //for true paramedics
|
||||
/obj/item/surgicaldrill,
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/weaponcell/medical, //SKYRAT EDIT MEDIGUNS
|
||||
/obj/item/handheld_soulcatcher, // SKYRAT EDIT SOULCATCHERS
|
||||
/obj/item/wrench/medical,
|
||||
/obj/item/knife/ritual,
|
||||
/obj/item/flesh_shears,
|
||||
))
|
||||
storage_type = /datum/storage/medical_belt
|
||||
|
||||
/obj/item/storage/belt/medical/paramedic
|
||||
name = "EMT belt"
|
||||
@@ -352,33 +276,7 @@
|
||||
)
|
||||
)
|
||||
// SKYRAT EDIT ADDITION END
|
||||
|
||||
/obj/item/storage/belt/security/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 5
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/ammo_box,
|
||||
/obj/item/ammo_casing/shotgun,
|
||||
/obj/item/assembly/flash/handheld,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/flashlight/seclite,
|
||||
/obj/item/food/donut,
|
||||
/obj/item/grenade,
|
||||
/obj/item/gun, //SKYRAT EDIT ADDITION
|
||||
/obj/item/holosign_creator/security,
|
||||
/obj/item/knife/combat,
|
||||
/obj/item/melee/baton,
|
||||
/obj/item/radio,
|
||||
/obj/item/reagent_containers/spray/pepper,
|
||||
/obj/item/restraints/handcuffs,
|
||||
/obj/item/restraints/legcuffs/bola,
|
||||
/obj/item/stock_parts/power_store/cell/microfusion, //SKYRAT EDIT ADDITION
|
||||
))
|
||||
atom_storage.open_sound = 'sound/items/handling/holster_open.ogg'
|
||||
atom_storage.open_sound_vary = TRUE
|
||||
atom_storage.rustle_sound = null
|
||||
storage_type = /datum/storage/security_belt
|
||||
|
||||
/obj/item/storage/belt/security/full/PopulateContents()
|
||||
new /obj/item/reagent_containers/spray/pepper(src)
|
||||
@@ -396,10 +294,7 @@
|
||||
worn_icon_state = "securitywebbing"
|
||||
content_overlays = FALSE
|
||||
custom_premium_price = PAYCHECK_COMMAND * 3
|
||||
|
||||
/obj/item/storage/belt/security/webbing/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 6
|
||||
storage_type = /datum/storage/security_belt/webbing
|
||||
|
||||
/obj/item/storage/belt/mining
|
||||
name = "explorer's webbing"
|
||||
@@ -408,54 +303,7 @@
|
||||
inhand_icon_state = "explorer1"
|
||||
worn_icon_state = "explorer1"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/storage/belt/mining/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 6
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 20
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/analyzer,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/crowbar,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/gps,
|
||||
/obj/item/mining_stabilizer,
|
||||
/obj/item/key/lasso,
|
||||
/obj/item/knife,
|
||||
/obj/item/lighter,
|
||||
/obj/item/mining_scanner,
|
||||
/obj/item/multitool,
|
||||
/obj/item/organ/monster_core,
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/radio,
|
||||
/obj/item/reagent_containers/cup/glass,
|
||||
/obj/item/reagent_containers/cup/glass/bottle,
|
||||
/obj/item/reagent_containers/hypospray,
|
||||
/obj/item/reagent_containers/applicator/pill,
|
||||
/obj/item/resonator,
|
||||
/obj/item/screwdriver,
|
||||
/obj/item/shovel,
|
||||
/obj/item/stack/cable_coil,
|
||||
/obj/item/stack/marker_beacon,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/stack/ore,
|
||||
/obj/item/stack/sheet/animalhide,
|
||||
/obj/item/stack/sheet/bone,
|
||||
/obj/item/stack/sheet/sinew,
|
||||
/obj/item/storage/bag/ore,
|
||||
/obj/item/storage/fancy/cigarettes,
|
||||
/obj/item/storage/pill_bottle,
|
||||
/obj/item/survivalcapsule,
|
||||
/obj/item/t_scanner/adv_mining_scanner,
|
||||
/obj/item/weldingtool,
|
||||
/obj/item/wirecutters,
|
||||
/obj/item/wrench,
|
||||
/obj/item/wormhole_jaunter,
|
||||
/obj/item/skeleton_key,
|
||||
))
|
||||
|
||||
storage_type = /datum/storage/mining_belt
|
||||
|
||||
/obj/item/storage/belt/mining/vendor/PopulateContents()
|
||||
new /obj/item/survivalcapsule(src)
|
||||
@@ -480,10 +328,7 @@
|
||||
icon_state = "ebelt"
|
||||
inhand_icon_state = "ebelt"
|
||||
worn_icon_state = "ebelt"
|
||||
|
||||
/obj/item/storage/belt/mining/primitive/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 5
|
||||
storage_type = /datum/storage/mining_belt/primitive
|
||||
|
||||
/obj/item/storage/belt/soulstone
|
||||
name = "soul stone belt"
|
||||
@@ -493,11 +338,7 @@
|
||||
worn_icon_state = "soulstonebelt"
|
||||
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
|
||||
|
||||
/obj/item/storage/belt/soulstone/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 6
|
||||
atom_storage.set_holdable(/obj/item/soulstone)
|
||||
storage_type = /datum/storage/soulstone_belt
|
||||
|
||||
/obj/item/storage/belt/soulstone/full/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
@@ -514,11 +355,11 @@
|
||||
inhand_icon_state = "championbelt"
|
||||
worn_icon_state = "championbelt"
|
||||
custom_materials = list(/datum/material/gold=SMALL_MATERIAL_AMOUNT *4)
|
||||
storage_type = /datum/storage/champion_belt
|
||||
|
||||
/obj/item/storage/belt/champion/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 1
|
||||
atom_storage.set_holdable(/obj/item/clothing/mask/luchador)
|
||||
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, -2)
|
||||
|
||||
/obj/item/storage/belt/military
|
||||
@@ -528,26 +369,16 @@
|
||||
inhand_icon_state = "militarywebbing"
|
||||
worn_icon_state = "militarywebbing"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/storage/belt/military/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
storage_type = /datum/storage/military_belt
|
||||
|
||||
/obj/item/storage/belt/military/snack
|
||||
name = "tactical snack rig"
|
||||
storage_type = /datum/storage/military_belt/snack
|
||||
|
||||
/obj/item/storage/belt/military/snack/Initialize(mapload)
|
||||
. = ..()
|
||||
var/sponsor = pick("Donk Co.", "Waffle Corp.", "Roffle Co.", "Gorlex Marauders", "Tiger Cooperative")
|
||||
desc = "A set of snack-tical webbing worn by athletes of the [sponsor] VR sports division."
|
||||
atom_storage.max_slots = 6
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/food,
|
||||
/obj/item/reagent_containers/cup/glass,
|
||||
))
|
||||
|
||||
/obj/item/storage/belt/military/snack/full
|
||||
|
||||
/obj/item/storage/belt/military/snack/full/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -611,10 +442,7 @@
|
||||
icon_state = "assault"
|
||||
inhand_icon_state = "security"
|
||||
worn_icon_state = "assault"
|
||||
|
||||
/obj/item/storage/belt/military/assault/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 6
|
||||
storage_type = /datum/storage/military_belt/assault
|
||||
|
||||
/obj/item/storage/belt/military/assault/full/PopulateContents()
|
||||
generate_items_inside(list(
|
||||
@@ -630,23 +458,7 @@
|
||||
worn_icon_state = "grenadebeltnew"
|
||||
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
|
||||
|
||||
/obj/item/storage/belt/grenade/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 30
|
||||
atom_storage.numerical_stacking = TRUE
|
||||
atom_storage.max_total_storage = 60
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/food/grown/cherry_bomb,
|
||||
/obj/item/food/grown/firelemon,
|
||||
/obj/item/grenade,
|
||||
/obj/item/grenade/c4,
|
||||
/obj/item/lighter,
|
||||
/obj/item/multitool,
|
||||
/obj/item/reagent_containers/cup/glass/bottle/molotov,
|
||||
/obj/item/screwdriver,
|
||||
))
|
||||
storage_type = /datum/storage/grenade_belt
|
||||
|
||||
/obj/item/storage/belt/grenade/full/PopulateContents()
|
||||
generate_items_inside(list(
|
||||
@@ -668,11 +480,7 @@
|
||||
icon_state = "soulstonebelt"
|
||||
inhand_icon_state = "soulstonebelt"
|
||||
worn_icon_state = "soulstonebelt"
|
||||
|
||||
/obj/item/storage/belt/wands/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 7
|
||||
atom_storage.set_holdable(/obj/item/gun/magic/wand)
|
||||
storage_type = /datum/storage/wands_belt
|
||||
|
||||
/obj/item/storage/belt/wands/full/PopulateContents()
|
||||
new /obj/item/gun/magic/wand/death(src)
|
||||
@@ -695,40 +503,7 @@
|
||||
worn_icon_state = "janibelt"
|
||||
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
|
||||
|
||||
/obj/item/storage/belt/janitor/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 6
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL // Set to this so the light replacer can fit.
|
||||
// BUBBER EDIT BEGIN - Trash bag on da belt
|
||||
var/static/list/exception_cache = typecacheof(list(
|
||||
/obj/item/storage/bag/trash,
|
||||
))
|
||||
atom_storage.exception_hold = exception_cache
|
||||
atom_storage.exception_max = 1
|
||||
atom_storage.allow_big_nesting = TRUE
|
||||
// BUBBER EDIT END - Trash bag on da belt
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/access_key,
|
||||
/obj/item/assembly/mousetrap,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/forcefield_projector,
|
||||
/obj/item/grenade/chem_grenade,
|
||||
/obj/item/holosign_creator,
|
||||
/obj/item/key/janitor,
|
||||
/obj/item/lightreplacer,
|
||||
/obj/item/melee/flyswatter,
|
||||
/obj/item/mop, //SKYRAT EDIT - For when you're lazy to use soap
|
||||
/obj/item/mop/advanced, //SKYRAT EDIT For when you're lazy to use a bucket
|
||||
/obj/item/paint/paint_remover,
|
||||
/obj/item/plunger,
|
||||
/obj/item/pushbroom,
|
||||
/obj/item/reagent_containers/cup/bucket, //SKYRAT EDIT - Bucket
|
||||
/obj/item/reagent_containers/spray,
|
||||
/obj/item/soap,
|
||||
/obj/item/wirebrush,
|
||||
))
|
||||
storage_type = /datum/storage/janitor_belt
|
||||
|
||||
/obj/item/storage/belt/janitor/full/PopulateContents()
|
||||
new /obj/item/lightreplacer(src)
|
||||
@@ -743,21 +518,7 @@
|
||||
icon_state = "bandolier"
|
||||
inhand_icon_state = "bandolier"
|
||||
worn_icon_state = "bandolier"
|
||||
|
||||
/obj/item/storage/belt/bandolier/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 24
|
||||
atom_storage.max_total_storage = 24
|
||||
atom_storage.numerical_stacking = TRUE
|
||||
atom_storage.allow_quick_gather = TRUE
|
||||
atom_storage.allow_quick_empty = TRUE
|
||||
atom_storage.numerical_stacking = TRUE
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/ammo_casing/strilka310,
|
||||
/obj/item/ammo_casing/shotgun,
|
||||
/obj/item/ammo_casing/c357,
|
||||
/obj/item/ammo_casing/junk,
|
||||
))
|
||||
storage_type = /datum/storage/bandolier_belt
|
||||
|
||||
/obj/item/storage/belt/fannypack
|
||||
name = "fannypack"
|
||||
@@ -767,12 +528,7 @@
|
||||
worn_icon_state = "fannypack_leather"
|
||||
dying_key = DYE_REGISTRY_FANNYPACK
|
||||
custom_price = PAYCHECK_CREW * 2
|
||||
|
||||
/obj/item/storage/belt/fannypack/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 3
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
atom_storage.silent = TRUE
|
||||
storage_type = /datum/storage/fanny_pack
|
||||
|
||||
/obj/item/storage/belt/fannypack/black
|
||||
name = "black fannypack"
|
||||
@@ -839,17 +595,12 @@
|
||||
worn_icon_state = "sheath"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
interaction_flags_click = parent_type::interaction_flags_click | NEED_DEXTERITY | NEED_HANDS
|
||||
storage_type = /datum/storage/sabre_belt
|
||||
|
||||
/obj/item/storage/belt/sabre/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/update_icon_updates_onmob)
|
||||
|
||||
atom_storage.max_slots = 1
|
||||
atom_storage.do_rustle = FALSE
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
atom_storage.set_holdable(/obj/item/melee/sabre)
|
||||
atom_storage.click_alt_open = FALSE
|
||||
|
||||
/obj/item/storage/belt/sabre/examine(mob/user)
|
||||
. = ..()
|
||||
if(length(contents))
|
||||
@@ -887,17 +638,12 @@
|
||||
worn_icon_state = "grass_sheath"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
interaction_flags_click = parent_type::interaction_flags_click | NEED_DEXTERITY | NEED_HANDS
|
||||
storage_type = /datum/storage/green_sabre_belt
|
||||
|
||||
/obj/item/storage/belt/grass_sabre/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/update_icon_updates_onmob)
|
||||
|
||||
atom_storage.max_slots = 1
|
||||
atom_storage.do_rustle = FALSE
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
atom_storage.set_holdable(/obj/item/melee/parsnip_sabre)
|
||||
atom_storage.click_alt_open = FALSE
|
||||
|
||||
/obj/item/storage/belt/grass_sabre/examine(mob/user)
|
||||
. = ..()
|
||||
if(length(contents))
|
||||
@@ -930,24 +676,4 @@
|
||||
inhand_icon_state = "utility"
|
||||
worn_icon_state = "plantbelt"
|
||||
content_overlays = TRUE
|
||||
|
||||
/obj/item/storage/belt/plant/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 6
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/cultivator,
|
||||
/obj/item/geneshears,
|
||||
/obj/item/graft,
|
||||
/obj/item/gun/energy/floragun,
|
||||
/obj/item/hatchet,
|
||||
/obj/item/plant_analyzer,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/spray/pestspray,
|
||||
/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/secateurs,
|
||||
/obj/item/seeds,
|
||||
/obj/item/shovel/spade,
|
||||
))
|
||||
storage_type = /datum/storage/plant_belt
|
||||
|
||||
@@ -14,13 +14,11 @@
|
||||
var/foldable_result = /obj/item/stack/sheet/cardboard
|
||||
/// What drawing will we get on the face of the box?
|
||||
var/illustration = "writing"
|
||||
storage_type = /datum/storage/box
|
||||
|
||||
/obj/item/storage/box/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
update_appearance()
|
||||
atom_storage.open_sound = 'sound/items/handling/cardboard_box/cardboard_box_open.ogg'
|
||||
atom_storage.rustle_sound = 'sound/items/handling/cardboard_box/cardboard_box_rustle.ogg'
|
||||
|
||||
/obj/item/storage/box/suicide_act(mob/living/carbon/user)
|
||||
var/obj/item/bodypart/head/myhead = user.get_bodypart(BODY_ZONE_HEAD)
|
||||
|
||||
@@ -21,13 +21,7 @@
|
||||
/obj/item/storage/box/debugtools
|
||||
name = "box of debug tools"
|
||||
icon_state = "syndiebox"
|
||||
|
||||
/obj/item/storage/box/debugtools/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
|
||||
storage_type = /datum/storage/box/debug
|
||||
|
||||
/obj/item/storage/box/debugtools/PopulateContents()
|
||||
var/static/items_inside = list(
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
desc = "A cardboard box folded in a manner that is optimal for concealment, rather than for stowing your belongings."
|
||||
icon_state = "flat"
|
||||
illustration = null
|
||||
storage_type = /datum/storage/box/flat
|
||||
|
||||
/obj/item/storage/box/flat/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, INVISIBILITY_OBSERVER, use_anchor = TRUE, tilt_tile = TRUE)
|
||||
atom_storage.max_slots = 3
|
||||
|
||||
/obj/item/storage/box/proc/flatten_box()
|
||||
if(istype(loc, /obj/item/storage) || type != /obj/item/storage/box || contents.len)
|
||||
|
||||
@@ -7,15 +7,12 @@
|
||||
illustration = null
|
||||
/// What type of donk pocket are we gonna cram into this box?
|
||||
var/donktype = /obj/item/food/donkpocket
|
||||
storage_type = /datum/storage/box/donk_pockets
|
||||
|
||||
/obj/item/storage/box/donkpockets/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new donktype(src)
|
||||
|
||||
/obj/item/storage/box/donkpockets/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/food/donkpocket)
|
||||
|
||||
/obj/item/storage/box/donkpockets/donkpocketspicy
|
||||
name = "box of spicy-flavoured donk-pockets"
|
||||
icon_state = "donkpocketboxspicy"
|
||||
@@ -340,16 +337,11 @@
|
||||
illustration = null
|
||||
foldable_result = null
|
||||
custom_price = PAYCHECK_CREW
|
||||
storage_type = /datum/storage/box/gum
|
||||
|
||||
///Typepath of the type of gum that spawns with this box, this is passed to the wrapper for spawning in.
|
||||
var/spawning_gum_type = /obj/item/food/bubblegum
|
||||
|
||||
/obj/item/storage/box/gum/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/storage/bubblegum_wrapper)
|
||||
atom_storage.max_slots = 4
|
||||
atom_storage.allow_big_nesting = TRUE
|
||||
|
||||
/obj/item/storage/box/gum/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/storage/bubblegum_wrapper(src, spawning_gum_type)
|
||||
@@ -559,14 +551,10 @@
|
||||
desc = "A bag containing fresh, dry coffee arabica beans. Ethically sourced and packaged by Waffle Corp."
|
||||
illustration = null
|
||||
icon = 'icons/obj/food/containers.dmi'
|
||||
storage_type = /datum/storage/box/coffee
|
||||
var/beantype = /obj/item/food/grown/coffee
|
||||
|
||||
/obj/item/storage/box/coffeepack/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/food/grown/coffee)
|
||||
|
||||
/obj/item/storage/box/coffeepack/PopulateContents()
|
||||
atom_storage.max_slots = 5
|
||||
for(var/i in 1 to 5)
|
||||
var/obj/item/food/grown/coffee/bean = new beantype(src)
|
||||
ADD_TRAIT(bean, TRAIT_DRIED, ELEMENT_TRAIT(type))
|
||||
|
||||
@@ -144,15 +144,7 @@
|
||||
illustration = null
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
custom_price = PAYCHECK_CREW * 1.75
|
||||
|
||||
/obj/item/storage/box/bandages/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 6
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/stack/medical/bandage,
|
||||
/obj/item/reagent_containers/applicator/pill,
|
||||
/obj/item/reagent_containers/applicator/patch,
|
||||
))
|
||||
storage_type = /datum/storage/box/bandages
|
||||
|
||||
/obj/item/storage/box/bandages/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
|
||||
@@ -37,17 +37,10 @@
|
||||
desc = "Drymate brand monkey cubes. Just add water!"
|
||||
icon_state = "monkeycubebox"
|
||||
illustration = null
|
||||
custom_price = PAYCHECK_CREW * 2
|
||||
storage_type = /datum/storage/box/monkey_cube
|
||||
/// 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(
|
||||
can_hold_list = /obj/item/food/monkeycube,
|
||||
cant_hold_list = /obj/item/food/monkeycube/gorilla,
|
||||
)
|
||||
|
||||
/obj/item/storage/box/monkeycubes/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
@@ -62,11 +55,7 @@
|
||||
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/gorilla)
|
||||
storage_type = /datum/storage/box/gorilla_cube_box
|
||||
|
||||
/obj/item/storage/box/gorillacubes/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
@@ -115,13 +104,7 @@
|
||||
/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
|
||||
storage_type = /datum/storage/box/stabilized
|
||||
|
||||
/obj/item/storage/box/stabilized/PopulateContents()
|
||||
var/static/items_inside = list(
|
||||
|
||||
@@ -60,11 +60,7 @@
|
||||
icon = 'icons/obj/toys/toy.dmi'
|
||||
icon_state = "spbox"
|
||||
illustration = ""
|
||||
|
||||
/obj/item/storage/box/snappops/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/toy/snappop)
|
||||
atom_storage.max_slots = 8
|
||||
storage_type = /datum/storage/box/snappops
|
||||
|
||||
/obj/item/storage/box/snappops/PopulateContents()
|
||||
for(var/i in 1 to 8)
|
||||
@@ -86,11 +82,10 @@
|
||||
custom_price = PAYCHECK_CREW * 0.4
|
||||
base_icon_state = "matchbox"
|
||||
illustration = null
|
||||
storage_type = /datum/storage/box/match
|
||||
|
||||
/obj/item/storage/box/matches/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 10
|
||||
atom_storage.set_holdable(/obj/item/match)
|
||||
AddElement(/datum/element/ignites_matches)
|
||||
|
||||
/obj/item/storage/box/matches/PopulateContents()
|
||||
@@ -117,16 +112,7 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
||||
foldable_result = /obj/item/stack/sheet/cardboard //BubbleWrap
|
||||
illustration = "light"
|
||||
|
||||
/obj/item/storage/box/lights/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 21
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/light/tube,
|
||||
/obj/item/light/bulb
|
||||
))
|
||||
atom_storage.max_total_storage = 21
|
||||
atom_storage.allow_quick_gather = FALSE //temp workaround to re-enable filling the light replacer with the box
|
||||
storage_type = /datum/storage/box/lights
|
||||
|
||||
/obj/item/storage/box/lights/bulbs/PopulateContents()
|
||||
for(var/i in 1 to 21)
|
||||
@@ -208,13 +194,7 @@
|
||||
name = "box of long balloons"
|
||||
desc = "A completely randomized and wacky box of long balloons, harvested straight from balloon farms on the clown planet."
|
||||
illustration = "balloon"
|
||||
|
||||
/obj/item/storage/box/balloons/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 24
|
||||
atom_storage.set_holdable(/obj/item/toy/balloon/long)
|
||||
atom_storage.max_total_storage = 24
|
||||
atom_storage.allow_quick_gather = FALSE
|
||||
storage_type = /datum/storage/box/balloon
|
||||
|
||||
/obj/item/storage/box/balloons/PopulateContents()
|
||||
for(var/i in 1 to 24)
|
||||
@@ -227,6 +207,8 @@
|
||||
icon_state = "stickerpack"
|
||||
illustration = null
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
storage_type = /datum/storage/box/stickers
|
||||
|
||||
var/static/list/pack_labels = list(
|
||||
"smile",
|
||||
"frown",
|
||||
@@ -238,9 +220,6 @@
|
||||
|
||||
/obj/item/storage/box/stickers/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 8
|
||||
atom_storage.set_holdable(/obj/item/sticker)
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_TINY
|
||||
if(isnull(illustration))
|
||||
illustration = pick(pack_labels)
|
||||
update_appearance()
|
||||
|
||||
@@ -16,12 +16,10 @@
|
||||
attack_verb_simple = list("bash", "batter", "bludgeon", "thrash", "whack")
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 150
|
||||
var/folder_path = /obj/item/folder //this is the path of the folder that gets spawned in New()
|
||||
storage_type = /datum/storage/briefcase
|
||||
|
||||
/obj/item/storage/briefcase/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 21
|
||||
/// The path of the folder that gets spawned in New()
|
||||
var/folder_path = /obj/item/folder
|
||||
|
||||
/obj/item/storage/briefcase/PopulateContents()
|
||||
new /obj/item/pen(src)
|
||||
@@ -86,8 +84,6 @@
|
||||
|
||||
/obj/item/storage/briefcase/secure/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 21
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
AddComponent(/datum/component/lockable_storage)
|
||||
|
||||
///Syndie variant of Secure Briefcase. Contains space cash, slightly more robust.
|
||||
|
||||
@@ -103,10 +103,7 @@
|
||||
appearance_flags = KEEP_TOGETHER|LONG_GLIDE
|
||||
custom_premium_price = PAYCHECK_COMMAND * 1.75
|
||||
contents_tag = "donut"
|
||||
|
||||
/obj/item/storage/fancy/donut_box/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/food/donut)
|
||||
storage_type = /datum/storage/donut
|
||||
|
||||
/obj/item/storage/fancy/donut_box/PopulateContents()
|
||||
. = ..()
|
||||
@@ -152,10 +149,7 @@
|
||||
spawn_type = /obj/item/food/egg
|
||||
spawn_count = 12
|
||||
contents_tag = "egg"
|
||||
|
||||
/obj/item/storage/fancy/egg_box/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/food/egg)
|
||||
storage_type = /datum/storage/egg_box
|
||||
|
||||
/*
|
||||
* Fertile Egg Box
|
||||
@@ -185,10 +179,7 @@
|
||||
spawn_count = 5
|
||||
open_status = FANCY_CONTAINER_ALWAYS_OPEN
|
||||
contents_tag = "candle"
|
||||
|
||||
/obj/item/storage/fancy/candle_box/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/flashlight/flare/candle)
|
||||
storage_type = /datum/storage/fancy_holder
|
||||
|
||||
////////////
|
||||
//CIG PACK//
|
||||
@@ -209,6 +200,8 @@
|
||||
custom_price = PAYCHECK_CREW
|
||||
age_restricted = TRUE
|
||||
contents_tag = "cigarette"
|
||||
storage_type = /datum/storage/cigarette_box
|
||||
|
||||
///for cigarette overlay
|
||||
var/candy = FALSE
|
||||
/// Does this cigarette packet come with a coupon attached?
|
||||
@@ -234,8 +227,7 @@
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.display_contents = FALSE
|
||||
atom_storage.set_holdable(list(/obj/item/cigarette, /obj/item/lighter))
|
||||
|
||||
register_context()
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
|
||||
@@ -404,10 +396,7 @@
|
||||
spawn_count = 10
|
||||
custom_price = PAYCHECK_LOWER
|
||||
has_open_closed_states = FALSE
|
||||
|
||||
/obj/item/storage/fancy/rollingpapers/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/rollingpaper)
|
||||
storage_type = /datum/storage/fancy_holder
|
||||
|
||||
/obj/item/storage/fancy/rollingpapers/update_overlays()
|
||||
. = ..()
|
||||
@@ -485,11 +474,7 @@
|
||||
/obj/item/food/bonbon/peanut_butter_cup,
|
||||
)
|
||||
spawn_count = 8
|
||||
|
||||
/obj/item/storage/fancy/heart_box/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/food/bonbon)
|
||||
|
||||
storage_type = /datum/storage/heart_box
|
||||
|
||||
/obj/item/storage/fancy/nugget_box
|
||||
name = "nugget box"
|
||||
@@ -501,10 +486,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
spawn_type = /obj/item/food/nugget
|
||||
spawn_count = 6
|
||||
|
||||
/obj/item/storage/fancy/nugget_box/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/food/nugget)
|
||||
storage_type = /datum/storage/fancy_holder
|
||||
|
||||
/*
|
||||
* Jar of pickles
|
||||
@@ -523,10 +505,7 @@
|
||||
custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT)
|
||||
open_status = FANCY_CONTAINER_ALWAYS_OPEN
|
||||
has_open_closed_states = FALSE
|
||||
|
||||
/obj/item/storage/fancy/pickles_jar/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/food/pickle)
|
||||
storage_type = /datum/storage/fancy_holder
|
||||
|
||||
/obj/item/storage/fancy/pickles_jar/update_icon_state()
|
||||
. = ..()
|
||||
@@ -554,16 +533,7 @@
|
||||
foldable_result = /obj/item/stack/sheet/mineral/wood
|
||||
open_status = FANCY_CONTAINER_ALWAYS_OPEN
|
||||
has_open_closed_states = FALSE
|
||||
|
||||
/obj/item/storage/fancy/coffee_condi_display/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 14
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/reagent_containers/condiment/pack/sugar,
|
||||
/obj/item/reagent_containers/condiment/creamer,
|
||||
/obj/item/reagent_containers/condiment/pack/astrotame,
|
||||
/obj/item/reagent_containers/condiment/chocolate,
|
||||
))
|
||||
storage_type = /datum/storage/coffee_condi_display
|
||||
|
||||
/obj/item/storage/fancy/coffee_condi_display/update_overlays()
|
||||
. = ..()
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
desc = "A bag for storing extra clothes and shoes."
|
||||
slot_flags = NONE
|
||||
resistance_flags = FLAMMABLE
|
||||
storage_type = /datum/storage/bag/garment
|
||||
|
||||
/obj/item/storage/bag/garment/captain
|
||||
name = "captain's garment bag"
|
||||
@@ -38,15 +39,6 @@
|
||||
name = "quartermasters's garment bag"
|
||||
desc = "A bag for storing extra clothes and shoes. This one belongs to the quartermaster."
|
||||
|
||||
/obj/item/storage/bag/garment/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.numerical_stacking = FALSE
|
||||
atom_storage.max_total_storage = 200
|
||||
atom_storage.max_slots = 15
|
||||
atom_storage.insert_preposition = "in"
|
||||
atom_storage.set_holdable(/obj/item/clothing)
|
||||
|
||||
/obj/item/storage/bag/garment/captain/PopulateContents()
|
||||
new /obj/item/clothing/under/rank/captain(src)
|
||||
new /obj/item/clothing/under/rank/captain/skirt(src)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
worn_icon_state = "holster"
|
||||
alternate_worn_layer = UNDER_SUIT_LAYER
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
storage_type = /datum/storage/holster
|
||||
|
||||
/obj/item/storage/belt/holster/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
@@ -17,43 +18,10 @@
|
||||
. = ..()
|
||||
REMOVE_CLOTHING_TRAIT(user, TRAIT_GUNFLIP)
|
||||
|
||||
/obj/item/storage/belt/holster/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 1
|
||||
atom_storage.max_total_storage = 16
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/gun/ballistic/automatic/pistol,
|
||||
/obj/item/gun/ballistic/revolver,
|
||||
/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/dueling,
|
||||
/obj/item/food/grown/banana,
|
||||
/obj/item/gun/energy/laser/thermal,
|
||||
/obj/item/gun/ballistic/rifle/boltaction, //fits if you make it an obrez
|
||||
/obj/item/gun/energy/laser/captain,
|
||||
/obj/item/gun/energy/e_gun/hos,
|
||||
))
|
||||
atom_storage.open_sound = 'sound/items/handling/holster_open.ogg'
|
||||
atom_storage.open_sound_vary = TRUE
|
||||
|
||||
/obj/item/storage/belt/holster/energy
|
||||
name = "energy shoulder holsters"
|
||||
desc = "A rather plain pair of shoulder holsters with a bit of insulated padding inside. Designed to hold energy weaponry."
|
||||
|
||||
/obj/item/storage/belt/holster/energy/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 2
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/dueling,
|
||||
/obj/item/food/grown/banana,
|
||||
/obj/item/gun/energy/laser/thermal,
|
||||
/obj/item/gun/energy/recharge/ebow,
|
||||
/obj/item/gun/energy/laser/captain,
|
||||
/obj/item/gun/energy/e_gun/hos,
|
||||
))
|
||||
storage_type = /datum/storage/holster/energy
|
||||
|
||||
/obj/item/storage/belt/holster/energy/thermal
|
||||
name = "thermal shoulder holsters"
|
||||
@@ -85,31 +53,7 @@
|
||||
name = "detective's holster"
|
||||
desc = "A holster able to carry handguns and some ammo. WARNING: Badasses only."
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/storage/belt/holster/detective/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 3
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/gun/ballistic/automatic/pistol,
|
||||
/obj/item/ammo_box/magazine/m9mm, // Pistol magazines.
|
||||
/obj/item/ammo_box/magazine/m9mm_aps,
|
||||
/obj/item/ammo_box/magazine/m10mm,
|
||||
/obj/item/ammo_box/magazine/m45,
|
||||
/obj/item/ammo_box/magazine/m50,
|
||||
/obj/item/gun/ballistic/revolver,
|
||||
/obj/item/ammo_box/c38, // Revolver speedloaders.
|
||||
/obj/item/ammo_box/a357,
|
||||
/obj/item/ammo_box/strilka310,
|
||||
/obj/item/ammo_box/magazine/toy/pistol,
|
||||
/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/dueling,
|
||||
/obj/item/gun/energy/laser/thermal,
|
||||
/obj/item/gun/energy/laser/captain,
|
||||
/obj/item/gun/energy/e_gun/hos,
|
||||
/obj/item/gun/ballistic/rifle/boltaction, //fits if you make it an obrez
|
||||
))
|
||||
storage_type = /datum/storage/holster/detective
|
||||
|
||||
/obj/item/storage/belt/holster/detective/full/PopulateContents()
|
||||
generate_items_inside(list(
|
||||
@@ -139,32 +83,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
actions_types = list(/datum/action/item_action/chameleon/change/belt)
|
||||
action_slots = ALL
|
||||
|
||||
/obj/item/storage/belt/holster/chameleon/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 2
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/gun/ballistic/automatic/pistol,
|
||||
/obj/item/ammo_box/magazine/m9mm,
|
||||
/obj/item/ammo_box/magazine/m9mm_aps,
|
||||
/obj/item/ammo_box/magazine/m10mm,
|
||||
/obj/item/ammo_box/magazine/m45,
|
||||
/obj/item/ammo_box/magazine/m50,
|
||||
/obj/item/gun/ballistic/revolver,
|
||||
/obj/item/ammo_box/c38,
|
||||
/obj/item/ammo_box/a357,
|
||||
/obj/item/ammo_box/strilka310,
|
||||
/obj/item/ammo_box/magazine/toy/pistol,
|
||||
/obj/item/gun/energy/recharge/ebow,
|
||||
/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/dueling,
|
||||
/obj/item/gun/energy/laser/captain,
|
||||
/obj/item/gun/energy/e_gun/hos,
|
||||
))
|
||||
|
||||
atom_storage.silent = TRUE
|
||||
storage_type = /datum/storage/holster/chameleon
|
||||
|
||||
/obj/item/storage/belt/holster/nukie
|
||||
name = "operative holster"
|
||||
@@ -173,28 +92,11 @@
|
||||
inhand_icon_state = "syndicate_holster"
|
||||
worn_icon_state = "syndicate_holster"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/storage/belt/holster/nukie/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 2
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/gun, // ALL guns.
|
||||
/obj/item/ammo_box/magazine, // ALL magazines.
|
||||
/obj/item/ammo_box/c38, //There isn't a speedloader parent type, so I just put these three here by hand.
|
||||
/obj/item/ammo_box/a357, //I didn't want to just use /obj/item/ammo_box, because then this could hold huge boxes of ammo.
|
||||
/obj/item/ammo_box/strilka310,
|
||||
/obj/item/ammo_casing, // For shotgun shells, rockets, launcher grenades, and a few other things.
|
||||
/obj/item/grenade, // All regular grenades, the big grenade launcher fires these.
|
||||
))
|
||||
storage_type = /datum/storage/holster/nukie
|
||||
|
||||
/obj/item/storage/belt/holster/nukie/cowboy
|
||||
desc = "A deep shoulder holster capable of holding almost any form of small firearm and its ammo. This one's specialized for handguns."
|
||||
|
||||
/obj/item/storage/belt/holster/nukie/cowboy/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 3
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
storage_type = /datum/storage/holster/nukie/cowboy
|
||||
|
||||
/obj/item/storage/belt/holster/nukie/cowboy/full/PopulateContents()
|
||||
generate_items_inside(list(
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
req_access = list(ACCESS_ARMORY)
|
||||
storage_type = /datum/storage/lockbox
|
||||
|
||||
var/broken = FALSE
|
||||
var/open = FALSE
|
||||
var/icon_locked = "lockbox+l"
|
||||
@@ -17,10 +19,6 @@
|
||||
|
||||
/obj/item/storage/lockbox/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 14
|
||||
atom_storage.max_slots = 4
|
||||
atom_storage.set_locked(STORAGE_FULLY_LOCKED)
|
||||
|
||||
register_context()
|
||||
|
||||
@@ -113,13 +111,7 @@
|
||||
icon_closed = "medalbox"
|
||||
icon_broken = "medalbox+b"
|
||||
icon_open = "medalboxopen"
|
||||
|
||||
/obj/item/storage/lockbox/medal/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
atom_storage.max_slots = 10
|
||||
atom_storage.max_total_storage = 20
|
||||
atom_storage.set_holdable(/obj/item/clothing/accessory/medal)
|
||||
storage_type = /datum/storage/lockbox/medal
|
||||
|
||||
/obj/item/storage/lockbox/medal/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -21,70 +21,11 @@
|
||||
drop_sound = 'sound/items/handling/medkit/medkit_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/medkit/medkit_pick_up.ogg'
|
||||
sound_vary = TRUE
|
||||
storage_type = /datum/storage/medkit
|
||||
|
||||
var/empty = FALSE
|
||||
/// Defines damage type of the medkit. General ones stay null. Used for medibot healing bonuses
|
||||
var/damagetype_healed
|
||||
/// you just type this in holdables list of medkits instead of copypasting bunch of text.
|
||||
var/static/list/list_of_everything_medkits_can_hold = list(
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/item/dnainjector,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/cup/beaker,
|
||||
/obj/item/reagent_containers/cup/bottle,
|
||||
/obj/item/reagent_containers/cup/tube,
|
||||
/obj/item/reagent_containers/applicator,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/reagent_containers/medigel,
|
||||
/obj/item/reagent_containers/spray,
|
||||
/obj/item/lighter,
|
||||
/obj/item/storage/box/bandages,
|
||||
/obj/item/storage/fancy/cigarettes,
|
||||
/obj/item/storage/pill_bottle,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/flashlight/pen,
|
||||
/obj/item/extinguisher/mini,
|
||||
/obj/item/reagent_containers/hypospray,
|
||||
/obj/item/sensor_device,
|
||||
/obj/item/radio,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/lazarus_injector,
|
||||
/obj/item/bikehorn/rubberducky,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/mask/breath/medical,
|
||||
/obj/item/surgical_drapes,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/circular_saw,
|
||||
/obj/item/bonesetter,
|
||||
/obj/item/surgicaldrill,
|
||||
/obj/item/retractor,
|
||||
/obj/item/cautery,
|
||||
/obj/item/hemostat,
|
||||
/obj/item/blood_filter,
|
||||
/obj/item/shears,
|
||||
/obj/item/geiger_counter,
|
||||
/obj/item/clothing/neck/stethoscope,
|
||||
/obj/item/stamp,
|
||||
/obj/item/clothing/glasses,
|
||||
/obj/item/wrench/medical,
|
||||
/obj/item/clothing/mask/muzzle,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/gun/syringe/syndicate,
|
||||
/obj/item/implantcase,
|
||||
/obj/item/implant,
|
||||
/obj/item/implanter,
|
||||
/obj/item/pinpointer/crew,
|
||||
/obj/item/holosign_creator/medical,
|
||||
/obj/item/stack/sticky_tape,
|
||||
)
|
||||
|
||||
/obj/item/storage/medkit/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
atom_storage.open_sound = 'sound/items/handling/medkit/medkit_open.ogg'
|
||||
atom_storage.open_sound_vary = TRUE
|
||||
atom_storage.rustle_sound = 'sound/items/handling/medkit/medkit_rustle.ogg'
|
||||
|
||||
/obj/item/storage/medkit/regular
|
||||
icon_state = "medkit"
|
||||
@@ -131,13 +72,7 @@
|
||||
inhand_icon_state = "medkit-surgical"
|
||||
desc = "A high capacity aid kit for doctors, full of medical supplies and basic surgical equipment."
|
||||
custom_premium_price = PAYCHECK_COMMAND * 6 // BUBBER EDIT ADDITION
|
||||
|
||||
/obj/item/storage/medkit/surgery/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL //holds the same equipment as a medibelt
|
||||
atom_storage.max_slots = 12
|
||||
atom_storage.max_total_storage = 24
|
||||
atom_storage.set_holdable(list_of_everything_medkits_can_hold)
|
||||
storage_type = /datum/storage/medkit/surgery
|
||||
|
||||
/obj/item/storage/medkit/surgery/PopulateContents()
|
||||
if(empty)
|
||||
@@ -321,13 +256,7 @@
|
||||
icon_state = "medkit_tactical"
|
||||
inhand_icon_state = "medkit-tactical"
|
||||
damagetype_healed = HEAL_ALL_DAMAGE
|
||||
|
||||
/obj/item/storage/medkit/tactical/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_slots = 21
|
||||
atom_storage.max_total_storage = 24
|
||||
atom_storage.set_holdable(list_of_everything_medkits_can_hold)
|
||||
storage_type = /datum/storage/medkit/tactical
|
||||
|
||||
/obj/item/storage/medkit/tactical/PopulateContents()
|
||||
if(empty)
|
||||
@@ -355,14 +284,7 @@
|
||||
icon_state = "medkit_tactical_premium"
|
||||
inhand_icon_state = "medkit-tactical-premium"
|
||||
grind_results = list(/datum/reagent/lead = 10)
|
||||
|
||||
/obj/item/storage/medkit/tactical/premium/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.allow_big_nesting = TRUE // so you can put back the box you took out
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_slots = 21
|
||||
atom_storage.max_total_storage = 34
|
||||
atom_storage.set_holdable(list_of_everything_medkits_can_hold)
|
||||
storage_type = /datum/storage/medkit/tactical/premium
|
||||
|
||||
/obj/item/storage/medkit/tactical/premium/PopulateContents()
|
||||
if(empty)
|
||||
@@ -386,7 +308,6 @@
|
||||
/obj/item/clothing/glasses/hud/health/night/science = 1,
|
||||
)
|
||||
generate_items_inside(items_inside,src)
|
||||
list_of_everything_medkits_can_hold += items_inside
|
||||
|
||||
/obj/item/storage/medkit/coroner
|
||||
name = "compact coroner's medkit"
|
||||
@@ -394,25 +315,7 @@
|
||||
icon = 'icons/obj/storage/medkit.dmi'
|
||||
icon_state = "compact_coronerkit"
|
||||
inhand_icon_state = "coronerkit"
|
||||
|
||||
/obj/item/storage/medkit/coroner/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_slots = 14
|
||||
atom_storage.max_total_storage = 24
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/reagent_containers,
|
||||
/obj/item/bodybag,
|
||||
/obj/item/toy/crayon,
|
||||
/obj/item/pen,
|
||||
/obj/item/paper,
|
||||
/obj/item/surgical_drapes,
|
||||
/obj/item/scalpel,
|
||||
/obj/item/retractor,
|
||||
/obj/item/hemostat,
|
||||
/obj/item/cautery,
|
||||
/obj/item/autopsy_scanner,
|
||||
))
|
||||
storage_type = /datum/storage/medkit/coroner
|
||||
|
||||
/obj/item/storage/medkit/coroner/PopulateContents()
|
||||
if(empty)
|
||||
@@ -449,248 +352,6 @@
|
||||
/obj/item/storage/medkit/proc/get_medbot_skin()
|
||||
return "generic"
|
||||
|
||||
/*
|
||||
* Pill Bottles
|
||||
*/
|
||||
|
||||
/obj/item/storage/pill_bottle
|
||||
name = "pill bottle"
|
||||
desc = "It's an airtight container for storing medication."
|
||||
icon_state = "pill_canister"
|
||||
icon = 'icons/obj/medical/chemical.dmi'
|
||||
inhand_icon_state = "contsolid"
|
||||
worn_icon_state = "nothing"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
pickup_sound = 'sound/items/handling/pill_bottle_pickup.ogg'
|
||||
drop_sound = 'sound/items/handling/pill_bottle_place.ogg'
|
||||
|
||||
/obj/item/storage/pill_bottle/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.allow_quick_gather = TRUE
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/reagent_containers/applicator/pill,
|
||||
/obj/item/reagent_containers/applicator/patch,
|
||||
/obj/item/food/bait/natural,
|
||||
))
|
||||
atom_storage.open_sound = 'sound/items/handling/pill_bottle_open.ogg'
|
||||
atom_storage.open_sound_vary = FALSE
|
||||
|
||||
/obj/item/storage/pill_bottle/suicide_act(mob/living/user)
|
||||
user.visible_message(span_suicide("[user] is trying to get the cap off [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
return TOXLOSS
|
||||
|
||||
/obj/item/storage/pill_bottle/multiver
|
||||
name = "bottle of multiver pills"
|
||||
desc = "Contains pills used to counter toxins."
|
||||
|
||||
/obj/item/storage/pill_bottle/multiver/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/multiver(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/multiver/less
|
||||
|
||||
/obj/item/storage/pill_bottle/multiver/less/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/reagent_containers/applicator/pill/multiver(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/epinephrine
|
||||
name = "bottle of epinephrine pills"
|
||||
desc = "Contains pills used to stabilize patients."
|
||||
|
||||
/obj/item/storage/pill_bottle/epinephrine/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/epinephrine(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/mutadone
|
||||
name = "bottle of mutadone pills"
|
||||
desc = "Contains pills used to treat genetic abnormalities."
|
||||
|
||||
/obj/item/storage/pill_bottle/mutadone/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/mutadone(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/potassiodide
|
||||
name = "bottle of potassium iodide pills"
|
||||
desc = "Contains pills used to reduce radiation damage."
|
||||
|
||||
/obj/item/storage/pill_bottle/potassiodide/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/reagent_containers/applicator/pill/potassiodide(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/probital
|
||||
name = "bottle of probital pills"
|
||||
desc = "Contains pills used to treat brute damage. The tag in the bottle states 'Eat before ingesting, may cause fatigue'."
|
||||
|
||||
/obj/item/storage/pill_bottle/probital/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/reagent_containers/applicator/pill/probital(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/iron
|
||||
name = "bottle of iron pills"
|
||||
desc = "Contains pills used to reduce blood loss slowly. The tag in the bottle states 'Only take one each five minutes'."
|
||||
|
||||
/obj/item/storage/pill_bottle/iron/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/reagent_containers/applicator/pill/iron(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/mannitol
|
||||
name = "bottle of mannitol pills"
|
||||
desc = "Contains pills used to treat brain damage."
|
||||
|
||||
/obj/item/storage/pill_bottle/mannitol/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/mannitol(src)
|
||||
|
||||
//Contains 4 pills instead of 7, and 5u pills instead of 50u (50u pills heal 250 brain damage, 5u pills heal 25)
|
||||
/obj/item/storage/pill_bottle/mannitol/braintumor
|
||||
desc = "Contains diluted pills used to treat brain tumor symptoms. Take one when feeling lightheaded."
|
||||
|
||||
/obj/item/storage/pill_bottle/mannitol/braintumor/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/reagent_containers/applicator/pill/mannitol/braintumor(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/stimulant
|
||||
name = "bottle of stimulant pills"
|
||||
desc = "Guaranteed to give you that extra burst of energy during a long shift!"
|
||||
|
||||
/obj/item/storage/pill_bottle/stimulant/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/stimulant(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/sansufentanyl
|
||||
name = "bottle of experimental medication"
|
||||
desc = "A bottle of pills developed by Interdyne Pharmaceuticals. They're used to treat Hereditary Manifold Sickness."
|
||||
|
||||
/obj/item/storage/pill_bottle/sansufentanyl/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/reagent_containers/applicator/pill/sansufentanyl(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/mining
|
||||
name = "bottle of patches"
|
||||
desc = "Contains patches used to treat brute and burn damage."
|
||||
|
||||
/obj/item/storage/pill_bottle/mining/PopulateContents()
|
||||
new /obj/item/reagent_containers/applicator/patch/aiuri(src)
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/reagent_containers/applicator/patch/libital(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/zoom
|
||||
name = "suspicious pill bottle"
|
||||
desc = "The label is pretty old and almost unreadable, you recognize some chemical compounds."
|
||||
|
||||
/obj/item/storage/pill_bottle/zoom/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/zoom(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/happy
|
||||
name = "suspicious pill bottle"
|
||||
desc = "There is a smiley on the top."
|
||||
|
||||
/obj/item/storage/pill_bottle/happy/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/happy(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/lsd
|
||||
name = "suspicious pill bottle"
|
||||
desc = "There is a crude drawing which could be either a mushroom, or a deformed moon."
|
||||
|
||||
/obj/item/storage/pill_bottle/lsd/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/lsd(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/aranesp
|
||||
name = "suspicious pill bottle"
|
||||
desc = "The label has 'fuck disablers' hastily scrawled in black marker."
|
||||
|
||||
/obj/item/storage/pill_bottle/aranesp/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/aranesp(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/psicodine
|
||||
name = "bottle of psicodine pills"
|
||||
desc = "Contains pills used to treat mental distress and traumas."
|
||||
|
||||
/obj/item/storage/pill_bottle/psicodine/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/psicodine(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/penacid
|
||||
name = "bottle of pentetic acid pills"
|
||||
desc = "Contains pills to expunge radiation and toxins."
|
||||
|
||||
/obj/item/storage/pill_bottle/penacid/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/reagent_containers/applicator/pill/penacid(src)
|
||||
|
||||
|
||||
/obj/item/storage/pill_bottle/neurine
|
||||
name = "bottle of neurine pills"
|
||||
desc = "Contains pills to treat non-severe mental traumas."
|
||||
|
||||
/obj/item/storage/pill_bottle/neurine/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/neurine(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/maintenance_pill
|
||||
name = "bottle of maintenance pills"
|
||||
desc = "An old pill bottle. It smells musty."
|
||||
|
||||
/obj/item/storage/pill_bottle/maintenance_pill/Initialize(mapload)
|
||||
. = ..()
|
||||
var/obj/item/reagent_containers/applicator/pill/P = locate() in src
|
||||
name = "bottle of [P.name]s"
|
||||
|
||||
/obj/item/storage/pill_bottle/maintenance_pill/PopulateContents()
|
||||
for(var/i in 1 to rand(1,7))
|
||||
new /obj/item/reagent_containers/applicator/pill/maintenance(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/maintenance_pill/full/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/maintenance(src)
|
||||
|
||||
///////////////////////////////////////// Psychologist inventory pillbottles
|
||||
/obj/item/storage/pill_bottle/happinesspsych
|
||||
name = "happiness pills"
|
||||
desc = "Contains pills used as a last resort means to temporarily stabilize depression and anxiety. WARNING: side effects may include slurred speech, drooling, and severe addiction."
|
||||
|
||||
/obj/item/storage/pill_bottle/happinesspsych/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/happinesspsych(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/lsdpsych
|
||||
name = "mindbreaker toxin pills"
|
||||
desc = "!FOR THERAPEUTIC USE ONLY! Contains pills used to alleviate the symptoms of Reality Dissociation Syndrome."
|
||||
|
||||
/obj/item/storage/pill_bottle/lsdpsych/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/lsdpsych(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/paxpsych
|
||||
name = "pax pills"
|
||||
desc = "Contains pills used to temporarily pacify patients that are deemed a harm to themselves or others."
|
||||
|
||||
/obj/item/storage/pill_bottle/paxpsych/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/paxpsych(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/naturalbait
|
||||
name = "freshness jar"
|
||||
desc = "Full of natural fish bait."
|
||||
|
||||
/obj/item/storage/pill_bottle/naturalbait/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/food/bait/natural(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/ondansetron
|
||||
name = "ondansetron patches"
|
||||
desc = "A bottle containing patches of ondansetron, a drug used to treat nausea and vomiting. May cause drowsiness."
|
||||
|
||||
/obj/item/storage/pill_bottle/ondansetron/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/patch/ondansetron(src)
|
||||
|
||||
/// A box which takes in coolant and uses it to preserve organs and body parts
|
||||
/obj/item/storage/organbox
|
||||
name = "organ transport box"
|
||||
@@ -703,24 +364,15 @@
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
custom_premium_price = PAYCHECK_CREW * 4
|
||||
storage_type = /datum/storage/organ_box
|
||||
/// var to prevent it freezing the same things over and over
|
||||
var/cooling = FALSE
|
||||
|
||||
/obj/item/storage/organbox/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
create_storage(
|
||||
storage_type = /datum/storage/organ_box,
|
||||
max_specific_storage = WEIGHT_CLASS_BULKY,
|
||||
max_total_storage = 21,
|
||||
canhold = list(
|
||||
/obj/item/organ,
|
||||
/obj/item/bodypart,
|
||||
/obj/item/food/icecream,
|
||||
),
|
||||
)
|
||||
|
||||
create_reagents(100, TRANSPARENT)
|
||||
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/storage/organbox/process(seconds_per_tick)
|
||||
|
||||
231
code/game/objects/items/storage/pillbottles.dm
Normal file
231
code/game/objects/items/storage/pillbottles.dm
Normal file
@@ -0,0 +1,231 @@
|
||||
|
||||
/*
|
||||
* Pill Bottles
|
||||
*/
|
||||
/obj/item/storage/pill_bottle
|
||||
name = "pill bottle"
|
||||
desc = "It's an airtight container for storing medication."
|
||||
icon_state = "pill_canister"
|
||||
icon = 'icons/obj/medical/chemical.dmi'
|
||||
inhand_icon_state = "contsolid"
|
||||
worn_icon_state = "nothing"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
pickup_sound = 'sound/items/handling/pill_bottle_pickup.ogg'
|
||||
drop_sound = 'sound/items/handling/pill_bottle_place.ogg'
|
||||
storage_type = /datum/storage/pillbottle
|
||||
|
||||
/obj/item/storage/pill_bottle/suicide_act(mob/living/user)
|
||||
user.visible_message(span_suicide("[user] is trying to get the cap off [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
return TOXLOSS
|
||||
|
||||
/obj/item/storage/pill_bottle/multiver
|
||||
name = "bottle of multiver pills"
|
||||
desc = "Contains pills used to counter toxins."
|
||||
|
||||
/obj/item/storage/pill_bottle/multiver/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/multiver(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/multiver/less
|
||||
|
||||
/obj/item/storage/pill_bottle/multiver/less/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/reagent_containers/applicator/pill/multiver(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/epinephrine
|
||||
name = "bottle of epinephrine pills"
|
||||
desc = "Contains pills used to stabilize patients."
|
||||
|
||||
/obj/item/storage/pill_bottle/epinephrine/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/epinephrine(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/mutadone
|
||||
name = "bottle of mutadone pills"
|
||||
desc = "Contains pills used to treat genetic abnormalities."
|
||||
|
||||
/obj/item/storage/pill_bottle/mutadone/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/mutadone(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/potassiodide
|
||||
name = "bottle of potassium iodide pills"
|
||||
desc = "Contains pills used to reduce radiation damage."
|
||||
|
||||
/obj/item/storage/pill_bottle/potassiodide/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/reagent_containers/applicator/pill/potassiodide(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/probital
|
||||
name = "bottle of probital pills"
|
||||
desc = "Contains pills used to treat brute damage. The tag in the bottle states 'Eat before ingesting, may cause fatigue'."
|
||||
|
||||
/obj/item/storage/pill_bottle/probital/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/reagent_containers/applicator/pill/probital(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/iron
|
||||
name = "bottle of iron pills"
|
||||
desc = "Contains pills used to reduce blood loss slowly. The tag in the bottle states 'Only take one each five minutes'."
|
||||
|
||||
/obj/item/storage/pill_bottle/iron/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/reagent_containers/applicator/pill/iron(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/mannitol
|
||||
name = "bottle of mannitol pills"
|
||||
desc = "Contains pills used to treat brain damage."
|
||||
|
||||
/obj/item/storage/pill_bottle/mannitol/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/mannitol(src)
|
||||
|
||||
//Contains 4 pills instead of 7, and 5u pills instead of 50u (50u pills heal 250 brain damage, 5u pills heal 25)
|
||||
/obj/item/storage/pill_bottle/mannitol/braintumor
|
||||
desc = "Contains diluted pills used to treat brain tumor symptoms. Take one when feeling lightheaded."
|
||||
|
||||
/obj/item/storage/pill_bottle/mannitol/braintumor/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/reagent_containers/applicator/pill/mannitol/braintumor(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/stimulant
|
||||
name = "bottle of stimulant pills"
|
||||
desc = "Guaranteed to give you that extra burst of energy during a long shift!"
|
||||
|
||||
/obj/item/storage/pill_bottle/stimulant/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/stimulant(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/sansufentanyl
|
||||
name = "bottle of experimental medication"
|
||||
desc = "A bottle of pills developed by Interdyne Pharmaceuticals. They're used to treat Hereditary Manifold Sickness."
|
||||
|
||||
/obj/item/storage/pill_bottle/sansufentanyl/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/reagent_containers/applicator/pill/sansufentanyl(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/mining
|
||||
name = "bottle of patches"
|
||||
desc = "Contains patches used to treat brute and burn damage."
|
||||
|
||||
/obj/item/storage/pill_bottle/mining/PopulateContents()
|
||||
new /obj/item/reagent_containers/applicator/patch/aiuri(src)
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/reagent_containers/applicator/patch/libital(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/zoom
|
||||
name = "suspicious pill bottle"
|
||||
desc = "The label is pretty old and almost unreadable, you recognize some chemical compounds."
|
||||
|
||||
/obj/item/storage/pill_bottle/zoom/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/zoom(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/happy
|
||||
name = "suspicious pill bottle"
|
||||
desc = "There is a smiley on the top."
|
||||
|
||||
/obj/item/storage/pill_bottle/happy/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/happy(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/lsd
|
||||
name = "suspicious pill bottle"
|
||||
desc = "There is a crude drawing which could be either a mushroom, or a deformed moon."
|
||||
|
||||
/obj/item/storage/pill_bottle/lsd/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/lsd(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/aranesp
|
||||
name = "suspicious pill bottle"
|
||||
desc = "The label has 'fuck disablers' hastily scrawled in black marker."
|
||||
|
||||
/obj/item/storage/pill_bottle/aranesp/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/aranesp(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/psicodine
|
||||
name = "bottle of psicodine pills"
|
||||
desc = "Contains pills used to treat mental distress and traumas."
|
||||
|
||||
/obj/item/storage/pill_bottle/psicodine/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/psicodine(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/penacid
|
||||
name = "bottle of pentetic acid pills"
|
||||
desc = "Contains pills to expunge radiation and toxins."
|
||||
|
||||
/obj/item/storage/pill_bottle/penacid/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/reagent_containers/applicator/pill/penacid(src)
|
||||
|
||||
|
||||
/obj/item/storage/pill_bottle/neurine
|
||||
name = "bottle of neurine pills"
|
||||
desc = "Contains pills to treat non-severe mental traumas."
|
||||
|
||||
/obj/item/storage/pill_bottle/neurine/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/neurine(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/maintenance_pill
|
||||
name = "bottle of maintenance pills"
|
||||
desc = "An old pill bottle. It smells musty."
|
||||
|
||||
/obj/item/storage/pill_bottle/maintenance_pill/Initialize(mapload)
|
||||
. = ..()
|
||||
var/obj/item/reagent_containers/applicator/pill/P = locate() in src
|
||||
name = "bottle of [P.name]s"
|
||||
|
||||
/obj/item/storage/pill_bottle/maintenance_pill/PopulateContents()
|
||||
for(var/i in 1 to rand(1,7))
|
||||
new /obj/item/reagent_containers/applicator/pill/maintenance(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/maintenance_pill/full/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/applicator/pill/maintenance(src)
|
||||
|
||||
///////////////////////////////////////// Psychologist inventory pillbottles
|
||||
/obj/item/storage/pill_bottle/happinesspsych
|
||||
name = "happiness pills"
|
||||
desc = "Contains pills used as a last resort means to temporarily stabilize depression and anxiety. WARNING: side effects may include slurred speech, drooling, and severe addiction."
|
||||
|
||||
/obj/item/storage/pill_bottle/happinesspsych/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/happinesspsych(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/lsdpsych
|
||||
name = "mindbreaker toxin pills"
|
||||
desc = "!FOR THERAPEUTIC USE ONLY! Contains pills used to alleviate the symptoms of Reality Dissociation Syndrome."
|
||||
|
||||
/obj/item/storage/pill_bottle/lsdpsych/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/lsdpsych(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/paxpsych
|
||||
name = "pax pills"
|
||||
desc = "Contains pills used to temporarily pacify patients that are deemed a harm to themselves or others."
|
||||
|
||||
/obj/item/storage/pill_bottle/paxpsych/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/pill/paxpsych(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/naturalbait
|
||||
name = "freshness jar"
|
||||
desc = "Full of natural fish bait."
|
||||
|
||||
/obj/item/storage/pill_bottle/naturalbait/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/food/bait/natural(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/ondansetron
|
||||
name = "ondansetron patches"
|
||||
desc = "A bottle containing patches of ondansetron, a drug used to treat nausea and vomiting. May cause drowsiness."
|
||||
|
||||
/obj/item/storage/pill_bottle/ondansetron/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/applicator/patch/ondansetron(src)
|
||||
@@ -8,6 +8,7 @@
|
||||
righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
|
||||
custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT*1.2)
|
||||
max_integrity = 500
|
||||
storage_type = /datum/storage/sixcan
|
||||
|
||||
/obj/item/storage/cans/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message(span_suicide("[user] begins popping open a final cold one with the boys! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
@@ -21,18 +22,6 @@
|
||||
. = ..()
|
||||
update_appearance()
|
||||
|
||||
/obj/item/storage/cans/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
atom_storage.max_total_storage = 12
|
||||
atom_storage.max_slots = 6
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/reagent_containers/cup/soda_cans,
|
||||
/obj/item/reagent_containers/cup/glass/bottle/beer,
|
||||
/obj/item/reagent_containers/cup/glass/bottle/ale,
|
||||
/obj/item/reagent_containers/cup/glass/waterbottle,
|
||||
))
|
||||
|
||||
/obj/item/storage/cans/sixsoda
|
||||
name = "soda bottle ring"
|
||||
desc = "Holds six soda cans. Remember to recycle when you're done!"
|
||||
|
||||
@@ -20,9 +20,11 @@
|
||||
drop_sound = 'sound/items/handling/toolbox/toolbox_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/toolbox/toolbox_pickup.ogg'
|
||||
material_flags = MATERIAL_EFFECTS | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
|
||||
wound_bonus = 5
|
||||
storage_type = /datum/storage/toolbox
|
||||
|
||||
var/latches = "single_latch"
|
||||
var/has_latches = TRUE
|
||||
wound_bonus = 5
|
||||
/// How many interactions are we currently performing
|
||||
var/current_interactions = 0
|
||||
/// Items we should not interact with when left clicking
|
||||
@@ -35,7 +37,6 @@
|
||||
|
||||
/obj/item/storage/toolbox/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
if(has_latches)
|
||||
if(prob(10))
|
||||
latches = "double_latch"
|
||||
@@ -44,8 +45,6 @@
|
||||
if(prob(0.1))
|
||||
latches = "quad_latch" // like winning the lottery, but worse
|
||||
update_appearance()
|
||||
atom_storage.open_sound = 'sound/items/handling/toolbox/toolbox_open.ogg'
|
||||
atom_storage.rustle_sound = 'sound/items/handling/toolbox/toolbox_rustle.ogg'
|
||||
AddElement(/datum/element/falling_hazard, damage = force, wound_bonus = wound_bonus, hardhat_safety = TRUE, crushes = FALSE, impact_sound = hitsound)
|
||||
|
||||
/obj/item/storage/toolbox/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
|
||||
@@ -176,10 +175,7 @@
|
||||
desc = "It's seen better days."
|
||||
force = 5
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/storage/toolbox/mechanical/old/heirloom/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
storage_type = /datum/storage/toolbox/heirloom
|
||||
|
||||
/obj/item/storage/toolbox/mechanical/old/heirloom/PopulateContents()
|
||||
return
|
||||
@@ -254,10 +250,7 @@
|
||||
material_flags = NONE
|
||||
special_desc_requirement = EXAMINE_CHECK_SYNDICATE // Skyrat edit
|
||||
special_desc = "A toolbox manufactured by the Syndicate containing extra tactical tools. Made of more robust materials than the average toolbox." // Skyrat edit
|
||||
|
||||
/obj/item/storage/toolbox/syndicate/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.silent = TRUE
|
||||
storage_type = /datum/storage/toolbox/syndicate
|
||||
|
||||
/obj/item/storage/toolbox/syndicate/PopulateContents()
|
||||
new /obj/item/screwdriver/nuke(src)
|
||||
@@ -291,11 +284,7 @@
|
||||
inhand_icon_state = "artistic_toolbox"
|
||||
w_class = WEIGHT_CLASS_GIGANTIC //Holds more than a regular toolbox!
|
||||
material_flags = NONE
|
||||
|
||||
/obj/item/storage/toolbox/artistic/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 20
|
||||
atom_storage.max_slots = 11
|
||||
storage_type = /datum/storage/toolbox/artistic
|
||||
|
||||
/obj/item/storage/toolbox/artistic/PopulateContents()
|
||||
new /obj/item/storage/crayons(src)
|
||||
@@ -324,16 +313,16 @@
|
||||
/// Tray we steal the og contents from.
|
||||
var/obj/item/surgery_tray/tray_type = /obj/item/surgery_tray
|
||||
|
||||
/obj/item/storage/toolbox/medical/Initialize(mapload)
|
||||
. = ..()
|
||||
// what do any of these numbers fucking mean
|
||||
atom_storage.max_total_storage = 20
|
||||
atom_storage.max_slots = 11
|
||||
|
||||
/obj/item/storage/toolbox/medical/PopulateContents()
|
||||
var/atom/fake_tray = new tray_type(get_turf(src)) // not in src lest it fill storage that we need for its tools later
|
||||
for(var/atom/movable/thingy in fake_tray)
|
||||
thingy.forceMove(src)
|
||||
atom_storage.max_slots = 0
|
||||
atom_storage.max_total_storage = 0
|
||||
|
||||
var/atom/fake_tray = new tray_type(null)
|
||||
for(var/obj/item/tool in fake_tray)
|
||||
tool.forceMove(src)
|
||||
atom_storage.max_slots += 1
|
||||
atom_storage.max_total_storage += tool.w_class
|
||||
|
||||
qdel(fake_tray)
|
||||
|
||||
/obj/item/storage/toolbox/medical/full
|
||||
@@ -437,15 +426,10 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi'
|
||||
inhand_icon_state = "infiltrator_case"
|
||||
has_latches = FALSE
|
||||
storage_type = /datum/storage/toolbox/guncase
|
||||
var/weapon_to_spawn = /obj/item/gun/ballistic/automatic/pistol
|
||||
var/extra_to_spawn = /obj/item/ammo_box/magazine/m9mm
|
||||
|
||||
/obj/item/storage/toolbox/guncase/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
atom_storage.max_total_storage = 7 //enough to hold ONE bulky gun and the ammo boxes
|
||||
atom_storage.max_slots = 4
|
||||
|
||||
/obj/item/storage/toolbox/guncase/PopulateContents()
|
||||
new weapon_to_spawn (src)
|
||||
for(var/i in 1 to 3)
|
||||
@@ -617,12 +601,7 @@
|
||||
name = "double-bladed energy sword weapon case"
|
||||
weapon_to_spawn = /obj/item/dualsaber
|
||||
extra_to_spawn = /obj/item/soap/syndie
|
||||
|
||||
/obj/item/storage/toolbox/guncase/doublesword/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_BULKY
|
||||
atom_storage.max_total_storage = 10 //it'll hold enough
|
||||
atom_storage.max_slots = 5
|
||||
storage_type = /datum/storage/toolbox/guncase/doublesword
|
||||
|
||||
/obj/item/storage/toolbox/guncase/doublesword/PopulateContents()
|
||||
new weapon_to_spawn (src)
|
||||
|
||||
@@ -437,14 +437,7 @@
|
||||
|
||||
/obj/item/storage/box/syndie_kit/space
|
||||
name = "boxed space suit and helmet"
|
||||
|
||||
/obj/item/storage/box/syndie_kit/space/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/clothing/suit/space/syndicate,
|
||||
/obj/item/clothing/head/helmet/space/syndicate
|
||||
))
|
||||
storage_type = /datum/storage/box/syndicate_space
|
||||
|
||||
/obj/item/storage/box/syndie_kit/space/PopulateContents()
|
||||
var/obj/item/clothing/suit/space/syndicate/spess_suit = pick(GLOB.syndicate_space_suits_to_helmets)
|
||||
@@ -477,10 +470,7 @@
|
||||
|
||||
/obj/item/storage/box/syndie_kit/chemical
|
||||
name = "chemical kit"
|
||||
|
||||
/obj/item/storage/box/syndie_kit/chemical/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 15
|
||||
storage_type = /datum/storage/box/syndicate_chemical
|
||||
|
||||
/obj/item/storage/box/syndie_kit/chemical/PopulateContents()
|
||||
new /obj/item/reagent_containers/cup/bottle/polonium(src)
|
||||
@@ -548,6 +538,9 @@
|
||||
new /obj/item/gun/energy/laser/chameleon(src)
|
||||
new /obj/item/chameleon_scanner(src)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/throwing_weapons
|
||||
storage_type = /datum/storage/box/syndicate_throwing
|
||||
|
||||
//5*(2*4) = 5*8 = 45, 45 damage if you hit one person with all 5 stars.
|
||||
//Not counting the damage it will do while embedded (2*4 = 8, at 15% chance)
|
||||
/obj/item/storage/box/syndie_kit/throwing_weapons/PopulateContents()
|
||||
@@ -558,17 +551,6 @@
|
||||
new /obj/item/restraints/legcuffs/bola/tactical(src)
|
||||
new /obj/item/restraints/legcuffs/bola/tactical(src)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/throwing_weapons/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 9 // 5 + 2 + 2
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 18 // 5*2 + 2*1 + 3*2
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/restraints/legcuffs/bola/tactical,
|
||||
/obj/item/paperplane/syndicate,
|
||||
/obj/item/throwing_star,
|
||||
))
|
||||
|
||||
/obj/item/storage/box/syndie_kit/cutouts/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new/obj/item/cardboard_cutout/adaptive(src)
|
||||
|
||||
@@ -5,55 +5,13 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
resistance_flags = FLAMMABLE
|
||||
slot_flags = ITEM_SLOT_ID
|
||||
storage_type = /datum/storage/wallet
|
||||
|
||||
var/obj/item/card/id/front_id = null
|
||||
var/list/combined_access
|
||||
var/cached_flat_icon
|
||||
var/overlay_icon_state = "wallet_overlay"
|
||||
|
||||
/obj/item/storage/wallet/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
atom_storage.max_slots = 4
|
||||
atom_storage.set_holdable(
|
||||
can_hold_list = list(
|
||||
/obj/item/stack/spacecash,
|
||||
/obj/item/holochip,
|
||||
/obj/item/card,
|
||||
/obj/item/cigarette,
|
||||
/obj/item/clothing/accessory/dogtag,
|
||||
/obj/item/coin,
|
||||
/obj/item/coupon,
|
||||
/obj/item/dice,
|
||||
/obj/item/disk,
|
||||
/obj/item/flashlight/pen,
|
||||
/obj/item/folder/biscuit,
|
||||
/obj/item/food/chococoin,
|
||||
/obj/item/implanter,
|
||||
/obj/item/laser_pointer,
|
||||
/obj/item/lighter,
|
||||
/obj/item/lipstick,
|
||||
/obj/item/match,
|
||||
/obj/item/paper,
|
||||
/obj/item/pen,
|
||||
/obj/item/photo,
|
||||
/obj/item/reagent_containers/dropper,
|
||||
/obj/item/reagent_containers/syringe,
|
||||
/obj/item/reagent_containers/applicator,
|
||||
/obj/item/screwdriver,
|
||||
/obj/item/seeds,
|
||||
/obj/item/spess_knife,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/stamp,
|
||||
/obj/item/toy/crayon,
|
||||
// SKYRAT EDIT BEGIN
|
||||
/obj/item/condom_pack,
|
||||
/obj/item/gbp_punchcard,
|
||||
// SKYRAT EDIT END
|
||||
),
|
||||
cant_hold_list = /obj/item/screwdriver/power
|
||||
)
|
||||
|
||||
/obj/item/storage/wallet/Exited(atom/movable/gone, direction)
|
||||
. = ..()
|
||||
if(isidcard(gone))
|
||||
|
||||
@@ -427,12 +427,7 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices)
|
||||
resistance_flags = FLAMMABLE //burn your enemies' collections, for only you can Collect Them All!
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
flags_1 = PREVENT_CONTENTS_EXPLOSION_1
|
||||
|
||||
/obj/item/storage/card_binder/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(/obj/item/tcgcard)
|
||||
atom_storage.max_total_storage = 120
|
||||
atom_storage.max_slots = 60
|
||||
storage_type = /datum/storage/card_binder
|
||||
|
||||
///Returns a list of cards ids of card_cnt weighted by rarity from the pack's tables that have matching series, with gnt_cnt of the guaranteed table.
|
||||
/obj/item/cardpack/proc/buildCardListWithRarity(card_cnt, rarity_cnt)
|
||||
|
||||
@@ -200,7 +200,14 @@
|
||||
if(istype(attacking_item, /obj/item/storage/bag/trash))
|
||||
if(mybag)
|
||||
balloon_alert(user, "already has \a [mybag]!")
|
||||
else if(user.transferItemToLoc(attacking_item, src))
|
||||
return
|
||||
|
||||
var/obj/item/storage/bag/trash/insert = attacking_item
|
||||
if(!insert.insertable)
|
||||
balloon_alert(user, "cannot be inserted!")
|
||||
return
|
||||
|
||||
if(user.transferItemToLoc(attacking_item, src))
|
||||
balloon_alert(user, "attached [attacking_item]")
|
||||
return
|
||||
|
||||
|
||||
@@ -11,12 +11,8 @@
|
||||
|
||||
/obj/structure/toiletbong/Initialize(mapload)
|
||||
. = ..()
|
||||
create_storage()
|
||||
AddComponent(/datum/component/simple_rotation, post_rotation = CALLBACK(src, PROC_REF(post_rotation)))
|
||||
create_storage(max_total_storage = 100, max_slots = 12, canhold = /obj/item/food)
|
||||
atom_storage.attack_hand_interact = FALSE
|
||||
atom_storage.do_rustle = FALSE
|
||||
atom_storage.animated = FALSE
|
||||
create_storage(storage_type = /datum/storage/toiletbong)
|
||||
|
||||
weed_overlay = mutable_appearance('icons/obj/watercloset.dmi', "[base_icon_state]_overlay")
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
content_overlays = FALSE
|
||||
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
|
||||
storage_type = /datum/storage/unfathomable_curio
|
||||
|
||||
//Vars used for the shield component
|
||||
var/heretic_shield_icon = "unfathomable_shield"
|
||||
var/max_charges = 1
|
||||
@@ -17,24 +19,6 @@
|
||||
|
||||
/obj/item/storage/belt/unfathomable_curio/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 21
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/ammo_box/strilka310/lionhunter,
|
||||
/obj/item/heretic_labyrinth_handbook,
|
||||
/obj/item/bodypart, // Bodyparts are often used in rituals.
|
||||
/obj/item/clothing/neck/eldritch_amulet,
|
||||
/obj/item/clothing/neck/heretic_focus,
|
||||
/obj/item/codex_cicatrix,
|
||||
/obj/item/eldritch_potion,
|
||||
/obj/item/food/grown/poppy, // Used to regain a Living Heart.
|
||||
/obj/item/food/grown/harebell, // Used to reroll targets
|
||||
/obj/item/melee/rune_carver,
|
||||
/obj/item/melee/sickly_blade,
|
||||
/obj/item/organ, // Organs are also often used in rituals.
|
||||
/obj/item/reagent_containers/cup/beaker/eldritch,
|
||||
/obj/item/stack/sheet/glass, // Glass is often used by moon heretics
|
||||
))
|
||||
|
||||
AddComponent(/datum/component/shielded, max_charges = max_charges, recharge_start_delay = recharge_start_delay, charge_increment_delay = charge_increment_delay, \
|
||||
charge_recovery = charge_recovery, shield_icon = heretic_shield_icon, run_hit_callback = CALLBACK(src, PROC_REF(shield_damaged)))
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind = 50,
|
||||
/obj/item/reagent_containers/cup/soda_cans/monkey_energy = 30,
|
||||
/obj/item/reagent_containers/cup/soda_cans/volt_energy = 15,
|
||||
/obj/item/reagent_containers/cup/soda_cans/thirteenloko = 5,
|
||||
/obj/item/reagent_containers/cup/soda_cans/thirteenloko = 5,
|
||||
)
|
||||
|
||||
/obj/item/storage/cans/sixenergydrink/PopulateContents()
|
||||
@@ -73,20 +73,12 @@
|
||||
/obj/item/storage/bag/quiver/endless
|
||||
name = "endless quiver"
|
||||
desc = "Holds arrows for your bow. A deep digital void is contained within."
|
||||
max_slots = 1
|
||||
|
||||
/obj/item/storage/bag/quiver/endless/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_ATOM_EXITED, PROC_REF(handle_removed))
|
||||
storage_type = /datum/storage/bag/quiver/endless
|
||||
|
||||
/obj/item/storage/bag/quiver/endless/PopulateContents()
|
||||
. = ..()
|
||||
new arrow_path(src)
|
||||
|
||||
/obj/item/storage/bag/quiver/endless/proc/handle_removed(datum/source, obj/item/gone)
|
||||
new arrow_path(src)
|
||||
|
||||
|
||||
/datum/bitrunning_gimmick/fisher
|
||||
name = "Fisher"
|
||||
|
||||
@@ -125,7 +117,7 @@
|
||||
/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind = 15,
|
||||
/obj/item/reagent_containers/cup/soda_cans/monkey_energy = 15,
|
||||
/obj/item/reagent_containers/cup/soda_cans/volt_energy = 10,
|
||||
/obj/item/reagent_containers/cup/soda_cans/thirteenloko = 5,
|
||||
/obj/item/reagent_containers/cup/soda_cans/thirteenloko = 5,
|
||||
)
|
||||
|
||||
/obj/item/storage/cans/sixgamerdrink/PopulateContents()
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
/obj/item/storage/lockbox/bitrunning/decrypted
|
||||
name = "decrypted curiosity"
|
||||
desc = "Compiled from the virtual domain. An extra reward of a successful bitrunner."
|
||||
storage_type = /datum/storage/lockbox/bitrunning_decrypted
|
||||
|
||||
/// What virtual domain did we come from.
|
||||
var/datum/lazy_template/virtual_domain/source_domain
|
||||
|
||||
@@ -42,10 +44,7 @@
|
||||
source_domain = completed_domain
|
||||
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_slots = 1
|
||||
atom_storage.max_total_storage = 3
|
||||
atom_storage.locked = STORAGE_NOT_LOCKED
|
||||
|
||||
icon_state = icon_closed
|
||||
playsound(src, 'sound/effects/magic/blink.ogg', 50, TRUE)
|
||||
|
||||
|
||||
@@ -46,28 +46,7 @@
|
||||
//Easter Baskets
|
||||
/obj/item/storage/basket/easter
|
||||
name = "Easter Basket"
|
||||
|
||||
/obj/item/storage/basket/easter/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/food/egg,
|
||||
/obj/item/food/chocolateegg,
|
||||
/obj/item/food/boiledegg,
|
||||
/obj/item/surprise_egg
|
||||
))
|
||||
|
||||
/obj/item/storage/basket/easter/proc/countEggs()
|
||||
cut_overlays()
|
||||
add_overlay("basket-grass")
|
||||
add_overlay("basket-egg[min(contents.len, 5)]")
|
||||
|
||||
/obj/item/storage/basket/easter/Exited(atom/movable/gone, direction)
|
||||
. = ..()
|
||||
countEggs()
|
||||
|
||||
/obj/item/storage/basket/easter/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
|
||||
. = ..()
|
||||
countEggs()
|
||||
storage_type = /datum/storage/basket/easter
|
||||
|
||||
//Bunny Suit
|
||||
/obj/item/clothing/head/costume/bunnyhead
|
||||
|
||||
@@ -331,13 +331,13 @@
|
||||
inhand_icon_state = "artistic_toolbox"
|
||||
material_flags = NONE
|
||||
custom_price = PAYCHECK_CREW * 3
|
||||
storage_type = /datum/storage/toolbox/fishing
|
||||
|
||||
///How much holding this affects fishing difficulty
|
||||
var/fishing_modifier = -4
|
||||
|
||||
/obj/item/storage/toolbox/fishing/Initialize(mapload)
|
||||
. = ..()
|
||||
// Can hold fishing rod despite the size
|
||||
atom_storage.set_holdable(exception_hold_list = /obj/item/fishing_rod)
|
||||
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier, ITEM_SLOT_HANDS)
|
||||
|
||||
@@ -354,10 +354,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
force = 5
|
||||
throwforce = 5
|
||||
|
||||
/obj/item/storage/toolbox/fishing/small/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL //It can still hold a fishing rod
|
||||
storage_type = /datum/storage/toolbox/fishing/small
|
||||
|
||||
/obj/item/storage/toolbox/fishing/small/PopulateContents()
|
||||
new /obj/item/fishing_rod/unslotted(src)
|
||||
@@ -451,16 +448,13 @@
|
||||
foldable_result = null
|
||||
illustration = "fish"
|
||||
custom_price = PAYCHECK_CREW * 9
|
||||
storage_type = /datum/storage/box/fishing_lures
|
||||
|
||||
/obj/item/storage/box/fishing_lures/PopulateContents()
|
||||
new /obj/item/paper/lures_instructions(src)
|
||||
var/list/typesof = typesof(/obj/item/fishing_lure)
|
||||
for(var/type in typesof)
|
||||
new type (src)
|
||||
atom_storage.set_holdable(/obj/item/fishing_lure) //can only hold lures
|
||||
//adds an extra slot, so we can put back the lures even if we didn't take out the instructions.
|
||||
atom_storage.max_slots = length(typesof) + 1
|
||||
atom_storage.max_total_storage = WEIGHT_CLASS_SMALL * (atom_storage.max_slots + 1)
|
||||
|
||||
/obj/item/paper/lures_instructions
|
||||
name = "instructions paper"
|
||||
@@ -589,15 +583,14 @@
|
||||
worn_icon_state = "fishing_bag"
|
||||
resistance_flags = FLAMMABLE
|
||||
custom_price = PAYCHECK_CREW * 3
|
||||
storage_type = /datum/storage/bag/fishing
|
||||
|
||||
///How much holding this affects fishing difficulty
|
||||
var/fishing_modifier = -2
|
||||
|
||||
/obj/item/storage/bag/fishing/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
|
||||
atom_storage.max_total_storage = 24 // Up to 8 normal fish
|
||||
atom_storage.max_slots = 21
|
||||
atom_storage.set_holdable(/obj/item/fish)
|
||||
|
||||
AddComponent(/datum/component/adjust_fishing_difficulty, fishing_modifier, ITEM_SLOT_HANDS)
|
||||
|
||||
/obj/item/storage/bag/fishing/carpskin
|
||||
@@ -609,14 +602,3 @@
|
||||
storage_type = /datum/storage/carpskin_bag
|
||||
fishing_modifier = -4
|
||||
|
||||
/obj/item/storage/bag/fishing/carpskin/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 42 // Up to 14 normal fish, but we're assuming that you'll be storing a bunch of gear as well
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/fish,
|
||||
/obj/item/fishing_line,
|
||||
/obj/item/fishing_hook,
|
||||
/obj/item/fishing_lure,
|
||||
/obj/item/fish_analyzer,
|
||||
/obj/item/bait_can,
|
||||
))
|
||||
|
||||
@@ -492,11 +492,7 @@
|
||||
open_status = FANCY_CONTAINER_ALWAYS_OPEN
|
||||
spawn_type = /obj/item/coffee_cartridge
|
||||
spawn_count = 1
|
||||
|
||||
/obj/item/storage/fancy/coffee_cart_rack/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_slots = 4
|
||||
atom_storage.set_holdable(/obj/item/coffee_cartridge)
|
||||
storage_type = /datum/storage/coffee_cart_rack
|
||||
|
||||
/*
|
||||
* impressa coffee maker
|
||||
|
||||
@@ -10,18 +10,12 @@
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 100
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
storage_type = /datum/storage/bag/money
|
||||
|
||||
/obj/item/storage/bag/money/Initialize(mapload)
|
||||
. = ..()
|
||||
if(prob(20))
|
||||
icon_state = "moneybagalt"
|
||||
atom_storage.max_slots = 40
|
||||
atom_storage.max_specific_storage = 40
|
||||
atom_storage.set_holdable(list(
|
||||
/obj/item/coin,
|
||||
/obj/item/stack/spacecash,
|
||||
/obj/item/holochip
|
||||
))
|
||||
|
||||
/obj/item/storage/bag/money/vault/PopulateContents()
|
||||
new /obj/item/coin/silver(src)
|
||||
|
||||
@@ -6,20 +6,13 @@
|
||||
icon_state = "quiver"
|
||||
inhand_icon_state = null
|
||||
worn_icon_state = "harpoon_quiver"
|
||||
storage_type = /datum/storage/bag/quiver
|
||||
|
||||
/// type of arrow the quivel should hold
|
||||
var/arrow_path = /obj/item/ammo_casing/arrow
|
||||
var/max_slots = 40
|
||||
|
||||
/obj/item/storage/bag/quiver/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.numerical_stacking = TRUE
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_TINY
|
||||
atom_storage.max_slots = max_slots
|
||||
atom_storage.max_total_storage = 100
|
||||
atom_storage.set_holdable(/obj/item/ammo_casing/arrow)
|
||||
|
||||
/obj/item/storage/bag/quiver/lesser
|
||||
max_slots = 10
|
||||
storage_type = /datum/storage/bag/quiver/less
|
||||
|
||||
/obj/item/storage/bag/quiver/full/PopulateContents()
|
||||
. = ..()
|
||||
|
||||
@@ -367,12 +367,7 @@
|
||||
icon_broken = "medalbox+b"
|
||||
base_icon_state = "medalbox"
|
||||
icon_open = "medalboxopen"
|
||||
|
||||
/obj/item/storage/lockbox/dueling/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_specific_storage = WEIGHT_CLASS_SMALL
|
||||
atom_storage.max_slots = 2
|
||||
atom_storage.set_holdable(/obj/item/gun/energy/dueling)
|
||||
storage_type = /datum/storage/lockbox/dueling
|
||||
|
||||
/obj/item/storage/lockbox/dueling/PopulateContents()
|
||||
. = ..()
|
||||
|
||||
@@ -127,56 +127,6 @@
|
||||
name = "emergency disembarkation tool"
|
||||
desc = "For extracting yourself from rough landings."
|
||||
|
||||
/datum/storage/pod
|
||||
max_slots = 14
|
||||
max_total_storage = WEIGHT_CLASS_BULKY * 14
|
||||
/// If TRUE, we unlock regardless of security level
|
||||
var/always_unlocked = FALSE
|
||||
|
||||
/datum/storage/pod/open_storage(mob/to_show)
|
||||
if(isliving(to_show) && SSsecurity_level.get_current_level_as_number() < SEC_LEVEL_RED)
|
||||
to_chat(to_show, span_warning("The storage unit will only unlock during a Red or Delta security alert."))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/storage/pod/New(atom/parent, max_slots, max_specific_storage, max_total_storage)
|
||||
. = ..()
|
||||
// all of these are a type below what actually spawn with
|
||||
// (IE all space suits instead of just the emergency ones)
|
||||
// because an enterprising traitor might be able to hide things,
|
||||
// like their syndicate toolbox or softsuit. may be fun?
|
||||
set_holdable(exception_hold_list = list(
|
||||
/obj/item/clothing/suit/space,
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/storage/toolbox,
|
||||
))
|
||||
RegisterSignal(SSsecurity_level, COMSIG_SECURITY_LEVEL_CHANGED, PROC_REF(update_lock))
|
||||
update_lock(new_level = SSsecurity_level.get_current_level_as_number())
|
||||
|
||||
/datum/storage/pod/set_parent(atom/new_parent)
|
||||
. = ..()
|
||||
RegisterSignal(parent, COMSIG_ATOM_AFTER_SHUTTLE_MOVE, PROC_REF(pod_launch))
|
||||
|
||||
/datum/storage/pod/proc/update_lock(datum/source, new_level)
|
||||
SIGNAL_HANDLER
|
||||
if(always_unlocked)
|
||||
return
|
||||
|
||||
locked = (new_level < SEC_LEVEL_RED) ? STORAGE_FULLY_LOCKED : STORAGE_NOT_LOCKED
|
||||
parent.update_appearance(UPDATE_ICON_STATE)
|
||||
if(locked) // future todo : make `locked` a setter so this behavior can be built in (avoids exploits)
|
||||
close_all()
|
||||
|
||||
/datum/storage/pod/proc/pod_launch(datum/source, turf/old_turf)
|
||||
SIGNAL_HANDLER
|
||||
// This check is to ignore the movement of the shuttle from the transit level to the station as it is loaded in.
|
||||
if(old_turf && is_reserved_level(old_turf.z))
|
||||
return
|
||||
// If the pod was launched, the storage will always open.
|
||||
always_unlocked = TRUE
|
||||
locked = STORAGE_NOT_LOCKED
|
||||
parent.update_appearance(UPDATE_ICON_STATE)
|
||||
|
||||
/obj/item/storage/pod
|
||||
name = "emergency space suits"
|
||||
desc = "A wall mounted safe containing space suits. Will only open in emergencies."
|
||||
|
||||
34
modular_zubbers/code/datums/storage/subtypes/belts.dm
Normal file
34
modular_zubbers/code/datums/storage/subtypes/belts.dm
Normal file
@@ -0,0 +1,34 @@
|
||||
/datum/storage/medical_belt/New()
|
||||
. = ..()
|
||||
add_holdable(list(
|
||||
/obj/item/clothing/suit/toggle/labcoat/hospitalgown,
|
||||
/obj/item/hypospray/mkii,
|
||||
/obj/item/storage/hypospraykit/,
|
||||
/obj/item/reagent_containers/cup/vial,
|
||||
/obj/item/weaponcell/medical,
|
||||
/obj/item/handheld_soulcatcher,
|
||||
)
|
||||
)
|
||||
|
||||
/obj/item/storage/belt/security/New()
|
||||
. = ..()
|
||||
add_holdable(list(
|
||||
/obj/item/gun,
|
||||
/obj/item/stock_parts/power_store/cell/microfusion,
|
||||
)
|
||||
)
|
||||
|
||||
/obj/item/storage/belt/janitor/New()
|
||||
. = ..()
|
||||
var/static/list/exception_cache = typecacheof(list(
|
||||
/obj/item/storage/bag/trash,
|
||||
))
|
||||
atom_storage.exception_hold = exception_cache
|
||||
atom_storage.exception_max = 1
|
||||
atom_storage.allow_big_nesting = TRUE
|
||||
add_holdable(list(
|
||||
/obj/item/mop,
|
||||
/obj/item/mop/advanced,
|
||||
/obj/item/reagent_containers/cup/bucket,
|
||||
)
|
||||
)
|
||||
17
modular_zubbers/code/datums/storage/subtypes/others/misc.dm
Normal file
17
modular_zubbers/code/datums/storage/subtypes/others/misc.dm
Normal file
@@ -0,0 +1,17 @@
|
||||
/datum/storage/surgery_tray/New()
|
||||
. = ..()
|
||||
add_holdable(list(
|
||||
/obj/item/reagent_containers/medigel/sterilizine,
|
||||
/obj/item/clothing/suit/toggle/labcoat/hospitalgown,
|
||||
/obj/item/storage/pill_bottle/lidocaine,
|
||||
)
|
||||
)
|
||||
|
||||
/datum/storage/wallet/New()
|
||||
. = ..()
|
||||
add_holdable(list(
|
||||
/obj/item/condom_pack,
|
||||
/obj/item/gbp_punchcard,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -2123,22 +2123,24 @@
|
||||
#include "code\datums\status_effects\debuffs\vision\nearsighted.dm"
|
||||
#include "code\datums\storage\storage.dm"
|
||||
#include "code\datums\storage\storage_interface.dm"
|
||||
#include "code\datums\storage\subtypes\backpack.dm"
|
||||
#include "code\datums\storage\subtypes\bag_of_holding.dm"
|
||||
#include "code\datums\storage\subtypes\cards.dm"
|
||||
#include "code\datums\storage\subtypes\carpskin_bag.dm"
|
||||
#include "code\datums\storage\subtypes\drone.dm"
|
||||
#include "code\datums\storage\subtypes\duffel_bag.dm"
|
||||
#include "code\datums\storage\subtypes\extract_inventory.dm"
|
||||
#include "code\datums\storage\subtypes\fish_case.dm"
|
||||
#include "code\datums\storage\subtypes\implant.dm"
|
||||
#include "code\datums\storage\subtypes\organ_box.dm"
|
||||
#include "code\datums\storage\subtypes\backpacks.dm"
|
||||
#include "code\datums\storage\subtypes\bags.dm"
|
||||
#include "code\datums\storage\subtypes\belts.dm"
|
||||
#include "code\datums\storage\subtypes\boxes.dm"
|
||||
#include "code\datums\storage\subtypes\dufflebags.dm"
|
||||
#include "code\datums\storage\subtypes\holsters.dm"
|
||||
#include "code\datums\storage\subtypes\lockboxes.dm"
|
||||
#include "code\datums\storage\subtypes\medkits.dm"
|
||||
#include "code\datums\storage\subtypes\pockets.dm"
|
||||
#include "code\datums\storage\subtypes\portable_chem_mixer.dm"
|
||||
#include "code\datums\storage\subtypes\rped.dm"
|
||||
#include "code\datums\storage\subtypes\surgery_tray.dm"
|
||||
#include "code\datums\storage\subtypes\test_tube_rack.dm"
|
||||
#include "code\datums\storage\subtypes\trash.dm"
|
||||
#include "code\datums\storage\subtypes\toolboxes.dm"
|
||||
#include "code\datums\storage\subtypes\others\bag_of_holding.dm"
|
||||
#include "code\datums\storage\subtypes\others\cards.dm"
|
||||
#include "code\datums\storage\subtypes\others\carpskin_bag.dm"
|
||||
#include "code\datums\storage\subtypes\others\extract_inventory.dm"
|
||||
#include "code\datums\storage\subtypes\others\fish_case.dm"
|
||||
#include "code\datums\storage\subtypes\others\misc.dm"
|
||||
#include "code\datums\storage\subtypes\others\pod.dm"
|
||||
#include "code\datums\storage\subtypes\others\rped.dm"
|
||||
#include "code\datums\votes\_vote_datum.dm"
|
||||
#include "code\datums\votes\custom_vote.dm"
|
||||
#include "code\datums\votes\map_vote.dm"
|
||||
@@ -2872,6 +2874,7 @@
|
||||
#include "code\game\objects\items\storage\holsters.dm"
|
||||
#include "code\game\objects\items\storage\lockbox.dm"
|
||||
#include "code\game\objects\items\storage\medkit.dm"
|
||||
#include "code\game\objects\items\storage\pillbottles.dm"
|
||||
#include "code\game\objects\items\storage\sixpack.dm"
|
||||
#include "code\game\objects\items\storage\storage.dm"
|
||||
#include "code\game\objects\items\storage\toolbox.dm"
|
||||
@@ -8925,6 +8928,8 @@
|
||||
#include "modular_zubbers\code\datums\shuttles\emergency.dm"
|
||||
#include "modular_zubbers\code\datums\station_traits\disabled_traits.dm"
|
||||
#include "modular_zubbers\code\datums\station_traits\negative_traits.dm"
|
||||
#include "modular_zubbers\code\datums\storage\subtypes\belts.dm"
|
||||
#include "modular_zubbers\code\datums\storage\subtypes\others\misc.dm"
|
||||
#include "modular_zubbers\code\datums\weather\weather_types\radiation_storm.dm"
|
||||
#include "modular_zubbers\code\datums\weather\weather_types\sand_storm.dm"
|
||||
#include "modular_zubbers\code\datums\wounds\permanent_limp.dm"
|
||||
|
||||
Reference in New Issue
Block a user