Adds auto-setting for vacpack

This commit is contained in:
Verkister
2023-05-11 17:40:32 +03:00
parent 92b321b906
commit ff327a5a3d
2 changed files with 33 additions and 9 deletions

View File

@@ -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, "<span class='warning'>Ore storage full. Deposit ore contents to a box continue.</span>")
return
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
var/auto_setting = 1
if(isturf(target))
user.visible_message("<span class='filter_notice'>[user] begins vacuuming the mess off \the [target.name]...</span>", "<span class='notice'>You begin vacuuming the mess off \the [target.name]...</span>")
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("<span class='filter_notice'>[user] vacuums up \the [target.name].</span>", "<span class='notice'>You vacuum up \the [target.name]...</span>")
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("<span class='filter_notice'>[user] vacuums up \the [target.name].</span>", "<span class='notice'>You vacuum up \the [target.name]...</span>")
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("<span class='filter_notice'>[user] vacuums up \the [target.name].</span>", "<span class='notice'>You vacuum up \the [target.name]...</span>")
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