Files
CHOMPStation2/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
CHOMPStation2 14f0302bef [MIRROR] some more spans (#9170)
Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
Co-authored-by: Kashargul <KashL@t-online.de>
2024-10-06 06:59:27 +02:00

120 lines
3.8 KiB
Plaintext

// QUALITY COPYPASTA
/turf/unsimulated/wall/supermatter
name = "Bluespace"
desc = "THE END IS right now actually."
icon = 'icons/turf/space.dmi'
icon_state = "bluespace"
//luminosity = 5
//l_color="#0066FF"
plane = PLANE_LIGHTING_ABOVE
var/spawned=0 // DIR mask
var/next_check=0
var/list/avail_dirs = list(NORTH,SOUTH,EAST,WEST)
/turf/unsimulated/wall/supermatter/Initialize(mapload)
. = ..()
START_PROCESSING(SSturfs, src)
next_check = world.time+5 SECONDS
/turf/unsimulated/wall/supermatter/Destroy()
STOP_PROCESSING(SSturfs, src)
return ..()
/turf/unsimulated/wall/supermatter/process()
// Only check infrequently.
if(next_check>world.time) return
// No more available directions? Shut down process().
if(avail_dirs.len==0)
STOP_PROCESSING(SSobj, src)
return 1
// We're checking, reset the timer.
next_check = world.time+5 SECONDS
// Choose a direction.
var/pdir = pick(avail_dirs)
avail_dirs -= pdir
var/turf/T=get_step(src,pdir)
// EXPAND
if(!istype(T,type))
// Do pretty fadeout animation for 1s.
new /obj/effect/overlay/bluespacify(T)
spawn(10)
// Nom.
for(var/atom/movable/A in T)
if(A)
if(istype(A,/mob/living))
qdel(A)
else if(istype(A,/mob)) // Observers, AI cameras.
continue
else
qdel(A)
T.ChangeTurf(type)
if((spawned & (NORTH|SOUTH|EAST|WEST)) == (NORTH|SOUTH|EAST|WEST))
STOP_PROCESSING(SSturfs, src)
return
/turf/unsimulated/wall/supermatter/attack_generic(mob/user as mob)
return attack_hand(user)
/turf/unsimulated/wall/supermatter/attack_robot(mob/user as mob)
if(Adjacent(user))
return attack_hand(user)
else
to_chat(user, span_warning("What the fuck are you doing?"))
return
// /vg/: Don't let ghosts fuck with this.
/turf/unsimulated/wall/supermatter/attack_ghost(mob/user as mob)
user.examinate(src)
/turf/unsimulated/wall/supermatter/attack_ai(mob/user as mob)
return user.examinate(src)
/turf/unsimulated/wall/supermatter/attack_hand(mob/user as mob)
user.visible_message(span_warning("\The [user] reaches out and touches \the [src]... And then blinks out of existance."),\
span_danger("You reach out and touch \the [src]. Everything immediately goes quiet. Your last thought is \"That was not a wise decision.\""),\
span_warning("You hear an unearthly noise."))
playsound(src, 'sound/effects/supermatter.ogg', 50, 1)
Consume(user)
/turf/unsimulated/wall/supermatter/attackby(obj/item/W as obj, mob/living/user as mob)
user.visible_message(span_warning("\The [user] touches \a [W] to \the [src] as a silence fills the room..."),\
span_danger("You touch \the [W] to \the [src] when everything suddenly goes silent.\"") + "\n" + span_notice("\The [W] flashes into dust as you flinch away from \the [src]."),\
span_warning("Everything suddenly goes silent."))
playsound(src, 'sound/effects/supermatter.ogg', 50, 1)
user.drop_from_inventory(W)
Consume(W)
/turf/unsimulated/wall/supermatter/Bumped(atom/AM as mob|obj)
if(istype(AM, /mob/living))
var/mob/living/M = AM
var/datum/gender/T = gender_datums[M.get_visible_gender()]
AM.visible_message(span_warning("\The [AM] slams into \the [src] inducing a resonance... [T.his] body starts to glow and catch flame before flashing into ash."),\
span_danger("You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\""),\
span_warning("You hear an unearthly noise as a wave of heat washes over you."))
else
AM.visible_message(span_warning("\The [AM] smacks into \the [src] and rapidly flashes to ash."),\
span_warning("You hear a loud crack as you are washed with a wave of heat."))
playsound(src, 'sound/effects/supermatter.ogg', 50, 1)
Consume(AM)
/turf/unsimulated/wall/supermatter/proc/Consume(var/mob/living/user)
if(istype(user,/mob/observer))
return
qdel(user)