diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index c996a6bfe89..ebd3e3f3f4d 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -271,7 +271,7 @@ var/list/uplink_items = list() /datum/uplink_item/ammo/ammobag name = "Ammo Duffelbag - Shotgun Ammo Grab Bag" desc = "A duffelbag filled with Bulldog ammo to kit out an entire team, at a discounted price." - item = /obj/item/weapon/storage/backpack/dufflebag/syndieammo/loaded + item = /obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/loaded cost = 10 //bulk buyer's discount. Very useful if you're buying a mech and dont have TC left to buy people non-shotgun guns gamemodes = list(/datum/game_mode/nuclear) @@ -511,7 +511,7 @@ var/list/uplink_items = list() /datum/uplink_item/device_tools/surgerybag name = "Syndicate Surgery Dufflebag" desc = "The Syndicate surgery dufflebag is a toolkit containing all surgery tools, surgical drapes, a Syndicate brand MMI, a straitjacket, and a muzzle." - item = /obj/item/weapon/storage/backpack/dufflebag/syndiesurgery + item = /obj/item/weapon/storage/backpack/dufflebag/syndie/surgery cost = 4 /datum/uplink_item/device_tools/medkit @@ -669,6 +669,12 @@ var/list/uplink_items = list() item = /obj/item/weapon/storage/box/syndie_kit/imp_adrenal cost = 8 +/datum/uplink_item/implants/storage + name = "Storage Implant" + desc = "An implant injected into the body and later used to store up to two big items in a subspace pocket." + item = /obj/item/weapon/storage/box/syndie_kit/imp_storage + cost = 8 + /datum/uplink_item/implants/microbomb name = "Microbomb Implant" desc = "An implant injected into the body, and later activated either manually or automatically upon death. The more implants inside of you, the higher the explosive power. \ diff --git a/code/game/objects/items/weapons/implants/implant_storage.dm b/code/game/objects/items/weapons/implants/implant_storage.dm new file mode 100644 index 00000000000..f9961b46152 --- /dev/null +++ b/code/game/objects/items/weapons/implants/implant_storage.dm @@ -0,0 +1,48 @@ +/obj/item/weapon/storage/internal/implant + name = "bluespace pocket" + max_w_class = 3 + max_combined_w_class = 6 + silent = 1 + + +/obj/item/weapon/implant/storage + name = "storage implant" + desc = "Stores up to two big items in a bluespace pocket." + icon_state = "storage" + origin_tech = "materials=2;magnets=4;bluespace=4;syndicate=4" + item_color = "r" + var/obj/item/weapon/storage/internal/implant/storage + +/obj/item/weapon/implant/storage/New() + ..() + storage = new /obj/item/weapon/storage/internal/implant(src) + +/obj/item/weapon/implant/storage/activate() + storage.MouseDrop(imp_in) + +/obj/item/weapon/implant/storage/removed(source) + if(..()) + storage.close_all() + return 1 + +/obj/item/weapon/implant/storage/implant(mob/source) + var/obj/item/weapon/implant/storage/imp_e = locate(src.type) in source + if(imp_e) + imp_e.storage.storage_slots += storage.storage_slots + imp_e.storage.max_combined_w_class += storage.max_combined_w_class + imp_e.storage.contents += storage.contents + + storage.close_all() + storage.show_to(source) + + qdel(src) + return 1 + + return ..() + +/obj/item/weapon/implanter/storage + name = "implanter (storage)" + +/obj/item/weapon/implanter/storage/New() + imp = new /obj/item/weapon/implant/storage(src) + ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 84b158e9e4b..1cabd4c4302 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -299,24 +299,31 @@ slowdown = 1 max_combined_w_class = 27 -/obj/item/weapon/storage/backpack/dufflebag/syndiemed +/obj/item/weapon/storage/backpack/dufflebag/syndie + name = "suspicious looking dufflebag" + desc = "A large dufflebag for holding extra tactical supplies." + icon_state = "duffle-syndie" + item_state = "duffle-syndiemed" + origin_tech = "syndicate=1" + silent = 1 + slowdown = 0 + +/obj/item/weapon/storage/backpack/dufflebag/syndie/med name = "medical dufflebag" desc = "A large dufflebag for holding extra tactical medical supplies." icon_state = "duffle-syndiemed" item_state = "duffle-syndiemed" - slowdown = 0 -/obj/item/weapon/storage/backpack/dufflebag/syndieammo +/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo name = "ammunition dufflebag" desc = "A large dufflebag for holding extra weapons ammunition and supplies." icon_state = "duffle-syndieammo" item_state = "duffle-syndieammo" - slowdown = 0 -/obj/item/weapon/storage/backpack/dufflebag/syndieammo/loaded +/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/loaded desc = "A large dufflebag, packed to the brim with Bulldog shotgun ammo." -/obj/item/weapon/storage/backpack/dufflebag/syndieammo/loaded/New() +/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/loaded/New() ..() contents = list() new /obj/item/ammo_box/magazine/m12g(src) @@ -330,14 +337,14 @@ new /obj/item/ammo_box/magazine/m12g/dragon(src) return -/obj/item/weapon/storage/backpack/dufflebag/syndiesurgery - name = "Syndicate surgery dufflebag" - desc = "A menacingly looking dufflebag for holding surgery tools." +/obj/item/weapon/storage/backpack/dufflebag/syndie/surgery + name = "surgery dufflebag" + desc = "A suspicious looking dufflebag for holding surgery tools." icon_state = "duffle-syndiemed" item_state = "duffle-syndiemed" storage_slots = 10 -/obj/item/weapon/storage/backpack/dufflebag/syndiesurgery/New() +/obj/item/weapon/storage/backpack/dufflebag/syndie/surgery/New() ..() contents = list() new /obj/item/weapon/scalpel(src) diff --git a/code/game/objects/items/weapons/storage/internal.dm b/code/game/objects/items/weapons/storage/internal.dm new file mode 100644 index 00000000000..ae927ca5808 --- /dev/null +++ b/code/game/objects/items/weapons/storage/internal.dm @@ -0,0 +1,42 @@ +/obj/item/weapon/storage/internal + storage_slots = 2 + max_w_class = 2 + max_combined_w_class = 4 + w_class = 4 + var/priority = 1 + +/*obj/item/weapon/storage/internal/pocket/New() + ..() + if(loc) name = loc.name + +/obj/item/weapon/storage/internal/pocket/big + max_w_class = 3 + max_combined_w_class = 6 + +/obj/item/weapon/storage/internal/pocket/small + storage_slots = 1 + max_combined_w_class = 2 + priority = 0 + +/obj/item/weapon/storage/internal/pocket/tiny + storage_slots = 1 + max_w_class = 1 + max_combined_w_class = 1 + priority = 0 + + +/obj/item/weapon/storage/internal/pocket/small/detective + priority = 1 + +/obj/item/weapon/storage/internal/pocket/small/detective/New() + ..() + new /obj/item/weapon/reagent_containers/food/drinks/flask/det(src) + + +proc/isstorage(var/atom/A) + if(istype(A, /obj/item/weapon/storage)) + return 1 + + if(istype(A, /obj/item/clothing)) + var/obj/item/clothing/C = A + if(C.pockets) return 1*/ \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 4dd83b2c20c..72b5d09edfa 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -9,6 +9,7 @@ name = "storage" icon = 'icons/obj/storage.dmi' w_class = 3.0 + var/silent = 0 // No message on putting items in var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) var/list/is_seeing = new/list() //List of mobs which are currently seeing the contents of this item's storage @@ -290,6 +291,8 @@ if(usr) if(!usr.unEquip(W)) return 0 + if(silent) + prevent_warning = 1 W.loc = src W.on_enter_storage(src) if(usr) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 703a17807d5..4d3e413f51d 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -71,6 +71,7 @@ icon_state = "syndicate" item_state = "toolbox_syndi" origin_tech = "combat=1;syndicate=1" + silent = 1 force = 15 throwforce = 18 @@ -82,7 +83,7 @@ new /obj/item/weapon/crowbar/red(src) new /obj/item/weapon/wirecutters(src, "red") new /obj/item/device/multitool(src) - new /obj/item/clothing/gloves/color/red/insulated(src) + new /obj/item/clothing/gloves/combat(src) /obj/item/weapon/storage/toolbox/drone name = "mechanical toolbox" diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index becd01a5308..84a6af7a6c4 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -58,6 +58,7 @@ new /obj/item/weapon/implanter/emp(src) new /obj/item/weapon/implanter/adrenalin(src) new /obj/item/weapon/implanter/explosive(src) + new /obj/item/weapon/implanter/storage(src) return if("hacker") @@ -148,6 +149,15 @@ return +/obj/item/weapon/storage/box/syndie_kit/imp_storage + name = "boxed storage implant (with injector)" + +/obj/item/weapon/storage/box/syndie_kit/imp_storage/New() + ..() + new /obj/item/weapon/implanter/storage(src) + return + + /obj/item/weapon/storage/box/syndie_kit/space name = "boxed space suit and helmet" can_hold = list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index b6ad237fbba..a44de8f144d 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -30,7 +30,7 @@ new /obj/item/ammo_box/magazine/m10mm(src) new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/storage/box/teargas(src) - new /obj/item/weapon/storage/backpack/dufflebag/syndiemed(src) + new /obj/item/weapon/storage/backpack/dufflebag/syndie/med(src) new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src) new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src) new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src) diff --git a/icons/obj/implants.dmi b/icons/obj/implants.dmi index ed530528cc3..8dc2f08fdcb 100644 Binary files a/icons/obj/implants.dmi and b/icons/obj/implants.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index ce46721a855..92283417a29 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/tgstation.dme b/tgstation.dme index f5124222594..0bc0e1e81dc 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -681,6 +681,7 @@ #include "code\game\objects\items\weapons\implants\implant_explosive.dm" #include "code\game\objects\items\weapons\implants\implant_freedom.dm" #include "code\game\objects\items\weapons\implants\implant_loyality.dm" +#include "code\game\objects\items\weapons\implants\implant_storage.dm" #include "code\game\objects\items\weapons\implants\implantcase.dm" #include "code\game\objects\items\weapons\implants\implantchair.dm" #include "code\game\objects\items\weapons\implants\implanter.dm" @@ -696,6 +697,7 @@ #include "code\game\objects\items\weapons\storage\briefcase.dm" #include "code\game\objects\items\weapons\storage\fancy.dm" #include "code\game\objects\items\weapons\storage\firstaid.dm" +#include "code\game\objects\items\weapons\storage\internal.dm" #include "code\game\objects\items\weapons\storage\lockbox.dm" #include "code\game\objects\items\weapons\storage\secure.dm" #include "code\game\objects\items\weapons\storage\storage.dm"