From dc8dfc109489cadf97869fcb419ae0610fbdb2ef Mon Sep 17 00:00:00 2001 From: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Date: Wed, 6 Mar 2024 19:19:53 +0000 Subject: [PATCH] Closet vore and Tents (#15808) * Closet vore and Tents Added a new verb to the ability tab when interacting with closets called "Vore Occupants". This allows you to eat another person when both of you are inside of the same closet. Added tents as a subtype of closets. * Crafting Added the ability to craft tents with 10 cloth. * Ghost check and change category Added a check to make sure user is /mob/living. Changed category from Abilities to Object because having no abilities means that your tab changes every time you move past a locker. --- .../structures/crates_lockers/__closets.dm | 47 ++++++++++++++++++ .../crates_lockers/closets/gimmick.dm | 32 ++++++++++++ icons/obj/closets/tent.dmi | Bin 0 -> 552 bytes icons/obj/closets/tentB.dmi | Bin 0 -> 552 bytes 4 files changed, 79 insertions(+) create mode 100644 icons/obj/closets/tent.dmi create mode 100644 icons/obj/closets/tentB.dmi diff --git a/code/game/objects/structures/crates_lockers/__closets.dm b/code/game/objects/structures/crates_lockers/__closets.dm index f56c0269a4..46a3226464 100644 --- a/code/game/objects/structures/crates_lockers/__closets.dm +++ b/code/game/objects/structures/crates_lockers/__closets.dm @@ -40,6 +40,7 @@ var/is_animating_door = FALSE /// Our visual object for the closet door, if we're animating var/obj/effect/overlay/closet_door/door_obj + var/vore_sound = 'sound/effects/metalscrape2.ogg' /obj/structure/closet/Initialize() ..() @@ -543,3 +544,49 @@ M.Multiply(matrix(cos(angle), 0, 0, -sin(angle) * closet_appearance.door_anim_squish, 1, 0)) M.Translate(closet_appearance.door_hinge, 0) return M + +//verb to eat people in the same closet as yourself + +/obj/structure/closet/verb/hidden_vore() + set src in oview(1) + set category = "Object" + set name = "Vore Occupants" + + if(!istype(usr, /mob/living)) //no ghosts + return + + if(!(usr in src.contents)) + to_chat(usr, "You need to be inside \the [src] to do this.") + return + + var/list/targets = list() //IF IT IS NOT BROKEN. DO NOT FIX IT. + + for(var/mob/living/L in src.contents) + if(!istype(L, /mob/living)) //Don't eat anything that isn't mob/living. Failsafe. + continue + if(L == usr) //no eating yourself. 1984. + continue + if(L.devourable) + targets += L + + if(targets == 0) + to_chat(src, "No eligible targets found.") + return + + var/mob/living/target = tgui_input_list(usr, "Please select a target.", "Victim", targets) + + if(!target) + return + + if(!istype(target, /mob/living)) //Safety. + to_chat(src, "You need to select a living target!") + return + + if (get_dist(src,target) >= 1 || get_dist(src,usr) >= 1) //in case they leave the locker + to_chat(src, "You are no longer both in \the [src].") + return + + playsound(src, vore_sound, 25) + + var/mob/living/M = usr + M.perform_the_nom(usr,target,usr,usr.vore_selected,1) diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index f79d770f74..48bea9205b 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -6,6 +6,7 @@ open_sound = 'sound/effects/wooden_closet_open.ogg' close_sound = 'sound/effects/wooden_closet_close.ogg' + vore_sound = 'sound/effects/woodhit.ogg' /obj/structure/closet/acloset name = "strange closet" @@ -82,3 +83,34 @@ icon = 'icons/obj/closets/abductor.dmi' anchored = TRUE closet_appearance = null // special icons + +/obj/structure/closet/tent + name = "tent" + desc = "An old fashioned tent that can easily fit a couple of people." + icon = 'icons/obj/closets/tent.dmi' + closet_appearance = null + anchored = 1 + open_sound = 'sound/effects/rustle3.ogg' + close_sound = 'sound/effects/rustle4.ogg' + vore_sound = 'sound/effects/rustle1.ogg' + +/obj/structure/closet/tent/B + icon = 'icons/obj/closets/tentB.dmi' + +/datum/crafting_recipe/tent + name = "tent (green)" + result = /obj/structure/closet/tent + reqs = list( + list(/obj/item/stack/material/cloth = 10) + ) + time = 60 + category = CAT_MISC + +/datum/crafting_recipe/tentb + name = "tent (tan)" + result = /obj/structure/closet/tent/B + reqs = list( + list(/obj/item/stack/material/cloth = 10) + ) + time = 60 + category = CAT_MISC diff --git a/icons/obj/closets/tent.dmi b/icons/obj/closets/tent.dmi new file mode 100644 index 0000000000000000000000000000000000000000..939557b190f249966340f19dc533ca0fe7e09754 GIT binary patch literal 552 zcmV+@0@wYCP)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM z;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KAHiHkEOv#1!zH00t;D@x2wg|OiY@(WV) za4Aw&aP@NmTMGaHt0G(a?QeYm00A^fL_t(Ijg`+oYJ@--hvCmkw%iCdK@k5OK!*kE zz+ONRY;9%>t2DbXl@Jz8XP4S$7d%G1fmNEhOJ&B*>z*GkBLaxiY?$2Kuy?kt z1)ja-$AJ-eFI(17;2rICgUN?@-8$w&YOfj2Vu;tQV=*MER zCvwLi$5ua@4Q5_+ZafBNPU&bMcoyJkptmP%7G0S7>Nii=qO@0L18H#4AwO0DX(&5o z(C@9ugD}08(iRVTX(0Co^8oqROqvcS4TQ+xEy|=tAPpDxg&~MgC2Wb{OL)g07y|Z0 qJ(yDUM9qWC>z>_{<5X2u|M52-me>LQ(3!#j0000 literal 0 HcmV?d00001 diff --git a/icons/obj/closets/tentB.dmi b/icons/obj/closets/tentB.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a1446d27378f40714ea6403f989a74855bbd26c8 GIT binary patch literal 552 zcmV+@0@wYCP)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM z;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3KAHiHkEOv#1!zH00t;D@x2wg|OiY@(WV) za4Aw&aP@NmTMGaHt0G(a?QeYm00A^fL_t(Ijg`+oYJ@--hvCmkw%iCdK@k5OK!*kE zz+ONRY;9%>t2DbXl@Jz8XP4S$7d%G1fmNEhOJ&B*>z*GkBLaxiY?$2Kuy?kt z1)ja-$AJ-eFI(17;2rICgUN?@-8$w&YOfj2Vu;tQV=*MER zCvwLi$5ua@4Q5_+ZafBNPU&bMcoyJkptmP%7G0S7>Nii=qO@0L18H#4AwO0DX(&5o z(C@9ugD}08(iRVTX(0Co^8oqROqvcS4TQ+xEy|=tAPpDxg&~MgC2Wb{OL)g07y|Z0 qJ(yDUM9qWC>z>_{<5X2u|M52-me>LQ(3!#j0000