From 7faa00efd298c0bf4c10470e891159a24c784f8f Mon Sep 17 00:00:00 2001 From: Verkister Date: Thu, 26 Oct 2023 02:47:13 +0300 Subject: [PATCH] Lets people borrow Swoopie's neck tube. (#7131) --- .../game/objects/items/devices/vacpack.dm | 14 ++++++- .../simple_mob/subtypes/vore/swoopie.dm | 37 +++++++++++++++++- modular_chomp/icons/mob/vacpack_swoop.dmi | Bin 0 -> 2879 bytes 3 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 modular_chomp/icons/mob/vacpack_swoop.dmi diff --git a/modular_chomp/code/game/objects/items/devices/vacpack.dm b/modular_chomp/code/game/objects/items/devices/vacpack.dm index d519332b91..a7d105c38b 100644 --- a/modular_chomp/code/game/objects/items/devices/vacpack.dm +++ b/modular_chomp/code/game/objects/items/devices/vacpack.dm @@ -19,6 +19,7 @@ "auto-level" = 7, "output destination" = 8 ) + var/vac_owner = null /obj/item/device/vac_attachment/New() ..() @@ -32,6 +33,9 @@ set_input = tgui_input_list(user, "Set your vacuum attachment's power level or output mode.", "Vac Settings", vac_settings) if(set_input) if(set_input == "output destination") + if(vac_owner && user != vac_owner) + to_chat(user, "Only designated owner can change this setting.") + return var/set_output = tgui_input_list(user, "Set your vacuum attachment's connection port", "Vac Settings", list("Vore Belly", "Borg Belly", "Trash Bag")) if(set_output) if(set_output == "Borg Belly") @@ -92,8 +96,10 @@ to_chat(user, "Ore storage full. Deposit ore contents to a box continue.") return if(isbelly(output_dest)) - var/obj/belly/B = output_dest - if(B.loc != user && !B.loc.Adjacent(user)) //Can still be used as a feeding tube by another adjacent player. + var/turf/T = get_turf(output_dest) + if(!T.Adjacent(user)) //Can still be used as a feeding tube by another adjacent player. + if(vac_owner && user != vac_owner) + return vac_power = 0 icon_state = "sucker-0" output_dest = null @@ -250,6 +256,10 @@ .=..() icon_state = "sucker-[vac_power]" +/obj/item/device/vac_attachment/equipped() + .=..() + icon_state = "sucker-[vac_power]" + /obj/item/device/vac_attachment/dropped(mob/user as mob) .=..() icon_state = "sucker_drop" diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/swoopie.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/swoopie.dm index 4c0d701060..a4ca86672b 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/swoopie.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/swoopie.dm @@ -35,6 +35,9 @@ if(istype(Vac)) Vac.output_dest = vore_selected Vac.vac_power = 3 + Vac.item_state = null + Vac.vac_owner = src + Vac.icon = 'modular_chomp/icons/mob/vacpack_swoop.dmi' /mob/living/simple_mob/vore/aggressive/corrupthound/swoopie/IIsAlly(mob/living/L) . = ..() @@ -140,7 +143,19 @@ /mob/living/simple_mob/vore/aggressive/corrupthound/swoopie/Life() . =..() var/turf/T = get_turf(src) - if(istype(T) && istype(Vac) && has_AI()) + if(istype(Vac)) + if(Vac.loc != src) + var/turf/VT = get_turf(Vac) + if(!T.Adjacent(VT) || isturf(Vac.loc)) + if(isliving(Vac.loc)) + var/mob/living/L = Vac.loc + L.remove_from_mob(Vac, src) + else + Vac.forceMove(src) + if(!Vac.output_dest) + if(isbelly(vore_selected)) + Vac.output_dest = vore_selected + if(istype(T) && istype(Vac) && has_AI() && Vac.loc == src) if(istype(T, /turf/simulated)) var/turf/simulated/S = T if(S.dirt > 10) @@ -182,4 +197,24 @@ if(L.a_intent == I_DISARM && Vac) Vac.attack_self(L) return + if(L.a_intent == I_GRAB && Vac && Vac.loc == src) + if(L.zone_sel.selecting == BP_HEAD) + if(L.put_in_active_hand(Vac)) + L.visible_message("[L] grabs [src] by the neck, brandishing the thing like a regular vacuum cleaner!") + L.start_pulling(src) + return . = ..() + +/mob/living/simple_mob/vore/aggressive/corrupthound/swoopie/verb/borrow_vac() + set name = "Borrow Vac-Pack" + set desc = "Allows adjacent user to borrow Swoopie's Vac-Pack" + set category = "Object" + set src in oview(1) + if(istype(Vac)) + if(usr != src) + usr.put_in_active_hand(Vac) + else + var/mob/living/L = input("Borrow Vac-Pack for") as null| mob in view(1,usr.loc) + if(!L || L == usr) + return + L.put_in_active_hand(Vac) \ No newline at end of file diff --git a/modular_chomp/icons/mob/vacpack_swoop.dmi b/modular_chomp/icons/mob/vacpack_swoop.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b5c5979ceede4d91f0abcf47e54318a4f7141ab6 GIT binary patch literal 2879 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 YBv9J)3)+crR!0mN>s#o()Wyd93j+CX*8l(j literal 0 HcmV?d00001