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