diff --git a/modular_splurt/code/game/objects/items/storage/tailbag.dm b/modular_splurt/code/game/objects/items/storage/tailbag.dm new file mode 100644 index 000000000000..0b9b4764f342 --- /dev/null +++ b/modular_splurt/code/game/objects/items/storage/tailbag.dm @@ -0,0 +1,136 @@ +/obj/item/storage/tailbag + name = "tailbag" + desc = "A bag for holding small items. It fastens around the base of the tail." + icon = 'modular_splurt/icons/obj/storage.dmi' + icon_state = "tailbag" + w_class = WEIGHT_CLASS_SMALL + resistance_flags = FLAMMABLE + slot_flags = ITEM_SLOT_ID + + var/obj/item/card/id/front_id = null + var/list/combined_access + +/obj/item/storage/tailbag/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 6 + STR.cant_hold = typecacheof(list(/obj/item/screwdriver/power)) + STR.can_hold = typecacheof(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/multitool, + /obj/item/wrench, + /obj/item/wirecutters, + /obj/item/valentine, + /obj/item/stamp, + /obj/item/key, + /obj/item/cartridge, + /obj/item/camera_film, + /obj/item/stack/ore/bluespace_crystal, + /obj/item/reagent_containers/food/snacks/grown/poppy, + /obj/item/instrument/harmonica, + /obj/item/mining_voucher, + /obj/item/suit_voucher, + /obj/item/reagent_containers/pill, + /obj/item/gun/ballistic/derringer, + /obj/item/genital_equipment/condom, + /obj/item/restraints/handcuffs, + /obj/item/assembly/flash, + /obj/item/laser_pointer, + /obj/item/pda, + /obj/item/paicard)) + +/obj/item/storage/tailbag/Exited(atom/movable/AM) + . = ..() + refreshID() + +/obj/item/storage/tailbag/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 + update_icon() + +/obj/item/storage/tailbag/Entered(atom/movable/AM) + . = ..() + refreshID() + +/obj/item/storage/tailbag/update_icon_state() + var/new_state = "tailbag" + if(front_id) + new_state = "tailbag_id" + if(new_state != icon_state) //avoid so many icon state changes. + icon_state = new_state + +/obj/item/storage/tailbag/GetID() + return front_id + +/obj/item/storage/tailbag/RemoveID() + if(!front_id) + return + . = front_id + front_id.forceMove(get_turf(src)) + +/obj/item/storage/tailbag/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/tailbag/GetAccess() + if(LAZYLEN(combined_access)) + return combined_access + else + return ..() + +/obj/item/storage/tailbag/xtralg + name = "XL Tailbag" + desc = "A larger tail bag for larger creatures" + icon = 'modular_splurt/icons/obj/storage.dmi' + icon_state = "tailbag_xl" + +/obj/item/storage/tailbag/xtralg/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 8 + +/datum/crafting_recipe/tailbag + name = "Tailbag" + result = /obj/item/storage/tailbag + reqs = list(/obj/item/stack/sheet/leather = 2) + time = 30 + category = CAT_CLOTHING + +/datum/crafting_recipe/tailbag_xl + name = "XL Tailbag" + result = /obj/item/storage/tailbag/xtralg + reqs = list(/obj/item/storage/tailbag = 1, + /obj/item/stack/sheet/leather = 2) + time = 30 + category = CAT_CLOTHING diff --git a/modular_splurt/code/modules/client/loadout/hands.dm b/modular_splurt/code/modules/client/loadout/hands.dm index 07f6391c6903..e5dcf4ae6415 100644 --- a/modular_splurt/code/modules/client/loadout/hands.dm +++ b/modular_splurt/code/modules/client/loadout/hands.dm @@ -1,5 +1,11 @@ -/datum/gear/hands/paicard - name = "pAI device" - description = "A personal AI device for checking and downloading various personalities." - path = /obj/item/paicard - cost = 3 +/datum/gear/hands/paicard + name = "pAI device" + description = "A personal AI device for checking and downloading various personalities." + path = /obj/item/paicard + cost = 3 + +/datum/gear/hands/tailbag + name = "Tailbag" + description = "A bag for holding small personal items, which fastens around the base of the tail." + path = /obj/item/storage/tailbag + cost = 1 diff --git a/modular_splurt/icons/obj/storage.dmi b/modular_splurt/icons/obj/storage.dmi index 6ff028b18c01..49377b6b9eaf 100644 Binary files a/modular_splurt/icons/obj/storage.dmi and b/modular_splurt/icons/obj/storage.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 3fd3374b9b29..15c777f7b597 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4523,6 +4523,7 @@ #include "modular_splurt\code\game\objects\items\storage\boxes.dm" #include "modular_splurt\code\game\objects\items\storage\firstaid.dm" #include "modular_splurt\code\game\objects\items\storage\secure.dm" +#include "modular_splurt\code\game\objects\items\storage\tailbag.dm" #include "modular_splurt\code\game\objects\items\storage\wallets.dm" #include "modular_splurt\code\game\objects\items\weaponry\armyknife.dm" #include "modular_splurt\code\game\objects\items\weaponry\melee.dm"