diff --git a/modular_chomp/code/game/objects/items/devices/vacpack.dm b/modular_chomp/code/game/objects/items/devices/vacpack.dm
index 130f71a6bd..d843bf8919 100644
--- a/modular_chomp/code/game/objects/items/devices/vacpack.dm
+++ b/modular_chomp/code/game/objects/items/devices/vacpack.dm
@@ -16,7 +16,8 @@
"medium objects" = 4,
"large objects" = 5,
"large pests" = 6,
- "output destination" = 7,
+ "auto-level" = 7,
+ "output destination" = 8
)
/obj/item/device/vac_attachment/New()
@@ -91,6 +92,7 @@
to_chat(user, "Ore storage full. Deposit ore contents to a box continue.")
return
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
+ var/auto_setting = 1
if(isturf(target))
user.visible_message("[user] begins vacuuming the mess off \the [target.name]...", "You begin vacuuming the mess off \the [target.name]...")
var/list/suckables = list()
@@ -134,7 +136,23 @@
continue
suckables |= L
if(LAZYLEN(suckables))
- playsound(src, 'sound/machines/kitchen/candymaker/candymaker-mid1.ogg', vac_power * 20, 1, -1)
+ if(vac_power == 7)
+ for(var/atom/movable/F in suckables)
+ if(isitem(F))
+ auto_setting = max(2, auto_setting)
+ var/obj/item/I = F
+ if(I.w_class > auto_setting)
+ auto_setting = min(I.w_class, 5)
+ if(isliving(F))
+ var/mob/living/L = F
+ if(L.size_multiplier < 0.5 || istype(L,/mob/living/simple_mob/animal/passive/mouse) || istype(L,/mob/living/simple_mob/animal/passive/lizard) || istype(L,/mob/living/simple_mob/animal/passive/cockroach))
+ if(auto_setting < 3)
+ auto_setting = 3
+ else
+ auto_setting = 6
+ else
+ auto_setting = vac_power
+ playsound(src, 'sound/machines/kitchen/candymaker/candymaker-mid1.ogg', auto_setting * 20, 1, -1)
var/vac_conga = 0
for(var/atom/movable/F in suckables)
if(is_type_in_list(F,item_vore_blacklist) || F.loc != target)
@@ -153,8 +171,8 @@
if(isitem(F))
var/obj/item/I = F
if(I.drop_sound)
- playsound(src, I.drop_sound, vac_power * 5, 1, -1)
- playsound(src, 'sound/rakshasa/corrosion3.ogg', vac_power * 15, 1, -1)
+ playsound(src, I.drop_sound, auto_setting * 5, 1, -1)
+ playsound(src, 'sound/rakshasa/corrosion3.ogg', auto_setting * 15, 1, -1)
F.forceMove(output_dest)
if(istype(target, /turf/simulated))
var/turf/simulated/T = target
@@ -168,7 +186,11 @@
if(is_type_in_list(I,item_vore_blacklist))
return
if(vac_power > I.w_class)
- playsound(src, 'sound/machines/kitchen/candymaker/candymaker-mid1.ogg', vac_power * 20, 1, -1)
+ if(vac_power == 7)
+ auto_setting = min(I.w_class, 5)
+ else
+ auto_setting = vac_power
+ playsound(src, 'sound/machines/kitchen/candymaker/candymaker-mid1.ogg', auto_setting * 20, 1, -1)
user.visible_message("[user] vacuums up \the [target.name].", "You vacuum up \the [target.name]...")
I.SpinAnimation(5,1)
spawn(5)
@@ -176,10 +198,10 @@
return
if(I.drop_sound)
playsound(src, I.drop_sound, vac_power * 5, 1, -1)
- playsound(src, 'sound/rakshasa/corrosion3.ogg', vac_power * 15, 1, -1)
+ playsound(src, 'sound/rakshasa/corrosion3.ogg', auto_setting * 15, 1, -1)
I.forceMove(output_dest)
else if(istype(target,/obj/effect/decal/cleanable))
- playsound(src, 'sound/machines/kitchen/candymaker/candymaker-mid1.ogg', vac_power * 20, 1, -1)
+ playsound(src, 'sound/machines/kitchen/candymaker/candymaker-mid1.ogg', auto_setting * 20, 1, -1)
user.visible_message("[user] vacuums up \the [target.name].", "You vacuum up \the [target.name]...")
qdel(target)
else if(isliving(target))
@@ -190,16 +212,18 @@
if(vac_power >= 3)
if(L.size_multiplier > 0.5 || istype(L,/mob/living/simple_mob/animal/passive/mouse) || istype(L,/mob/living/simple_mob/animal/passive/lizard))
valid_to_suck = TRUE
+ auto_setting = 3
if(vac_power >= 6)
valid_to_suck = TRUE
+ auto_setting = 6
if(valid_to_suck)
- playsound(src, 'sound/machines/kitchen/candymaker/candymaker-mid1.ogg', vac_power * 20, 1, -1)
+ playsound(src, 'sound/machines/kitchen/candymaker/candymaker-mid1.ogg', auto_setting * 20, 1, -1)
user.visible_message("[user] vacuums up \the [target.name].", "You vacuum up \the [target.name]...")
L.SpinAnimation(5,1)
spawn(5)
if(!L.Adjacent(user) || src.loc != user || vac_power < 2) //Cancel if moved/unpowered/dropped
return
- playsound(src, 'sound/rakshasa/corrosion3.ogg', vac_power * 15, 1, -1)
+ playsound(src, 'sound/rakshasa/corrosion3.ogg', auto_setting * 15, 1, -1)
L.forceMove(output_dest)
return
diff --git a/modular_chomp/icons/mob/vacpack.dmi b/modular_chomp/icons/mob/vacpack.dmi
index 644b09f83d..c58865cf8d 100644
Binary files a/modular_chomp/icons/mob/vacpack.dmi and b/modular_chomp/icons/mob/vacpack.dmi differ