diff --git a/code/__DEFINES/inventory_defines.dm b/code/__DEFINES/inventory_defines.dm
index 23ac017f1ec..95ab8b6ae8d 100644
--- a/code/__DEFINES/inventory_defines.dm
+++ b/code/__DEFINES/inventory_defines.dm
@@ -1,6 +1,6 @@
//ITEM INVENTORY WEIGHT, FOR w_class
#define WEIGHT_CLASS_TINY 1 //Usually items smaller then a human hand, ex: Playing Cards, Lighter, Scalpel, Coins/Money
-#define WEIGHT_CLASS_SMALL 2 //Pockets can hold small and tiny items, ex: Flashlight, Multitool, Grenades, GPS Device
+#define WEIGHT_CLASS_SMALL 2 //Pockets can hold small and tiny items, ex: Flashlight, Grenades, GPS Device
#define WEIGHT_CLASS_NORMAL 3 //Standard backpacks can carry tiny, small & normal items, ex: Fire extinguisher, Stunbaton, Gas Mask, Metal Sheets
#define WEIGHT_CLASS_BULKY 4 //Items that can be weilded or equipped but not stored in an inventory, ex: Defibrillator, Backpack, Space Suits
#define WEIGHT_CLASS_HUGE 5 //Usually represents objects that require two hands to operate, ex: Shotgun, Two Handed Melee Weapons
diff --git a/code/game/machinery/vendors/generic_vendors.dm b/code/game/machinery/vendors/generic_vendors.dm
index 73f2a8b776b..7e540d663f7 100644
--- a/code/game/machinery/vendors/generic_vendors.dm
+++ b/code/game/machinery/vendors/generic_vendors.dm
@@ -833,7 +833,8 @@
/obj/item/analyzer = 5,
/obj/item/t_scanner = 5,
/obj/item/stack/cable_coil/random = 10,
- /obj/item/clothing/gloves/color/yellow = 1)
+ /obj/item/clothing/gloves/color/yellow = 1,
+ /obj/item/crowbar/large = 1)
contraband = list(/obj/item/clothing/gloves/color/fyellow = 2,
/obj/item/weldingtool/hugetank = 2)
prices = list(/obj/item/crowbar = 75,
@@ -845,7 +846,8 @@
/obj/item/t_scanner = 25,
/obj/item/stack/cable_coil/random = 20,
/obj/item/clothing/gloves/color/yellow = 250,
- /obj/item/weldingtool/hugetank = 120)
+ /obj/item/weldingtool/hugetank = 120,
+ /obj/item/crowbar/large = 150)
refill_canister = /obj/item/vending_refill/youtool
/// we want a free version for engineering to use
diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm
index e79d3bc71ed..e1607e853b5 100644
--- a/code/game/objects/items/tools/crowbar.dm
+++ b/code/game/objects/items/tools/crowbar.dm
@@ -1,6 +1,6 @@
/obj/item/crowbar
- name = "pocket crowbar"
- desc = "A small crowbar. This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors."
+ name = "crowbar"
+ desc = "This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors."
icon = 'icons/obj/tools.dmi'
icon_state = "crowbar"
item_state = "crowbar"
@@ -10,7 +10,7 @@
slot_flags = SLOT_BELT
force = 5
throwforce = 7
- w_class = WEIGHT_CLASS_SMALL
+ w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL = 300)
drop_sound = 'sound/items/handling/crowbar_drop.ogg'
pickup_sound = 'sound/items/handling/crowbar_pickup.ogg'
@@ -42,13 +42,26 @@
usesound = 'sound/weapons/sonic_jackhammer.ogg'
icon_state = "crowbar"
toolspeed = 0.1
+ w_class = WEIGHT_CLASS_SMALL
origin_tech = "combat=4;engineering=4;abductor=3"
+/obj/item/crowbar/small
+ name = "miniature titanium crowbar"
+ desc = "A tiny, lightweight titanium crowbar. It fits handily in your pocket."
+ force = 3
+ w_class = WEIGHT_CLASS_SMALL
+ throwforce = 3
+ materials = list(MAT_TITANIUM = 250)
+ icon_state = "crowbar_titanium"
+ item_state = "crowbar_titanium"
+ origin_tech = "materials=2"
+ toolspeed = 1.25
+
/obj/item/crowbar/large
- name = "crowbar"
+ name = "large crowbar"
desc = "It's a big crowbar. It doesn't fit in your pockets, because its too big."
force = 12
- w_class = WEIGHT_CLASS_NORMAL
+ w_class = WEIGHT_CLASS_HUGE
throw_speed = 3
throw_range = 3
materials = list(MAT_METAL = 400)
@@ -75,6 +88,7 @@
usesound = 'sound/items/jaws_pry.ogg'
force = 15
toolspeed = 0.25
+ w_class = WEIGHT_CLASS_NORMAL
var/airlock_open_time = 100 // Time required to open powered airlocks
/obj/item/crowbar/power/Initialize(mapload)
diff --git a/code/game/objects/items/tools/multitool.dm b/code/game/objects/items/tools/multitool.dm
index 311627ada62..db2b0b4b488 100644
--- a/code/game/objects/items/tools/multitool.dm
+++ b/code/game/objects/items/tools/multitool.dm
@@ -14,7 +14,7 @@
belt_icon = "multitool"
flags = CONDUCT
force = 0
- w_class = WEIGHT_CLASS_SMALL
+ w_class = WEIGHT_CLASS_NORMAL
throwforce = 0
throw_range = 7
throw_speed = 3
@@ -53,6 +53,7 @@
var/rangealert = 8 //Glows red when inside
var/rangewarning = 20 //Glows yellow when inside
origin_tech = "magnets=1;engineering=2;syndicate=1"
+ w_class = WEIGHT_CLASS_SMALL
/obj/item/multitool/ai_detect/Initialize(mapload)
. = ..()
@@ -104,6 +105,7 @@
item_state = "multitool_syndi"
belt_icon = "multitool_syndi"
toolspeed = 0.95 // dangerously fast... not like multitools use speed anyways
+ w_class = WEIGHT_CLASS_SMALL
origin_tech = "magnets=1;engineering=2;syndicate=1"
/obj/item/multitool/command
@@ -167,6 +169,7 @@
icon = 'icons/obj/abductor.dmi'
icon_state = "multitool"
toolspeed = 0.1
+ w_class = WEIGHT_CLASS_SMALL
origin_tech = "magnets=5;engineering=5;abductor=3"
/obj/item/multitool/abductor/Initialize(mapload)
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index ef9554e315d..f482b214ba1 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -85,7 +85,6 @@
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
origin_tech = "materials=2;engineering=2" //done for balance reasons, making them high value for research, but harder to get
force = 8 //might or might not be too high, subject to change
- w_class = WEIGHT_CLASS_SMALL
throwforce = 8
throw_speed = 2
throw_range = 3//it's heavier than a screw driver/wrench, so it does more damage, but can't be thrown as far
@@ -93,6 +92,7 @@
hitsound = 'sound/items/drill_hit.ogg'
usesound = 'sound/items/drill_use.ogg'
toolspeed = 0.25
+ w_class = WEIGHT_CLASS_NORMAL
random_color = FALSE
/obj/item/screwdriver/power/Initialize(mapload)
diff --git a/code/game/objects/items/tools/welder.dm b/code/game/objects/items/tools/welder.dm
index 9faa226cbd5..d123b68f783 100644
--- a/code/game/objects/items/tools/welder.dm
+++ b/code/game/objects/items/tools/welder.dm
@@ -14,7 +14,7 @@
throw_speed = 3
throw_range = 5
hitsound = "swing_hit"
- w_class = WEIGHT_CLASS_SMALL
+ w_class = WEIGHT_CLASS_NORMAL
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30)
resistance_flags = FIRE_PROOF
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
@@ -218,7 +218,7 @@
desc = "A miniature welder used during emergencies."
icon_state = "miniwelder"
maximum_fuel = 10
- w_class = WEIGHT_CLASS_TINY
+ w_class = WEIGHT_CLASS_SMALL
materials = list(MAT_METAL = 200, MAT_GLASS = 50)
low_fuel_changes_icon = FALSE
@@ -228,6 +228,7 @@
icon = 'icons/obj/abductor.dmi'
icon_state = "welder"
toolspeed = 0.1
+ w_class = WEIGHT_CLASS_SMALL
light_intensity = 0
origin_tech = "plasmatech=5;engineering=5;abductor=3"
requires_fuel = FALSE
diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm
index 877f8d4999a..1a8197683ee 100644
--- a/code/game/objects/items/tools/wirecutters.dm
+++ b/code/game/objects/items/tools/wirecutters.dm
@@ -89,6 +89,7 @@
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
usesound = 'sound/items/jaws_cut.ogg'
toolspeed = 0.25
+ w_class = WEIGHT_CLASS_NORMAL
random_color = FALSE
/obj/item/wirecutters/power/suicide_act(mob/user)
diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm
index 09e88de8add..e6a81d2d323 100644
--- a/code/game/objects/items/tools/wrench.dm
+++ b/code/game/objects/items/tools/wrench.dm
@@ -59,6 +59,7 @@
throwforce = 8
attack_verb = list("drilled", "screwed", "jabbed")
toolspeed = 0.25
+ w_class = WEIGHT_CLASS_NORMAL
/obj/item/wrench/power/attack_self(mob/user)
playsound(get_turf(user),'sound/items/change_drill.ogg', 50, 1)
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index c28644767fd..8b82fb9e8d6 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -84,6 +84,8 @@
icon_state = "utilitybelt"
item_state = "utility"
use_item_overlays = TRUE
+ max_w_class = WEIGHT_CLASS_NORMAL
+ max_combined_w_class = 18
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
can_hold = list(
@@ -352,6 +354,7 @@
icon_state = "militarybelt"
item_state = "military"
max_w_class = WEIGHT_CLASS_SMALL
+ max_combined_w_class = 18
resistance_flags = FIRE_PROOF
/obj/item/storage/belt/military/sst
@@ -365,12 +368,20 @@
item_state = "utility"
use_item_overlays = TRUE // So it will still show tools in it in case sec get lazy and just glance at it.
storable = TRUE
+ w_class_override = list(
+ /obj/item/crowbar,
+ /obj/item/screwdriver,
+ /obj/item/weldingtool,
+ /obj/item/wirecutters,
+ /obj/item/wrench,
+ /obj/item/multitool
+ )
/obj/item/storage/belt/military/traitor/hacker/populate_contents()
new /obj/item/screwdriver(src, "red")
new /obj/item/wrench(src)
new /obj/item/weldingtool/largetank(src)
- new /obj/item/crowbar/red(src)
+ new /obj/item/crowbar/small(src)
new /obj/item/wirecutters(src, "red")
new /obj/item/stack/cable_coil(src, 30, COLOR_RED)
update_icon()
@@ -707,6 +718,14 @@
origin_tech = "bluespace=5;materials=4;engineering=4;plasmatech=5"
can_hold = list()
large = TRUE
+ w_class_override = list(
+ /obj/item/crowbar,
+ /obj/item/screwdriver,
+ /obj/item/weldingtool,
+ /obj/item/wirecutters,
+ /obj/item/wrench,
+ /obj/item/multitool
+ )
/obj/item/storage/belt/bluespace/owlman
name = "Owlman's utility belt"
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 438bb0bf8a5..7b94c7f0933 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -81,7 +81,6 @@
/obj/item/storage/box/survival_mining/populate_contents()
new /obj/item/clothing/mask/gas/explorer(src)
new /obj/item/tank/internals/emergency_oxygen/engi(src)
- new /obj/item/crowbar/red(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/flashlight/flare/glowstick/emergency(src)
@@ -91,6 +90,7 @@
/obj/item/storage/box/survival_syndi/populate_contents()
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/tank/internals/emergency_oxygen/engi/syndi(src)
+ new /obj/item/crowbar/small(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/reagent_containers/food/pill/initropidril(src)
new /obj/item/flashlight/flare/glowstick/red(src)
@@ -829,8 +829,8 @@
/obj/item/storage/box/responseteam/populate_contents()
new /obj/item/clothing/mask/breath(src)
new /obj/item/tank/internals/emergency_oxygen/engi(src)
+ new /obj/item/crowbar/small(src)
new /obj/item/flashlight/flare(src)
- new /obj/item/crowbar/red(src)
new /obj/item/kitchen/knife/combat(src)
new /obj/item/radio/centcom(src)
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
@@ -842,7 +842,7 @@
/obj/item/storage/box/deathsquad/populate_contents()
new /obj/item/flashlight/flare(src)
- new /obj/item/crowbar/red(src)
+ new /obj/item/crowbar/small(src)
new /obj/item/kitchen/knife/combat(src)
new /obj/item/reagent_containers/food/pill/patch/synthflesh(src)
new /obj/item/reagent_containers/hypospray/autoinjector/survival(src)
diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
index e590708099c..bd81e6ab5de 100644
--- a/code/game/objects/items/weapons/storage/firstaid.dm
+++ b/code/game/objects/items/weapons/storage/firstaid.dm
@@ -160,7 +160,7 @@
med_bot_skin = "machine"
/obj/item/storage/firstaid/machine/populate_contents()
- new /obj/item/weldingtool(src)
+ new /obj/item/weldingtool/mini(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/stack/cable_coil(src)
diff --git a/code/game/objects/items/weapons/storage/storage_base.dm b/code/game/objects/items/weapons/storage/storage_base.dm
index efad0782d27..3fb011695fc 100644
--- a/code/game/objects/items/weapons/storage/storage_base.dm
+++ b/code/game/objects/items/weapons/storage/storage_base.dm
@@ -13,6 +13,8 @@
var/silent = FALSE
/// List of objects which this item can store (if set, it can't store anything else)
var/list/can_hold = list()
+ /// List of objects that can be stored, regardless of w_class
+ var/list/w_class_override = list()
/// List of objects which this item can't store (in effect only if can_hold isn't set)
var/list/cant_hold = list()
/// List of objects which this item overrides the cant_hold list (used to negate cant_hold on specific items. Ex: Allowing Smuggler's Satchels (subtype of backpack) to be stored inside bags of holding.)
@@ -385,9 +387,17 @@
return FALSE
if(I.w_class > max_w_class)
- if(!stop_messages)
- to_chat(usr, "[I] is too big for [src].")
- return FALSE
+ if(length(w_class_override))
+ if(is_type_in_list(I, w_class_override))
+ return TRUE
+ else
+ if(!stop_messages)
+ to_chat(usr, "[I] is too big for [src].")
+ return FALSE
+ else
+ if(!stop_messages)
+ to_chat(usr, "[I] is too big for [src].")
+ return FALSE
var/sum_w_class = I.w_class
for(var/obj/item/item in contents)
diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm
index e4403fb6329..5a84304d7cf 100644
--- a/code/game/objects/items/weapons/storage/toolbox.dm
+++ b/code/game/objects/items/weapons/storage/toolbox.dm
@@ -11,6 +11,8 @@
throw_speed = 2
throw_range = 7
w_class = WEIGHT_CLASS_BULKY
+ max_w_class = WEIGHT_CLASS_NORMAL
+ max_combined_w_class = 18
materials = list(MAT_METAL = 500)
origin_tech = "combat=1;engineering=1"
attack_verb = list("robusted")
@@ -41,7 +43,7 @@
item_state = "toolbox_red"
/obj/item/storage/toolbox/emergency/populate_contents()
- new /obj/item/crowbar/red(src)
+ new /obj/item/crowbar/small(src)
new /obj/item/weldingtool/mini(src)
new /obj/item/extinguisher/mini(src)
if(prob(50))
@@ -107,7 +109,7 @@
new /obj/item/screwdriver/nuke(src)
new /obj/item/wrench(src)
new /obj/item/weldingtool/largetank(src)
- new /obj/item/crowbar/red(src)
+ new /obj/item/crowbar/small(src)
new /obj/item/wirecutters(src, "red")
new /obj/item/multitool/red(src)
new /obj/item/clothing/gloves/combat(src)
diff --git a/code/modules/research/designs/equipment_designs.dm b/code/modules/research/designs/equipment_designs.dm
index 078d34bd7f6..89c1502e61b 100644
--- a/code/modules/research/designs/equipment_designs.dm
+++ b/code/modules/research/designs/equipment_designs.dm
@@ -242,6 +242,15 @@
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
category = list("Equipment")
+/datum/design/minicrowbar
+ name = "Miniature Titanium Crowbar"
+ desc = "A lightweight and portable version of the Crowbar that fits into smaller storages."
+ id = "minicrowbar"
+ req_tech = list("engineering" = 4, "materials" = 3)
+ build_path = /obj/item/crowbar/small
+ build_type = PROTOLATHE
+ materials = list(MAT_TITANIUM = 250)
+ category = list("Equipment")
/datum/design/alienwrench
name = "Alien Wrench"
desc = "An advanced wrench obtained through Abductor technology."
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index 58358bfcb28..1c219bab5e1 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index e5b733ddd2f..972e29535d3 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi
index 0bf7820f3f5..5c23850eee4 100644
Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ