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)