diff --git a/citadel.dme b/citadel.dme
index 55ed7629bd3..339d13a9e12 100644
--- a/citadel.dme
+++ b/citadel.dme
@@ -20,6 +20,7 @@
#include "code\_macros.dm"
#include "code\global.dm"
#include "code\__DEFINES\_atoms.dm"
+#include "code\__DEFINES\_bitfields-legacy.dm"
#include "code\__DEFINES\_bitfields.dm"
#include "code\__DEFINES\_cooldowns.dm"
#include "code\__DEFINES\_core.dm"
@@ -38,7 +39,6 @@
#include "code\__DEFINES\assert.dm"
#include "code\__DEFINES\automata.dm"
#include "code\__DEFINES\belly_modes_vr.dm"
-#include "code\__DEFINES\bitflags.dm"
#include "code\__DEFINES\bodypart_behaviour_flags.dm"
#include "code\__DEFINES\bound_proc.dm"
#include "code\__DEFINES\callbacks.dm"
@@ -433,6 +433,7 @@
#include "code\__HELPERS\visual_effects.dm"
#include "code\__HELPERS\animations\attack.dm"
#include "code\__HELPERS\color\decode.dm"
+#include "code\__HELPERS\datastructs\bitfields.dm"
#include "code\__HELPERS\datastructs\bodytypes.dm"
#include "code\__HELPERS\datastructs\filters.dm"
#include "code\__HELPERS\datastructs\ingredients.dm"
@@ -510,7 +511,7 @@
#include "code\__HELPERS\vfx\flick.dm"
#include "code\__HELPERS\vfx\see_anywhere.dm"
#include "code\__HELPERS\vfx\shake_camera.dm"
-#include "code\_globals\bitfields.dm"
+#include "code\_globals\bitfield_legacy.dm"
#include "code\_globals\configuration.dm"
#include "code\_globals\debug.dm"
#include "code\_globals\loadout.dm"
@@ -3024,7 +3025,6 @@
#include "code\modules\examine\descriptions\mecha.dm"
#include "code\modules\examine\descriptions\medical.dm"
#include "code\modules\examine\descriptions\mobs.dm"
-#include "code\modules\examine\descriptions\paperwork.dm"
#include "code\modules\examine\descriptions\smokeables.dm"
#include "code\modules\examine\descriptions\stacks.dm"
#include "code\modules\examine\descriptions\structures.dm"
diff --git a/code/__DEFINES/_bitfields-legacy.dm b/code/__DEFINES/_bitfields-legacy.dm
new file mode 100644
index 00000000000..b0f61e22aae
--- /dev/null
+++ b/code/__DEFINES/_bitfields-legacy.dm
@@ -0,0 +1,21 @@
+// todo: get rid of this and make it like DEFINE_ENUM
+#define DEFINE_BITFIELD(v, f) /datum/bitfield_legacy/single/##v { \
+ flags = ##f; \
+ variable = #v; \
+}
+
+// todo: get rid of this and make it like DEFINE_ENUM
+#define DEFINE_SHARED_BITFIELD(n, v, f) /datum/bitfield_legacy/multi/##n { \
+ flags = ##f; \
+ variables = ##v; \
+}
+
+// todo: get rid of this, rename BITFIELD_NAMED to this
+#define BITFIELD(thing) #thing = thing
+#define BITFIELD_NAMED(name, thing) name = thing
+
+// todo: impl
+/// KEY: must be unique, may be arbitrary; not a string, as it's used in typepath generation
+/// CONSTRAINTS: list(/type = list(varname, ...), ...)
+/// BITFIELDS: list of BITFIELD_NEW().
+#define DEFINE_BITFIELD_NEW(KEY, CONSTRAINTS, BITFIELDS)
diff --git a/code/__DEFINES/_bitfields.dm b/code/__DEFINES/_bitfields.dm
index 598b3209cc1..34a1813cc8d 100644
--- a/code/__DEFINES/_bitfields.dm
+++ b/code/__DEFINES/_bitfields.dm
@@ -1,25 +1,36 @@
-// todo: get rid of this and make it like DEFINE_ENUM
-#define DEFINE_BITFIELD(v, f) /datum/bitfield/single/##v { \
- flags = ##f; \
- variable = #v; \
+//* This file is explicitly licensed under the MIT license. *//
+//* Copyright (c) 2025 Citadel Station Developers *//
+
+/**
+ * * `ID` must be unique and in `snake_case`
+ * * `BIT_TO_NAME` should be an list() with `BITFIELD_NEW()`'s inside it.
+ */
+#define DECLARE_BITFIELD(ID, BIT_TO_NAME); \
+/datum/bitfield/##ID/get_bit_constants() { \
+ return BIT_TO_NAME; \
}
-// todo: get rid of this and make it like DEFINE_ENUM
-#define DEFINE_SHARED_BITFIELD(n, v, f) /datum/bitfield/multi/##n { \
- flags = ##f; \
- variables = ##v; \
-}
-
-// todo: get rid of this, rename BITFIELD_NAMED to this
-#define BITFIELD(thing) #thing = thing
-#define BITFIELD_NAMED(name, thing) name = thing
-
-// todo: impl
-/// KEY: must be unique, may be arbitrary; not a string, as it's used in typepath generation
-/// CONSTRAINTS: list(/type = list(varname, ...), ...)
-/// BITFIELDS: list of BITFIELD_NEW().
-#define DEFINE_BITFIELD_NEW(KEY, CONSTRAINTS, BITFIELDS)
-// todo: impl
/// NAME: must be a string
/// VALUE: the actual enum value, whatever it is
-#define BITFIELD_NEW(NAME, VALUE) ##NAME = ##VALUE
+#define BITFIELD_NEW(NAME, VALUE) #NAME = ##VALUE
+
+/**
+ * * `ID` the same in `DECLARE_BITFIELD`
+ * * `PATH` is `/your/path/whatever` (example)
+ * * `VARNAME` is without quotes. This allows us to compile-time check it.
+ *
+ * CAVEATS:
+ * * Performance of bitfield reflection is heavily dependent on how many things share the same variable
+ * name. Please ensure all bitfields are called distinct names, including across different paths.
+ */
+#define ASSIGN_BITFIELD(ID, PATH, VARNAME) \
+/datum/bitfield/##ID/New() { \
+ ..(); \
+ if(paths[PATH]) { \
+ paths[PATH] += NAMEOF_TYPE(PATH, VARNAME); \
+ } \
+ else { \
+ paths[PATH] = list(NAMEOF_TYPE(PATH, VARNAME)); \
+ } \
+}
+
diff --git a/code/__DEFINES/_lists.dm b/code/__DEFINES/_lists.dm
index 3ea0bb9bab0..af8676ec459 100644
--- a/code/__DEFINES/_lists.dm
+++ b/code/__DEFINES/_lists.dm
@@ -159,7 +159,7 @@
};\
} while(FALSE)
-#define islist(L) istype(L, /list)
+#define isalist(L) istype(L, /alist)
#define VARSET_FROM_LIST(L, V) if(L && L[#V]) V = L[#V]
#define VARSET_FROM_LIST_IF(L, V, C...) if(L && L[#V] && (C)) V = L[#V]
diff --git a/code/__DEFINES/bitflags.dm b/code/__DEFINES/bitflags.dm
deleted file mode 100644
index c9fed68b933..00000000000
--- a/code/__DEFINES/bitflags.dm
+++ /dev/null
@@ -1,3 +0,0 @@
-#define BITSHIFT_LEFT(X, N) (X << (N))
-#define BITSHIFT_RIGHT(X, N) (X >> (N))
-#define BITFLAG(X) BITSHIFT_LEFT(1, X)
diff --git a/code/__DEFINES/inventory/misc.dm b/code/__DEFINES/inventory/misc.dm
index 17533015924..49d70c96b89 100644
--- a/code/__DEFINES/inventory/misc.dm
+++ b/code/__DEFINES/inventory/misc.dm
@@ -1,5 +1,23 @@
+//* This file is explicitly licensed under the MIT license. *//
+//* Copyright (c) 2025 Citadel Station Developers *//
+
// proc: dropped() on /obj/item
// todo: this should be in procs.dm and the names need to be changed probably
// todo: comsig instead?
/// relocated; return false
#define ITEM_RELOCATED_BY_DROPPED -1
+
+//* Item `suit_storage_class` defines *//
+
+#define SUIT_STORAGE_CLASS_HARDWEAR (1<<0)
+#define SUIT_STORAGE_CLASS_SOFTWEAR (1<<1)
+#define SUIT_STORAGE_CLASS_ARMOR (1<<2)
+
+DECLARE_BITFIELD(suit_storage_class, list(
+ BITFIELD_NEW("Hardwear", SUIT_STORAGE_CLASS_HARDWEAR),
+ BITFIELD_NEW("Softwear", SUIT_STORAGE_CLASS_SOFTWEAR),
+ BITFIELD_NEW("Armor", SUIT_STORAGE_CLASS_ARMOR),
+))
+ASSIGN_BITFIELD(suit_storage_class, /obj/item, suit_storage_class)
+ASSIGN_BITFIELD(suit_storage_class, /obj/item, suit_storage_class_allow)
+ASSIGN_BITFIELD(suit_storage_class, /obj/item, suit_storage_class_disallow)
diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm
index 589d4176065..223d833136f 100644
--- a/code/__DEFINES/vv.dm
+++ b/code/__DEFINES/vv.dm
@@ -11,10 +11,12 @@
#define VV_TYPE "Custom Typepath"
#define VV_FILE "File"
#define VV_LIST "List"
+#define VV_ALIST "A-List"
#define VV_NEW_ATOM "New Atom"
#define VV_NEW_DATUM "New Datum"
#define VV_NEW_TYPE "New Custom Typepath"
#define VV_NEW_LIST "New List"
+#define VV_NEW_ALIST "New A-List"
#define VV_NULL "NULL"
#define VV_RESTORE_DEFAULT "Restore to Default"
#define VV_MARKED_DATUM "Marked Datum"
diff --git a/code/__HELPERS/datastructs/bitfields.dm b/code/__HELPERS/datastructs/bitfields.dm
new file mode 100644
index 00000000000..476f8f66633
--- /dev/null
+++ b/code/__HELPERS/datastructs/bitfields.dm
@@ -0,0 +1,127 @@
+
+//* This file is explicitly licensed under the MIT license. *//
+//* Copyright (c) 2025 Citadel Station Developers *//
+
+/**
+ * All bitfield datums
+ */
+GLOBAL_LIST(bitfields)
+/**
+ * All bitfield datums by path
+ */
+GLOBAL_LIST(bitfields_by_path)
+/**
+ * All bitfield datums by var name
+ */
+GLOBAL_LIST(bitfields_by_var)
+
+// TODO: why don't we just tgui picker bitfields so we don't need to do insane lookups?
+/proc/init_bitfield_meta()
+ // TODO: GLOBAL_ALIST
+ var/list/bitfields = list()
+ var/list/bitfield_by_path = list()
+ var/list/bitfield_by_var = list()
+
+ for(var/datum/bitfield/path as anything in subtypesof(/datum/bitfield))
+ if(path.abstract_type == path)
+ continue
+ var/datum/bitfield/instance = new path
+ bitfields += instance
+ // add legacy shit
+ var/list/legacy_bitfields = generate_bitfields()
+ for(var/var_name in legacy_bitfields)
+ var/list/reverse_lookup = legacy_bitfields[var_name]
+ var/datum/bitfield/legacy_instance = new
+ for(var/name in reverse_lookup)
+ var/bit = reverse_lookup[name]
+ legacy_instance.names += name
+ legacy_instance.bits += bit
+ legacy_instance.paths = list((/datum) = var_name)
+ bitfields += legacy_instance
+ for(var/datum/bitfield/bitfield as anything in bitfields)
+ for(var/path in bitfield.paths)
+ if(!bitfield_by_path[path])
+ bitfield_by_path[path] = list(bitfield)
+ else
+ bitfield_by_path[path] += bitfield
+ var/list/name_or_names = bitfield.paths[path]
+ if(islist(name_or_names))
+ for(var/name in name_or_names)
+ if(!bitfield_by_var[name])
+ bitfield_by_var[name] = list(bitfield)
+ else
+ bitfield_by_var[name] += bitfield
+ else if(name_or_names)
+ if(!bitfield_by_var[name_or_names])
+ bitfield_by_var[name_or_names] = list(bitfield)
+ else
+ bitfield_by_var[name_or_names] += bitfield
+ else
+ STACK_TRACE("Bitfield [bitfield.type] ([json_encode(bitfield.names)]) had no var name on path [path]")
+
+ GLOB.bitfields = bitfields
+ GLOB.bitfields_by_path = bitfield_by_path
+ GLOB.bitfields_by_var = bitfield_by_var
+
+#if DM_VERSION > 516
+ #error remove the guards on path == /datum; byond will have fixed the crash bug by now
+#endif
+
+/proc/fetch_all_bitfields(datum/path)
+ . = list()
+ do
+ var/list/maybe_bitfields = GLOB.bitfields_by_path[path]
+ if(maybe_bitfields)
+ . += maybe_bitfields
+ if(path == /datum)
+ break
+ path = path.parent_type
+ while(path)
+
+/proc/fetch_bitfield(datum/path, var_name) as /datum/bitfield
+ if(istype(path))
+ path = path.type
+ for(var/datum/bitfield/bitfield as anything in GLOB.bitfields_by_var[var_name])
+ for(var/match in bitfield.paths)
+ if(ispath(path, match))
+ return bitfield
+
+/**
+ * Bitfield datums used to reflect bitfield values in the game's code.
+ */
+/datum/bitfield
+ abstract_type = /datum/bitfield
+ /// typepaths this is valid on associated to variable or list of variables
+ var/list/paths = list()
+ var/list/bits
+ var/list/names
+
+/datum/bitfield/New()
+ var/list/constants = get_bit_constants()
+ bits = list()
+ names = list()
+ for(var/name in constants)
+ var/bit = constants[name]
+ bits += bit
+ names += name
+
+/datum/bitfield/proc/get_bit_name(bit)
+ . = bits.Find(bit)
+ return . ? names[.] : null
+
+/datum/bitfield/proc/get_bit(name)
+ . = names.Find(name)
+ return . ? bits[.] : null
+
+/**
+ * This is NOT necessarily the number of bits in the bitfield. This is only how many of them
+ * were declared in ourselves. Please be careful when using this;
+ */
+/datum/bitfield/proc/get_declared_count()
+ return length(bits)
+
+/**
+ * @return list(NAME = BIT, ...)
+ */
+/datum/bitfield/proc/get_bit_constants()
+ return list()
diff --git a/code/_globals/bitfields.dm b/code/_globals/bitfield_legacy.dm
similarity index 83%
rename from code/_globals/bitfields.dm
rename to code/_globals/bitfield_legacy.dm
index 7205896c151..814c7a4290a 100644
--- a/code/_globals/bitfields.dm
+++ b/code/_globals/bitfield_legacy.dm
@@ -1,25 +1,23 @@
-GLOBAL_LIST_INIT(bitfields, generate_bitfields())
-
-/datum/bitfield
+/datum/bitfield_legacy
/// An associative list of the readable flag and its true value
var/list/flags
-/datum/bitfield/single
+/datum/bitfield_legacy/single
/// The variable name that contains the bitfield
var/variable
-/datum/bitfield/multi
+/datum/bitfield_legacy/multi
/// our variable names
var/list/variables
-/// Turns /datum/bitfield subtypes into a list for use in debugging
+/// Turns /datum/bitfield_legacy subtypes into a list for use in debugging
/proc/generate_bitfields()
var/list/bitfields = list()
- for (var/_bitfield in subtypesof(/datum/bitfield/single))
- var/datum/bitfield/single/bitfield = new _bitfield
+ for (var/_bitfield in subtypesof(/datum/bitfield_legacy/single))
+ var/datum/bitfield_legacy/single/bitfield = new _bitfield
bitfields[bitfield.variable] = bitfield.flags
- for (var/_bitfield in subtypesof(/datum/bitfield/multi))
- var/datum/bitfield/multi/bitfield = new _bitfield
+ for (var/_bitfield in subtypesof(/datum/bitfield_legacy/multi))
+ var/datum/bitfield_legacy/multi/bitfield = new _bitfield
for(var/n in bitfield.variables)
bitfields[n] = bitfield.flags
// sue me i haven't slept in 18 hours
diff --git a/code/controllers/configuration/entries/game.dm b/code/controllers/configuration/entries/game.dm
index 04e157aa9b4..b2c2962c40d 100644
--- a/code/controllers/configuration/entries/game.dm
+++ b/code/controllers/configuration/entries/game.dm
@@ -92,11 +92,9 @@
. = ..()
if(!.)
return
- var/datum/bitfield/single/target_bitfield = /datum/bitfield/single/nightshift_level
- var/target_bitname = initial(target_bitfield.variable)
- var/list/actual_bitfield = GLOB.bitfields[target_bitname]
+ var/datum/bitfield_legacy/single/target_bitfield = new /datum/bitfield_legacy/single/nightshift_level
var/new_flags = NONE
for(var/key in config_entry_value)
if(config_entry_value[key])
- new_flags |= actual_bitfield[key]
+ new_flags |= target_bitfield.flags[key]
SSnightshift.nightshift_level = new_flags
diff --git a/code/controllers/subsystem/early_init.dm b/code/controllers/subsystem/early_init.dm
index 0460bc5da4d..cdb3e8c18f7 100644
--- a/code/controllers/subsystem/early_init.dm
+++ b/code/controllers/subsystem/early_init.dm
@@ -7,4 +7,5 @@ SUBSYSTEM_DEF(early_init)
/datum/controller/subsystem/early_init/Initialize()
init_inventory_slot_meta()
init_crayon_decal_meta()
+ init_bitfield_meta()
return SS_INIT_SUCCESS
diff --git a/code/controllers/subsystem/materials.dm b/code/controllers/subsystem/materials.dm
index 25ef0638c0a..4bc05d2e899 100644
--- a/code/controllers/subsystem/materials.dm
+++ b/code/controllers/subsystem/materials.dm
@@ -246,7 +246,7 @@ SUBSYSTEM_DEF(materials)
built["tags"] = mat.material_tags
var/list/constraint_list = list()
- var/datum/bitfield/single/constraint_bf = new /datum/bitfield/single/material_constraints
+ var/datum/bitfield_legacy/single/constraint_bf = new /datum/bitfield_legacy/single/material_constraints
constraint_list += mat.material_constraints //Add the unified constraint
for(var/key in constraint_bf.flags)
if(constraint_bf.flags[key] & mat.material_constraints)
diff --git a/code/datums/browser/listpicker.dm b/code/datums/browser/listpicker.dm
index 6b7fc668027..edd6f474f72 100644
--- a/code/datums/browser/listpicker.dm
+++ b/code/datums/browser/listpicker.dm
@@ -65,24 +65,31 @@
if (A.selectedbutton)
return list("button" = A.selectedbutton, "values" = A.valueslist)
-/proc/input_bitfield(mob/User, title, bitfield, current_value, nwidth = 350, nheight = 350, nslidecolor, allowed_edit_list = null)
- if (!User || !(bitfield in GLOB.bitfields))
+/proc/input_bitfield(mob/User, title, datum/bitfield/bitfield, current_value, nwidth = 350, nheight = 350, nslidecolor, allowed_edit_list = null)
+ if(!User)
return
var/list/pickerlist = list()
- for (var/i in GLOB.bitfields[bitfield])
+ for(var/i in 1 to bitfield.get_declared_count())
+ var/bit = bitfield.bits[i]
+ var/name = bitfield.names[i]
var/can_edit = 1
- if(!isnull(allowed_edit_list) && !(allowed_edit_list & GLOB.bitfields[bitfield][i]))
+ if(allowed_edit_list && !(allowed_edit_list & bit))
can_edit = 0
- if (current_value & GLOB.bitfields[bitfield][i])
- pickerlist += list(list("checked" = 1, "value" = GLOB.bitfields[bitfield][i], "name" = i, "allowed_edit" = can_edit))
+ if (current_value & bit)
+ pickerlist += list(list("checked" = 1, "value" = bit, "name" = name, "allowed_edit" = can_edit))
else
- pickerlist += list(list("checked" = 0, "value" = GLOB.bitfields[bitfield][i], "name" = i, "allowed_edit" = can_edit))
+ pickerlist += list(list("checked" = 0, "value" = bit, "name" = name, "allowed_edit" = can_edit))
var/list/result = presentpicker(User, "", title, Button1="Save", Button2 = "Cancel", Timeout=FALSE, values = pickerlist, width = nwidth, height = nheight, slidecolor = nslidecolor)
if (islist(result))
if (result["button"] == 2) // If the user pressed the cancel button
return
. = 0
for (var/flag in result["values"])
- . |= GLOB.bitfields[bitfield][flag]
+ // TODO: efficient-er reverse lookup
+ for(var/i in 1 to bitfield.get_declared_count())
+ var/bit = bitfield.bits[i]
+ var/name = bitfield.names[i]
+ if(name == flag)
+ . |= bit
else
return
diff --git a/code/game/content/factions/eldritch/eldritch.dm/clothing.dm b/code/game/content/factions/eldritch/eldritch.dm/clothing.dm
index b52dd35b4a6..3267b315bf8 100644
--- a/code/game/content/factions/eldritch/eldritch.dm/clothing.dm
+++ b/code/game/content/factions/eldritch/eldritch.dm/clothing.dm
@@ -11,7 +11,7 @@
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
clothing_flags = 0
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy, /obj/item/gun/projectile/ballistic, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/melee/baton,/obj/item/handcuffs, /obj/item/eldritch/blade, /obj/item/eldritch/prop/codex)
+ suit_storage_class_allow = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_SOFTWEAR
armor_type = /datum/armor/eldritch/robes
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
cold_protection_cover = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
@@ -45,7 +45,7 @@
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
clothing_flags = 0
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy, /obj/item/gun/projectile/ballistic, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/melee/baton,/obj/item/handcuffs, /obj/item/eldritch/blade, /obj/item/eldritch/prop/codex)
+ suit_storage_class_allow = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_SOFTWEAR
armor_type = /datum/armor/eldritch/robes/godmode
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
cold_protection_cover = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
diff --git a/code/game/content/factions/eldritch/eldritch.dm/objects.dm b/code/game/content/factions/eldritch/eldritch.dm/objects.dm
index 34b7abe00cf..92cebf53f71 100644
--- a/code/game/content/factions/eldritch/eldritch.dm/objects.dm
+++ b/code/game/content/factions/eldritch/eldritch.dm/objects.dm
@@ -5,6 +5,7 @@
desc = "A heavy book that has been crafted out of purple leather and bound with a chain made of metal you don't recognize. A variety of runes have been etched into the cover."
anchored = 0
density = 0
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_SOFTWEAR
/obj/item/eldritch/prop/medallion
icon = 'code/game/content/factions/eldritch/eldritch.dmi/objects.dmi'
@@ -29,6 +30,7 @@
icon_state = "cursed_blade"
slot_flags = SLOT_BELT
damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
attack_sound = 'sound/weapons/bladeslice.ogg'
drop_sound = 'sound/items/drop/sword.ogg'
diff --git a/code/game/gamemodes/changeling/powers/armor.dm b/code/game/gamemodes/changeling/powers/armor.dm
index 2a0bd9d563b..f9928df7158 100644
--- a/code/game/gamemodes/changeling/powers/armor.dm
+++ b/code/game/gamemodes/changeling/powers/armor.dm
@@ -37,7 +37,7 @@
desc = "A huge, bulky mass of pressure and temperature-resistant organic tissue, evolved to facilitate space travel."
clothing_flags = NONE
item_flags = ITEM_DROPDEL
- allowed = list(/obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/tank/oxygen)
+ suit_storage_class_allow = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_SOFTWEAR
armor_type = /datum/armor/none //No armor at all.
/obj/item/clothing/suit/space/changeling/Initialize(mapload)
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 799a9900fd4..7d7d86f3d0d 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -11,6 +11,7 @@
pickup_sound = 'sound/items/pickup/sword.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
damage_mode = DAMAGE_MODE_EDGE | DAMAGE_MODE_SHARP
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_SOFTWEAR
/obj/item/melee/cultblade/cultify()
return
@@ -84,7 +85,6 @@
icon_state = "cultrobes"
origin_tech = list(TECH_MATERIAL = 3, TECH_ARCANE = 1)
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- allowed = list(/obj/item/book/tome,/obj/item/melee/cultblade)
armor_type = /datum/armor/cult/robes
inv_hide_flags = HIDEJUMPSUIT
siemens_coefficient = 0
@@ -130,7 +130,6 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_ARCANE = 1)
desc = "A bulky suit of armour, bristling with spikes. It looks space-worthy."
w_class = WEIGHT_CLASS_NORMAL
- allowed = list(/obj/item/book/tome,/obj/item/melee/cultblade,/obj/item/tank/emergency/oxygen,/obj/item/suit_cooling_unit)
weight = ITEM_WEIGHT_CULT_VOIDSUIT
encumbrance = ITEM_ENCUMBRANCE_CULT_VOIDSUIT
armor_type = /datum/armor/cult/space
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index 29fab2fe643..aeb1c8d9d77 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -187,6 +187,7 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa","
unique = 1
var/tomedat = ""
var/list/words = list("ire" = "ire", "ego" = "ego", "nahlizet" = "nahlizet", "certum" = "certum", "veri" = "veri", "jatkaa" = "jatkaa", "balaq" = "balaq", "mgar" = "mgar", "karazet" = "karazet", "geeri" = "geeri")
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_SOFTWEAR
tomedat = {"
diff --git a/code/game/gamemodes/technomancer/clothing.dm b/code/game/gamemodes/technomancer/clothing.dm
index fc615b831cc..97a5553c82d 100644
--- a/code/game/gamemodes/technomancer/clothing.dm
+++ b/code/game/gamemodes/technomancer/clothing.dm
@@ -3,7 +3,6 @@
desc = "It's a very shiny and somewhat protective suit, built to help carry cores on the user's back."
icon_state = "technomancer_suit"
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS|FEET|HANDS
- allowed = list(/obj/item/tank)
armor_type = /datum/armor/technomancer/standard
siemens_coefficient = 0.75
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index e4c43752271..ed7f3510e1f 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -486,7 +486,7 @@ GLOBAL_LIST_INIT(firelock_align_types, typecacheof(list(
if(dir_alerts)
for(var/d=1;d<=4;d++)
for(var/i=1;i<=ALERT_STATES.len;i++)
- if(dir_alerts[d] & BITFLAG(i-1))
+ if(dir_alerts[d] & (1 << (i-1)))
add_overlay("alert_[ALERT_STATES[i]]")
do_set_light = TRUE
else
diff --git a/code/game/objects/items-inventory-old.dm b/code/game/objects/items-inventory-old.dm
index 0a053b1e851..f03a7eb5bd8 100644
--- a/code/game/objects/items-inventory-old.dm
+++ b/code/game/objects/items-inventory-old.dm
@@ -246,8 +246,19 @@
* allow an item in suit storage slot?
*/
/obj/item/proc/can_suit_storage(obj/item/I)
- // todo: this is awful
- return is_type_in_list(I, allowed)
+ if(suit_storage_types_disallow_override)
+ for(var/path in suit_storage_types_disallow_override)
+ if(istype(I, path))
+ return FALSE
+ if(suit_storage_types_allow_override)
+ for(var/path in suit_storage_types_allow_override)
+ if(istype(I, path))
+ return FALSE
+ if(suit_storage_class_disallow & I.suit_storage_class)
+ return FALSE
+ if(suit_storage_class_allow & I.suit_storage_class)
+ return TRUE
+ return FALSE
/**
* checks if we need something to attach to in a certain slot
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 8750a7fc7ee..1f28b4d704d 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -117,6 +117,18 @@
var/obj/item/worn_inside
/// suppress auto inventory hooks in forceMove
var/worn_hook_suppressed = FALSE
+ /// Suit storage classes
+ var/suit_storage_class = NONE
+ /// Suit storage classes to allow
+ var/suit_storage_class_allow = NONE
+ /// Suit storage classes to disallow
+ var/suit_storage_class_disallow = NONE
+ /// Suit storage override type-list
+ /// * only for adminbus really
+ VAR_PRIVATE/list/suit_storage_types_allow_override
+ /// Suit storage override type-list
+ /// * only for adminbus really
+ VAR_PRIVATE/list/suit_storage_types_disallow_override
//* Environmentals *//
/// Set this variable to determine up to which temperature (IN KELVIN) the item protects against heat damage. Keep at null to disable protection. Only protects areas set by heat_protection flags.
@@ -175,9 +187,6 @@
var/permeability_coefficient = 1
/// For electrical admittance/conductance (electrocution checks and shit)
var/siemens_coefficient = 1
- /// Suit storage stuff.
- // todo: kill with fire
- var/list/allowed = null
// todo: kill with fire
/// All items can have an uplink hidden inside, just remember to add the triggers.
var/obj/item/uplink/hidden/hidden_uplink = null
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index bd0051dc316..8993a0a1df7 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -10,6 +10,7 @@
throw_range = 10
origin_tech = list(TECH_MAGNET = 2, TECH_COMBAT = 1)
worth_intrinsic = 45
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/times_used = 0 //Number of times it's been used.
var/broken = FALSE //Is the flash burnt out?
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index c25ac13b792..57203d20195 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -9,6 +9,7 @@
item_action_name = "Toggle Flashlight"
light_wedge = LIGHT_WIDE
worth_intrinsic = 25
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/on = FALSE
/// Luminosity when on
diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm
index d25683a3f12..48e605185a9 100644
--- a/code/game/objects/items/devices/geiger.dm
+++ b/code/game/objects/items/devices/geiger.dm
@@ -17,6 +17,7 @@
w_class = WEIGHT_CLASS_SMALL
rad_flags = RAD_NO_CONTAMINATE | RAD_BLOCK_CONTENTS
materials_base = list(MAT_STEEL = 200, MAT_GLASS = 100)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/grace = RAD_GRACE_PERIOD
var/datum/looping_sound/geiger/soundloop
diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm
index 49dd418097f..81b87b10d59 100644
--- a/code/game/objects/items/devices/gps.dm
+++ b/code/game/objects/items/devices/gps.dm
@@ -27,6 +27,7 @@
origin_tech = list(TECH_MATERIAL = 2, TECH_BLUESPACE = 2, TECH_MAGNET = 1)
materials_base = list(MAT_STEEL = 500)
worth_intrinsic = 40
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/// our GPS tag
var/gps_tag = "GEN0"
diff --git a/code/game/objects/items/devices/holowarrant.dm b/code/game/objects/items/devices/holowarrant.dm
index 01d19175aab..4b1afec453b 100644
--- a/code/game/objects/items/devices/holowarrant.dm
+++ b/code/game/objects/items/devices/holowarrant.dm
@@ -5,6 +5,7 @@
icon_state = "holowarrant"
item_state = "flashtool"
item_flags = ITEM_NO_BLUDGEON | ITEM_ENCUMBERS_WHILE_HELD
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
throw_force = 5
w_class = WEIGHT_CLASS_SMALL
throw_speed = 4
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index 718b62e3042..ecaebe45a88 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -4,6 +4,7 @@
icon = 'icons/obj/device.dmi'
icon_state = "megaphone"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/spamcheck = 0
var/emagged = 0
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
index 43199a3c221..0d56fc2ba38 100644
--- a/code/game/objects/items/devices/pipe_painter.dm
+++ b/code/game/objects/items/devices/pipe_painter.dm
@@ -2,6 +2,7 @@
name = "pipe painter"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "labeler1"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/list/modes
var/mode
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index d2d971bd8b0..89dc0199545 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -9,6 +9,7 @@
throw_force = 5
throw_speed = 1
throw_range = 2
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
materials_base = list(MAT_STEEL = 750)
diff --git a/code/game/objects/items/devices/radio/jammer.dm b/code/game/objects/items/devices/radio/jammer.dm
index e6592aa6e8c..41a43f2355c 100644
--- a/code/game/objects/items/devices/radio/jammer.dm
+++ b/code/game/objects/items/devices/radio/jammer.dm
@@ -18,6 +18,7 @@ var/global/list/active_radio_jammers = list()
desc = "Primarily for blocking subspace communications, preventing the use of headsets, PDAs, and communicators. Also masks suit sensors." // Added suit sensor jamming
icon = 'icons/obj/device.dmi'
icon_state = "jammer0"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/active_state = "jammer1"
var/last_overlay_percent = null // Stores overlay icon_state to avoid excessive recreation of overlays.
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index ce136c05dea..88c885e0f3c 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -28,6 +28,7 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
suffix = "\[3\]"
icon_state = "walkietalkie"
item_state = "radio"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
///FALSE for off
var/on = TRUE
diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm
index f9257f6803c..14e10ce3d1d 100644
--- a/code/game/objects/items/devices/suit_cooling.dm
+++ b/code/game/objects/items/devices/suit_cooling.dm
@@ -12,6 +12,7 @@
throw_speed = 1
throw_range = 4
item_action_name = "Toggle Heatsink"
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
materials_base = list(MAT_STEEL = 15000, MAT_GLASS = 3500)
origin_tech = list(TECH_MAGNET = 2, TECH_MATERIAL = 2)
diff --git a/code/game/objects/items/devices/t_scanner.dm b/code/game/objects/items/devices/t_scanner.dm
index fcd03f85ef3..3354b8db3fb 100644
--- a/code/game/objects/items/devices/t_scanner.dm
+++ b/code/game/objects/items/devices/t_scanner.dm
@@ -10,6 +10,7 @@
w_class = WEIGHT_CLASS_SMALL
materials_base = list(MAT_STEEL = 150)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/scan_range = 1
diff --git a/code/game/objects/items/devices/tape_recorder/tape_recorder.dm b/code/game/objects/items/devices/tape_recorder/tape_recorder.dm
index 0b5120be3c0..8010483db0d 100644
--- a/code/game/objects/items/devices/tape_recorder/tape_recorder.dm
+++ b/code/game/objects/items/devices/tape_recorder/tape_recorder.dm
@@ -10,6 +10,7 @@
throw_speed = 4
throw_range = 20
materials_base = list(MAT_STEEL = 60, MAT_GLASS = 30)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
/// inserted tape
var/obj/item/cassette_tape/tape = /obj/item/cassette_tape/random
diff --git a/code/game/objects/items/devices/translator.dm b/code/game/objects/items/devices/translator.dm
index a3514bcdd75..efac6406834 100644
--- a/code/game/objects/items/devices/translator.dm
+++ b/code/game/objects/items/devices/translator.dm
@@ -6,6 +6,7 @@
icon_state = "translator"
w_class = WEIGHT_CLASS_NORMAL
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/// our translation context; set to path to start as path
var/datum/translation_context/context = /datum/translation_context/simple/universal_translator
diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm
index cc6c196f666..83e1e8d742c 100644
--- a/code/game/objects/items/devices/whistle.dm
+++ b/code/game/objects/items/devices/whistle.dm
@@ -6,6 +6,7 @@
item_state = "flashbang" //looks exactly like a flash (and nothing like a flashbang)
w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_EARS
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/use_message = "Halt! Security!"
var/spamcheck = 0
diff --git a/code/game/objects/items/grenade/grenade.dm b/code/game/objects/items/grenade/grenade.dm
index 0d4903f361b..2dcfc41f514 100644
--- a/code/game/objects/items/grenade/grenade.dm
+++ b/code/game/objects/items/grenade/grenade.dm
@@ -14,6 +14,7 @@
throw_speed = 4
throw_range = 20
slot_flags = SLOT_MASK|SLOT_BELT
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
// todo: legacy var
var/loadable = TRUE
diff --git a/code/game/objects/items/inflatables.dm b/code/game/objects/items/inflatables.dm
index f33e6dc1eca..22001bc2fa4 100644
--- a/code/game/objects/items/inflatables.dm
+++ b/code/game/objects/items/inflatables.dm
@@ -71,6 +71,7 @@
w_class = WEIGHT_CLASS_NORMAL
max_combined_volume = WEIGHT_VOLUME_NORMAL * 7
insertion_whitelist = list(/obj/item/inflatable)
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
starts_with = list(
/obj/item/inflatable = 4,
diff --git a/code/game/objects/items/melee/melee.dm b/code/game/objects/items/melee/melee.dm
index 88bd5f1df3f..a9b63b95344 100644
--- a/code/game/objects/items/melee/melee.dm
+++ b/code/game/objects/items/melee/melee.dm
@@ -20,3 +20,4 @@
passive_parry = /datum/passive_parry{
parry_chance_melee = 5;
}
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
diff --git a/code/game/objects/items/melee/types/misc.dm b/code/game/objects/items/melee/types/misc.dm
index 599ca508a0c..04e292021e6 100644
--- a/code/game/objects/items/melee/types/misc.dm
+++ b/code/game/objects/items/melee/types/misc.dm
@@ -20,6 +20,7 @@
damage_force = 5
throw_force = 5
w_class = WEIGHT_CLASS_NORMAL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/open = FALSE
/obj/item/melee/umbrella/Initialize(mapload)
diff --git a/code/game/objects/items/melee/types/transforming/energy/saber.dm b/code/game/objects/items/melee/types/transforming/energy/saber.dm
index 64a36a8db94..5803103e8ec 100644
--- a/code/game/objects/items/melee/types/transforming/energy/saber.dm
+++ b/code/game/objects/items/melee/types/transforming/energy/saber.dm
@@ -13,6 +13,7 @@
colorable = TRUE
drop_sound = 'sound/items/drop/sword.ogg'
pickup_sound = 'sound/items/pickup/sword.ogg'
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/can_combine = TRUE
active_damage_force = 30
@@ -32,6 +33,7 @@
SPAN_WARNING("You energize \the [src]."),
target = src,
)
+ suit_storage_class = NONE
/obj/item/melee/transforming/energy/sword/on_deactivate(datum/event_args/actor/actor, silent)
. = ..()
@@ -39,6 +41,7 @@
SPAN_WARNING("You de-energize \the [src]."),
target = src,
)
+ suit_storage_class = initial(suit_storage_class)
/obj/item/melee/transforming/energy/sword/passive_parry_intercept(mob/defending, attack_type, datum/attack_source, datum/passive_parry/parry_data)
. = ..()
diff --git a/code/game/objects/items/scanners/atmos.dm b/code/game/objects/items/scanners/atmos.dm
index 1d048969ca7..6d3ac1822d1 100644
--- a/code/game/objects/items/scanners/atmos.dm
+++ b/code/game/objects/items/scanners/atmos.dm
@@ -11,6 +11,7 @@
throw_range = 20
materials_base = list(MAT_STEEL = 30, MAT_GLASS = 20)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/atmos_analyzer/apidean
name = "\improper Apidean analyzer"
diff --git a/code/game/objects/items/scanners/health.dm b/code/game/objects/items/scanners/health.dm
index 385a7ffc308..894d93b42a0 100644
--- a/code/game/objects/items/scanners/health.dm
+++ b/code/game/objects/items/scanners/health.dm
@@ -5,6 +5,7 @@
icon_state = "health"
item_state = "healthanalyzer"
slot_flags = SLOT_BELT
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
throw_force = 3
w_class = WEIGHT_CLASS_SMALL
throw_speed = 5
diff --git a/code/game/objects/items/scanners/plant.dm b/code/game/objects/items/scanners/plant.dm
index 2047dfa8a52..a529a531dcf 100644
--- a/code/game/objects/items/scanners/plant.dm
+++ b/code/game/objects/items/scanners/plant.dm
@@ -3,6 +3,7 @@
icon = 'icons/obj/device.dmi'
icon_state = "hydro"
item_state = "analyzer"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/datum/seed/last_seed
var/list/last_reagents
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/items/scanners/reagent.dm b/code/game/objects/items/scanners/reagent.dm
index c32663a7855..2cfe06c5c82 100644
--- a/code/game/objects/items/scanners/reagent.dm
+++ b/code/game/objects/items/scanners/reagent.dm
@@ -10,6 +10,7 @@
throw_speed = 4
throw_range = 20
materials_base = list(MAT_STEEL = 30, MAT_GLASS = 20)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
var/details = 0
diff --git a/code/game/objects/items/shield/types/shields_legacy_vr.dm b/code/game/objects/items/shield/types/shields_legacy_vr.dm
index d0d00bba9d9..76ba46f0a67 100644
--- a/code/game/objects/items/shield/types/shields_legacy_vr.dm
+++ b/code/game/objects/items/shield/types/shields_legacy_vr.dm
@@ -1,4 +1,3 @@
-
/obj/item/shield/fluff/wolfgirlshield
name = "Autumn Shield"
desc = "A shiny silvery shield with a large red leaf symbol in the center."
@@ -11,4 +10,3 @@
throw_range = 6
item_icons = list(SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_melee.dmi', SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi', SLOT_ID_BACK = 'icons/vore/custom_items_vr.dmi', SLOT_ID_SUIT = 'icons/vore/custom_items_vr.dmi')
attack_verb = list("shoved", "bashed")
- allowed = list(/obj/item/melee/fluffstuff/wolfgirlsword)
diff --git a/code/game/objects/items/stacks/marker_beacons.dm b/code/game/objects/items/stacks/marker_beacons.dm
index 2cfd6712949..9adde945078 100644
--- a/code/game/objects/items/stacks/marker_beacons.dm
+++ b/code/game/objects/items/stacks/marker_beacons.dm
@@ -28,6 +28,7 @@ var/list/marker_beacon_colors = list(
no_variants = TRUE
w_class = WEIGHT_CLASS_SMALL
skip_legacy_icon_update = TRUE
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/picked_color = "random"
/obj/item/stack/marker_beacon/ten
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 1d4c355a9a6..e3875489715 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -9,6 +9,7 @@
w_class = WEIGHT_CLASS_SMALL
throw_speed = 4
throw_range = 20
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/heal_brute = 0
var/heal_burn = 0
var/apply_sounds
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index e617f8b5f08..b9312610c56 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -145,6 +145,7 @@
max_combined_volume = null
max_combined_weight_class = null
max_items = 300
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
storage_datum_path = /datum/object_system/storage/stack
ui_expand_when_needed = TRUE
insertion_whitelist = list(/obj/item/stack/ore)
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index e34322a525a..a9887099ce4 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -440,6 +440,7 @@
desc = "A small box of 'Space-Proof' premium matches."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "matchbox"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_BELT
insertion_whitelist = list(/obj/item/flame/match)
diff --git a/code/game/objects/items/storage/medical/firstaid.dm b/code/game/objects/items/storage/medical/firstaid.dm
index 7196fb1ea80..978867fe6e4 100644
--- a/code/game/objects/items/storage/medical/firstaid.dm
+++ b/code/game/objects/items/storage/medical/firstaid.dm
@@ -18,6 +18,7 @@
max_combined_volume = WEIGHT_VOLUME_SMALL * 7 // 14
drop_sound = 'sound/items/drop/cardboardbox.ogg'
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/storage/firstaid/fire
name = "fire first aid kit"
@@ -174,6 +175,7 @@
max_single_weight_class = WEIGHT_CLASS_TINY
materials_base = list(MAT_PLASTIC = 80)
item_flags = ITEM_CAREFUL_BLUDGEON | ITEM_ENCUMBERS_WHILE_HELD | ITEM_EASY_LATHE_DECONSTRUCT
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
var/label_text = ""
var/labeled = 0
diff --git a/code/game/objects/items/storage/misc_legacy/fancy.dm b/code/game/objects/items/storage/misc_legacy/fancy.dm
index a270eff84ae..e7f388f8987 100644
--- a/code/game/objects/items/storage/misc_legacy/fancy.dm
+++ b/code/game/objects/items/storage/misc_legacy/fancy.dm
@@ -238,6 +238,7 @@
icon = 'icons/obj/cigarettes.dmi'
icon_state = "cigpacket"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "cigpacket", SLOT_ID_LEFT_HAND = "cigpacket")
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
w_class = WEIGHT_CLASS_TINY
throw_force = 2
slot_flags = SLOT_BELT | SLOT_EARS
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index ef0a3b8ae10..213ad7718cf 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -15,6 +15,7 @@
attack_verb = list("robusted")
drop_sound = 'sound/items/drop/toolbox.ogg'
pickup_sound = 'sound/items/pickup/toolbox.ogg'
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/storage/toolbox/emergency
name = "emergency toolbox"
diff --git a/code/game/objects/items/tools/_tool.dm b/code/game/objects/items/tools/_tool.dm
index 007118d301f..741a7824ff8 100644
--- a/code/game/objects/items/tools/_tool.dm
+++ b/code/game/objects/items/tools/_tool.dm
@@ -5,6 +5,7 @@
*/
/obj/item/tool
item_flags = ITEM_CAREFUL_BLUDGEON | ITEM_ENCUMBERS_WHILE_HELD
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/tool/get_description_info()
. = ..()
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index 3b1510790d9..16668bd51e1 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -9,6 +9,7 @@
item_state = "welder"
slot_flags = SLOT_BELT
tool_behaviour = TOOL_WELDER
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
//Amount of OUCH when it's thrown
damage_force = 3.0
diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm
index e0d3fbdfa94..1ce7548ca1f 100644
--- a/code/game/objects/items/toys/toys.dm
+++ b/code/game/objects/items/toys/toys.dm
@@ -26,6 +26,7 @@
throw_speed = 4
throw_range = 20
damage_force = 0
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
/*
* Balloons
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 948ba30ba6f..af17c5bcdec 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -12,6 +12,7 @@
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand.dmi',
)
item_flags = ITEM_NO_BLUDGEON | ITEM_ENCUMBERS_WHILE_HELD
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
damage_force = 10
throw_force = 10
throw_speed = 1
@@ -419,7 +420,7 @@
SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand.dmi',
SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand.dmi',
)
-
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
w_class = WEIGHT_CLASS_SMALL
origin_tech = list(TECH_MATERIAL = 2)
diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm
index 6237a517990..3a27560d8c7 100644
--- a/code/game/objects/items/weapons/RPD.dm
+++ b/code/game/objects/items/weapons/RPD.dm
@@ -25,6 +25,7 @@
w_class = WEIGHT_CLASS_NORMAL
slot_flags = SLOT_BELT
materials_base = list(MAT_STEEL = 20000, MAT_GLASS = 10000)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
///Sparks system used when changing device in the UI
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread
///Direction of the device we are going to spawn, set up in the UI
diff --git a/code/game/objects/items/weapons/barrier_tape.dm b/code/game/objects/items/weapons/barrier_tape.dm
index e4f3cf65536..e6159688fe4 100644
--- a/code/game/objects/items/weapons/barrier_tape.dm
+++ b/code/game/objects/items/weapons/barrier_tape.dm
@@ -4,6 +4,7 @@
icon = 'icons/policetape.dmi'
icon_state = "tape"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
tool_speed = 3 //You can use it in surgery. It's stupid, but you can.
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index 5cb6eb576db..e2cf0589a2e 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -586,6 +586,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
item_state = "lighter-g"
w_class = WEIGHT_CLASS_TINY
throw_force = 4
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
slot_flags = SLOT_BELT
attack_verb = list("burnt", "singed")
var/base_state
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index 2d8079117c4..34cfabc9bdb 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -14,6 +14,7 @@
attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed")
drop_sound = 'sound/items/drop/gascan.ogg'
pickup_sound = 'sound/items/pickup/gascan.ogg'
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_SOFTWEAR
var/spray_particles = 3
var/spray_amount = 10 //units of liquid per particle
@@ -35,6 +36,7 @@
max_water = 150
spray_particles = 3
sprite_name = "miniFE"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
/obj/item/extinguisher/mini/plasman
name = "emergency phoronoid extinguisher"
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 701f6b632b7..b134f4958b6 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -7,6 +7,7 @@
worn_state = "handcuff"
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
slot_flags = SLOT_BELT
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
throw_force = 5
w_class = WEIGHT_CLASS_SMALL
throw_speed = 2
diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm
index bb283be97ff..9503d7d6653 100644
--- a/code/game/objects/items/weapons/material/knives.dm
+++ b/code/game/objects/items/weapons/material/knives.dm
@@ -72,6 +72,7 @@
icon = 'icons/obj/kitchen.dmi'
icon_state = "knife"
desc = "A general purpose chef's knife. Glithari Exports filet knives, Centauri bread knives, all pale in comparison to Nanotrasen's very own Cookware line of cheap, affordable chef's knives."
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
material_significance = MATERIAL_SIGNIFICANCE_WEAPON_LIGHT
materials_base = list(MAT_STEEL = 12000)
diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm
index c697f5f8ac5..ab687b9080d 100644
--- a/code/game/objects/items/weapons/material/misc.dm
+++ b/code/game/objects/items/weapons/material/misc.dm
@@ -79,6 +79,7 @@
material_primary = "tip"
w_class = WEIGHT_CLASS_SMALL
attack_verb = list("slashed", "sliced", "cut", "clawed")
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/material/minihoe/plasteel
material_parts = /datum/prototype/material/plasteel
diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm
index 832ef6f534a..342434bc077 100644
--- a/code/game/objects/items/weapons/material/twohanded.dm
+++ b/code/game/objects/items/weapons/material/twohanded.dm
@@ -153,6 +153,7 @@
damage_force = 10
w_class = WEIGHT_CLASS_BULKY
slot_flags = SLOT_BACK
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
material_significance = MATERIAL_SIGNIFICANCE_WEAPON_HEAVY
throw_force_multiplier = 1.5
throw_speed = 5
diff --git a/code/game/objects/items/weapons/nullrod.dm b/code/game/objects/items/weapons/nullrod.dm
index a2b7ede8081..47c2af73a3e 100644
--- a/code/game/objects/items/weapons/nullrod.dm
+++ b/code/game/objects/items/weapons/nullrod.dm
@@ -13,6 +13,7 @@
w_class = WEIGHT_CLASS_SMALL
drop_sound = 'sound/items/drop/sword.ogg'
pickup_sound = 'sound/items/pickup/sword.ogg'
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_SOFTWEAR
var/reskinned = FALSE
var/defend_chance = 0 // The base chance for the weapon to parry.
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index 28f4689fb1a..1ac09e35ee3 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -14,6 +14,7 @@
icon = 'icons/obj/surgery.dmi'
w_class = WEIGHT_CLASS_SMALL
item_flags = ITEM_CAREFUL_BLUDGEON | ITEM_ENCUMBERS_WHILE_HELD
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
var/helpforce = 0 //For help intent things
drop_sound = 'sound/items/drop/weldingtool.ogg'
pickup_sound = 'sound/items/pickup/weldingtool.ogg'
diff --git a/code/game/objects/items/weapons/tanks/tank.dm b/code/game/objects/items/weapons/tanks/tank.dm
index 74f2fa603b9..6f6ec2afa6b 100644
--- a/code/game/objects/items/weapons/tanks/tank.dm
+++ b/code/game/objects/items/weapons/tanks/tank.dm
@@ -12,6 +12,7 @@ var/list/global/tank_gauge_cache = list()
icon = 'icons/obj/tank.dmi'
drop_sound = 'sound/items/drop/gascan.ogg'
pickup_sound = 'sound/items/pickup/gascan.ogg'
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
var/gauge_icon = "indicator_tank"
var/last_gauge_pressure
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 88e1f645ef5..e2230baa4f2 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -144,6 +144,7 @@
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
volume = 2 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
worth_intrinsic = 25
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/tank/emergency/oxygen
name = "emergency oxygen tank"
diff --git a/code/game/objects/obj.dm b/code/game/objects/obj.dm
index ff99a2df02d..b4838c56b0f 100644
--- a/code/game/objects/obj.dm
+++ b/code/game/objects/obj.dm
@@ -13,8 +13,6 @@
//? Flags
/// object flags, see __DEFINES/_flags/obj_flags.dm
var/obj_flags = OBJ_MELEE_TARGETABLE | OBJ_RANGE_TARGETABLE
- /// ONLY FOR MAPPING: Sets flags from a string list, handled in Initialize. Usage: set_obj_flags = "OBJ_EMAGGED;!CAN_BE_HIT" to set OBJ_EMAGGED and clear CAN_BE_HIT.
- var/set_obj_flags
//? Access - see [modules/jobs/access.dm]
/// If set, all of these accesses are needed to access this object.
@@ -264,15 +262,6 @@
init_material_parts()
if(hides_underfloor != OBJ_UNDERFLOOR_UNSUPPORTED && isturf(loc))
initialize_hiding_underfloor(mapload)
- if (set_obj_flags)
- var/flagslist = splittext(set_obj_flags,";")
- var/list/string_to_objflag = GLOB.bitfields["obj_flags"]
- for (var/flag in flagslist)
- if(flag[1] == "!")
- flag = copytext(flag, length(flag[1]) + 1) // Get all but the initial !
- obj_flags &= ~string_to_objflag[flag]
- else
- obj_flags |= string_to_objflag[flag]
/obj/Destroy()
for(var/datum/prototype/material_trait/trait as anything in material_traits)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 5c2b92fff45..be23a23b6c3 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -271,6 +271,7 @@
var/bedtype = /obj/structure/bed/roller
drop_sound = 'sound/items/drop/axe.ogg'
pickup_sound = 'sound/items/pickup/axe.ogg'
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/roller/attack_self(mob/user, datum/event_args/actor/actor)
. = ..()
diff --git a/code/modules/admin/callproc/callproc.dm b/code/modules/admin/callproc/callproc.dm
index 4fd283abc8c..756605473a8 100644
--- a/code/modules/admin/callproc/callproc.dm
+++ b/code/modules/admin/callproc/callproc.dm
@@ -15,7 +15,10 @@
switch(alert("Proc owned by something?",,"Yes","No"))
if("Yes")
targetselected = TRUE
- var/list/value = vv_get_value(default_class = VV_ATOM_REFERENCE, classes = list(VV_ATOM_REFERENCE, VV_DATUM_REFERENCE, VV_MOB_REFERENCE, VV_CLIENT, VV_MARKED_DATUM, VV_TEXT_LOCATE, VV_PROCCALL_RETVAL))
+ var/list/value = vv_get_value(
+ default_class = VV_ATOM_REFERENCE,
+ classes = list(VV_ATOM_REFERENCE, VV_DATUM_REFERENCE, VV_MOB_REFERENCE, VV_CLIENT, VV_MARKED_DATUM, VV_TEXT_LOCATE, VV_PROCCALL_RETVAL),
+ )
if (!value["class"] || !value["value"])
return
target = value["value"]
diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm
index 28bdaead151..ffb5ff923ec 100644
--- a/code/modules/admin/view_variables/debug_variables.dm
+++ b/code/modules/admin/view_variables/debug_variables.dm
@@ -16,6 +16,7 @@
header = ""
var/item
+ var/datum/bitfield/maybe_bitfield
if (isnull(value))
item = "[VV_HTML_ENCODE(name)] = null"
@@ -70,12 +71,13 @@
else
item = "[VV_HTML_ENCODE(name)] = /list ([L.len])"
- else if (name in GLOB.bitfields)
+ else if ((maybe_bitfield = fetch_bitfield(D?.type, name)))
var/list/flags = list()
- for (var/i in GLOB.bitfields[name])
- if (value & GLOB.bitfields[name][i])
- flags += i
- item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(jointext(flags, ", "))]"
+ for(var/i in 1 to maybe_bitfield.get_declared_count())
+ var/bit = maybe_bitfield.bits[i]
+ if(value & bit)
+ flags += maybe_bitfield.names[i]
+ item = "[VV_HTML_ENCODE(name)] = [jointext(flags, ", ")]"
else
item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)]"
diff --git a/code/modules/admin/view_variables/get_variables.dm b/code/modules/admin/view_variables/get_variables.dm
index d864eebd125..379dd8fed0a 100644
--- a/code/modules/admin/view_variables/get_variables.dm
+++ b/code/modules/admin/view_variables/get_variables.dm
@@ -1,9 +1,9 @@
-/proc/vv_get_class(var_name, var_value)
+/proc/vv_get_class(var_name, var_value, datum/target)
if(isnull(var_value))
. = VV_NULL
else if(isnum(var_value))
- if(var_name in GLOB.bitfields)
+ if(fetch_bitfield(target?.type, var_name))
. = VV_BITFIELD
else
. = VV_NUM
@@ -39,13 +39,15 @@
else if(islist(var_value))
. = VV_LIST
+ else if(isalist(var_value))
+ . = VV_ALIST
else if(isfile(var_value))
. = VV_FILE
else
. = VV_NULL
-/client/proc/vv_get_value(class, default_class, current_value, list/restricted_classes, list/extra_classes, list/classes, var_name)
+/client/proc/vv_get_value(class, default_class, current_value, list/restricted_classes, list/extra_classes, list/classes, var_name, datum/maybe_datum)
. = list("class" = class, "value" = null)
if(!class)
if(!classes)
@@ -66,6 +68,7 @@
VV_NEW_DATUM,
VV_NEW_TYPE,
VV_NEW_LIST,
+ VV_NEW_ALIST,
VV_NULL,
VV_RESTORE_DEFAULT,
VV_TEXT_LOCATE,
@@ -83,6 +86,9 @@
if(extra_classes)
classes += extra_classes
+ if(!maybe_datum)
+ classes -= VV_BITFIELD
+
.["class"] = input(src, "What kind of data?", "Variable Type", default_class) as null|anything in classes
if(holder && holder.marked_datum && .["class"] == markstring)
.["class"] = VV_MARKED_DATUM
@@ -98,32 +104,26 @@
if(.["value"] == null)
.["class"] = null
return
-
-
if(VV_NUM)
.["value"] = input("Enter new number:", "Num", current_value) as null|num
if(.["value"] == null)
.["class"] = null
return
-
if(VV_BITFIELD)
- .["value"] = input_bitfield(usr, "Editing bitfield: [var_name]", var_name, current_value)
+ .["value"] = input_bitfield(usr, "Editing bitfield: [var_name]", fetch_bitfield(maybe_datum?.type, var_name), current_value)
if(.["value"] == null)
.["class"] = null
return
-
if(VV_ATOM_TYPE)
.["value"] = pick_closest_path(FALSE)
if(.["value"] == null)
.["class"] = null
return
-
if(VV_DATUM_TYPE)
.["value"] = pick_closest_path(FALSE, get_fancy_list_of_datum_types())
if(.["value"] == null)
.["class"] = null
return
-
if(VV_TYPE)
var/type = current_value
var/error = ""
@@ -253,6 +253,10 @@
.["value"] = list()
.["type"] = /list
+ if(VV_NEW_ALIST)
+ .["value"] = alist()
+ .["type"] = /alist
+
if(VV_TEXT_LOCATE)
var/datum/D
do
diff --git a/code/modules/admin/view_variables/mass_edit_variables.dm b/code/modules/admin/view_variables/mass_edit_variables.dm
index 86f9f78e013..0b35a731a7b 100644
--- a/code/modules/admin/view_variables/mass_edit_variables.dm
+++ b/code/modules/admin/view_variables/mass_edit_variables.dm
@@ -53,7 +53,7 @@
if (prompt != "Continue")
return
- default = vv_get_class(variable, var_value)
+ default = vv_get_class(variable, var_value, O)
if(isnull(default))
to_chat(src, "Unable to determine variable type.")
@@ -77,7 +77,7 @@
if(dir_text)
to_chat(src, "If a direction, direction is: [dir_text]")
- var/value = vv_get_value(default_class = default)
+ var/value = vv_get_value(default_class = default, maybe_datum = O)
var/new_value = value["value"]
var/class = value["class"]
diff --git a/code/modules/admin/view_variables/modify_variables.dm b/code/modules/admin/view_variables/modify_variables.dm
index 976085f1020..1865898d413 100644
--- a/code/modules/admin/view_variables/modify_variables.dm
+++ b/code/modules/admin/view_variables/modify_variables.dm
@@ -231,7 +231,7 @@ GLOBAL_PROTECT(VVpixelmovement)
if (default == VV_TEXT)
default = VV_MESSAGE
class = default
- var/list/LL = vv_get_value(default_class = default, current_value = original_var, restricted_classes = list(VV_RESTORE_DEFAULT), extra_classes = list(VV_LIST, "DELETE FROM LIST"))
+ var/list/LL = vv_get_value(default_class = default, current_value = original_var, restricted_classes = list(VV_RESTORE_DEFAULT), extra_classes = list(VV_LIST, VV_ALIST, "DELETE FROM LIST"))
class = LL["class"]
if (!class)
return
@@ -243,6 +243,8 @@ GLOBAL_PROTECT(VVpixelmovement)
switch(class) //Spits a runtime error if you try to modify an entry in the contents list. Dunno how to fix it, yet.
if(VV_LIST)
mod_list(variable, O, original_name, objectvar)
+ if(VV_ALIST)
+ mod_list(variable, O, original_name, objectvar)
if("DELETE FROM LIST")
L.Cut(index, index+1)
@@ -320,7 +322,7 @@ GLOBAL_PROTECT(VVpixelmovement)
if(!vv_varname_lockcheck(variable))
return
- var/default = vv_get_class(variable, var_value)
+ var/default = vv_get_class(variable, var_value, O)
if(isnull(default))
to_chat(src, "Unable to determine variable type.")
@@ -349,7 +351,14 @@ GLOBAL_PROTECT(VVpixelmovement)
default = VV_MESSAGE
class = default
- var/list/value = vv_get_value(class, default, var_value, extra_classes = list(VV_LIST), var_name = variable)
+ var/list/value = vv_get_value(
+ class,
+ default,
+ var_value,
+ extra_classes = list(VV_LIST, VV_ALIST),
+ var_name = variable,
+ maybe_datum = O
+ )
class = value["class"]
if (!class)
@@ -362,10 +371,13 @@ GLOBAL_PROTECT(VVpixelmovement)
var/original_name = "[O]"
switch(class)
+ if(VV_ALIST)
+ if(!isalist(var_value))
+ mod_list(alist(), O, original_name, variable)
+ mod_list(var_value, O, original_name, variable)
if(VV_LIST)
if(!islist(var_value))
mod_list(list(), O, original_name, variable)
-
mod_list(var_value, O, original_name, variable)
return
diff --git a/code/modules/catalogue/cataloguer.dm b/code/modules/catalogue/cataloguer.dm
index 4676f0f844f..6465d8c5a1c 100644
--- a/code/modules/catalogue/cataloguer.dm
+++ b/code/modules/catalogue/cataloguer.dm
@@ -24,6 +24,7 @@ GLOBAL_LIST_EMPTY(all_cataloguers)
icon_state = "cataloguer"
w_class = WEIGHT_CLASS_NORMAL
origin_tech = list(TECH_MATERIAL = 2, TECH_DATA = 3, TECH_MAGNET = 3)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
damage_force = 0
var/points_stored = 0 // Amount of 'exploration points' this device holds.
var/scan_range = 3 // How many tiles away it can scan. Changing this also changes the box size.
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index a3524d8fb55..96346c96ddb 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -7,6 +7,8 @@
pickup_sound = 'sound/items/pickup/cloth.ogg'
item_flags = NONE
+ suit_storage_class_allow = SUIT_STORAGE_CLASS_SOFTWEAR
+
//? equip
/// Inventory slot IDs where this is active for any effects. Used by subtypes, to be potentially refactored in the future.
var/list/active_slots
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index d02d6e060a5..7ab5aa4ad14 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -142,7 +142,6 @@
name = "fedora"
desc = "A brown fedora - either the cornerstone of a detective's style or a poor attempt at looking cool, depending on the person wearing it."
icon_state = "detective"
- allowed = list(/obj/item/reagent_containers/food/snacks/candy_corn, /obj/item/pen)
armor_type = /datum/armor/security/light_formalwear
siemens_coefficient = 0.9
valid_accessory_slots = null
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index c1f8ef24129..7825c7964bf 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -275,7 +275,6 @@
name = "fedora"
desc = "A brown fedora - either the cornerstone of a reporter's style or a poor attempt at looking cool, depending on the person wearing it."
icon_state = "detective"
- allowed = list(/obj/item/reagent_containers/food/snacks/candy_corn, /obj/item/pen)
/obj/item/clothing/head/fedora/grey
icon_state = "detective2"
diff --git a/code/modules/clothing/legacy_accessories/clothing.dm b/code/modules/clothing/legacy_accessories/clothing.dm
index e150333914b..bce9bdfe61b 100644
--- a/code/modules/clothing/legacy_accessories/clothing.dm
+++ b/code/modules/clothing/legacy_accessories/clothing.dm
@@ -55,7 +55,6 @@
item_state = "classicponcho"
icon_override = 'icons/mob/clothing/ties.dmi'
var/fire_resist = T0C+100
- allowed = list(/obj/item/tank/emergency/oxygen)
armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
@@ -136,9 +135,6 @@
desc = "The latest fashion innovations by the Nanotrasen Uniform & Fashion Department have provided the brilliant invention of slicing a regular cloak in half! All the ponce, half the cost!"
icon_state = "roughcloak"
item_state = "roughcloak"
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/gun/projectile/energy,
- /obj/item/gun/projectile/ballistic, /obj/item/ammo_magazine, /obj/item/melee/baton)
item_action_name = "Adjust Cloak"
/obj/item/clothing/accessory/poncho/rough_cloak/attack_self(mob/user, datum/event_args/actor/actor)
@@ -178,7 +174,6 @@
icon_state = "klbr"
icon_override = 'icons/mob/clothing/suits.dmi'
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/gun/projectile/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/flashlight/maglight,/obj/item/clothing/head/helmet)
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_cover_flags = UPPER_TORSO|ARMS
siemens_coefficient = 0.9
@@ -210,10 +205,6 @@
name = "goliath hide half cloak"
desc = "Thinner and more lightweight than a hooded Goliath cloak, the half-cloak is more comfortable to wear over armor. However, as a result it does not provide the same protection from heat."
color = "#870606"
- allowed = list(
- /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/pickaxe, /obj/item/material/twohanded/spear, /obj/item/material/twohanded/spear/bone,
- /obj/item/material/knife/tacknife/combatknife/bone, /obj/item/material/knife/tacknife/survival/bone, /obj/item/material/knife/tacknife/survival/bone, /obj/item/melee/ashlander,
- /obj/item/gun/projectile/ballistic/musket/pistol)
item_action_name = "Adjust Cloak"
/*
@@ -365,7 +356,6 @@
item_state = "vest"
icon_override = 'icons/mob/clothing/ties.dmi'
item_state_slots = list(SLOT_ID_RIGHT_HAND = "wcoat", SLOT_ID_LEFT_HAND = "wcoat")
- allowed = list(/obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_cover_flags = UPPER_TORSO|LOWER_TORSO
@@ -417,7 +407,6 @@
item_state = "button_tucked"
icon_override = 'icons/mob/clothing/ties.dmi'
item_state_slots = list(SLOT_ID_RIGHT_HAND = "labcoat", SLOT_ID_LEFT_HAND = "labcoat")
- allowed = list(/obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_cover_flags = UPPER_TORSO|LOWER_TORSO
diff --git a/code/modules/clothing/legacy_accessories/xeno/tajara.dm b/code/modules/clothing/legacy_accessories/xeno/tajara.dm
index ee8ed1da2c4..57d5d023b5a 100644
--- a/code/modules/clothing/legacy_accessories/xeno/tajara.dm
+++ b/code/modules/clothing/legacy_accessories/xeno/tajara.dm
@@ -91,7 +91,6 @@
icon_state = "taj_commoncloak"
item_state = "taj_commoncloak"
var/fire_resist = T0C+100
- allowed = list(/obj/item/tank/emergency/oxygen)
armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index 482f6a7e5b4..da9bb6683f8 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -11,6 +11,7 @@
permeability_coefficient = 0.01
siemens_coefficient = 0.9
armor_type = /datum/armor/mask/gas
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
worth_intrinsic = 50
var/gas_filter_strength = 1 //For gas mask filters
var/list/filtered_gases = list(GAS_ID_PHORON, GAS_ID_NITROUS_OXIDE)
diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm
index eebf3ae4f7f..4789b487e84 100644
--- a/code/modules/clothing/spacesuits/alien.dm
+++ b/code/modules/clothing/spacesuits/alien.dm
@@ -15,7 +15,6 @@
name = "Skrellian voidsuit"
desc = "Seems like a wetsuit with reinforced plating seamlessly attached to it. Very chic."
armor_type = /datum/armor/skrell/space/light
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd)
heat_protection_cover = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -31,7 +30,6 @@
w_class = WEIGHT_CLASS_NORMAL
atom_flags = PHORONGUARD
clothing_flags = CLOTHING_THICK_MATERIAL | CLOTHING_INJECTION_PORT
- allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs,/obj/item/tank)
armor_type = /datum/armor/vox/space/armored
siemens_coefficient = 0.2
heat_protection_cover = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 67b5238c0c8..3af4dc4c204 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -24,7 +24,6 @@
permeability_coefficient = 0.02
clothing_flags = 0
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy, /obj/item/gun/projectile/ballistic, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/melee/baton,/obj/item/handcuffs)
encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT
weight = ITEM_WEIGHT_VOIDSUIT
armor_type = /datum/armor/station/tactical
@@ -72,7 +71,6 @@
weight = ITEM_WEIGHT_BASELINE
encumbrance = ITEM_ENCUMBRANCE_BASELINE
clothing_flags = NONE
- allowed = list(/obj/item) //for stuffing exta special presents
//Space pirate outfit
/obj/item/clothing/head/helmet/space/pirate
@@ -92,7 +90,6 @@
desc = "Yarr."
icon_state = "pirate"
w_class = WEIGHT_CLASS_NORMAL
- allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/tank/emergency/oxygen)
weight = ITEM_WEIGHT_BASELINE
encumbrance = ITEM_ENCUMBRANCE_BASELINE
armor_type = /datum/armor/pirate/medium
diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm
index 10c8c3a598f..12ae5cd61e9 100644
--- a/code/modules/clothing/spacesuits/spacesuits.dm
+++ b/code/modules/clothing/spacesuits/spacesuits.dm
@@ -74,7 +74,6 @@
atom_flags = PHORONGUARD
clothing_flags = CLOTHING_THICK_MATERIAL | CLOTHING_INJECTION_PORT | CLOTHING_INJECTION_PORT
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/flashlight,/obj/item/tank/emergency/oxygen,/obj/item/suit_cooling_unit)
armor_type = /datum/armor/general/space
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
cold_protection_cover = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
@@ -87,6 +86,7 @@
valid_accessory_slots = (ACCESSORY_SLOT_OVER | ACCESSORY_SLOT_ARMBAND | ACCESSORY_SLOT_DECOR)
weight = ITEM_WEIGHT_SOFTSUIT
encumbrance = ITEM_ENCUMBRANCE_SOFTSUIT
+ suit_storage_class_allow = SUIT_STORAGE_CLASS_HARDWEAR
var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit.
/obj/item/clothing/suit/space/equipped(mob/M, slot, accessory, silent, creation)
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index bff8ebb93ee..1f55cbde5c4 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -11,7 +11,6 @@
icon_state = "syndicate"
desc = "A crimson spacesuit sporting clean lines and durable plating. Robust, reliable, and slightly suspicious."
w_class = WEIGHT_CLASS_NORMAL
- allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs,/obj/item/tank/emergency/oxygen)
armor_type = /datum/armor/agent/space
siemens_coefficient = 0.6
diff --git a/code/modules/clothing/spacesuits/void/event.dm b/code/modules/clothing/spacesuits/void/event.dm
index 7dfd4866dd8..a98c01c109b 100644
--- a/code/modules/clothing/spacesuits/void/event.dm
+++ b/code/modules/clothing/spacesuits/void/event.dm
@@ -22,15 +22,6 @@
encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_LIGHT
weight = ITEM_WEIGHT_VOIDSUIT_LIGHT
armor_type = /datum/armor/vintage/space
- allowed = list(/obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/briefcase/inflatable,
- /obj/item/gps,
- /obj/item/radio/beacon,
- /obj/item/pickaxe,
- /obj/item/shovel
- )
//Engineering Crewsuit (ORANGE, RING)
//This is probably the most appealing to get your hands on for basic protection and the specialist stuff
@@ -54,26 +45,6 @@
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 15 * ONE_ATMOSPHERE
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
- allowed = list(/obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/t_scanner,
- /obj/item/rcd,
- /obj/item/rcd_ammo,
- /obj/item/storage/toolbox,
- /obj/item/storage/briefcase/inflatable,
- /obj/item/gps,
- /obj/item/radio/beacon,
- /obj/item/robotanalyzer,
- /obj/item/geiger_counter,
- /obj/item/tool,
- /obj/item/weldingtool,
- /obj/item/cell,
- /obj/item/pickaxe,
- /obj/item/measuring_tape,
- /obj/item/lightreplacer,
- /obj/item/shovel
- )
//Medical Crewsuit (GREEN, CROSS)
//This thing is basically tissuepaper, but it has very solid rad protection for its age
@@ -96,19 +67,6 @@
icon_state = "rig-vintagemedic"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
armor_type = /datum/armor/vintage/space/med
- allowed = list(/obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/firstaid,
- /obj/item/healthanalyzer,
- /obj/item/robotanalyzer,
- /obj/item/mass_spectrometer,
- /obj/item/geiger_counter,
- /obj/item/stack/medical,
- /obj/item/gps,
- /obj/item/radio/beacon,
- /obj/item/cell
- )
//Marine Crewsuit (BLUE, SHIELD)
//Really solid, balance between Sec and Sec EVA, but it has slightly worse shock protection
@@ -127,22 +85,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
armor_type = /datum/armor/vintage/space/marine
siemens_coefficient = 0.8
- allowed = list(/obj/item/gun,
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/melee,
- /obj/item/grenade,
- /obj/item/flash,
- /obj/item/gps,
- /obj/item/radio/beacon,
- /obj/item/handcuffs,
- /obj/item/hailer,
- /obj/item/holowarrant,
- /obj/item/megaphone,
- /obj/item/ammo_magazine,
- /obj/item/cell
- )
//Officer Crewsuit (GOLD, X)
//The best of the bunch - at the time, this would have been almost cutting edge
@@ -162,22 +104,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
armor_type = /datum/armor/vintage/space/officer
siemens_coefficient = 0.7
- allowed = list(/obj/item/gun,
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/melee,
- /obj/item/grenade,
- /obj/item/flash,
- /obj/item/gps,
- /obj/item/radio/beacon,
- /obj/item/handcuffs,
- /obj/item/hailer,
- /obj/item/holowarrant,
- /obj/item/megaphone,
- /obj/item/ammo_magazine,
- /obj/item/cell
- )
//Pilot Crewsuit (ROYAL BLUE, I)
//The lightest weight of the lot, but protection is about the same as the crew variant's. It has an extra helmet variant for those who prefer that design.
@@ -202,13 +128,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
armor_type = /datum/armor/vintage/space/pilot
siemens_coefficient = 0.9
- allowed = list(/obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/briefcase/inflatable,
- /obj/item/gps,
- /obj/item/radio/beacon,
- )
//Scientist Crewsuit (PURPLE, O)
//Baseline values are slightly worse than the gray crewsuit, but it has significantly better Energy protection and is the only other suit with 100% rad immunity besides the engi suit
@@ -232,28 +151,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuitTG", SLOT_ID_LEFT_HAND = "sec_voidsuitTG")
armor_type = /datum/armor/vintage/space/science
siemens_coefficient = 0.8
- allowed = list(/obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/firstaid,
- /obj/item/healthanalyzer,
- /obj/item/gps,
- /obj/item/radio/beacon,
- /obj/item/ano_scanner,
- /obj/item/depth_scanner,
- /obj/item/xenoarch_multi_tool,
- /obj/item/measuring_tape,
- /obj/item/reagent_scanner,
- /obj/item/robotanalyzer,
- /obj/item/atmos_analyzer,
- /obj/item/cataloguer,
- /obj/item/universal_translator,
- /obj/item/tool/crowbar,
- /obj/item/stack/marker_beacon,
- /obj/item/stack/flag,
- /obj/item/clipboard,
- /obj/item/cell
- )
//Mercenary Crewsuit (RED, CROSS)
//The best of the best, this should be ultra-rare
@@ -276,23 +173,3 @@
weight = ITEM_WEIGHT_VOIDSUIT_HEAVY
armor_type = /datum/armor/vintage/space/merc
siemens_coefficient = 0.6
- allowed = list(/obj/item/gun,
- /obj/item/flashlight,
- /obj/item/tank,
-
- /obj/item/suit_cooling_unit,
- /obj/item/melee,
- /obj/item/grenade,
- /obj/item/flash,
- /obj/item/gps,
- /obj/item/radio/beacon,
- /obj/item/handcuffs,
- /obj/item/hailer,
- /obj/item/holowarrant,
- /obj/item/megaphone,
- /obj/item/ammo_magazine,
- /obj/item/spaceflare,
- /obj/item/powersink,
- /obj/item/radio_jammer,
- /obj/item/cell
- )
diff --git a/code/modules/clothing/spacesuits/void/merc.dm b/code/modules/clothing/spacesuits/void/merc.dm
index b9252aa9e2f..72733eb4e7b 100644
--- a/code/modules/clothing/spacesuits/void/merc.dm
+++ b/code/modules/clothing/spacesuits/void/merc.dm
@@ -20,7 +20,6 @@
weight = ITEM_WEIGHT_VOIDSUIT
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/merc/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
/obj/item/clothing/head/helmet/space/void/merc/fire
@@ -38,7 +37,6 @@
desc = "A blackened suit that has had many of its protective plates coated in or replaced with high-grade thermal insulation, to protect against incineration. Property of Gorlex Marauders."
armor_type = /datum/armor/merc/space/ghostrider
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs,/obj/item/material/twohanded/fireaxe,/obj/item/flamethrower)
siemens_coefficient = 0.7
//Soviet Void Suit
@@ -91,7 +89,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_voidsuit", SLOT_ID_LEFT_HAND = "syndie_voidsuit")
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/merc/space/clown
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
//Four below avalible through cargo
@@ -111,7 +108,6 @@
desc = "One of the few combat-grade suits avalible in the frontier, and the poster-child of Hephaestus Industries. Comes equipped with a wrist-bound oxygen timer."
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/station/secsuit
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
helmet_type = /obj/item/clothing/head/helmet/space/void/odst
@@ -131,7 +127,6 @@
desc = "A standard Icarus line suit that has been repourposed to protect from heavier biohazards."
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/exploration/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
helmet_type = /obj/item/clothing/head/helmet/space/void/odst_med
@@ -151,7 +146,6 @@
desc = "Favoured suit of deep-space engineers, comfortable and comparable to suits avalible to Nanotrasen Engineers. Comes equipped with a wrist-bound oxygen timer."
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/engineering/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
helmet_type = /obj/item/clothing/head/helmet/space/void/odst_eng
@@ -171,7 +165,6 @@
desc = "Cheaper version of the main Icarus line, often marketed to Frontier settlements. Perfect for Expeditions."
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/exploration/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
helmet_type = /obj/item/clothing/head/helmet/space/void/odst_exp
@@ -195,7 +188,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_voidsuit", SLOT_ID_LEFT_HAND = "syndie_voidsuit")
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/merc/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
helmet_type = /obj/item/clothing/head/helmet/space/void/odst_necro
@@ -207,6 +199,5 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "syndie_voidsuit", SLOT_ID_LEFT_HAND = "syndie_voidsuit")
w_class = WEIGHT_CLASS_NORMAL
armor_type = /datum/armor/merc/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/transforming/energy/sword,/obj/item/handcuffs)
siemens_coefficient = 0.6
species_restricted = null
diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm
index 012172bcb56..5085afb57fe 100644
--- a/code/modules/clothing/spacesuits/void/station.dm
+++ b/code/modules/clothing/spacesuits/void/station.dm
@@ -29,7 +29,6 @@
icon_state = "para_ert_void"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuit", SLOT_ID_LEFT_HAND = "sec_voidsuit")
armor_type = /datum/armor/centcom/ert/paracausal
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton,/obj/item/ammo_magazine,/obj/item/nullrod)
siemens_coefficient = 0.7
var/anti_magic = TRUE
diff --git a/code/modules/clothing/spacesuits/void/station/command.dm b/code/modules/clothing/spacesuits/void/station/command.dm
index 07b675f7f2e..4f21a44d6a2 100644
--- a/code/modules/clothing/spacesuits/void/station/command.dm
+++ b/code/modules/clothing/spacesuits/void/station/command.dm
@@ -9,5 +9,4 @@
name = "Facility Director voidsuit"
icon_state = "capsuit_void"
armor_type = /datum/armor/station/tactical
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun)
helmet_type = /obj/item/clothing/head/helmet/space/void/captain
diff --git a/code/modules/clothing/spacesuits/void/station/engineering.dm b/code/modules/clothing/spacesuits/void/station/engineering.dm
index 82c1fc2900c..4f995b1e1f6 100644
--- a/code/modules/clothing/spacesuits/void/station/engineering.dm
+++ b/code/modules/clothing/spacesuits/void/station/engineering.dm
@@ -14,7 +14,6 @@
icon_state = "rig-engineering"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "eng_voidsuit", SLOT_ID_LEFT_HAND = "eng_voidsuit")
armor_type = /datum/armor/engineering/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/bag/ore,/obj/item/t_scanner,/obj/item/pickaxe, /obj/item/rcd)
min_pressure_protection = 0 * ONE_ATMOSPHERE
max_pressure_protection = 15 * ONE_ATMOSPHERE
helmet_type = /obj/item/clothing/head/helmet/space/void/engineering
@@ -75,7 +74,6 @@
desc = "A hand-me-down salvage voidsuit. It has obviously had a lot of repair work done to its radiation shielding."
icon_state = "rig-engineeringsav"
armor_type = /datum/armor/engineering/space/salvage
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable,/obj/item/t_scanner,/obj/item/rcd)
helmet_type = /obj/item/clothing/head/helmet/space/void/engineering/salvage
//Atmospherics
diff --git a/code/modules/clothing/spacesuits/void/station/exploration.dm b/code/modules/clothing/spacesuits/void/station/exploration.dm
index 56f9f9434c1..da017436ac0 100644
--- a/code/modules/clothing/spacesuits/void/station/exploration.dm
+++ b/code/modules/clothing/spacesuits/void/station/exploration.dm
@@ -15,8 +15,6 @@
icon_state = "void_explorer"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_black", SLOT_ID_LEFT_HAND = "skrell_suit_black")
armor_type = /datum/armor/exploration/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/stack/flag,/obj/item/healthanalyzer,/obj/item/gps,/obj/item/radio/beacon, \
- /obj/item/shovel,/obj/item/ammo_magazine,/obj/item/gun)
helmet_type = /obj/item/clothing/head/helmet/space/void/exploration
worth_intrinsic = 300
@@ -63,7 +61,5 @@
icon_state = "void_explorer_pf"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "skrell_suit_black", SLOT_ID_LEFT_HAND = "skrell_suit_black")
armor_type = /datum/armor/exploration/space/pathfinder
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/stack/flag,/obj/item/healthanalyzer,/obj/item/gps,/obj/item/radio/beacon, \
- /obj/item/shovel,/obj/item/ammo_magazine,/obj/item/gun)
helmet_type = /obj/item/clothing/head/helmet/space/void/exploration/pathfinder
worth_intrinsic = 400
diff --git a/code/modules/clothing/spacesuits/void/station/medical.dm b/code/modules/clothing/spacesuits/void/station/medical.dm
index 3edc945fc76..40ed492b855 100644
--- a/code/modules/clothing/spacesuits/void/station/medical.dm
+++ b/code/modules/clothing/spacesuits/void/station/medical.dm
@@ -11,7 +11,6 @@
desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
icon_state = "rig-medical"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "medical_voidsuit", SLOT_ID_LEFT_HAND = "medical_voidsuit")
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/firstaid,/obj/item/healthanalyzer,/obj/item/stack/medical)
armor_type = /datum/armor/medical/space
helmet_type = /obj/item/clothing/head/helmet/space/void/medical
worth_intrinsic = 375
diff --git a/code/modules/clothing/spacesuits/void/station/operations.dm b/code/modules/clothing/spacesuits/void/station/operations.dm
index 3cf3ac67ded..3771ba23842 100644
--- a/code/modules/clothing/spacesuits/void/station/operations.dm
+++ b/code/modules/clothing/spacesuits/void/station/operations.dm
@@ -18,7 +18,6 @@
name = "pilot voidsuit"
armor_type = /datum/armor/exploration/space/pilot
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/storage/toolbox,/obj/item/storage/briefcase/inflatable)
helmet_type = /obj/item/clothing/head/helmet/space/void/pilot
worth_intrinsic = 450 // literally an atmos suit
diff --git a/code/modules/clothing/spacesuits/void/station/science.dm b/code/modules/clothing/spacesuits/void/station/science.dm
index 48947839de4..c62b2d30706 100644
--- a/code/modules/clothing/spacesuits/void/station/science.dm
+++ b/code/modules/clothing/spacesuits/void/station/science.dm
@@ -17,7 +17,6 @@
icon_state = "phase"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuit", SLOT_ID_LEFT_HAND = "sec_voidsuit")
armor_type = /datum/armor/science/phase
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton)
siemens_coefficient = 0.7
max_heat_protection_temperature = 10000
min_pressure_protection = 0 * ONE_ATMOSPHERE
diff --git a/code/modules/clothing/spacesuits/void/station/security.dm b/code/modules/clothing/spacesuits/void/station/security.dm
index eb29b32a6aa..45f7979a039 100644
--- a/code/modules/clothing/spacesuits/void/station/security.dm
+++ b/code/modules/clothing/spacesuits/void/station/security.dm
@@ -15,7 +15,6 @@
icon_state = "rig-sec"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "sec_voidsuit", SLOT_ID_LEFT_HAND = "sec_voidsuit")
armor_type = /datum/armor/station/secsuit
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton)
siemens_coefficient = 0.7
helmet_type = /obj/item/clothing/head/helmet/space/void/security
worth_intrinsic = 450
@@ -43,5 +42,4 @@
name = "riot security voidsuit"
desc = "A heavily armored voidsuit, designed to intimidate people who find black intimidating. Surprisingly slimming."
armor_type = /datum/armor/station/secsuitriot
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton)
helmet_type = /obj/item/clothing/head/helmet/space/void/security/alt
diff --git a/code/modules/clothing/spacesuits/void/station/supply.dm b/code/modules/clothing/spacesuits/void/station/supply.dm
index 64b5eda80bd..b91746a6a35 100644
--- a/code/modules/clothing/spacesuits/void/station/supply.dm
+++ b/code/modules/clothing/spacesuits/void/station/supply.dm
@@ -12,7 +12,6 @@
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
icon_state = "rig-mining"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "mining_voidsuit", SLOT_ID_LEFT_HAND = "mining_voidsuit")
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/pickaxe)
armor_type = /datum/armor/cargo/mining/space
helmet_type = /obj/item/clothing/head/helmet/space/void/mining
worth_intrinsic = 250
@@ -46,7 +45,6 @@
name = "head of security protosuit"
icon_state = "hosproto_void"
armor_type = /datum/armor/security/hos/space
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/gun)
encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_HEAVY
weight = ITEM_WEIGHT_VOIDSUIT_HEAVY
helmet_type = /obj/item/clothing/head/helmet/space/void/headofsecurity
diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm
index 27bc9342d37..1b738d9d6a3 100644
--- a/code/modules/clothing/spacesuits/void/void.dm
+++ b/code/modules/clothing/spacesuits/void/void.dm
@@ -42,7 +42,6 @@
encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT
weight = ITEM_WEIGHT_VOIDSUIT
armor_type = /datum/armor/general/space/armored
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit)
heat_protection_cover = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
min_pressure_protection = 0 * ONE_ATMOSPHERE
diff --git a/code/modules/clothing/spacesuits/void/zaddat.dm b/code/modules/clothing/spacesuits/void/zaddat.dm
index 43c593ae476..a0378732dc3 100644
--- a/code/modules/clothing/spacesuits/void/zaddat.dm
+++ b/code/modules/clothing/spacesuits/void/zaddat.dm
@@ -13,7 +13,6 @@
desc = "A Hegemony environment suit, still favored by the Spacer Zaddat because of its durability and ease of manufacture."
armor_type = /datum/armor/zaddat
siemens_coefficient = 1
- allowed = list(/obj/item/flashlight,/obj/item/tank)
icon_state = "zaddat_hegemony"
helmet = new/obj/item/clothing/head/helmet/space/void/zaddat //shrouds come with helmets built-in
var/has_been_customized = FALSE
diff --git a/code/modules/clothing/suits/_suit.dm b/code/modules/clothing/suits/_suit.dm
index 9bd314644ef..b63645b366f 100644
--- a/code/modules/clothing/suits/_suit.dm
+++ b/code/modules/clothing/suits/_suit.dm
@@ -5,7 +5,6 @@
name = "suit"
var/fire_resist = T0C+100
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
- allowed = list(/obj/item/tank/emergency/oxygen)
armor_type = /datum/armor/none
slot_flags = SLOT_OCLOTHING
var/blood_overlay_type = "suit"
diff --git a/code/modules/clothing/suits/aliens/tajara.dm b/code/modules/clothing/suits/aliens/tajara.dm
index 82e5dea020c..1af1396ae00 100644
--- a/code/modules/clothing/suits/aliens/tajara.dm
+++ b/code/modules/clothing/suits/aliens/tajara.dm
@@ -26,7 +26,7 @@
icon_state = "amohdan_armor"
item_state = "amohdan_armor"
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- allowed = list(/obj/item/gun,/obj/item/material/sword)
+ suit_storage_class_allow = SUIT_STORAGE_CLASS_HARDWEAR
inv_hide_flags = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
armor_type = /datum/armor/general/medieval
weight = ITEM_WEIGHT_TAJARAN_SWORDSMAN_ARMOR
@@ -43,7 +43,6 @@
blood_overlay_type = "coat"
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
- allowed = list(/obj/item/atmos_analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/healthanalyzer,/obj/item/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle,/obj/item/paper)
armor_type = /datum/armor/suit/labcoat
/obj/item/clothing/suit/storage/toggle/tajaran/coat/wool
diff --git a/code/modules/clothing/suits/aliens/teshari.dm b/code/modules/clothing/suits/aliens/teshari.dm
index cbbfa418e61..2930e0ec602 100644
--- a/code/modules/clothing/suits/aliens/teshari.dm
+++ b/code/modules/clothing/suits/aliens/teshari.dm
@@ -326,8 +326,6 @@
armor_type = /datum/armor/teshari/hood_cloak
item_action_name = "Toggle Cloak Hood"
hoodtype = /obj/item/clothing/head/tesh_hood
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit)
-
/obj/item/clothing/head/tesh_hood
name = "Cloak Hood"
diff --git a/code/modules/clothing/suits/aliens/vox.dm b/code/modules/clothing/suits/aliens/vox.dm
index ba573981770..175400381aa 100644
--- a/code/modules/clothing/suits/aliens/vox.dm
+++ b/code/modules/clothing/suits/aliens/vox.dm
@@ -1,7 +1,6 @@
/obj/item/clothing/suit/armor/vox_scrap
name = "rusted metal armor"
desc = "A hodgepodge of various pieces of metal scrapped together into a rudimentary vox-shaped piece of armor."
- allowed = list(/obj/item/gun, /obj/item/tank)
armor_type = /datum/armor/vox/scrap
icon_state = "vox-scrap"
icon_state = "vox-scrap"
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 65928db4b75..a96f7388bb7 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -1,5 +1,4 @@
/obj/item/clothing/suit/armor
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/gun/projectile/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/flashlight/maglight,/obj/item/clothing/head/helmet)
body_cover_flags = UPPER_TORSO|LOWER_TORSO
clothing_flags = CLOTHING_THICK_MATERIAL | CLOTHING_INJECTION_PORT
valid_accessory_slots = (\
@@ -12,6 +11,7 @@
heat_protection_cover = UPPER_TORSO|LOWER_TORSO
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE
siemens_coefficient = 0.7
+ suit_storage_class_allow = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_ARMOR
/obj/item/clothing/suit/armor/can_equip(mob/M, slot, mob/user, flags)
. = ..()
@@ -111,7 +111,6 @@
permeability_coefficient = 0.01
clothing_flags = CLOTHING_THICK_MATERIAL | CLOTHING_INJECTION_PORT
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
- allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/tank/emergency/oxygen,/obj/item/clothing/head/helmet)
encumbrance = ITEM_ENCUMBRANCE_ARMOR_HEAVY + ITEM_ENCUMBRANCE_ARMOR_HEAVY_BOOTS + ITEM_ENCUMBRANCE_ARMOR_HEAVY_GLOVES
weight = ITEM_WEIGHT_ARMOR_HEAVY + ITEM_WEIGHT_ARMOR_HEAVY_BOOTS + ITEM_WEIGHT_ARMOR_HEAVY_GLOVES
w_class = WEIGHT_CLASS_HUGE
@@ -289,7 +288,6 @@
icon_state = "webvest"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
armor_type = /datum/armor/station/light
- allowed = list(/obj/item/gun,/obj/item/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/flashlight/maglight,/obj/item/clothing/head/helmet)
body_cover_flags = UPPER_TORSO|LOWER_TORSO
clothing_flags = CLOTHING_THICK_MATERIAL | CLOTHING_INJECTION_PORT
@@ -435,7 +433,6 @@
icon_state = "pvest"
desc = "A simple kevlar vest. This one has the word 'Press' embroidered on patches on the back and front."
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
- allowed = list(/obj/item/flashlight,/obj/item/tape_recorder,/obj/item/pen,/obj/item/camera_film,/obj/item/camera,/obj/item/clothing/head/helmet)
/obj/item/clothing/suit/storage/vest/heavy
name = "heavy armor vest"
@@ -544,7 +541,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "armor", SLOT_ID_LEFT_HAND = "armor")
w_class = WEIGHT_CLASS_BULKY//bulky item
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/gun/projectile/energy,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/tank/emergency/oxygen,/obj/item/clothing/head/helmet)
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
cold_protection_cover = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
@@ -896,7 +892,6 @@
icon = 'icons/clothing/suit/ashlander.dmi'
icon_state = "lamellar"
armor_type = /datum/armor/lavaland/ashlander
- allowed = list(/obj/item/clothing/head/helmet/ashlander, /obj/item/melee, /obj/item/gun/projectile/ballistic)
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
/obj/item/clothing/suit/armor/ashlander/xeno
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index fbf0309fa00..4bcb8a2cdd3 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -21,7 +21,6 @@
permeability_coefficient = 0.01
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET
weight = ITEM_WEIGHT_ARMOR_BIORAD_SUIT
- allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/pen,/obj/item/flashlight/pen)
armor_type = /datum/armor/general/biosuit
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0.9
@@ -115,7 +114,6 @@
permeability_coefficient = 0.01
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET
weight = ITEM_WEIGHT_ARMOR_BIORAD_SUIT
- allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/pen,/obj/item/flashlight/pen)
armor_type = /datum/armor/general/beekeeper
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0.9
diff --git a/code/modules/clothing/suits/hooded.dm b/code/modules/clothing/suits/hooded.dm
index 9c6c3dfb1fa..8dba21d720b 100644
--- a/code/modules/clothing/suits/hooded.dm
+++ b/code/modules/clothing/suits/hooded.dm
@@ -8,8 +8,6 @@
var/hood_up = FALSE
var/toggleicon
item_action_name = "Toggle Hood"
- allowed = list (/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches,
- /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit)
/obj/item/clothing/suit/storage/hooded/Initialize(mapload)
. = ..()
@@ -135,8 +133,6 @@
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
armor_type = /datum/armor/civilian/coat
hoodtype = /obj/item/clothing/head/hood/winter
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit)
/obj/item/clothing/suit/storage/hooded/wintercoat/centcom
name = "centcom winter coat"
@@ -157,10 +153,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatcaptain", SLOT_ID_LEFT_HAND = "coatcaptain")
armor_type = /datum/armor/security/light_formalwear
hoodtype = /obj/item/clothing/head/hood/winter/captain
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/gun/projectile/energy,
- /obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,
- /obj/item/handcuffs,/obj/item/clothing/head/helmet)
/obj/item/clothing/suit/storage/hooded/wintercoat/captain/hop
name = "head of personnel's winter coat"
@@ -176,10 +168,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatsecurity", SLOT_ID_LEFT_HAND = "coatsecurity")
armor_type = /datum/armor/security/light_formalwear
hoodtype = /obj/item/clothing/head/hood/winter/security
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/gun/projectile/energy,
- /obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,
- /obj/item/handcuffs,/obj/item/clothing/head/helmet)
/obj/item/clothing/suit/storage/hooded/wintercoat/security/hos
name = "head of security's winter coat"
@@ -195,11 +183,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatmedical", SLOT_ID_LEFT_HAND = "coatmedical")
armor_type = /datum/armor/medical/coat
hoodtype = /obj/item/clothing/head/hood/winter/medical
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/atmos_analyzer,/obj/item/stack/medical,
- /obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,
- /obj/item/healthanalyzer,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,
- /obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle)
/obj/item/clothing/suit/storage/hooded/wintercoat/medical/genetics
name = "genetics winter coat"
@@ -238,11 +221,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatscience", SLOT_ID_LEFT_HAND = "coatscience")
armor_type = /datum/armor/science/coat
hoodtype = /obj/item/clothing/head/hood/winter/science
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/atmos_analyzer,/obj/item/stack/medical,
- /obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,
- /obj/item/healthanalyzer,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,
- /obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle)
/obj/item/clothing/suit/storage/hooded/wintercoat/science/robotics
name = "robotics winter coat"
@@ -263,11 +241,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatengineer", SLOT_ID_LEFT_HAND = "coatengineer")
armor_type = /datum/armor/engineering/coat
hoodtype = /obj/item/clothing/head/hood/winter/engineering
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/atmos_analyzer, /obj/item/flashlight,
- /obj/item/multitool, /obj/item/pipe_painter, /obj/item/radio, /obj/item/t_scanner, /obj/item/tool/crowbar, /obj/item/tool/screwdriver,
- /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/tank/emergency/oxygen, /obj/item/clothing/mask/gas,
- /obj/item/barrier_tape_roll/engineering, /obj/item/rcd, /obj/item/pipe_dispenser)
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos
name = "atmospherics winter coat"
@@ -288,9 +261,6 @@
icon_state = "coathydro"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coathydro", SLOT_ID_LEFT_HAND = "coathydro")
hoodtype = /obj/item/clothing/head/hood/winter/hydro
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/reagent_containers/spray/plantbgone,
- /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/material/minihoe)
/obj/item/clothing/suit/storage/hooded/wintercoat/cargo
name = "cargo winter coat"
@@ -306,8 +276,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "coatminer", SLOT_ID_LEFT_HAND = "coatminer")
armor_type = /datum/armor/cargo/mining/coat
hoodtype = /obj/item/clothing/head/hood/winter/miner
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches,
- /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/tank, /obj/item/radio, /obj/item/pickaxe, /obj/item/storage/bag/ore)
/obj/item/clothing/suit/storage/hooded/wintercoat/bar
name = "bartender winter coat"
@@ -437,17 +405,6 @@
hoodtype = /obj/item/clothing/head/hood/explorer
siemens_coefficient = 0.9
armor_type = /datum/armor/exploration/soft
- allowed = list(
- /obj/item/flashlight,
- /obj/item/gun,
- /obj/item/ammo_magazine,
- /obj/item/melee,
- /obj/item/material/knife,
- /obj/item/tank,
- /obj/item/radio,
- /obj/item/pickaxe,
- /obj/item/gun/projectile/ballistic/sec/flash
- )
/obj/item/clothing/suit/storage/hooded/miner
name = "mining suit"
@@ -463,19 +420,6 @@
hoodtype = /obj/item/clothing/head/hood/miner
siemens_coefficient = 0.9
armor_type = /datum/armor/cargo/mining/soft
- allowed = list(
- /obj/item/flashlight,
- /obj/item/material/knife,
- /obj/item/tank,
- /obj/item/radio,
- /obj/item/suit_cooling_unit,
- /obj/item/pickaxe,
- /obj/item/gun/projectile/energy/kinetic_accelerator,
- /obj/item/kinetic_crusher,
- /obj/item/resonator,
- /obj/item/gun/projectile/energy/gun/miningcarbine,
- /obj/item/gun/projectile/magnetic/matfed
- )
// Eldritch suit
/obj/item/clothing/suit/storage/hooded/eldritch
@@ -491,8 +435,6 @@
hoodtype = /obj/item/clothing/head/hood/eldritch
armor_type = /datum/armor/lavaland/eldritch
siemens_coefficient = 0.9
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/material/knife)
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
/obj/item/clothing/suit/storage/hooded/cloak/goliath
@@ -500,11 +442,6 @@
desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits."
icon_state = "goliath_cloak"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "brown_jacket", SLOT_ID_LEFT_HAND = "brown_jacket")
- allowed = list(
- /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/pickaxe, /obj/item/material/twohanded/spear, /obj/item/material/twohanded/spear/bone,
- /obj/item/material/knife/tacknife/combatknife/bone, /obj/item/material/knife/tacknife/survival/bone, /obj/item/material/knife/tacknife/survival/bone, /obj/item/melee/ashlander,
- /obj/item/gun/projectile/ballistic/musket/pistol
- )
armor_type = /datum/armor/lavaland/goliath
hoodtype = /obj/item/clothing/head/hood/goliath
body_cover_flags = UPPER_TORSO|ARMS|LEGS
@@ -514,7 +451,6 @@
name = "drake armour"
icon_state = "dragon"
desc = "A suit of armour fashioned from the remains of an ash drake."
- allowed = list(/obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/mining_scanner/advanced, /obj/item/gun/projectile/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/material/twohanded/spear)
armor_type = /datum/armor/lavaland/drake
hoodtype = /obj/item/clothing/head/hood/drake
heat_protection_cover = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
@@ -531,8 +467,6 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO
inv_hide_flags = HIDEHOLSTER
hoodtype = /obj/item/clothing/head/hood/vainglorious
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit)
/obj/item/clothing/suit/storage/hooded/raincoat
name = "raincoat"
@@ -542,8 +476,6 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO
inv_hide_flags = HIDEHOLSTER
hoodtype = /obj/item/clothing/head/hood/raincoat
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/melee/umbrella)
/obj/item/clothing/suit/storage/hooded/rainponcho
name = "plastic raincoat"
@@ -552,8 +484,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "wcoat", SLOT_ID_LEFT_HAND = "wcoat")
body_cover_flags = UPPER_TORSO|LOWER_TORSO
hoodtype = /obj/item/clothing/head/hood/rainponcho
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/melee/umbrella)
/obj/item/clothing/suit/storage/hooded/mercy
name = "Mercy Robe"
@@ -593,10 +523,11 @@
|ACCESSORY_SLOT_ARMOR_M
)
blood_overlay_type = "armor"
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/gun/projectile/energy,
- /obj/item/gun/projectile/ballistic, /obj/item/ammo_magazine, /obj/item/melee/baton)
- starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/heavy, /obj/item/clothing/accessory/storage/pouches)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
+ starting_accessories = list(
+ /obj/item/clothing/accessory/armor/armorplate/heavy,
+ /obj/item/clothing/accessory/storage/pouches,
+ )
/obj/item/clothing/suit/storage/hooded/covertcarrier/can_equip(mob/M, slot, mob/user, flags)
. = ..()
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index ba6008e581f..04df8a93f18 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -10,8 +10,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "overalls", SLOT_ID_LEFT_HAND = "overalls")
blood_overlay_type = "armor"
body_cover_flags = 0
- allowed = list (/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds,
- /obj/item/reagent_containers/glass/bottle, /obj/item/material/minihoe)
/obj/item/clothing/suit/storage/apron/white
name = "white apron"
@@ -43,7 +41,6 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
inv_hide_flags = HIDEHOLSTER
hoodtype = /obj/item/clothing/head/chaplain_hood
- allowed = list (/obj/item/storage/bible)
//Chaplain but spookier
/obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout
@@ -71,7 +68,6 @@
permeability_coefficient = 0.50
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS
inv_hide_flags = HIDETIE|HIDEHOLSTER
- allowed = list (/obj/item/material/knife)
//Chef
/obj/item/clothing/suit/chef/classic
@@ -115,9 +111,6 @@
blood_overlay_type = "coat"
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight, /obj/item/gun/projectile/energy, /obj/item/gun/projectile/ballistic, /obj/item/ammo_magazine,
- /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/handcuffs, /obj/item/storage/fancy/cigarettes, /obj/item/flame/lighter,
- /obj/item/tape_recorder, /obj/item/uv_light)
armor_type = /datum/armor/station/light
/obj/item/clothing/suit/storage/det_trench/grey
@@ -132,9 +125,6 @@
desc = "A forensics technician jacket."
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight, /obj/item/gun/projectile/energy, /obj/item/gun/projectile/ballistic, /obj/item/ammo_magazine,
- /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/handcuffs, /obj/item/storage/fancy/cigarettes, /obj/item/flame/lighter,
- /obj/item/tape_recorder, /obj/item/uv_light)
armor_type = /datum/armor/station/light
/obj/item/clothing/suit/storage/forensics/red
@@ -165,9 +155,6 @@
icon_state = "agent_jacket"
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight, /obj/item/gun/projectile/energy, /obj/item/gun/projectile/ballistic, /obj/item/ammo_magazine,
- /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/handcuffs, /obj/item/storage/fancy/cigarettes, /obj/item/flame/lighter,
- /obj/item/tape_recorder, /obj/item/uv_light)
armor_type = /datum/armor/station/light
//Engineering
@@ -176,9 +163,6 @@
desc = "A high-visibility vest used in work zones."
icon_state = "hazard"
blood_overlay_type = "armor"
- allowed = list (/obj/item/atmos_analyzer, /obj/item/flashlight, /obj/item/multitool, /obj/item/pipe_painter, /obj/item/radio, /obj/item/t_scanner,
- /obj/item/tool/crowbar, /obj/item/tool/screwdriver, /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/tank/emergency/oxygen,
- /obj/item/clothing/mask/gas, /obj/item/barrier_tape_roll/engineering)
body_cover_flags = UPPER_TORSO
worth_intrinsic = 50
@@ -215,8 +199,6 @@
icon_state = "fr_jacket"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "fr_jacket", SLOT_ID_LEFT_HAND = "fr_jacket")
blood_overlay_type = "armor"
- allowed = list(/obj/item/stack/medical, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/syringe,
- /obj/item/healthanalyzer, /obj/item/flashlight, /obj/item/radio, /obj/item/tank/emergency/oxygen)
body_cover_flags = UPPER_TORSO|ARMS
/obj/item/clothing/suit/storage/toggle/fr_jacket/ems
@@ -237,9 +219,6 @@
icon_state = "surgical"
blood_overlay_type = "armor"
body_cover_flags = UPPER_TORSO|LOWER_TORSO
- allowed = list(/obj/item/stack/medical, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/syringe, \
- /obj/item/healthanalyzer, /obj/item/flashlight, /obj/item/radio, /obj/item/tank/emergency/oxygen,/obj/item/surgical/scalpel,/obj/item/surgical/retractor,/obj/item/surgical/hemostat, \
- /obj/item/surgical/cautery,/obj/item/surgical/bonegel,/obj/item/surgical/FixOVein)
/obj/item/clothing/suit/toggle/labcoat/paramedic
name = "paramedic vest"
@@ -285,8 +264,3 @@
icon = 'icons/map_assets/southern_cross/obj/sc_suits.dmi'
armor_type = /datum/armor/medical/coat/field_medic
valid_accessory_slots = (ACCESSORY_SLOT_INSIGNIA)
- allowed = list (/obj/item/gun,/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/atmos_analyzer,/obj/item/stack/medical,
- /obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,
- /obj/item/healthanalyzer,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,
- /obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle)
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index cea375c84c2..2361ff501da 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -7,7 +7,6 @@
blood_overlay_type = "coat"
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
- allowed = list(/obj/item/atmos_analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/healthanalyzer,/obj/item/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle,/obj/item/paper)
armor_type = /datum/armor/suit/labcoat
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 501c0988cd6..ab5d644bac3 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -17,7 +17,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "tdblue", SLOT_ID_LEFT_HAND = "tdblue")
blood_overlay_type = "armor"
body_cover_flags = UPPER_TORSO
- allowed = list (/obj/item/gun/projectile/energy/lasertag/blue)
siemens_coefficient = 3.0
/obj/item/clothing/suit/redtag
@@ -27,7 +26,6 @@
item_state_slots = list(SLOT_ID_RIGHT_HAND = "tdred", SLOT_ID_LEFT_HAND = "tdred")
blood_overlay_type = "armor"
body_cover_flags = UPPER_TORSO
- allowed = list (/obj/item/gun/projectile/energy/lasertag/red)
siemens_coefficient = 3.0
/*
@@ -82,7 +80,6 @@
desc = "This robe commands authority."
icon_state = "judge"
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
- allowed = list(/obj/item/storage/fancy/cigarettes,/obj/item/spacecash)
inv_hide_flags = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
/obj/item/clothing/suit/storage/apron/overalls
@@ -97,7 +94,6 @@
icon_state = "syndicate"
desc = "A plastic replica of the syndicate space suit, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
w_class = WEIGHT_CLASS_NORMAL
- allowed = list(/obj/item/flashlight,/obj/item/tank/emergency/oxygen,/obj/item/toy)
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS|HANDS|LEGS|FEET
@@ -527,7 +523,6 @@
name = "leather coat"
desc = "A long, thick black leather coat."
icon_state = "leathercoat_alt"
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
item_state_slots = list(SLOT_ID_RIGHT_HAND = "leather_jacket", SLOT_ID_LEFT_HAND = "leather_jacket")
inv_hide_flags = HIDEHOLSTER
@@ -551,7 +546,6 @@
name = "brown leather coat"
desc = "A long, brown leather coat."
icon_state = "browncoat"
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
item_state_slots = list(SLOT_ID_RIGHT_HAND = "brown_jacket", SLOT_ID_LEFT_HAND = "brown_jacket")
inv_hide_flags = HIDEHOLSTER
@@ -559,7 +553,6 @@
name = "black coat"
desc = "A flowing, black coat."
icon_state = "neocoat"
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
item_state_slots = list(SLOT_ID_RIGHT_HAND = "leather_jacket", SLOT_ID_LEFT_HAND = "leather_jacket")
inv_hide_flags = HIDEHOLSTER
@@ -591,7 +584,6 @@
desc = "A rugged canvas trenchcoat, designed and created by TX Fabrication Corp. The coat appears to have its kevlar lining removed."
icon_state = "detective"
blood_overlay_type = "coat"
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
inv_hide_flags = HIDEHOLSTER
/obj/item/clothing/suit/storage/trench/grey
@@ -613,7 +605,6 @@
desc = "A duster commonly seen on cowboys from Earth's late 1800's."
icon_state = "duster"
blood_overlay_type = "coat"
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter)
inv_hide_flags = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/cardigan
@@ -627,7 +618,6 @@
name = "slim leather coat"
desc = "A tailored, brown leather coat."
icon_state = "slim_leather"
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
item_state_slots = list(SLOT_ID_RIGHT_HAND = "brown_jacket", SLOT_ID_LEFT_HAND = "brown_jacket")
inv_hide_flags = HIDEHOLSTER
@@ -636,7 +626,6 @@
desc = "A sleek black trenchcoat, paired with a stylish red scarf. Worn either by the coolest, or the weirdest."
icon_state = "gothcoat"
blood_overlay_type = "coat"
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
inv_hide_flags = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/navy_coat_blue
@@ -644,7 +633,6 @@
desc = "A coat to show off your mandatory enrollment for those sweet, sweet 5% tax savings and stickers. Who sails a boat nowadays, anyway? This one is blue, which is not what the ocean's color is anymore."
icon_state = "blue_navy_jacket"
blood_overlay_type = "coat"
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
inv_hide_flags = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/navy_coat_brown
@@ -652,7 +640,6 @@
desc = "A coat to show off your mandatory enrollment for those sweet, sweet 5% tax savings and stickers. Who sails a boat nowadays, anyway? This one is brown, which makes you feel like you're back in the rust-colored oceans."
icon_state = "brown_navy_jacket"
blood_overlay_type = "coat"
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
inv_hide_flags = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/navy_coat_green
@@ -660,7 +647,6 @@
desc = "A coat to show off your mandatory enrollment for those sweet, sweet 5% tax savings and stickers. Who sails a boat nowadays, anyway? This one is green, like the 'vegan rations' you were dared to eat. It was actually bottom-deck gunk. It smelled nicer than this coat."
icon_state = "green_navy_jacket"
blood_overlay_type = "coat"
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
inv_hide_flags = HIDEHOLSTER
/obj/item/clothing/suit/storage/stripe_jacket
@@ -668,7 +654,6 @@
desc = "A high collar, a gaudy stripe, clasps that don't actually work. All the ingredients to a fashionable clown! Trust me, they are /definitely/ laughing at your jokes, and not you."
icon_state = "stripe_jacket"
blood_overlay_type = "coat"
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
inv_hide_flags = HIDEHOLSTER
/obj/item/clothing/suit/storage/toggle/brown_fancycoat
@@ -677,7 +662,6 @@
icon = 'icons/clothing/suit/coats/trenchcoat.dmi'
icon_state = "brtrenchcoat"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "brown_jacket", SLOT_ID_LEFT_HAND = "brown_jacket")
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
@@ -692,7 +676,6 @@
icon = 'icons/clothing/suit/jackets/motojacket.dmi'
icon_state = "motojacket"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "leather_jacket", SLOT_ID_LEFT_HAND = "leather_jacket")
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
@@ -703,7 +686,6 @@
icon = 'icons/clothing/suit/jackets/furbomber.dmi'
icon_state = "fur_bomber"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "leather_jacket", SLOT_ID_LEFT_HAND = "leather_jacket")
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
@@ -813,7 +795,6 @@
desc = "A thick, well-worn WW2 leather bomber jacket."
icon_state = "bomber"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "brown_jacket", SLOT_ID_LEFT_HAND = "brown_jacket")
- allowed = list (/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
cold_protection_cover = UPPER_TORSO|ARMS
@@ -835,7 +816,6 @@
name = "leather jacket"
desc = "A black leather coat."
icon_state = "leather_jacket"
- allowed = list (/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
@@ -871,7 +851,6 @@
desc = "A brown leather coat."
icon_state = "brown_jacket"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "brown_jacket", SLOT_ID_LEFT_HAND = "brown_jacket")
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
@@ -899,7 +878,6 @@
desc = "A denim coat."
icon_state = "denim_jacket"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "denim_jacket", SLOT_ID_LEFT_HAND = "denim_jacket")
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
body_cover_flags = UPPER_TORSO|ARMS
inv_hide_flags = HIDEHOLSTER
@@ -1016,7 +994,6 @@
desc = "A favorite of jocks everywhere from Sol to Nyx."
icon = 'icons/clothing/suit/jackets/varsity.dmi'
icon_state = "varsity"
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
item_state_slots = list(SLOT_ID_RIGHT_HAND = "suit_black", SLOT_ID_LEFT_HAND = "suit_black")
inv_hide_flags = HIDETIE|HIDEHOLSTER
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
@@ -1087,7 +1064,6 @@
desc = "A track jacket, for the athletic."
icon_state = "trackjacket"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "black_labcoat", SLOT_ID_LEFT_HAND = "black_labcoat")
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
/obj/item/clothing/suit/storage/toggle/track/blue
name = "blue track jacket"
@@ -1117,7 +1093,6 @@
desc = "A comfy, grey flannel shirt. Unleash your inner hipster."
icon_state = "flannel"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "black_labcoat", SLOT_ID_LEFT_HAND = "black_labcoat")
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
inv_hide_flags = HIDEHOLSTER
var/rolled = 0
var/tucked = 0
@@ -1219,7 +1194,6 @@
inv_hide_flags = HIDEHOLSTER
cold_protection_cover = UPPER_TORSO|LOWER_TORSO|ARMS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
- allowed = list (/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask)
/obj/item/clothing/suit/storage/snowsuit/command
name = "command snowsuit"
@@ -1300,18 +1274,6 @@
desc = "A uniform jacket from the United Federation. Starfleet still uses this uniform and there are variations of it. Set phasers to awesome."
icon_state = "fedcoat"
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS
- allowed = list(
- /obj/item/tank/emergency/oxygen,
- /obj/item/flashlight,
- /obj/item/gun/projectile/energy,
- /obj/item/gun/projectile/ballistic,
- /obj/item/ammo_magazine,
- /obj/item/ammo_casing,
-// /obj/item/storage/fancy/shotgun_ammo,
- /obj/item/melee/baton,
- /obj/item/handcuffs,
-// /obj/item/detective_scanner,
- /obj/item/tape_recorder)
var/unbuttoned = 0
/*
@@ -1358,18 +1320,6 @@
desc = "A jacket issued to Command staff on NT vessels. This one is modern."
icon_state = "fedmodern"
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS
- allowed = list(
- /obj/item/tank/emergency/oxygen,
- /obj/item/flashlight,
- /obj/item/gun/projectile/energy,
- /obj/item/gun/projectile/ballistic,
- /obj/item/ammo_magazine,
- /obj/item/ammo_casing,
-// /obj/item/storage/fancy/shotgun_ammo,
- /obj/item/melee/baton,
- /obj/item/handcuffs,
-// /obj/item/detective_scanner,
- /obj/item/tape_recorder)
/obj/item/clothing/suit/storage/modern_operations_coat/medsci
name = "Modern Medical/Science Operations Jacket"
@@ -1494,7 +1444,6 @@
name = "well-worn varsity jacket"
desc = "A worn varsity jacket. The Nanotrasen corporate logo on the back is outdated, suggesting the age of this coat."
icon_state = "varsity_worn"
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/tank/emergency/oxygen, /obj/item/flashlight,/obj/item/gun/projectile/energy,/obj/item/gun/projectile/ballistic,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/uv_light)
/obj/item/clothing/suit/storage/pullover
name = "pullover hoodie"
@@ -1558,8 +1507,6 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS
cold_protection_cover = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit)
/obj/item/clothing/suit/storage/mindelectric
name = "「 The Mind Electric 」"
@@ -1596,9 +1543,6 @@
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS
cold_protection_cover = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight, /obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/gun/projectile/energy,
- /obj/item/gun/projectile/ballistic, /obj/item/ammo_magazine, /obj/item/melee/baton)
open = 1
/obj/item/clothing/suit/storage/toggle/heated/ToggleButtons()
diff --git a/code/modules/clothing/suits/oricon.dm b/code/modules/clothing/suits/oricon.dm
index fa77da88b1c..954996ebf15 100644
--- a/code/modules/clothing/suits/oricon.dm
+++ b/code/modules/clothing/suits/oricon.dm
@@ -11,7 +11,6 @@
armor_type = /datum/armor/none
siemens_coefficient = 0.9
inv_hide_flags = HIDEHOLSTER
- allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/flashlight,/obj/item/pen,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/atmos_analyzer,/obj/item/radio,/obj/item/barrier_tape_roll)
/obj/item/clothing/suit/storage/service/sysguard
name = "\improper SysGuard jacket"
@@ -113,7 +112,6 @@
body_cover_flags = UPPER_TORSO|ARMS
armor_type = /datum/armor/none
siemens_coefficient = 0.9
- allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/flashlight,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/radio,/obj/item/pen)
/obj/item/clothing/suit/dress/expedition
name = "SysGuard dress jacket"
diff --git a/code/modules/clothing/suits/roguetown.dm b/code/modules/clothing/suits/roguetown.dm
index 98b90c4fed5..248168280b8 100644
--- a/code/modules/clothing/suits/roguetown.dm
+++ b/code/modules/clothing/suits/roguetown.dm
@@ -93,8 +93,6 @@
worn_bodytypes = BODYTYPES(BODYTYPE_DEFAULT)
armor_type = /datum/armor/station/padded
hoodtype = /obj/item/clothing/hood/roguetown/hide
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/eldritch/prop/codex)
/obj/item/clothing/suit/storage/hooded/roguetown/cloth
name = "cloth cloak"
@@ -106,9 +104,6 @@
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL | WORN_RENDER_INHAND_ALLOW_DEFAULT
worn_bodytypes = BODYTYPES(BODYTYPE_DEFAULT)
hoodtype = /obj/item/clothing/hood/roguetown/cloth
- allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes,
- /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/eldritch/prop/codex)
-
// Outer wear
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 635468cd8c9..80a6d37d32e 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -17,7 +17,6 @@
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.50
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/flashlight,/obj/item/tank/emergency/oxygen,/obj/item/extinguisher)
encumbrance = ITEM_ENCUMBRANCE_ARMOR_FIRE_SUIT
weight = ITEM_WEIGHT_ARMOR_FIRE_SUIT
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
@@ -67,7 +66,6 @@
/obj/item/clothing/suit/bomb_suit/security
icon_state = "bombsuitsec"
- allowed = list(/obj/item/gun/projectile/ballistic/sec/flash, /obj/item/gun/projectile/energy,/obj/item/melee/baton,/obj/item/handcuffs)
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
/*
@@ -93,7 +91,6 @@
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.50
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET
- allowed = list(/obj/item/flashlight,/obj/item/tank/emergency/oxygen,/obj/item/clothing/head/radiation,/obj/item/clothing/mask/gas)
weight = ITEM_WEIGHT_ARMOR_BIORAD_SUIT
armor_type = /datum/armor/general/radsuit
inv_hide_flags = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 9517ea3e72e..6c64e0cdfba 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -52,7 +52,6 @@
gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE
permeability_coefficient = 0.01
armor_type = /datum/armor/wizard
- allowed = list(/obj/item/teleportation_scroll)
inv_hide_flags = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0.8
wizard_garb = 1
diff --git a/code/modules/detectivework/tools/uvlight.dm b/code/modules/detectivework/tools/uvlight.dm
index 88f228fef86..f97e1ff01ee 100644
--- a/code/modules/detectivework/tools/uvlight.dm
+++ b/code/modules/detectivework/tools/uvlight.dm
@@ -9,6 +9,7 @@
item_action_name = "Toggle UV light"
materials_base = list(MAT_STEEL = 150)
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/list/scanned = list()
var/list/stored_alpha = list()
diff --git a/code/modules/economy/items/cash.dm b/code/modules/economy/items/cash.dm
index f80c78e6323..4233b799059 100644
--- a/code/modules/economy/items/cash.dm
+++ b/code/modules/economy/items/cash.dm
@@ -12,6 +12,7 @@
throw_speed = 1
throw_range = 2
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
var/access = list()
access = ACCESS_MISC_CASHCRATE
var/worth = 0
diff --git a/code/modules/economy/items/coins.dm b/code/modules/economy/items/coins.dm
index 9ef3390d17f..563688b10ea 100644
--- a/code/modules/economy/items/coins.dm
+++ b/code/modules/economy/items/coins.dm
@@ -12,6 +12,7 @@
var/sides = 2
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
/obj/item/coin/Initialize(mapload)
. = ..()
diff --git a/code/modules/economy/items/retail_scanner.dm b/code/modules/economy/items/retail_scanner.dm
index 1ff2453f717..4ec64d1fa36 100644
--- a/code/modules/economy/items/retail_scanner.dm
+++ b/code/modules/economy/items/retail_scanner.dm
@@ -8,6 +8,7 @@
req_access = list(ACCESS_COMMAND_BRIDGE)
w_class = WEIGHT_CLASS_SMALL
origin_tech = list(TECH_MATERIAL = 1)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
var/locked = 1
var/emagged = 0
diff --git a/code/modules/examine/descriptions/paperwork.dm b/code/modules/examine/descriptions/paperwork.dm
deleted file mode 100644
index 117c93a2a3c..00000000000
--- a/code/modules/examine/descriptions/paperwork.dm
+++ /dev/null
@@ -1,21 +0,0 @@
-/obj/item/pen
- description_info = {"This is an item for writing down your thoughts, on paper or elsewhere. The following special commands are available:
-Pen and crayon commands
-\[br\] : Creates a linebreak.
-\[center\] - \[/center\] : Centers the text.
-\[h1\] - \[/h1\] : Makes the text a first level heading.
-\[h2\] - \[/h2\] : Makes the text a second level headin.
-\[h3\] - \[/h3\] : Makes the text a third level heading.
-\[b\] - \[/b\] : Makes the text bold.
-\[i\] - \[/i\] : Makes the text italic.
-\[u\] - \[/u\] : Makes the text underlined.
-\[large\] - \[/large\] : Increases the size of the text.
-\[sign\] : Inserts a signature of your name in a foolproof way.
-\[field\] : Inserts an invisible field which lets you start type from there. Useful for forms.
-\[date\] : Inserts today's station date.
-\[time\] : Inserts the current station time.
-Pen exclusive commands
-\[small\] - \[/small\] : Decreases the size of the text.
-\[list\] - \[/list\] : A list.
-\[*\] : A dot used for lists.
-\[hr\] : Adds a horizontal rule."}
diff --git a/code/modules/food/drinks/flask.dm b/code/modules/food/drinks/flask.dm
index be376c05de6..a3b4fa710c6 100644
--- a/code/modules/food/drinks/flask.dm
+++ b/code/modules/food/drinks/flask.dm
@@ -4,6 +4,7 @@
icon_state = "flask"
volume = 60
center_of_mass = list("x"=17, "y"=7)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
/obj/item/reagent_containers/food/drinks/flask/shiny
name = "shiny flask"
diff --git a/code/modules/food/glass/bottle.dm b/code/modules/food/glass/bottle.dm
index 47de24ddb85..0203973446c 100644
--- a/code/modules/food/glass/bottle.dm
+++ b/code/modules/food/glass/bottle.dm
@@ -8,6 +8,7 @@
icon_state = null
item_state = "atoxinbottle"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,25,30,60)
atom_flags = 0
diff --git a/code/modules/hardsuits/_rig.dm b/code/modules/hardsuits/_rig.dm
index 0b9dcd2f2a4..fa4da5d6763 100644
--- a/code/modules/hardsuits/_rig.dm
+++ b/code/modules/hardsuits/_rig.dm
@@ -218,8 +218,6 @@
add_obj_verb(src, /obj/item/hardsuit/proc/toggle_boots)
if(chest_type)
chest = new chest_type(src)
- if(allowed)
- chest.allowed = allowed
add_obj_verb(src, /obj/item/hardsuit/proc/toggle_chest)
for(var/obj/item/piece in list(gloves,helmet,boots,chest))
diff --git a/code/modules/hardsuits/rig_pieces.dm b/code/modules/hardsuits/rig_pieces.dm
index 42e09adcf97..ad9556cab21 100644
--- a/code/modules/hardsuits/rig_pieces.dm
+++ b/code/modules/hardsuits/rig_pieces.dm
@@ -50,7 +50,6 @@
/obj/item/clothing/suit/space/hardsuit
name = "chestpiece"
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit)
//Flags
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
@@ -133,7 +132,6 @@
/obj/item/clothing/suit/lightrig
name = "suit"
- allowed = list(/obj/item/flashlight)
inv_hide_flags = HIDEJUMPSUIT
clothing_flags = CLOTHING_THICK_MATERIAL | CLOTHING_INJECTION_PORT | CLOTHING_IGNORE_BELTLINK | CLOTHING_IGNORE_DELIMB
atom_flags = PHORONGUARD
diff --git a/code/modules/hardsuits/suits/combat.dm b/code/modules/hardsuits/suits/combat.dm
index ad5b16a01da..d61ad2b8fd3 100644
--- a/code/modules/hardsuits/suits/combat.dm
+++ b/code/modules/hardsuits/suits/combat.dm
@@ -26,15 +26,6 @@
offline_vision_restriction = 1
helm_type = /obj/item/clothing/head/helmet/space/hardsuit/combat
- allowed = list(
- /obj/item/gun,
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/melee/baton,
- /obj/item/bluespace_radio,
- )
-
/obj/item/hardsuit/combat/equipped
@@ -72,28 +63,6 @@
encumbrance = ITEM_ENCUMBRANCE_LEGACY_RIG_HEAVY
offline_encumbrance = ITEM_ENCUMBRANCE_LEGACY_RIG_HEAVY * 2
offline_vision_restriction = 1
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/ammo_magazine,
- /obj/item/ammo_casing,
- /obj/item/handcuffs,
- /obj/item/t_scanner,
- /obj/item/rcd,
- /obj/item/weldingtool,
- /obj/item/tool,
- /obj/item/multitool,
- /obj/item/radio,
- /obj/item/atmos_analyzer,
- /obj/item/storage/briefcase/inflatable,
- /obj/item/melee/baton,
- /obj/item/gun,
- /obj/item/storage/firstaid,
- /obj/item/reagent_containers/hypospray,
- /obj/item/roller,
- /obj/item/suit_cooling_unit,
- /obj/item/bluespace_radio,
- )
chest_type = /obj/item/clothing/suit/space/hardsuit/military
helm_type = /obj/item/clothing/head/helmet/space/hardsuit/military
diff --git a/code/modules/hardsuits/suits/ert.dm b/code/modules/hardsuits/suits/ert.dm
index 865b04033b3..d1c6386e08e 100644
--- a/code/modules/hardsuits/suits/ert.dm
+++ b/code/modules/hardsuits/suits/ert.dm
@@ -28,27 +28,6 @@
siemens_coefficient= 0.5
armor_type = /datum/armor/hardsuit/ert
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/t_scanner,
- /obj/item/rcd,
- /obj/item/tool/crowbar,
- /obj/item/tool/screwdriver,
- /obj/item/weldingtool,
- /obj/item/tool/wirecutters,
- /obj/item/tool/wrench,
- /obj/item/multitool,
- /obj/item/radio,
- /obj/item/atmos_analyzer,
- /obj/item/storage/briefcase/inflatable,
- /obj/item/melee/baton,
- /obj/item/gun,
- /obj/item/storage/firstaid,
- /obj/item/reagent_containers/hypospray,
- /obj/item/roller,
- /obj/item/bluespace_radio,
- )
initial_modules = list(
/obj/item/hardsuit_module/ai_container,
diff --git a/code/modules/hardsuits/suits/light.dm b/code/modules/hardsuits/suits/light.dm
index 0a747cd69d5..da9ab38de36 100644
--- a/code/modules/hardsuits/suits/light.dm
+++ b/code/modules/hardsuits/suits/light.dm
@@ -17,7 +17,6 @@
desc = "A lighter, less armoured hardsuit suit."
icon_state = "ninja_rig"
suit_type = "light suit"
- allowed = list(/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/cell)
armor_type = /datum/armor/hardsuit/light
emp_protection = 10
encumbrance = ITEM_ENCUMBRANCE_LEGACY_RIG_LIGHT
@@ -101,17 +100,6 @@
cell_type = /obj/item/cell/hyper
req_access = list(ACCESS_FACTION_SYNDICATE)
- allowed = list(
- /obj/item/gun,
- /obj/item/ammo_magazine,
- /obj/item/ammo_casing,
- /obj/item/melee/baton,
- /obj/item/handcuffs,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/cell,
- /obj/item/bluespace_radio,
- )
initial_modules = list(
/obj/item/hardsuit_module/teleporter,
diff --git a/code/modules/hardsuits/suits/merc.dm b/code/modules/hardsuits/suits/merc.dm
index 1aeff36338a..a065311bd3b 100644
--- a/code/modules/hardsuits/suits/merc.dm
+++ b/code/modules/hardsuits/suits/merc.dm
@@ -28,18 +28,6 @@
siemens_coefficient = 0.3
glove_type = /obj/item/clothing/gloves/gauntlets/hardsuit/eva
helm_type = /obj/item/clothing/head/helmet/space/hardsuit/merc
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/gun,
- /obj/item/ammo_magazine,
- /obj/item/ammo_casing,
- /obj/item/melee/baton,
- /obj/item/melee/transforming/energy/sword,
- /obj/item/handcuffs,
- /obj/item/bluespace_radio,
- )
initial_modules = list(
/obj/item/hardsuit_module/mounted,
diff --git a/code/modules/hardsuits/suits/pmc.dm b/code/modules/hardsuits/suits/pmc.dm
index caf91465327..3a6a02c7ce9 100644
--- a/code/modules/hardsuits/suits/pmc.dm
+++ b/code/modules/hardsuits/suits/pmc.dm
@@ -26,28 +26,6 @@
req_access = list(ACCESS_CENTCOM_ERT)
armor_type = /datum/armor/hardsuit/pmc
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/t_scanner,
- /obj/item/rcd,
- /obj/item/tool/crowbar,
- /obj/item/tool/screwdriver,
- /obj/item/weldingtool,
- /obj/item/tool/wirecutters,
- /obj/item/tool/wrench,
- /obj/item/multitool,
- /obj/item/radio,
- /obj/item/atmos_analyzer,
- /obj/item/storage/briefcase/inflatable,
- /obj/item/melee/baton,
- /obj/item/gun,
- /obj/item/storage/firstaid,
- /obj/item/reagent_containers/hypospray,
- /obj/item/roller,
- /obj/item/bluespace_radio,
- )
-
/obj/item/hardsuit/pmc/commander
name = "PMC-C hardsuit control module"
desc = "A suit worn by private military contractors. Armoured and space ready."
diff --git a/code/modules/hardsuits/suits/species/protean.dm b/code/modules/hardsuits/suits/species/protean.dm
index 53a2281907e..318ae748a9e 100644
--- a/code/modules/hardsuits/suits/species/protean.dm
+++ b/code/modules/hardsuits/suits/species/protean.dm
@@ -67,4 +67,3 @@
desc = "A body-hugging mass of nanomachines."
can_breach = 0
species_restricted = null
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton,/obj/item/bluespace_radio)
diff --git a/code/modules/hardsuits/suits/species/vox.dm b/code/modules/hardsuits/suits/species/vox.dm
index 98b73a40f61..86702f1b13f 100644
--- a/code/modules/hardsuits/suits/species/vox.dm
+++ b/code/modules/hardsuits/suits/species/vox.dm
@@ -7,13 +7,6 @@
atom_flags = PHORONGUARD
clothing_flags = CLOTHING_THICK_MATERIAL | CLOTHING_INJECTION_PORT
siemens_coefficient = 0.2
- allowed = list(
- /obj/item/gun,
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/bluespace_radio,
- )
air_type = /obj/item/tank/vox
helm_type = /obj/item/clothing/head/helmet/space/hardsuit/vox
boot_type = /obj/item/clothing/shoes/magboots/hardsuit/vox
diff --git a/code/modules/hardsuits/suits/station/cargo.dm b/code/modules/hardsuits/suits/station/cargo.dm
index 527152ae2b8..7197365e777 100644
--- a/code/modules/hardsuits/suits/station/cargo.dm
+++ b/code/modules/hardsuits/suits/station/cargo.dm
@@ -11,17 +11,6 @@
rigsuit_min_pressure = 0 // Min pressure the hardsuit protects against when sealed
helm_type = /obj/item/clothing/head/helmet/space/hardsuit/industrial
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/bag/ore,
- /obj/item/t_scanner,
- /obj/item/pickaxe,
- /obj/item/rcd,
- /obj/item/bluespace_radio,
- )
-
/datum/armor/hardsuit/industrial
melee = 0.4
melee_tier = 4.5
diff --git a/code/modules/hardsuits/suits/station/engineering.dm b/code/modules/hardsuits/suits/station/engineering.dm
index ce00eee9cdd..23978c1ec73 100644
--- a/code/modules/hardsuits/suits/station/engineering.dm
+++ b/code/modules/hardsuits/suits/station/engineering.dm
@@ -10,19 +10,9 @@
siemens_coefficient= 0.75
seal_delay = 24 //Should be slightly faster than other hardsuits, giving Engineering faster response time for emergencies.
-
helm_type = /obj/item/clothing/head/helmet/space/hardsuit/eva
glove_type = /obj/item/clothing/gloves/gauntlets/hardsuit/eva
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/briefcase/inflatable,
- /obj/item/t_scanner,
- /obj/item/rcd
- )
-
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
/datum/armor/hardsuit/eva
@@ -73,17 +63,6 @@
glove_type = /obj/item/clothing/gloves/gauntlets/hardsuit/ce
boot_type = /obj/item/clothing/shoes/magboots/hardsuit/ce
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/bag/ore,
- /obj/item/t_scanner,
- /obj/item/pickaxe,
- /obj/item/rcd,
- /obj/item/bluespace_radio,
- )
-
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
/datum/armor/hardsuit/ce
diff --git a/code/modules/hardsuits/suits/station/medical.dm b/code/modules/hardsuits/suits/station/medical.dm
index 0fd308ed293..5d3ccb81c2d 100644
--- a/code/modules/hardsuits/suits/station/medical.dm
+++ b/code/modules/hardsuits/suits/station/medical.dm
@@ -10,17 +10,6 @@
helm_type = /obj/item/clothing/head/helmet/space/hardsuit/medical
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/firstaid,
- /obj/item/healthanalyzer,
- /obj/item/stack/medical,
- /obj/item/roller,
- /obj/item/bluespace_radio,
- )
-
/datum/armor/hardsuit/medical
melee = 0.3
melee_tier = 3.5
diff --git a/code/modules/hardsuits/suits/station/misc.dm b/code/modules/hardsuits/suits/station/misc.dm
index 62757643e71..f3abe66c47a 100644
--- a/code/modules/hardsuits/suits/station/misc.dm
+++ b/code/modules/hardsuits/suits/station/misc.dm
@@ -9,14 +9,6 @@
offline_encumbrance = ITEM_ENCUMBRANCE_LEGACY_RIG_LIGHT * 2
offline_vision_restriction = 0
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/storage/briefcase,
- /obj/item/storage/secure/briefcase
- )
-
glove_type = null
helm_type = null
boot_type = null
diff --git a/code/modules/hardsuits/suits/station/science.dm b/code/modules/hardsuits/suits/station/science.dm
index bf781028e96..05b838f399e 100644
--- a/code/modules/hardsuits/suits/station/science.dm
+++ b/code/modules/hardsuits/suits/station/science.dm
@@ -10,26 +10,6 @@
helm_type = /obj/item/clothing/head/helmet/space/hardsuit/hazmat
- allowed = list(
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/stack/flag,
- /obj/item/storage/excavation,
- /obj/item/pickaxe,
- /obj/item/healthanalyzer,
- /obj/item/measuring_tape,
- /obj/item/ano_scanner,
- /obj/item/depth_scanner,
- /obj/item/core_sampler,
- /obj/item/gps,
- /obj/item/beacon_locator,
- /obj/item/radio/beacon,
- /obj/item/pickaxe/hand,
- /obj/item/storage/bag/fossils,
- /obj/item/bluespace_radio,
- )
-
/datum/armor/hardsuit/ami
melee = 0.3
melee_tier = 4
diff --git a/code/modules/hardsuits/suits/station/security.dm b/code/modules/hardsuits/suits/station/security.dm
index 0c513869347..f8b7d364f72 100644
--- a/code/modules/hardsuits/suits/station/security.dm
+++ b/code/modules/hardsuits/suits/station/security.dm
@@ -9,15 +9,6 @@
helm_type = /obj/item/clothing/head/helmet/space/hardsuit/hazard
- allowed = list(
- /obj/item/gun,
- /obj/item/flashlight,
- /obj/item/tank,
- /obj/item/suit_cooling_unit,
- /obj/item/melee/baton,
- /obj/item/bluespace_radio,
- )
-
/datum/armor/hardsuit/hazard
melee = 0.3
melee_tier = 4
diff --git a/code/modules/hydroponics/seed_packets.dm b/code/modules/hydroponics/seed_packets.dm
index 0f6c3c6ae84..76ce33cd83b 100644
--- a/code/modules/hydroponics/seed_packets.dm
+++ b/code/modules/hydroponics/seed_packets.dm
@@ -9,6 +9,7 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds)
icon_state = "blank"
worn_render_flags = WORN_RENDER_INHAND_NO_RENDER | WORN_RENDER_SLOT_NO_RENDER
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
var/seed_type
var/datum/seed/seed
diff --git a/code/modules/mining/tools/kinetic/kinetic_accelerator.dm b/code/modules/mining/tools/kinetic/kinetic_accelerator.dm
index f3f1b2c1635..7f466416d23 100644
--- a/code/modules/mining/tools/kinetic/kinetic_accelerator.dm
+++ b/code/modules/mining/tools/kinetic/kinetic_accelerator.dm
@@ -23,6 +23,7 @@
cell_type = /obj/item/cell/device/weapon/empproof
clothing_flags = NONE
charge_meter = FALSE
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
projectile_type = /obj/projectile/kinetic
charge_cost = 1200
diff --git a/code/modules/mining/tools/kinetic/kinetic_crusher.dm b/code/modules/mining/tools/kinetic/kinetic_crusher.dm
index 6caa44f1723..06b28410bf3 100644
--- a/code/modules/mining/tools/kinetic/kinetic_crusher.dm
+++ b/code/modules/mining/tools/kinetic/kinetic_crusher.dm
@@ -19,6 +19,7 @@
damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
item_action_name = "Toggle Light"
light_wedge = LIGHT_WIDE
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
// actions_types = list(/datum/action/item_action/toggle_light)
// var/list/trophies = list()
var/charged = TRUE
@@ -269,6 +270,7 @@
)
item_state = "machete"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
damage_force = 15
requires_wield = FALSE
charge_overlay = FALSE
diff --git a/code/modules/mining/tools/mine_items.dm b/code/modules/mining/tools/mine_items.dm
index 311142d5598..5d8fbd1f6c3 100644
--- a/code/modules/mining/tools/mine_items.dm
+++ b/code/modules/mining/tools/mine_items.dm
@@ -23,6 +23,7 @@
w_class = WEIGHT_CLASS_BULKY
materials_base = list(MAT_STEEL = 3750)
worth_intrinsic = 75
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO
var/sand_dig = FALSE
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
@@ -292,6 +293,7 @@
attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked")
damage_mode = DAMAGE_MODE_EDGE
worth_intrinsic = 50
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR
var/digspeed = 40
/obj/item/shovel/bone
@@ -356,6 +358,7 @@
amount = 10
max_amount = 10
zmm_flags = ZMM_MANGLE_PLANES
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/upright = 0
var/base_state
diff --git a/code/modules/mining/tools/resonator.dm b/code/modules/mining/tools/resonator.dm
index 6571987a5aa..1cf02809017 100644
--- a/code/modules/mining/tools/resonator.dm
+++ b/code/modules/mining/tools/resonator.dm
@@ -14,6 +14,7 @@
w_class = WEIGHT_CLASS_NORMAL
damage_force = 8
throw_force = 10
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/cooldown = 0
var/fieldsactive = 0
var/burst_time = 50
diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm
index f32d32dad31..e07175ac73f 100644
--- a/code/modules/mob/holder.dm
+++ b/code/modules/mob/holder.dm
@@ -14,7 +14,7 @@
throw_range = 14
throw_force = 10
throw_speed = 3
-
+
var/static/list/holder_mob_icon_cache = list()
var/mob/living/held_mob
@@ -185,7 +185,7 @@
clothing_flags = ALLOWINTERNALS
slot_flags = SLOT_HEAD | SLOT_OCLOTHING | SLOT_HOLSTER | SLOT_ICLOTHING | SLOT_ID | SLOT_MASK | SLOT_GLOVES | SLOT_BACK | SLOT_BELT | SLOT_FEET | SLOT_EARS | SLOT_EYES
w_class = WEIGHT_CLASS_TINY
- allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/melee/baton)
+ suit_storage_class_allow = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
//Roach Types
/obj/item/holder/roach
diff --git a/code/modules/mob/inventory/inventory_slot.dm b/code/modules/mob/inventory/inventory_slot.dm
index 0914908bd73..c0345a37563 100644
--- a/code/modules/mob/inventory/inventory_slot.dm
+++ b/code/modules/mob/inventory/inventory_slot.dm
@@ -791,10 +791,7 @@ GLOBAL_LIST_EMPTY(inventory_slot_type_cache)
var/obj/item/suit_item = wearer.item_by_slot_id(SLOT_ID_SUIT)
if(!suit_item)
return FALSE
- // todo: this check is ass
- if(istype(I, /obj/item/pda) || istype(I, /obj/item/pen) || is_type_in_list(I, suit_item.allowed))
- return TRUE
- return FALSE
+ return suit_item.can_suit_storage(I)
/datum/inventory_slot/inventory/ears
sort_order = 9500
diff --git a/code/modules/mob/living/silicon/robot/analyzer.dm b/code/modules/mob/living/silicon/robot/analyzer.dm
index 57d9158f328..31ef9acc564 100644
--- a/code/modules/mob/living/silicon/robot/analyzer.dm
+++ b/code/modules/mob/living/silicon/robot/analyzer.dm
@@ -14,6 +14,7 @@
throw_range = 10
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 1, TECH_ENGINEERING = 2)
materials_base = list(MAT_STEEL = 500, MAT_GLASS = 200)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/mode = 1;
/obj/item/robotanalyzer/legacy_mob_melee_hook(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
diff --git a/code/modules/paperwork/clipboard.dm b/code/modules/paperwork/clipboard.dm
index 032d010d024..9b6b5eebad5 100644
--- a/code/modules/paperwork/clipboard.dm
+++ b/code/modules/paperwork/clipboard.dm
@@ -8,6 +8,7 @@
throw_speed = 3
throw_range = 7
slot_flags = SLOT_BELT
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/// The stored pen
var/obj/item/pen/pen
diff --git a/code/modules/paperwork/paper/paper.dm b/code/modules/paperwork/paper/paper.dm
index c062acebad9..9e44c022bcd 100644
--- a/code/modules/paperwork/paper/paper.dm
+++ b/code/modules/paperwork/paper/paper.dm
@@ -15,6 +15,7 @@
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "paper"
item_state = "paper"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
throw_force = 0
w_class = WEIGHT_CLASS_TINY
throw_range = 1
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 87ad2e600d5..a44fde0ed7d 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -15,11 +15,35 @@
*/
/obj/item/pen
desc = "It's a normal black ink pen."
+ description_info = {"
+ This is an item for writing down your thoughts, on paper or elsewhere. The following special commands are available:
+ Pen and crayon commands
+ \[br\] : Creates a linebreak.
+ \[center\] - \[/center\] : Centers the text.
+ \[h1\] - \[/h1\] : Makes the text a first level heading.
+ \[h2\] - \[/h2\] : Makes the text a second level headin.
+ \[h3\] - \[/h3\] : Makes the text a third level heading.
+ \[b\] - \[/b\] : Makes the text bold.
+ \[i\] - \[/i\] : Makes the text italic.
+ \[u\] - \[/u\] : Makes the text underlined.
+ \[large\] - \[/large\] : Increases the size of the text.
+ \[sign\] : Inserts a signature of your name in a foolproof way.
+ \[field\] : Inserts an invisible field which lets you start type from there. Useful for forms.
+ \[date\] : Inserts today's station date.
+ \[time\] : Inserts the current station time.
+ Pen exclusive commands
+ \[small\] - \[/small\] : Decreases the size of the text.
+ \[list\] - \[/list\] : A list.
+ \[*\] : A dot used for lists.
+ \[hr\] : Adds a horizontal rule.
+ "}
+
name = "pen"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "pen"
item_state = "pen"
slot_flags = SLOT_BELT | SLOT_EARS
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
throw_force = 0
w_class = WEIGHT_CLASS_TINY
throw_speed = 7
diff --git a/code/modules/photography/camera.dm b/code/modules/photography/camera.dm
index 68b32eec2c7..efdd468f182 100644
--- a/code/modules/photography/camera.dm
+++ b/code/modules/photography/camera.dm
@@ -8,6 +8,7 @@
worn_render_flags = NONE
desc = "A polaroid camera. 10 photos left."
item_flags = ITEM_NO_BLUDGEON | ITEM_ENCUMBERS_WHILE_HELD
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
materials_base = list(MAT_STEEL = 2000)
diff --git a/code/modules/photography/film.dm b/code/modules/photography/film.dm
index 4565eac0622..1520a85ee5c 100644
--- a/code/modules/photography/film.dm
+++ b/code/modules/photography/film.dm
@@ -5,6 +5,7 @@
desc = "A camera film cartridge. Insert it into a camera to reload it."
icon = 'icons/modules/photography/film.dmi'
icon_state = "film"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
worn_render_flags = WORN_RENDER_INHAND_ALLOW_DEFAULT
inhand_default_type = INHAND_DEFAULT_ICON_STORAGE
inhand_state = "camera"
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index 49cf676e5b9..3e71873e0b8 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -14,6 +14,7 @@
throw_speed = 3
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/// Are we EMP immune?
var/emp_proof = FALSE
var/charge
diff --git a/code/modules/projectiles/ammunition/ammo_magazine.dm b/code/modules/projectiles/ammunition/ammo_magazine.dm
index 342afe7b36d..51110064221 100644
--- a/code/modules/projectiles/ammunition/ammo_magazine.dm
+++ b/code/modules/projectiles/ammunition/ammo_magazine.dm
@@ -10,6 +10,7 @@
desc = "A magazine for some kind of gun."
item_flags = ITEM_EASY_LATHE_DECONSTRUCT | ITEM_ENCUMBERS_WHILE_HELD
slot_flags = SLOT_BELT
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
icon = 'icons/system/error_32x32.dmi'
inhand_state = "syringe_kit"
diff --git a/code/modules/projectiles/guns/gun.dm b/code/modules/projectiles/guns/gun.dm
index 344a139bb23..10ebb0b966b 100644
--- a/code/modules/projectiles/guns/gun.dm
+++ b/code/modules/projectiles/guns/gun.dm
@@ -50,6 +50,7 @@
item_state = "gun"
item_flags = ITEM_ENCUMBERS_WHILE_HELD | ITEM_ENCUMBERS_ONLY_HELD
slot_flags = SLOT_BELT|SLOT_HOLSTER
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_ARMOR
materials_base = list(MAT_STEEL = 2000)
rad_flags = RAD_BLOCK_CONTENTS
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/modules/projectiles/guns/gun/projectile/ballistic/musket.dm b/code/modules/projectiles/guns/gun/projectile/ballistic/musket.dm
index 7e4b0bd877f..65edc20cb6d 100644
--- a/code/modules/projectiles/guns/gun/projectile/ballistic/musket.dm
+++ b/code/modules/projectiles/guns/gun/projectile/ballistic/musket.dm
@@ -106,6 +106,7 @@
icon_state = "flintlock"
item_state = "sawnshotgun"
wielded_item_state = null
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
slot_flags = SLOT_BELT|SLOT_HOLSTER
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/modules/projectiles/guns/gun/projectile/energy/laser.dm b/code/modules/projectiles/guns/gun/projectile/energy/laser.dm
index ebc060d3f4e..43220a2a0f1 100644
--- a/code/modules/projectiles/guns/gun/projectile/energy/laser.dm
+++ b/code/modules/projectiles/guns/gun/projectile/energy/laser.dm
@@ -272,6 +272,7 @@
projectile_type = /obj/projectile/beam/lasertag/blue
cell_type = /obj/item/cell/device/weapon/recharge
legacy_battery_lock = 1
+ suit_storage_class = SUIT_STORAGE_CLASS_HARDWEAR | SUIT_STORAGE_CLASS_SOFTWEAR
/obj/item/gun/projectile/energy/lasertag/blue
icon_state = "bluetag"
diff --git a/code/modules/reagents/items/hypospray.dm b/code/modules/reagents/items/hypospray.dm
index ce9150f3656..ceb61f57b05 100644
--- a/code/modules/reagents/items/hypospray.dm
+++ b/code/modules/reagents/items/hypospray.dm
@@ -12,6 +12,7 @@
drop_sound = 'sound/items/drop/gun.ogg'
pickup_sound = 'sound/items/pickup/gun.ogg'
worn_render_flags = NONE
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/// loaded vial
var/obj/item/reagent_containers/glass/hypovial/loaded
diff --git a/code/modules/reagents/items/spray.dm b/code/modules/reagents/items/spray.dm
index fa7b112957e..a7bd3ab2d98 100644
--- a/code/modules/reagents/items/spray.dm
+++ b/code/modules/reagents/items/spray.dm
@@ -13,6 +13,7 @@
throw_range = 10
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
var/spray_size = 3
var/list/spray_sizes = list(1,3)
volume = 250
@@ -121,6 +122,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "pepperspray"
item_state = "pepperspray"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
possible_transfer_amounts = null
volume = 40
worth_intrinsic = 85
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index 09cb9d1497d..8e6e4f59f89 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -14,6 +14,7 @@
drop_sound = 'sound/items/drop/glass.ogg'
pickup_sound = 'sound/items/pickup/glass.ogg'
integrity_flags = INTEGRITY_ACIDPROOF
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
/obj/item/reagent_containers/dropper/examine(mob/user, dist)
. = ..()
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index d9c40b610fb..3cd8e9f9908 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -152,6 +152,7 @@
base_icon_state = "beaker"
item_state = "beaker"
materials_base = list(MAT_GLASS = 500)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
w_class = WEIGHT_CLASS_TINY
drop_sound = 'sound/items/drop/glass.ogg'
pickup_sound = 'sound/items/pickup/glass.ogg'
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 8ae3a212d15..f263b2e6e48 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -17,6 +17,7 @@
drop_sound = 'sound/items/drop/gun.ogg'
pickup_sound = 'sound/items/pickup/gun.ogg'
preserve_item = 1
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
var/filled = 0
var/list/filled_reagents = list()
var/hyposound // What sound do we play on use?
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 3f1accd9608..e94670401cf 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -11,6 +11,7 @@
drop_sound = 'sound/items/drop/food.ogg'
pickup_sound = 'sound/items/pickup/food.ogg'
rad_flags = RAD_NO_CONTAMINATE
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR
possible_transfer_amounts = null
w_class = WEIGHT_CLASS_TINY
diff --git a/code/modules/reagents/reagent_containers/syringe.dm b/code/modules/reagents/reagent_containers/syringe.dm
index 83398bfb9ad..626c26f720d 100644
--- a/code/modules/reagents/reagent_containers/syringe.dm
+++ b/code/modules/reagents/reagent_containers/syringe.dm
@@ -14,6 +14,7 @@
integrity_flags = INTEGRITY_ACIDPROOF
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
var/mode = SYRINGE_DRAW
var/image/filling //holds a reference to the current filling overlay
var/visible_name = "a syringe"
diff --git a/code/modules/shuttles/landmarks.dm b/code/modules/shuttles/landmarks.dm
index 687609659d6..e714ffef2cc 100644
--- a/code/modules/shuttles/landmarks.dm
+++ b/code/modules/shuttles/landmarks.dm
@@ -166,6 +166,7 @@
desc = "Burst transmitter used to broadcast all needed information for shuttle navigation systems. Has a flare attached for marking the spot where you probably shouldn't be standing."
icon_state = "bluflare"
light_color = "#3728ff"
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/active
/obj/item/spaceflare/attack_self(mob/user, datum/event_args/actor/actor)
diff --git a/code/modules/vore/fluffstuff/custom_clothes.dm b/code/modules/vore/fluffstuff/custom_clothes.dm
index 78e8f9edd64..10eaf479c39 100644
--- a/code/modules/vore/fluffstuff/custom_clothes.dm
+++ b/code/modules/vore/fluffstuff/custom_clothes.dm
@@ -112,7 +112,6 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.02
body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- allowed = list(/obj/item/flashlight,/obj/item/tank)
armor_type = /datum/armor/none
inv_hide_flags = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection_cover = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
@@ -217,14 +216,6 @@
icon_override = 'icons/vore/custom_clothes_vr.dmi'
body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS
permeability_coefficient = 0.50
- allowed = list(
- /obj/item/flashlight, /obj/item/atmos_analyzer,
- /obj/item/radio, /obj/item/tank/emergency/oxygen,
- /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer,
- /obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,
- /obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,
- /obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle
- )
armor_type = /datum/armor/security/light_formalwear
/obj/item/clothing/suit/storage/trek/ds9/equipped(mob/user, slot, flags)
diff --git a/code/modules/vore/fluffstuff/custom_items.dm b/code/modules/vore/fluffstuff/custom_items.dm
index 0a0e322721d..166a400d6f4 100644
--- a/code/modules/vore/fluffstuff/custom_items.dm
+++ b/code/modules/vore/fluffstuff/custom_items.dm
@@ -1191,7 +1191,6 @@
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 1)
item_icons = list(SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_melee.dmi', SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi', SLOT_ID_BACK = 'icons/vore/custom_items_vr.dmi', SLOT_ID_SUIT = 'icons/vore/custom_items_vr.dmi')
var/active_state = "wolfgirlsword"
- allowed = list(/obj/item/shield/fluff/wolfgirlshield)
damage_type = DAMAGE_TYPE_HALLOSS
/obj/item/melee/fluffstuff/wolfgirlsword/dropped(mob/user, flags, atom/newLoc)
diff --git a/code/modules/xenoarcheaology/sampling.dm b/code/modules/xenoarcheaology/sampling.dm
index 3443b48d9f0..8ee7704f6ce 100644
--- a/code/modules/xenoarcheaology/sampling.dm
+++ b/code/modules/xenoarcheaology/sampling.dm
@@ -23,6 +23,7 @@
item_state = "screwdriver_brown"
w_class = WEIGHT_CLASS_TINY
worth_intrinsic = 50
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/sampled_turf = ""
var/num_stored_bags = 10
diff --git a/code/modules/xenoarcheaology/tools/equipment.dm b/code/modules/xenoarcheaology/tools/equipment.dm
index 2c25abf6477..1c73c9b04f4 100644
--- a/code/modules/xenoarcheaology/tools/equipment.dm
+++ b/code/modules/xenoarcheaology/tools/equipment.dm
@@ -29,7 +29,6 @@
icon_state = "cespace_suit"
item_state = "cespace_suit"
armor_type = /datum/armor/general/biosuit/anomaly
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/suit_cooling_unit,/obj/item/pickaxe)
encumbrance = ITEM_ENCUMBRANCE_VOIDSUIT_ANOMALY
weight = ITEM_WEIGHT_VOIDSUIT_ANOMALY
// Pressure protection inherited from space suits
diff --git a/code/modules/xenoarcheaology/tools/tools.dm b/code/modules/xenoarcheaology/tools/tools.dm
index 0ebc853bf99..d80e02ebfe6 100644
--- a/code/modules/xenoarcheaology/tools/tools.dm
+++ b/code/modules/xenoarcheaology/tools/tools.dm
@@ -6,6 +6,7 @@
origin_tech = list(TECH_MATERIAL = 1)
materials_base = list(MAT_STEEL = 100)
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/storage/bag/fossils
name = "Fossil Satchel"
@@ -18,6 +19,7 @@
max_combined_volume = WEIGHT_VOLUME_NORMAL * 50
max_single_weight_class = WEIGHT_CLASS_NORMAL
insertion_whitelist = list(/obj/item/fossil)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/storage/box/samplebags
name = "sample bag box"
@@ -40,6 +42,7 @@
materials_base = list(MAT_STEEL = 10000, MAT_GLASS = 5000)
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/last_scan_time = 0
var/scan_delay = 25
@@ -101,6 +104,7 @@
materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 1000)
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/list/positive_locations = list()
var/datum/depth_scan/current
@@ -233,6 +237,7 @@
item_state = "electronic"
origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3)
materials_base = list(MAT_STEEL = 1000, MAT_GLASS = 500)
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/frequency = FREQ_COMMON
var/scan_ticks = 0
var/obj/item/radio/target_radio
@@ -338,6 +343,7 @@
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
worth_intrinsic = 250
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
var/mode = 1 //Start off scanning. 1 = scanning, 0 = measuring
var/obj/item/ano_scanner/anomaly_scanner = null
var/obj/item/depth_scanner/depth_scanner = null
diff --git a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm
index 063f1ccdcc7..479fb7ae31d 100644
--- a/code/modules/xenoarcheaology/tools/tools_pickaxe.dm
+++ b/code/modules/xenoarcheaology/tools/tools_pickaxe.dm
@@ -12,6 +12,7 @@
drill_sound = 'sound/weapons/thudswoosh.ogg'
drill_verb = "brushing"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/pickaxe/one_pick
name = "2cm pick"
@@ -25,6 +26,7 @@
drill_sound = 'sound/items/Screwdriver.ogg'
drill_verb = "delicately picking"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/pickaxe/two_pick
name = "4cm pick"
@@ -38,6 +40,7 @@
drill_sound = 'sound/items/Screwdriver.ogg'
drill_verb = "delicately picking"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/pickaxe/three_pick
name = "6cm pick"
@@ -51,6 +54,7 @@
drill_sound = 'sound/items/Screwdriver.ogg'
drill_verb = "delicately picking"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/pickaxe/four_pick
name = "8cm pick"
@@ -64,6 +68,7 @@
drill_sound = 'sound/items/Screwdriver.ogg'
drill_verb = "delicately picking"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/pickaxe/five_pick
name = "10cm pick"
@@ -77,6 +82,7 @@
drill_sound = 'sound/items/Screwdriver.ogg'
drill_verb = "delicately picking"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/pickaxe/six_pick
name = "12cm pick"
@@ -90,6 +96,7 @@
drill_sound = 'sound/items/Screwdriver.ogg'
drill_verb = "delicately picking"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
/obj/item/pickaxe/hand
name = "hand pickaxe"
@@ -103,6 +110,7 @@
drill_sound = 'sound/items/Crowbar.ogg'
drill_verb = "clearing"
w_class = WEIGHT_CLASS_SMALL
+ suit_storage_class = SUIT_STORAGE_CLASS_SOFTWEAR | SUIT_STORAGE_CLASS_HARDWEAR
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Pack for holding pickaxes
diff --git a/dependencies.sh b/dependencies.sh
index cfa9b2e42ed..a659f750fb3 100755
--- a/dependencies.sh
+++ b/dependencies.sh
@@ -17,7 +17,7 @@ export RUST_G_VERSION=3.0.0-experimental-graph-ops
export NODE_VERSION_LTS=22.19.0
# SpacemanDMM git tag
-export SPACEMAN_DMM_VERSION=suite-1.10
+export SPACEMAN_DMM_VERSION=suite-1.11
# Python version for mapmerge and other tools
export PYTHON_VERSION=3.12.0