diff --git a/code/game/objects/items/weapons/soap.dm b/code/game/objects/items/weapons/soap.dm
index c747674bce1..a6046b575f7 100644
--- a/code/game/objects/items/weapons/soap.dm
+++ b/code/game/objects/items/weapons/soap.dm
@@ -18,8 +18,6 @@
var/cleanspeed = 50 //slower than mop
-
-
/obj/item/soap/afterattack(atom/target, mob/user, proximity)
if(!proximity) return
//I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing.
@@ -29,28 +27,40 @@
else if(target == user && user.a_intent == INTENT_GRAB && ishuman(target))
var/mob/living/carbon/human/muncher = user
if(muncher && muncher.get_species() == "Drask")
- to_chat(user, "You take a bite of the [src.name]. Delicious!")
+ to_chat(user, "You take a bite of the [name]. Delicious!")
playsound(user.loc, 'sound/items/eatfood.ogg', 50, 0)
user.nutrition += 2
else if(istype(target,/obj/effect/decal/cleanable))
user.visible_message("[user] begins to scrub \the [target.name] out with [src].")
- if(do_after(user, src.cleanspeed, target = target) && target)
+ if(do_after(user, cleanspeed, target = target) && target)
to_chat(user, "You scrub \the [target.name] out.")
+ if(issimulatedturf(target.loc))
+ clean_turf(target.loc)
+ return
qdel(target)
+ else if(issimulatedturf(target))
+ user.visible_message("[user] begins to clean \the [target.name] with [src].")
+ if(do_after(user, cleanspeed, target = target))
+ to_chat(user, "You clean \the [target.name].")
+ clean_turf(target)
else
user.visible_message("[user] begins to clean \the [target.name] with [src].")
- if(do_after(user, src.cleanspeed, target = target))
+ if(do_after(user, cleanspeed, target = target))
to_chat(user, "You clean \the [target.name].")
var/obj/effect/decal/cleanable/C = locate() in target
qdel(C)
target.clean_blood()
- if(istype(target, /turf/simulated))
- var/turf/simulated/T = target
- T.dirt = 0
+
+/obj/item/soap/proc/clean_turf(turf/simulated/T)
+ T.clean_blood()
+ T.dirt = 0
+ for(var/obj/effect/O in T)
+ if(is_cleanable(O))
+ qdel(O)
/obj/item/soap/attack(mob/target as mob, mob/user as mob)
if(target && user && ishuman(target) && ishuman(user) && !target.stat && !user.stat && user.zone_sel &&user.zone_sel.selecting == "mouth" )
- user.visible_message("\the [user] washes \the [target]'s mouth out with [src.name]!")
+ user.visible_message("\the [user] washes \the [target]'s mouth out with [name]!")
return
..()
@@ -74,7 +84,7 @@
to_chat(user, "You need to take that [target.name] off before 'cleaning' it.")
else
user.visible_message("[user] begins to smear [src] on \the [target.name].")
- if(do_after(user, src.cleanspeed, target = target))
+ if(do_after(user, cleanspeed, target = target))
to_chat(user, "You 'clean' \the [target.name].")
if(istype(target, /turf/simulated))
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(target)