Files
2020-12-09 23:09:19 -03:00

99 lines
4.2 KiB
Plaintext

/datum/round_event_control/aurora_aquilae
name = "Aurora Aquilae"
typepath = /datum/round_event/aurora_aquilae
max_occurrences = 1
weight = 4
earliest_start = 900 MINUTES
/datum/round_event_control/aurora_aquilae/canSpawnEvent(players, gamemode)
if(!CONFIG_GET(flag/starlight))
return FALSE
return ..()
/datum/round_event/aurora_aquilae
announceWhen = 30
startWhen = 1
endWhen = 115
var/list/aurora_colors = list("#ffc8bc", "#ed927f", "#d5745f", "#bf3a1d", "#c71414", "#FF3131", "#ee0808", "#ff0000")
var/aurora_progress = 0 //this cycles from 1 to 8, slowly grading towards a bright red
var/list/areasToFlicker = list(/area/hallway,
/area/security,
/area/science)
/datum/round_event/aurora_aquilae/start()
for(var/area in GLOB.sortedAreas)
var/area/A = area
if(initial(A.dynamic_lighting) == DYNAMIC_LIGHTING_IFSTARLIGHT)
for(var/turf/open/space/S in A)
S.set_light(S.light_range * 8, S.light_power * 1)
for(var/mob/M in GLOB.player_list)
SEND_SOUND(M, sound('sound/ambience/aurora_aquilae.ogg', volume=10)) //ogg is "In the presence of a King" by Heaven Pierce Her, used in the videogame ULTRAKILL. All respects and credits to the equivalent artists who worked on it.
/datum/round_event/aurora_aquilae/proc/flicker_lights()
for(var/area/A in world)
for(var/typecheck in areasToFlicker)
if(istype(A, typecheck))
for(var/obj/machinery/light/L in A)
L.flicker(10)
/datum/round_event/aurora_aquilae/proc/break_lights()
for(var/area/A in world)
for(var/typecheck in areasToFlicker)
if(istype(A, typecheck))
for(var/obj/machinery/power/apc/temp in A)
temp.overload_lighting()
/datum/round_event/aurora_aquilae/proc/battleflashbacksthree()
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
new /datum/hallucination/stray_pistol_bullet(H)
/datum/round_event/aurora_aquilae/proc/battleflashbacksone()
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
new /datum/hallucination/fire(H)
new /datum/hallucination/battle(H)
/datum/round_event/aurora_aquilae/proc/battleflashbackstwo()
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
new /datum/hallucination/battle(H)
var/delay = 0
for(var/i in 1 to 50)
delay += 3
addtimer(CALLBACK(src, .proc/battleflashbacksthree), delay)
/datum/round_event/aurora_aquilae/announce()
priority_announce("[station_name()]: A ·#HARMLESS#· cloud of ·|$% GLORY AND GUTS¬€#· ions is approaching your ·|%$ station, and will exhaust their energy battering the hull. Kinaris Command has approved a short break for all employees to relax and observe this very rare event. During this time, starlight will be bright but %%%BRUTAL·$ª, shifting between %$$%!ªTHE COMPLETE AND UTTER DESTRUCTION OF THE SENSES$ and %%THE ASHES OF THE GREAT AL-SHAIN%. Any staff who would like to view the %%PRESENCE OF A KING%$ for themselves may proceed to the nearest area with viewing ports to open space.",
sound = 'sound/misc/interference.ogg',
sender_override = "Kin]·|Aari$s Meteo%&rology DivD··isio#n")
addtimer(CALLBACK(src, .proc/flicker_lights), 5 SECONDS)
addtimer(CALLBACK(src, .proc/battleflashbacksone), 5 SECONDS)
addtimer(CALLBACK(src, .proc/break_lights), 90 SECONDS)
addtimer(CALLBACK(src, .proc/battleflashbackstwo), 140 SECONDS)
/datum/round_event/aurora_aquilae/tick()
if(activeFor % 5 == 0)
aurora_progress++
var/aurora_color = aurora_colors[aurora_progress]
for(var/area in GLOB.sortedAreas)
var/area/A = area
if(initial(A.dynamic_lighting) == DYNAMIC_LIGHTING_IFSTARLIGHT)
for(var/turf/open/space/S in A)
S.set_light(l_color = aurora_color)
/datum/round_event/aurora_aquilae/end()
for(var/area in GLOB.sortedAreas)
var/area/A = area
if(initial(A.dynamic_lighting) == DYNAMIC_LIGHTING_IFSTARLIGHT)
for(var/turf/open/space/S in A)
fade_to_black(S)
priority_announce("Have a pleasant shift, [station_name()], and thank you for watching us.",
sound = 'sound/misc/notice2.ogg',
sender_override = "???")
/datum/round_event/aurora_aquilae/proc/fade_to_black(turf/open/space/S)
set waitfor = FALSE
var/new_light = initial(S.light_range)
while(S.light_range > new_light)
S.set_light(S.light_range - 0.2)
sleep(30)
S.set_light(new_light, initial(S.light_power), initial(S.light_color))