diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index a7f14a0ffe1..22ecbc1208e 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -22,8 +22,6 @@ #define iseffect(A) (istype(A, /obj/effect)) -#define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune)) //if something is cleanable - #define isclothing(A) (istype(A, /obj/item/clothing)) #define is_pen(W) (istype(W, /obj/item/pen)) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 67a18cbfc45..8c725b41898 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -130,6 +130,9 @@ To draw a rune, use a ritual dagger. visible_message("[src] suddenly appears!") alpha = initial(alpha) +/obj/effect/rune/is_cleanable() + return TRUE + /* There are a few different procs each rune runs through when a cultist activates it. @@ -991,6 +994,9 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/narsie/cult_conceal() //can't hide this, and you wouldn't want to return +/obj/effect/rune/narsie/is_cleanable() //No, you can't just yeet a cleaning grenade to remove it. + return FALSE + /obj/effect/rune/narsie/invoke(list/invokers) if(used) return diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index ca92d2da319..6f18d7a9588 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -53,6 +53,9 @@ /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() return FALSE +/obj/effect/decal/cleanable/is_cleanable() + return TRUE + /obj/effect/decal/cleanable/Initialize(mapload) . = ..() if(loc && isturf(loc)) diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 9053786e554..247a29fa13f 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -25,6 +25,9 @@ /obj/effect/acid_act() return +/obj/effect/proc/is_cleanable() //Called when you want to clean something, and usualy delete it after + return FALSE + /obj/effect/mech_melee_attack(obj/mecha/M) return 0 diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 419df51bbd4..3221f0f637c 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -28,7 +28,7 @@ if(reagents.has_reagent("water", 1) || reagents.has_reagent("cleaner", 1) || reagents.has_reagent("holywater", 1)) A.clean_blood() for(var/obj/effect/O in A) - if(is_cleanable(O)) + if(O.is_cleanable()) qdel(O) reagents.reaction(A, REAGENT_TOUCH, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly. reagents.remove_any(1) //reaction() doesn't use up the reagents diff --git a/code/game/objects/items/weapons/soap.dm b/code/game/objects/items/weapons/soap.dm index 567f67b4106..8f199f6f398 100644 --- a/code/game/objects/items/weapons/soap.dm +++ b/code/game/objects/items/weapons/soap.dm @@ -52,7 +52,7 @@ /obj/item/soap/proc/clean_turf(turf/simulated/T) T.clean_blood() for(var/obj/effect/O in T) - if(is_cleanable(O)) + if(O.is_cleanable()) qdel(O) /obj/item/soap/attack(mob/target as mob, mob/user as mob) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 16c5f626b84..1ca64c8de37 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -363,6 +363,7 @@ a { /obj/proc/cult_reveal() //Called by cult reveal spell and chaplain's bible return + /obj/proc/force_eject_occupant(mob/target) // This proc handles safely removing occupant mobs from the object if they must be teleported out (due to being SSD/AFK, by admin teleport, etc) or transformed. // In the event that the object doesn't have an overriden version of this proc to do it, log a runtime so one can be added. diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index c9d21d5a033..7a235c4001a 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -404,7 +404,7 @@ tile.water_act(100, convertHeat(), src) tile.clean_blood(radiation_clean = TRUE) for(var/obj/effect/E in tile) - if(is_cleanable(E)) + if(E.is_cleanable()) qdel(E) for(var/A in loc) wash(A) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 2f35fb7cf9c..8bcd14a8d9e 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1201,12 +1201,13 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( var/floor_only = TRUE for(var/A in tile) if(istype(A, /obj/effect)) - if(is_cleanable(A)) - var/obj/effect/decal/cleanable/blood/B = A + var/obj/effect/E = A + if(E.is_cleanable()) + var/obj/effect/decal/cleanable/blood/B = E if(istype(B) && B.off_floor) floor_only = FALSE else - qdel(A) + qdel(E) else if(istype(A, /obj/item)) var/obj/item/cleaned_item = A cleaned_item.clean_blood() diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index 8084a990e3c..0fbde39df4f 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -57,10 +57,12 @@ taste_description = "floor cleaner" /datum/reagent/space_cleaner/reaction_obj(obj/O, volume) - if(is_cleanable(O)) - var/obj/effect/decal/cleanable/blood/B = O - if(!(istype(B) && B.off_floor)) - qdel(O) + if(istype(O, /obj/effect)) + var/obj/effect/E = O + if(E.is_cleanable()) + var/obj/effect/decal/cleanable/blood/B = E + if(!(istype(B) && B.off_floor)) + qdel(E) else if(O.simulated) O.color = initial(O.color) diff --git a/code/modules/vehicle/janicart.dm b/code/modules/vehicle/janicart.dm index d7ba87b818c..07187e523ec 100644 --- a/code/modules/vehicle/janicart.dm +++ b/code/modules/vehicle/janicart.dm @@ -49,9 +49,9 @@ var/turf/tile = loc if(isturf(tile)) tile.clean_blood() - for(var/A in tile) - if(is_cleanable(A)) - qdel(A) + for(var/obj/effect/E in tile) + if(E.is_cleanable()) + qdel(E)