From e666d2e76b64d48d996cb72088c99764805eda65 Mon Sep 17 00:00:00 2001 From: Core0verload Date: Thu, 14 Jul 2016 10:36:26 +0300 Subject: [PATCH] ports pockets (from Animus Green) and adds them to some clothing. This PR ports pockets (from Animus Green) and adds them to some clothing. Shoes that support storing items now use pockets system. Some hats have 1 small pocket. Detective's hat spawns with a flask in it. Clown's mask has a single tiny top-secret pocket. Honk! This PR also includes two or three path fixes. It also fixes internal storages (pockets, storage implant) having less "max depth" than external ones. --- code/__DEFINES/misc.dm | 5 + code/_onclick/click.dm | 17 +++- code/game/gamemodes/wizard/artefact.dm | 4 +- code/game/machinery/vending.dm | 2 +- .../objects/items/weapons/storage/internal.dm | 64 ++++++++++--- .../objects/items/weapons/storage/storage.dm | 7 +- code/modules/clothing/chameleon.dm | 2 +- code/modules/clothing/clothing.dm | 93 ++++++++++++------- code/modules/clothing/head/jobs.dm | 4 +- code/modules/clothing/head/misc.dm | 7 +- code/modules/clothing/masks/gasmask.dm | 1 + code/modules/clothing/outfits/standard.dm | 4 +- code/modules/clothing/shoes/miscellaneous.dm | 13 ++- code/modules/clothing/spacesuits/hardsuit.dm | 4 +- code/modules/clothing/suits/armor.dm | 2 + code/modules/clothing/suits/cloaks.dm | 2 +- code/modules/clothing/suits/jobs.dm | 7 ++ code/modules/clothing/suits/labcoat.dm | 1 + code/modules/clothing/suits/miscellaneous.dm | 8 +- code/modules/mob/living/living.dm | 3 +- 20 files changed, 178 insertions(+), 72 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 4a51b132b3f..a7011f92e4a 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -475,3 +475,8 @@ var/global/list/ghost_others_options = list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define COORD(A) "([A.x],[A.y],[A.z])" #define INCREMENT_TALLY(L, stat) if(L[stat]){L[stat]++}else{L[stat] = 1} + +// Inventory depth: limits how many nested storage items you can access directly. +// 1: stuff in mob, 2: stuff in backpack, 3: stuff in box in backpack, etc +#define INVENTORY_DEPTH 3 +#define STORAGE_VIEW_DEPTH 2 diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 12cd1ec25da..b029eb69863 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -110,7 +110,7 @@ return // operate three levels deep here (item in backpack in src; item in box in backpack in src, not any deeper) - if(!isturf(A) && A == loc || (A in contents) || (A.loc in contents) || (A.loc && (A.loc.loc in contents))) + if(A.ClickAccessible(src, depth=INVENTORY_DEPTH)) // No adjacency needed if(W) var/resolved = A.attackby(W,src) @@ -274,6 +274,21 @@ /atom/proc/CtrlShiftClick(mob/user) return +/* + Helper to check can the mob click/access an item. + Used by mob inventory and storage items. +*/ +/atom/proc/ClickAccessible(mob/user, depth=1) + if(src == user.loc || (src in user.contents)) + return TRUE + + if(loc && depth > 1) + return loc.ClickAccessible(user, depth-1) + +/turf/ClickAccessible(mob/user, depth=1) + return + + /* Misc helpers diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 63fb6b0ae1b..1a41e73ef7c 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -430,11 +430,11 @@ var/global/list/multiverse = list() M.equip_to_slot_or_del(sword, slot_r_hand) if("soviet") - M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head) + M.equip_to_slot_or_del(new /obj/item/clothing/head/pirate/captain(M), slot_head) M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/pirate/captain(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) M.equip_to_slot_or_del(sword, slot_r_hand) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 45ecfacc519..e000b2d3016 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -900,7 +900,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/clothing/suit/snowman = 1, /obj/item/clothing/head/snowman = 1) contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 2,/obj/item/clothing/glasses/sunglasses/garb = 2) - premium = list(/obj/item/clothing/suit/hgpirate = 2, /obj/item/clothing/head/hgpiratecap = 2, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1, /obj/item/weapon/skub = 1) + premium = list(/obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1, /obj/item/weapon/skub = 1) refill_canister = /obj/item/weapon/vending_refill/autodrobe /obj/machinery/vending/dinnerware diff --git a/code/game/objects/items/weapons/storage/internal.dm b/code/game/objects/items/weapons/storage/internal.dm index ae927ca5808..0947d92f72e 100644 --- a/code/game/objects/items/weapons/storage/internal.dm +++ b/code/game/objects/items/weapons/storage/internal.dm @@ -1,39 +1,79 @@ /obj/item/weapon/storage/internal storage_slots = 2 max_w_class = 2 - max_combined_w_class = 4 + max_combined_w_class = 50 // Limited by slots, not combined weight class w_class = 4 - var/priority = 1 -/*obj/item/weapon/storage/internal/pocket/New() +/obj/item/weapon/storage/internal/ClickAccessible(mob/user, depth=1) + if(loc) + return loc.ClickAccessible(user, depth) + +/obj/item/weapon/storage/internal/Adjacent(A) + if(loc) + return loc.Adjacent(A) + +/obj/item/weapon/storage/internal/pocket + var/priority = TRUE + // TRUE if opens when clicked, like a backpack. + // FALSE if opens only when dragged on mob's icon (hidden pocket) + var/quickdraw = FALSE + // TRUE if you can quickdraw items from it with alt-click. + +/obj/item/weapon/storage/internal/pocket/New() ..() - if(loc) name = loc.name + if(loc) + name = loc.name + +/obj/item/weapon/storage/internal/pocket/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) + . = ..() + if(. && silent && !prevent_warning) + if(quickdraw) + user << "You discreetly slip [W] into [src]. Alt-click [src] to remove it." + else + user << "You discreetly slip [W] into [src]." /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 + priority = FALSE /obj/item/weapon/storage/internal/pocket/tiny storage_slots = 1 max_w_class = 1 - max_combined_w_class = 1 - priority = 0 + priority = FALSE +/obj/item/weapon/storage/internal/pocket/shoes + can_hold = list( + /obj/item/weapon/kitchen/knife, /obj/item/weapon/switchblade, /obj/item/weapon/pen, + /obj/item/weapon/scalpel, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/dnainjector, + /obj/item/weapon/reagent_containers/hypospray/medipen, /obj/item/weapon/reagent_containers/dropper, + /obj/item/weapon/implanter, /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool/mini, + /obj/item/device/firing_pin + ) + //can hold both regular pens and energy daggers. made for your every-day tactical librarians/murderers. + priority = FALSE + quickdraw = TRUE + silent = TRUE + +/obj/item/weapon/storage/internal/pocket/shoes/clown + can_hold = list( + /obj/item/weapon/kitchen/knife, /obj/item/weapon/switchblade, /obj/item/weapon/pen, + /obj/item/weapon/scalpel, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/dnainjector, + /obj/item/weapon/reagent_containers/hypospray/medipen, /obj/item/weapon/reagent_containers/dropper, + /obj/item/weapon/implanter, /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool/mini, + /obj/item/device/firing_pin, /obj/item/weapon/bikehorn) /obj/item/weapon/storage/internal/pocket/small/detective - priority = 1 + priority = TRUE // so the detectives would discover pockets in their hats /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) +/* +/proc/isstorage(var/atom/A) if(istype(A, /obj/item/weapon/storage)) return 1 diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 8518b05a5dd..5b16338e67e 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -36,8 +36,9 @@ if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech return - if(over_object == M && Adjacent(M)) // this must come before the screen objects only block - orient2hud(M) // dunno why it wasn't before + // this must come before the screen objects only block, dunno why it wasn't before + if(over_object == M && (src.ClickAccessible(M, depth=STORAGE_VIEW_DEPTH) || Adjacent(M))) + orient2hud(M) if(M.s_active) M.s_active.close(M) show_to(M) @@ -205,7 +206,7 @@ number = 1 -//This proc determins the size of the inventory to be displayed. Please touch it only if you know what you're doing. +//This proc determines the size of the inventory to be displayed. Please touch it only if you know what you're doing. /obj/item/weapon/storage/proc/orient2hud(mob/user) var/adjusted_contents = contents.len diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index bd9ad082428..67f1d63f8dc 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -303,7 +303,7 @@ flags = NOSLIP origin_tech = "syndicate=2" burn_state = FIRE_PROOF - can_hold_items = 1 + pockets = /obj/item/weapon/storage/internal/pocket/shoes armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/shoes/chameleon/New() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index e67278d5170..fc779fca9fd 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -24,10 +24,72 @@ var/list/user_vars_to_edit = list() //VARNAME = VARVALUE eg: "name" = "butts" var/list/user_vars_remembered = list() //Auto built by the above + dropped() + equipped() + var/obj/item/weapon/storage/internal/pocket/pockets = null + +/obj/item/clothing/New() + ..() + if(ispath(pockets)) + pockets = new pockets(src) + +/obj/item/clothing/MouseDrop(atom/over_object) + var/mob/M = usr + + if(pockets && over_object == M) + return pockets.MouseDrop(over_object) + + if(istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech + return + + if(!M.restrained() && !M.stat && loc == M && istype(over_object, /obj/screen/inventory/hand)) + var/obj/screen/inventory/hand/H = over_object + if(!M.unEquip(src)) + return + switch(H.slot_id) + if(slot_r_hand) + M.put_in_r_hand(src) + if(slot_l_hand) + M.put_in_l_hand(src) + + add_fingerprint(usr) + +/obj/item/clothing/throw_at(atom/target, range, speed, mob/thrower, spin) + if(pockets) + pockets.close_all() + return ..() + +/obj/item/clothing/attack_hand(mob/user) + if(pockets && pockets.priority && ismob(loc)) + pockets.show_to(user) + else + return ..() + +/obj/item/clothing/attackby(obj/item/W, mob/user, params) + if(pockets) + return pockets.attackby(W, user, params) + else + return ..() + +/obj/item/clothing/AltClick(mob/user) + if(pockets && pockets.quickdraw && pockets.contents.len && !user.incapacitated()) + var/obj/item/I = pockets.contents[1] + if(!I) + return + pockets.remove_from_storage(I, get_turf(src)) + + if(!user.put_in_hands(I)) + user << "You fumble for [I] and it falls on the floor." + return + user.visible_message("[user] draws [I] from [src]!", "You draw [I] from [src].") + else + return ..() + /obj/item/clothing/Destroy() if(isliving(loc)) dropped(loc) + if(pockets) + qdel(pockets) + pockets = null user_vars_remembered = null //Oh god somebody put REFERENCES in here? not to worry, we'll clean it up return ..() @@ -209,10 +271,6 @@ BLIND // can't see anything slowdown = SHOES_SLOWDOWN var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/bloody_shoes = list(BLOOD_STATE_HUMAN = 0,BLOOD_STATE_XENO = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) - var/can_hold_items = 0//if set to 1, the shoe can hold knives and edaggers - var/obj/held_item - var/list/valid_held_items = list(/obj/item/weapon/kitchen/knife, /obj/item/weapon/pen, /obj/item/weapon/switchblade, /obj/item/weapon/scalpel, /obj/item/weapon/reagent_containers/syringe, /obj/item/weapon/dnainjector)//can hold both regular pens and energy daggers. made for your every-day tactical librarians/murderers. - /obj/item/clothing/shoes/worn_overlays(var/isinhands = FALSE) . = list() @@ -235,33 +293,6 @@ BLIND // can't see anything var/mob/M = loc M.update_inv_shoes() -/obj/item/clothing/shoes/attackby(obj/item/I, mob/user, params) - ..() - if(!can_hold_items) - return - if(held_item) - user << "There's already something in [src]." - return - if(is_type_in_list(I, valid_held_items))//can hold both regular pens and energy daggers. made for your every-day tactical librarians/murderers. - if(I.w_class > 2)//if the object is too big (like if it's a cleaver or an extended edagger) it wont fit - user << "[I] is currently too big to fit into [src]. " - return - if(!user.drop_item()) - return - I.loc = src - held_item = I - user << "You discreetly slip [I] into [src]. Alt-click [src] to remove it." - -/obj/item/clothing/shoes/AltClick(mob/user) - if(user.incapacitated() || !held_item || !can_hold_items) - return - if(!user.put_in_hands(held_item)) - user << "You fumble for [held_item] and it falls on the floor." - held_item = null - return - user.visible_message("[user] draws [held_item] from their shoes!", "You draw [held_item] from [src].") - held_item = null - /obj/item/proc/negates_gravity() return 0 diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 12fb3241c2a..730c7b1a556 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -8,7 +8,7 @@ desc = "The commander in chef's head wear." strip_delay = 10 put_on_delay = 10 - + pockets = /obj/item/weapon/storage/internal/pocket/small dog_fashion = /datum/dog_fashion/head/chef /obj/item/clothing/head/chefhat/suicide_act(mob/user) @@ -64,7 +64,7 @@ icon_state = "detective" armor = list(melee = 25, bullet = 5, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) var/candy_cooldown = 0 - + pockets = /obj/item/weapon/storage/internal/pocket/small/detective dog_fashion = /datum/dog_fashion/head/detective /obj/item/clothing/head/det_hat/AltClick() diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 157c2254b3d..d4804d24084 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -116,12 +116,9 @@ desc = "Yarr." icon_state = "pirate" item_state = "pirate" - dog_fashion = /datum/dog_fashion/head/pirate -/obj/item/clothing/head/hgpiratecap - name = "pirate hat" - desc = "Yarr." +/obj/item/clothing/head/pirate/captain icon_state = "hgpiratecap" item_state = "hgpiratecap" @@ -136,6 +133,7 @@ desc = "Gentleman, elite aboard!" icon_state = "bowler" item_state = "bowler" + pockets = /obj/item/weapon/storage/internal/pocket/small /obj/item/clothing/head/witchwig name = "witch costume wig" @@ -176,6 +174,7 @@ icon_state = "fedora" item_state = "fedora" desc = "A really cool hat if you're a mobster. A really lame hat if you're not." + pockets = /obj/item/weapon/storage/internal/pocket/small /obj/item/clothing/head/fedora/suicide_act(mob/user) if(user.gender == FEMALE) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 13111438142..9382150950e 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -64,6 +64,7 @@ burn_state = FLAMMABLE actions_types = list(/datum/action/item_action/adjust) dog_fashion = /datum/dog_fashion/head/clown + pockets = /obj/item/weapon/storage/internal/pocket/tiny // Honk! /obj/item/clothing/mask/gas/clown_hat/attack_self(mob/user) AltClick(user) diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index e97666f16d8..f07bc6ad6b8 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -272,12 +272,12 @@ name = "Soviet Admiral" uniform = /obj/item/clothing/under/soviet - head = /obj/item/clothing/head/hgpiratecap + head = /obj/item/clothing/head/pirate/captain shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat ears = /obj/item/device/radio/headset/headset_cent glasses = /obj/item/clothing/glasses/thermal/eyepatch - suit = /obj/item/clothing/suit/hgpirate + suit = /obj/item/clothing/suit/pirate/captain back = /obj/item/weapon/storage/backpack/satchel belt = /obj/item/weapon/gun/projectile/revolver/mateba diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index b021a20ba6f..5b36a0c22fd 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -20,7 +20,7 @@ armor = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 50, bio = 10, rad = 0) strip_delay = 70 burn_state = FIRE_PROOF - can_hold_items = 1 + pockets = /obj/item/weapon/storage/internal/pocket/shoes /obj/item/clothing/shoes/combat/swat //overpowered boots for death squads name = "\improper SWAT boots" @@ -72,8 +72,7 @@ slowdown = SHOES_SLOWDOWN+1 item_color = "clown" var/footstep = 1 //used for squeeks whilst walking - can_hold_items = 1 - valid_held_items = list(/obj/item/weapon/bikehorn) + pockets = /obj/item/weapon/storage/internal/pocket/shoes/clown /obj/item/clothing/shoes/clown_shoes/step_action() if(footstep > 1) @@ -91,7 +90,7 @@ strip_delay = 50 put_on_delay = 50 burn_state = FIRE_PROOF - can_hold_items = 1 + pockets = /obj/item/weapon/storage/internal/pocket/shoes /obj/item/clothing/shoes/jackboots/fast slowdown = -1 @@ -105,7 +104,7 @@ min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT heat_protection = FEET|LEGS max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT - can_hold_items = 1 + pockets = /obj/item/weapon/storage/internal/pocket/shoes /obj/item/clothing/shoes/workboots name = "work boots" @@ -114,7 +113,7 @@ item_state = "jackboots" strip_delay = 40 put_on_delay = 40 - can_hold_items = 1 + pockets = /obj/item/weapon/storage/internal/pocket/shoes /obj/item/clothing/shoes/workboots/mining name = "mining boots" @@ -161,4 +160,4 @@ desc = "A pair of costume boots fashioned after bird talons." icon_state = "griffinboots" item_state = "griffinboots" - can_hold_items = 1 + pockets = /obj/item/weapon/storage/internal/pocket/shoes diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index c439f511d1d..4df444fa0bc 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -151,6 +151,7 @@ item_state = "eng_hardsuit" armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine +// pockets = /obj/item/weapon/storage/internal/pocket //Atmospherics /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos @@ -196,6 +197,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite jetpack = /obj/item/weapon/tank/jetpack/suit +// pockets = /obj/item/weapon/storage/internal/pocket/big //Mining hardsuit @@ -221,7 +223,7 @@ armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining - +// pockets = /obj/item/weapon/storage/internal/pocket //Syndicate hardsuit diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 1531c6780a0..b57ec2b4ad9 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -36,6 +36,7 @@ armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) cold_protection = CHEST|GROIN|LEGS|ARMS heat_protection = CHEST|GROIN|LEGS|ARMS +// pockets = /obj/item/weapon/storage/internal/pocket strip_delay = 80 /obj/item/clothing/suit/armor/hos/trenchcoat @@ -72,6 +73,7 @@ cold_protection = CHEST|GROIN|LEGS|ARMS heat_protection = CHEST|GROIN|LEGS|ARMS dog_fashion = null +// pockets = /obj/item/weapon/storage/internal/pocket /obj/item/clothing/suit/armor/vest/capcarapace name = "captain's carapace" diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 53e4b59866d..a021f5a244a 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -18,7 +18,7 @@ flags = NODROP flags_inv = HIDEHAIR|HIDEEARS -/obj/item/clothing/cloak/suicide_act(mob/user) +/obj/item/clothing/suit/cloak/suicide_act(mob/user) user.visible_message("[user] is strangling themself with [src]! It looks like they're trying to commit suicide.") return(OXYLOSS) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index a1746d9a328..35042edb026 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -11,6 +11,7 @@ blood_overlay_type = "armor" body_parts_covered = CHEST|GROIN allowed = list(/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/device/plant_analyzer,/obj/item/seeds,/obj/item/weapon/reagent_containers/glass/bottle, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/cultivator,/obj/item/weapon/reagent_containers/spray/pestspray,/obj/item/weapon/hatchet,/obj/item/weapon/storage/bag/plants) +// pockets = /obj/item/weapon/storage/internal/pocket //Captain /obj/item/clothing/suit/captunic @@ -32,6 +33,7 @@ allowed = list(/obj/item/weapon/storage/book/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/internals/emergency_oxygen) hooded = 1 hoodtype = /obj/item/clothing/head/chaplain_hood +// pockets = /obj/item/weapon/storage/internal/pocket /obj/item/clothing/head/chaplain_hood name = "chaplain hood" @@ -50,6 +52,7 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS flags_inv = HIDESHOES|HIDEJUMPSUIT allowed = list(/obj/item/weapon/storage/book/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/internals/emergency_oxygen) +// pockets = /obj/item/weapon/storage/internal/pocket //Chef /obj/item/clothing/suit/toggle/chef @@ -62,6 +65,8 @@ body_parts_covered = CHEST|GROIN|ARMS allowed = list(/obj/item/weapon/kitchen) togglename = "sleeves" +// pockets = /obj/item/weapon/storage/internal/pocket + //Cook /obj/item/clothing/suit/apron/chef @@ -85,6 +90,7 @@ armor = list(melee = 25, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) cold_protection = CHEST|GROIN|LEGS|ARMS heat_protection = CHEST|GROIN|LEGS|ARMS +// pockets = /obj/item/weapon/storage/internal/pocket /obj/item/clothing/suit/det_suit/grey name = "noir trenchcoat" @@ -101,6 +107,7 @@ blood_overlay_type = "armor" allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/t_scanner,/obj/item/device/radio) burn_state = FIRE_PROOF +// pockets = /obj/item/weapon/storage/internal/pocket //Lawyer /obj/item/clothing/suit/toggle/lawyer diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index d3bb738735c..aa85e571b9e 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -8,6 +8,7 @@ allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/weapon/soap,/obj/item/device/sensor_device,/obj/item/weapon/tank/internals/emergency_oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) togglename = "buttons" +// pockets = /obj/item/weapon/storage/internal/pocket /obj/item/clothing/suit/toggle/labcoat/cmo name = "chief medical officer's labcoat" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index a56797d05ea..862d6d2a645 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -37,13 +37,13 @@ icon_state = "pirate" item_state = "pirate" allowed = list(/obj/item/weapon/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum) +// pockets = /obj/item/weapon/storage/internal/pocket -/obj/item/clothing/suit/hgpirate +/obj/item/clothing/suit/pirate/captain name = "pirate captain coat" desc = "Yarr." icon_state = "hgpirate" item_state = "hgpirate" - allowed = list(/obj/item/weapon/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum) /obj/item/clothing/suit/cyborg_suit @@ -91,6 +91,7 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT burn_state = FIRE_PROOF +// pockets = /obj/item/weapon/storage/internal/pocket /obj/item/clothing/suit/hastur name = "\improper Hastur's robe" @@ -153,6 +154,7 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT allowed = list(/obj/item/weapon/storage/book/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/internals/emergency_oxygen) +// pockets = /obj/item/weapon/storage/internal/pocket /obj/item/clothing/suit/cardborg @@ -332,6 +334,7 @@ body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT +// pockets = /obj/item/weapon/storage/internal/pocket /obj/item/clothing/suit/jacket/leather name = "leather jacket" @@ -419,6 +422,7 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter) hooded = 1 +// pockets = /obj/item/weapon/storage/internal/pocket /obj/item/clothing/head/winterhood name = "winter hood" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index dc93198a8a1..313781735f7 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -588,8 +588,7 @@ Sorry Giacom. Please don't be mad :( if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. pulledby.stop_pulling() - if (s_active && !(s_active in contents) && !(s_active.loc in contents)) - // It's ugly. But everything related to inventory/storage is. -- c0 + if (s_active && !(s_active.ClickAccessible(src, depth=STORAGE_VIEW_DEPTH) || s_active.Adjacent(src))) s_active.close(src) /mob/living/movement_delay()