diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 860c720e40a..9bf615333f6 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -260,7 +260,7 @@ //Defile: Corrupts nearby stuff, unblesses floor tiles. /datum/spell/aoe/revenant/defile name = "Defile" - desc = "Twists and corrupts the nearby area as well as dispelling holy auras on floors." + desc = "Twists and corrupts the nearby area as well as dispelling holy auras on floors. The presence of the living empowers the effects." base_cooldown = 15 SECONDS stun = 1 SECONDS reveal = 4 SECONDS @@ -280,7 +280,22 @@ for(var/turf/T in targets) T.defile() for(var/atom/A in T.contents) + if(istype(A, /obj/structure/window)) // we want to handle glass seperately + continue A.defile() + for(var/mob/living/carbon/human/living in T.contents) + if(!living.mind || living.stat == DEAD) // shouldnt work on dead or mindless mobs + continue + var/obj/effect/warp_effect/supermatter/warp = new(T) + warp.pixel_x += 16 + warp.pixel_y += 16 + animate(warp, time = 0.9 SECONDS, transform = matrix().Scale(0.2,0.2)) + for(var/obj/structure/window/W in range(2, living)) + W.defile() + addtimer(CALLBACK(src, PROC_REF(delete_pulse), warp), 1 SECONDS) + +/datum/spell/aoe/revenant/defile/proc/delete_pulse(warp) + qdel(warp) //Malfunction: Makes bad stuff happen to robots and machines. /datum/spell/aoe/revenant/malfunction @@ -514,6 +529,10 @@ /obj/structure/closet/defile() open() +/obj/structure/morgue/defile() + if(!connected && prob(25)) + toggle_tray() + /turf/simulated/floor/defile() ..() if(locate(/mob/living/silicon/ai) in src) // Revs don't need a 1-button kill switch on AI cores diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index e52e0ab9a36..5806d60cb31 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -137,6 +137,12 @@ return /obj/structure/morgue/attack_hand(mob/user as mob) + toggle_tray() + add_fingerprint() + update_state() + return + +/obj/structure/morgue/proc/toggle_tray() if(connected) for(var/atom/movable/A in connected.loc) if(!A.anchored) @@ -149,10 +155,6 @@ get_revivable(FALSE) connect() - add_fingerprint(user) - update_state() - return - /obj/structure/morgue/attack_ai(mob/user) if(isrobot(user) && Adjacent(user)) //Robots can open/close it, but not the AI attack_hand(user)