diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index ea0886af653..9c4ca620e26 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -129,6 +129,7 @@
flags = CONDUCT
slot_flags = SLOT_BELT
force = 8.0
+ var/digspeed = 20
throwforce = 4.0
item_state = "shovel"
w_class = 3.0
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index 0cf843f2df1..894d29cbc5c 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -432,9 +432,8 @@ var/global/list/rockTurfEdgeCache
P.playDigSound()
if(do_after(user,P.digspeed, target = src))
- if(istype(src, /turf/simulated/mineral)) //sanity check against turf being deleted during digspeed delay
+ if(istype(src, /turf/simulated/mineral))
user << "You finish cutting into the rock."
- P.update_icon()
gets_drilled(user)
feedback_add_details("pick_used_mining","[P.name]")
else
@@ -548,27 +547,14 @@ var/global/list/rockTurfEdgeCache
//note that this proc does not call ..()
if(!W || !user)
return 0
-
- if ((istype(W, /obj/item/weapon/shovel)))
- var/turf/T = user.loc
- if (!( istype(T, /turf) ))
- return
-
- if (dug)
- user << "This area has already been dug!"
- return
-
- user << "You start digging..."
- playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE
-
- sleep(20)
- if ((user.loc == T && user.get_active_hand() == W))
- user << "You dig a hole."
- gets_dug()
- return
-
- if ((istype(W, /obj/item/weapon/pickaxe)))
+ var/digging_speed = 0
+ if (istype(W, /obj/item/weapon/shovel))
+ var/obj/item/weapon/shovel/S = W
+ digging_speed = S.digspeed
+ else if (istype(W, /obj/item/weapon/pickaxe))
var/obj/item/weapon/pickaxe/P = W
+ digging_speed = P.digspeed
+ if (digging_speed)
var/turf/T = user.loc
if (!( istype(T, /turf) ))
return
@@ -579,13 +565,13 @@ var/global/list/rockTurfEdgeCache
user << "You start digging..."
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE
-
- sleep(P.digspeed)
- if ((user.loc == T && user.get_active_hand() == W))
- user << "You dig a hole."
- gets_dug()
- return
-
+
+ if(do_after(user, digging_speed, target = src))
+ if(istype(src, /turf/simulated/floor/plating/asteroid))
+ user << "You dig a hole."
+ gets_dug()
+ feedback_add_details("pick_used_mining","[W.name]")
+
if(istype(W,/obj/item/weapon/storage/bag/ore))
var/obj/item/weapon/storage/bag/ore/S = W
if(S.collection_mode == 1)