Files
Paradise/code/modules/clothing/suits/suit_storage.dm
Charlie Nolan fe74786905 Made storage nesting better, improved consistency between storage types. (#24699)
* Made storage nesting better, improved consistency between storage types.

* Out, er, space.

* Null safety is good.

* Apply suggestions from code review

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

---------

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
2024-04-10 18:59:43 +00:00

85 lines
2.3 KiB
Plaintext

/obj/item/clothing/suit/storage
var/obj/item/storage/internal/pockets
w_class = WEIGHT_CLASS_NORMAL //we don't want these to be able to fit in their own pockets.
/obj/item/clothing/suit/storage/Initialize(mapload)
. = ..()
pockets = new/obj/item/storage/internal(src)
pockets.storage_slots = 2 //two slots
pockets.max_w_class = WEIGHT_CLASS_SMALL //fit only pocket sized items
pockets.max_combined_w_class = 4
ADD_TRAIT(src, TRAIT_ADJACENCY_TRANSPARENT, ROUNDSTART_TRAIT)
/obj/item/clothing/suit/storage/Destroy()
QDEL_NULL(pockets)
return ..()
/obj/item/clothing/suit/storage/attack_hand(mob/user as mob)
if(pockets?.handle_attack_hand(user))
..(user)
/obj/item/clothing/suit/storage/MouseDrop(obj/over_object as obj)
if(pockets?.handle_mousedrop(usr, over_object))
..(over_object)
/obj/item/clothing/suit/storage/equipped(mob/user, slot)
..()
pockets?.update_viewers()
/obj/item/clothing/suit/storage/Moved(atom/oldloc, dir, forced = FALSE)
. = ..()
pockets?.update_viewers()
/obj/item/clothing/suit/storage/AltClick(mob/user)
if(ishuman(user) && Adjacent(user) && !user.incapacitated(FALSE, TRUE))
pockets?.open(user)
add_fingerprint(user)
return
if(isobserver(user))
pockets?.show_to(user)
/obj/item/clothing/suit/storage/attack_ghost(mob/user)
if(isobserver(user))
// Revenants don't get to play with the toys.
pockets.show_to(user)
return ..()
/obj/item/clothing/suit/storage/attackby(obj/item/W as obj, mob/user as mob, params)
..()
return pockets?.attackby(W, user, params)
/obj/item/clothing/suit/storage/emp_act(severity)
..()
pockets?.emp_act(severity)
/obj/item/clothing/suit/storage/hear_talk(mob/M, list/message_pieces)
pockets?.hear_talk(M, message_pieces)
..()
/obj/item/clothing/suit/storage/hear_message(mob/M, msg)
pockets?.hear_message(M, msg)
..()
/obj/item/clothing/suit/storage/proc/return_inv()
var/list/L = list( )
L += src.contents
for(var/obj/item/storage/S in src)
L += S.return_inv()
for(var/obj/item/gift/G in src)
L += G.gift
if(isstorage(G.gift))
L += G.gift:return_inv()
return L
/obj/item/clothing/suit/storage/serialize()
var/list/data = ..()
data["pockets"] = pockets?.serialize()
return data
/obj/item/clothing/suit/storage/deserialize(list/data)
qdel(pockets)
pockets = list_to_object(data["pockets"], src)