Files
Bubberstation/code/game/objects/items/storage/wallets.dm
2020-07-16 03:02:40 +03:00

126 lines
3.1 KiB
Plaintext

/obj/item/storage/wallet
name = "wallet"
desc = "It can hold a few small and personal things."
icon_state = "wallet"
w_class = WEIGHT_CLASS_SMALL
resistance_flags = FLAMMABLE
slot_flags = ITEM_SLOT_ID
component_type = /datum/component/storage/concrete/wallet
var/obj/item/card/id/front_id = null
var/list/combined_access
var/cached_flat_icon
/obj/item/storage/wallet/ComponentInitialize()
. = ..()
var/datum/component/storage/STR = GetComponent(/datum/component/storage/concrete/wallet)
STR.max_items = 4
STR.set_holdable(list(
/obj/item/stack/spacecash,
/obj/item/holochip,
/obj/item/card,
/obj/item/clothing/mask/cigarette,
/obj/item/flashlight/pen,
/obj/item/seeds,
/obj/item/stack/medical,
/obj/item/toy/crayon,
/obj/item/coin,
/obj/item/dice,
/obj/item/disk,
/obj/item/implanter,
/obj/item/lighter,
/obj/item/lipstick,
/obj/item/match,
/obj/item/paper,
/obj/item/pen,
/obj/item/photo,
/obj/item/reagent_containers/dropper,
/obj/item/reagent_containers/syringe,
/obj/item/screwdriver,
/obj/item/stamp),
list(/obj/item/screwdriver/power))
/obj/item/storage/wallet/Exited(atom/movable/AM)
. = ..()
refreshID()
/obj/item/storage/wallet/proc/refreshID()
LAZYCLEARLIST(combined_access)
if(!(front_id in src))
front_id = null
for(var/obj/item/card/id/I in contents)
if(!front_id)
front_id = I
LAZYINITLIST(combined_access)
combined_access |= I.access
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
if(H.wear_id == src)
H.sec_hud_set_ID()
update_icon()
update_label()
/obj/item/storage/wallet/Entered(atom/movable/AM)
. = ..()
refreshID()
/obj/item/storage/wallet/update_overlays()
. = ..()
cached_flat_icon = null
if(front_id)
. += mutable_appearance(front_id.icon, front_id.icon_state)
. += front_id.overlays
. += mutable_appearance(icon, "wallet_overlay")
/obj/item/storage/wallet/proc/get_cached_flat_icon()
if(!cached_flat_icon)
cached_flat_icon = getFlatIcon(src)
return cached_flat_icon
/obj/item/storage/wallet/get_examine_string(mob/user, thats = FALSE)
if(front_id)
return "[icon2html(get_cached_flat_icon(), user)] [thats? "That's ":""][get_examine_name(user)]" //displays all overlays in chat
return ..()
/obj/item/storage/wallet/proc/update_label()
if(front_id)
name = "wallet displaying [front_id]"
else
name = "wallet"
/obj/item/storage/wallet/examine()
. = ..()
if(front_id)
. += "<span class='notice'>Alt-click to remove the id.</span>"
/obj/item/storage/wallet/GetID()
return front_id
/obj/item/storage/wallet/RemoveID()
if(!front_id)
return
. = front_id
front_id.forceMove(get_turf(src))
/obj/item/storage/wallet/InsertID(obj/item/inserting_item)
var/obj/item/card/inserting_id = inserting_item.RemoveID()
if(!inserting_id)
return FALSE
attackby(inserting_id)
if(inserting_id in contents)
return TRUE
return FALSE
/obj/item/storage/wallet/GetAccess()
if(LAZYLEN(combined_access))
return combined_access
else
return ..()
/obj/item/storage/wallet/random
icon_state = "random_wallet"
/obj/item/storage/wallet/random/PopulateContents()
new /obj/item/holochip(src, rand(5,30))
icon_state = "wallet"