diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 1c0dc4b74bf..93fbbdf5b07 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -476,7 +476,7 @@ var/global/list/uneatable = list( /obj/machinery/singularity/narsie/large/New() ..() - world << "NAR-SIE HAS RISEN" + world << "NAR-SIE HAS RISEN" if(emergency_shuttle) emergency_shuttle.incall(0.5) // Cannot recall @@ -488,23 +488,52 @@ var/global/list/uneatable = list( if(prob(25)) mezzer() -/obj/machinery/singularity/narsie/consume(var/atom/A) //Has its own consume proc because it doesn't need energy and I don't want BoHs to explode it. --NEO - if(is_type_in_list(A, uneatable)) - return 0 - if (istype(A,/mob/living))//Mobs get gibbed - A:gib() - else if(istype(A,/obj/)) - A:ex_act(1.0) - if(A) del(A) + +/obj/machinery/singularity/narsie/Bump(atom/A)//you dare stand before a god?! + godsmack(A) + return + +/obj/machinery/singularity/narsie/Bumped(atom/A) + godsmack(A) + return + +/obj/machinery/singularity/narsie/proc/godsmack(var/atom/A) + if(istype(A,/obj/)) + var/obj/O = A + O.ex_act(1.0) + if(O) del(O) + else if(isturf(A)) var/turf/T = A - if(T.intact) - for(var/obj/O in T.contents) - if(O.level != 1) - continue - if(O.invisibility == 101) - src.consume(O) - A:ChangeTurf(/turf/space) + T.ChangeTurf(/turf/simulated/floor/engine/cult) + + +/obj/machinery/singularity/narsie/mezzer() + for(var/mob/living/carbon/human/M in oviewers(8, src)) + if(M.stat == CONSCIOUS) + if(iscultist(M)) + continue + else + M << "\red You feel your sanity crumble away in an instant as you gaze upon [src.name]..." + M.apply_effect(3, STUN) + + +/obj/machinery/singularity/narsie/consume(var/atom/A) + if(is_type_in_list(A, uneatable)) + return 0 + + if(istype(A,/mob/living/)) + var/mob/living/C = A + if(!iscultist(C))//if someone's not a cultist (includes constructs/cult xenos/whatever) + C.dust() + + if(isturf(A)) + var/turf/T = A + if(istype(T, /turf/simulated/floor)) + if(prob(20)) T.ChangeTurf(/turf/simulated/floor/engine/cult) + + else if(istype(T,/turf/simulated/wall)) + if(prob(20)) T.ChangeTurf(/turf/simulated/wall/cult) return /obj/machinery/singularity/narsie/ex_act() //No throwing bombs at it either. --NEO