diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 3d651a2a0f..e733a82ed7 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -43,6 +43,8 @@ #define WARNING_DELAY 20 //seconds between warnings. +#define SUPERMATTER_COUNTDOWN_TIME 30 SECONDS // Causality destabilzation field will last this long, giving engineers a last-ditch chance to prevent boom, or get out. + /obj/machinery/power/supermatter name = "Supermatter" desc = "A strangely translucent and iridescent crystal. You get headaches just from looking at it." @@ -67,6 +69,9 @@ var/emergency_alert = "CRYSTAL DELAMINATION IMMINENT." var/explosion_point = 1000 + ///Are we exploding? (Chompers Edit) + var/final_countdown = FALSE + light_color = "#8A8A00" var/warning_color = "#B8B800" var/emergency_color = "#D9D900" @@ -236,6 +241,8 @@ var/alert_msg = " Integrity at [integrity]%" var/message_sound = 'sound/ambience/matteralarm.ogg' + if(final_countdown) // Chompers additon + return if(damage > emergency_point) alert_msg = emergency_alert + alert_msg lastwarning = world.timeofday - WARNING_DELAY * 4 @@ -279,7 +286,7 @@ if(!exploded) if(!istype(L, /turf/space)) announce_warning() - explode() + countdown() // Chompers Edit else if(damage > warning_point) // while the core is still damaged and it's still worth noting its status shift_light(5, warning_color) if(damage > emergency_point) @@ -366,6 +373,38 @@ return 1 +/obj/machinery/power/supermatter/update_icon() // Chompers Edit Start + cut_overlays() + if(final_countdown) + add_overlay("causality_field") + +/obj/machinery/power/supermatter/proc/countdown() + set waitfor = FALSE + + if(final_countdown) // We're already doing it go away + return + final_countdown = TRUE + update_icon() + + var/speaking = "[emergency_alert] The supermatter has reached critical integrity failure. Emergency causality destabilization field has been activated." + global_announcer.autosay(speaking, "Supermatter Monitor") + for(var/i in SUPERMATTER_COUNTDOWN_TIME to 0 step -10) + if(damage < explosion_point) // Cutting it a bit close there engineers + global_announcer.autosay("[safe_alert] Failsafe has been disengaged.", "Supermatter Monitor") + final_countdown = FALSE + update_icon() + return + else if((i % 50) != 0 && i > 50) // A message once every 5 seconds until the final 5 seconds which count down individualy + sleep(10) + continue + else if(i > 50) + speaking = "[DisplayTimeText(i, TRUE)] remain before causality stabilization." + else + speaking = "[i*0.1]..." + global_announcer.autosay(speaking, "Supermatter Monitor") + sleep(10) + + explode() // Chompers Edit End /obj/machinery/power/supermatter/bullet_act(var/obj/item/projectile/Proj) var/turf/L = loc diff --git a/icons/obj/engine.dmi b/icons/obj/engine.dmi index 51bc0356c8..ccadcc45ec 100644 Binary files a/icons/obj/engine.dmi and b/icons/obj/engine.dmi differ