Belts & Trashbags (#7443)

requires #6644 

Entirely replaces how (most) belts perform insertion checks.

This pretty much allows belts to hold most things.

Armor vests are next.

Trashbags will also use the systems we use on main.

Closes #7256 and #7435

---------

Co-authored-by: silicons <silicons@silicons.dev>
This commit is contained in:
silicons
2025-12-28 22:05:06 -05:00
committed by GitHub
co-authored by silicons
parent 7707f9e881
commit 30fbcfe9b4
124 changed files with 1176 additions and 1086 deletions
+1
View File
@@ -13,6 +13,7 @@
pickup_sound = 'sound/items/pickup/gun.ogg'
worn_render_flags = NONE
suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
belt_storage_class = BELT_CLASS_MEDIUM
/// loaded vial
var/obj/item/reagent_containers/glass/hypovial/loaded
+1
View File
@@ -14,6 +14,7 @@
/// how many [state][#] overlays we have for reagents remaining
var/overlay_count = 3
item_flags = ITEM_CAREFUL_BLUDGEON | ITEM_ENCUMBERS_WHILE_HELD | ITEM_EASY_LATHE_DECONSTRUCT
belt_storage_class = BELT_CLASS_SMALL
/obj/item/reagent_containers/glass/hypovial/update_icon(updates)
cut_overlays()
+2
View File
@@ -14,6 +14,7 @@
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10) //Set to null instead of list, if there is only one.
suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
belt_storage_class = BELT_CLASS_MEDIUM
var/spray_size = 3
var/list/spray_sizes = list(1,3)
volume = 250
@@ -123,6 +124,7 @@
icon_state = "pepperspray"
item_state = "pepperspray"
suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
belt_storage_class = BELT_CLASS_SMALL
possible_transfer_amounts = null
volume = 40
worth_intrinsic = 85
@@ -235,7 +235,7 @@
data["is_pill_bottle_loaded"] = pill_bottle ? TRUE : FALSE
if(pill_bottle)
data["pill_bottle_current_amount"] = pill_bottle.contents.len
data["pill_bottle_max_amount"] = pill_bottle.max_combined_volume
data["pill_bottle_max_amount"] = pill_bottle.obj_storage?.max_combined_volume / ITEM_VOLUME_PILL
data["is_beaker_loaded"] = beaker ? TRUE : FALSE
data["beaker_current_volume"] = beaker ? round(beaker.reagents.total_volume, 0.01) : null
@@ -402,8 +402,8 @@
var/target_loc = drop_location()
var/drop_threshold = INFINITY
if(pill_bottle)
if(pill_bottle.max_combined_volume)
drop_threshold = pill_bottle.max_combined_volume - pill_bottle.contents.len
if(pill_bottle.obj_storage)
drop_threshold = (pill_bottle.obj_storage.max_combined_volume - pill_bottle.contents.len * ITEM_VOLUME_PILL) / ITEM_VOLUME_PILL
target_loc = pill_bottle
for(var/i in 1 to amount)
if(i-1 < drop_threshold)
@@ -15,6 +15,7 @@
pickup_sound = 'sound/items/pickup/glass.ogg'
integrity_flags = INTEGRITY_ACIDPROOF
suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
belt_storage_class = BELT_CLASS_SMALL
/obj/item/reagent_containers/dropper/examine(mob/user, dist)
. = ..()
@@ -153,6 +153,7 @@
item_state = "beaker"
materials_base = list(MAT_GLASS = 500)
suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
belt_storage_class = BELT_CLASS_SMALL
w_class = WEIGHT_CLASS_TINY
drop_sound = 'sound/items/drop/glass.ogg'
pickup_sound = 'sound/items/pickup/glass.ogg'
@@ -160,7 +161,6 @@
var/rped_rating = 0
item_flags = ITEM_CAREFUL_BLUDGEON | ITEM_ENCUMBERS_WHILE_HELD | ITEM_EASY_LATHE_DECONSTRUCT
/obj/item/reagent_containers/glass/beaker/Initialize(mapload)
. = ..()
desc += " Can hold up to [volume] units."
@@ -18,6 +18,7 @@
pickup_sound = 'sound/items/pickup/gun.ogg'
preserve_item = 1
suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
belt_storage_class = BELT_CLASS_SMALL
var/filled = 0
var/list/filled_reagents = list()
var/hyposound // What sound do we play on use?
@@ -12,9 +12,12 @@
pickup_sound = 'sound/items/pickup/food.ogg'
rad_flags = RAD_NO_CONTAMINATE
suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
belt_storage_class = BELT_CLASS_SMALL
belt_storage_size = BELT_SIZE_FOR_PILL
possible_transfer_amounts = null
w_class = WEIGHT_CLASS_TINY
weight_volume = ITEM_VOLUME_PILL
slot_flags = SLOT_EARS
volume = 60
@@ -15,6 +15,8 @@
rad_flags = RAD_NO_CONTAMINATE
item_flags = ITEM_NO_BLUDGEON | ITEM_ENCUMBERS_WHILE_HELD | ITEM_EASY_LATHE_DECONSTRUCT
suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
belt_storage_class = BELT_CLASS_SMALL
belt_storage_size = BELT_SIZE_FOR_SYRINGE
var/mode = SYRINGE_DRAW
var/image/filling //holds a reference to the current filling overlay
var/visible_name = "a syringe"