From bd8d70ec26b648fe409847cc5e93e3103df8f8de Mon Sep 17 00:00:00 2001 From: c0 Date: Tue, 4 Aug 2015 18:28:38 +0300 Subject: [PATCH] New traitor item: storage implant --- code/datums/uplink_item.dm | 10 +++- .../items/weapons/implants/implant_storage.dm | 48 ++++++++++++++++++ .../objects/items/weapons/storage/backpack.dm | 27 ++++++---- .../objects/items/weapons/storage/internal.dm | 42 +++++++++++++++ .../objects/items/weapons/storage/storage.dm | 3 ++ .../objects/items/weapons/storage/toolbox.dm | 3 +- .../items/weapons/storage/uplink_kits.dm | 10 ++++ .../crates_lockers/closets/syndicate.dm | 2 +- icons/obj/implants.dmi | Bin 2159 -> 2481 bytes icons/obj/storage.dmi | Bin 54379 -> 54306 bytes tgstation.dme | 2 + 11 files changed, 133 insertions(+), 14 deletions(-) create mode 100644 code/game/objects/items/weapons/implants/implant_storage.dm create mode 100644 code/game/objects/items/weapons/storage/internal.dm 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 ed530528cc35dbbaf60baeb7636ab419b000e365..8dc2f08fdcb8ff736b8b73d26155e23e24f60787 100644 GIT binary patch delta 1826 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 D6u8#i diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index ce46721a855222bca71f488737b0144547683a9c..92283417a29d2885d5fe56b8de44175b2a593f06 100644 GIT binary patch delta 14182 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 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"