From 6d433b941ef43075aaabec6d8f59810c2d9977f2 Mon Sep 17 00:00:00 2001 From: AshTheDerg <60045745+AshTheDerg@users.noreply.github.com> Date: Sun, 15 Oct 2023 19:58:28 -0400 Subject: [PATCH 1/9] Tailbags Tailbags as a wallet+ option, available for 1 point in loadout, or crafted --- .../game/objects/items/storage/tailbag.dm | 136 ++++++++++++++++++ .../code/modules/client/loadout/hands.dm | 6 + modular_splurt/icons/obj/storage.dmi | Bin 4731 -> 5258 bytes 3 files changed, 142 insertions(+) create mode 100644 modular_splurt/code/game/objects/items/storage/tailbag.dm 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..156d4f9a9f2e --- /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/xl + 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..6d5c193b6ad9 100644 --- a/modular_splurt/code/modules/client/loadout/hands.dm +++ b/modular_splurt/code/modules/client/loadout/hands.dm @@ -3,3 +3,9 @@ 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/tailbag + cost = 1 diff --git a/modular_splurt/icons/obj/storage.dmi b/modular_splurt/icons/obj/storage.dmi index 6ff028b18c01a37fcba91e88e3970e268c9a82af..49377b6b9eafdb431b9817fb1c169fa78af67bef 100644 GIT binary patch literal 5258 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 Z8fD{tNq6~K1-M)U>1i2jR;fG0{2yk&F!cZc literal 4731 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 Date: Sun, 15 Oct 2023 20:23:23 -0400 Subject: [PATCH 2/9] Tailbags icons Yeah, they look like shit. I know. From 2ced02580bfb91ab1303352a9337a3487c95eb29 Mon Sep 17 00:00:00 2001 From: AshTheDerg <60045745+AshTheDerg@users.noreply.github.com> Date: Sun, 15 Oct 2023 20:24:34 -0400 Subject: [PATCH 3/9] Tailbags --- .../game/objects/items/storage/tailbag.dm | 272 +++++++++--------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/modular_splurt/code/game/objects/items/storage/tailbag.dm b/modular_splurt/code/game/objects/items/storage/tailbag.dm index 156d4f9a9f2e..65f76eee9b20 100644 --- a/modular_splurt/code/game/objects/items/storage/tailbag.dm +++ b/modular_splurt/code/game/objects/items/storage/tailbag.dm @@ -1,136 +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/xl - reqs = list(/obj/item/storage/tailbag = 1, - /obj/item/stack/sheet/leather = 2) - time = 30 - category = CAT_CLOTHING +/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/xl + reqs = list(/obj/item/storage/tailbag = 1, + /obj/item/stack/sheet/leather = 2) + time = 30 + category = CAT_CLOTHING From c95ca9e219e13aaa7d4811cd09cdcb318e577429 Mon Sep 17 00:00:00 2001 From: AshTheDerg <60045745+AshTheDerg@users.noreply.github.com> Date: Sun, 15 Oct 2023 20:25:15 -0400 Subject: [PATCH 4/9] Tailbags Loadout option --- .../code/modules/client/loadout/hands.dm | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modular_splurt/code/modules/client/loadout/hands.dm b/modular_splurt/code/modules/client/loadout/hands.dm index 6d5c193b6ad9..5f8ef4f63166 100644 --- a/modular_splurt/code/modules/client/loadout/hands.dm +++ b/modular_splurt/code/modules/client/loadout/hands.dm @@ -1,11 +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/tailbag - name = "Tailbag" - description = "A bag for holding small personal items, which fastens around the base of the tail." - path = /obj/item/tailbag - cost = 1 +/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/tailbag + cost = 1 From 7e7e4befd49454ebec0c296ee83b541e292e7746 Mon Sep 17 00:00:00 2001 From: AshTheDerg <60045745+AshTheDerg@users.noreply.github.com> Date: Sun, 15 Oct 2023 20:34:37 -0400 Subject: [PATCH 5/9] Tailbags Include tailbag.dm --- tgstation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/tgstation.dme b/tgstation.dme index 3fd3374b9b29..8a160a13b298 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" From fb19325769b7421e102462fe10b9fd14f502c282 Mon Sep 17 00:00:00 2001 From: AshTheDerg <60045745+AshTheDerg@users.noreply.github.com> Date: Sun, 15 Oct 2023 20:48:37 -0400 Subject: [PATCH 6/9] Tailbags Fixed missing Quotation Mark --- tgstation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 8a160a13b298..15c777f7b597 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4523,7 +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\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" From 0aa25faca611a5a6db85d3465a5df6b7225c913b Mon Sep 17 00:00:00 2001 From: AshTheDerg <60045745+AshTheDerg@users.noreply.github.com> Date: Sun, 15 Oct 2023 21:14:51 -0400 Subject: [PATCH 7/9] Tailbags --- modular_splurt/code/game/objects/items/storage/tailbag.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_splurt/code/game/objects/items/storage/tailbag.dm b/modular_splurt/code/game/objects/items/storage/tailbag.dm index 65f76eee9b20..414cef5a89e6 100644 --- a/modular_splurt/code/game/objects/items/storage/tailbag.dm +++ b/modular_splurt/code/game/objects/items/storage/tailbag.dm @@ -113,7 +113,7 @@ name = "XL Tailbag" desc = "A larger tail bag for larger creatures" icon = 'modular_splurt/icons/obj/storage.dmi' - icon_state = tailbag_xl + icon_state = "tailbag_xl" /obj/item/storage/tailbag/xtralg/ComponentInitialize() . = ..() From c226169db70014c42234a1f15a09341ed6a85198 Mon Sep 17 00:00:00 2001 From: AshTheDerg <60045745+AshTheDerg@users.noreply.github.com> Date: Sun, 15 Oct 2023 21:22:27 -0400 Subject: [PATCH 8/9] Tailbag --- modular_splurt/code/game/objects/items/storage/tailbag.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_splurt/code/game/objects/items/storage/tailbag.dm b/modular_splurt/code/game/objects/items/storage/tailbag.dm index 414cef5a89e6..0b9b4764f342 100644 --- a/modular_splurt/code/game/objects/items/storage/tailbag.dm +++ b/modular_splurt/code/game/objects/items/storage/tailbag.dm @@ -129,7 +129,7 @@ /datum/crafting_recipe/tailbag_xl name = "XL Tailbag" - result = /obj/item/storage/tailbag/xl + result = /obj/item/storage/tailbag/xtralg reqs = list(/obj/item/storage/tailbag = 1, /obj/item/stack/sheet/leather = 2) time = 30 From 097c5f8204384e8ebd22f6056a4b07b4479a8e1f Mon Sep 17 00:00:00 2001 From: AshTheDerg <60045745+AshTheDerg@users.noreply.github.com> Date: Sun, 15 Oct 2023 21:23:02 -0400 Subject: [PATCH 9/9] Tailbags --- modular_splurt/code/modules/client/loadout/hands.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_splurt/code/modules/client/loadout/hands.dm b/modular_splurt/code/modules/client/loadout/hands.dm index 5f8ef4f63166..e5dcf4ae6415 100644 --- a/modular_splurt/code/modules/client/loadout/hands.dm +++ b/modular_splurt/code/modules/client/loadout/hands.dm @@ -7,5 +7,5 @@ /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/tailbag + path = /obj/item/storage/tailbag cost = 1