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 0000000000..b5c5979cee Binary files /dev/null and b/modular_chomp/icons/mob/vacpack_swoop.dmi differ