diff --git a/code/modules/events/aurora_aquilae.dm b/code/modules/events/aurora_aquilae.dm new file mode 100644 index 00000000..5b04fcc7 --- /dev/null +++ b/code/modules/events/aurora_aquilae.dm @@ -0,0 +1,98 @@ +/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)) diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm index 85bb7960..b941a978 100644 --- a/code/modules/events/aurora_caelus.dm +++ b/code/modules/events/aurora_caelus.dm @@ -14,24 +14,24 @@ announceWhen = 1 startWhen = 9 endWhen = 50 - var/list/aurora_colors = list("#ffd980", "#eaff80", "#eaff80", "#ffd980", "#eaff80", "#A2FFC7", "#A2FFDE", "#ffd980") + var/list/aurora_colors = list("#ffd980", "#eaff80", "#eaff80", "#ffd980", "#eaff80", "#A2FFC7", "#9400D3", "#FFC0CB") var/aurora_progress = 0 //this cycles from 1 to 8, slowly changing colors from gentle green to gentle blue /datum/round_event/aurora_caelus/announce() - priority_announce("[station_name()]: A harmless cloud of 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 gentle, shifting between quiet green and blue colors. Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. We hope you enjoy the lights.", + priority_announce("[station_name()]: A harmless cloud of 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 gentle, shifting between quiet green and blue colors. We will also play quiet music for you to enjoy and relax. Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. We hope you enjoy the lights.", sound = 'sound/misc/notice2.ogg', sender_override = "Kinaris Meteorology Division") for(var/V in GLOB.player_list) var/mob/M = V if((M.client.prefs.toggles & SOUND_MIDI) && is_station_level(M.z)) - M.playsound_local(M, 'sound/ambience/aurora_caelus.ogg', 20, FALSE, pressure_affected = FALSE) + M.playsound_local(M, 'sound/ambience/aurora_caelus_new.ogg', 40, FALSE, pressure_affected = FALSE) //ogg is "The Fire is Gone" 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_caelus/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 * 3, S.light_power * 0.5) + S.set_light(S.light_range * 6, S.light_power * 1) /datum/round_event/aurora_caelus/tick() if(activeFor % 5 == 0) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index bb538771..d47543e0 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -1289,4 +1289,25 @@ GLOBAL_LIST_INIT(hallucination_list, list( H.hal_target = target H.preparePixelProjectile(target, start) H.fire() - qdel(src) \ No newline at end of file + qdel(src) + +/datum/hallucination/stray_pistol_bullet //specifically for aurora_aquilae.dm event + +/datum/hallucination/stray_pistol_bullet/New(mob/living/carbon/C, forced = TRUE) + set waitfor = FALSE + ..() + var/list/turf/startlocs = list() + for(var/turf/open/T in view(world.view+1,target)-view(world.view,target)) + startlocs += T + if(!startlocs.len) + qdel(src) + return + var/turf/start = pick(startlocs) + var/proj_type = /obj/item/projectile/hallucination/bullet + feedback_details += "Type: [proj_type]" + var/obj/item/projectile/hallucination/H = new proj_type(start) + target.playsound_local(start, H.hal_fire_sound, 60, 1) + H.hal_target = target + H.preparePixelProjectile(target, start) + H.fire() + qdel(src) diff --git a/config/game_options.txt b/config/game_options.txt index bb5a0752..00a1fa3a 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -579,4 +579,4 @@ BOX_RANDOM_ENGINE Box SM 3x,1 BOX_RANDOM_ENGINE Box TEG,2 BOX_RANDOM_ENGINE Box Empty,0 BOX_RANDOM_ENGINE Box Antimatter,0 -BOX_RANDOM_ENGINE Box P.A.C.M.A.N,0 \ No newline at end of file +BOX_RANDOM_ENGINE Box P.A.C.M.A.N,0 diff --git a/sound/ambience/aurora_aquilae.ogg b/sound/ambience/aurora_aquilae.ogg new file mode 100644 index 00000000..6efe2373 Binary files /dev/null and b/sound/ambience/aurora_aquilae.ogg differ diff --git a/sound/ambience/aurora_caelus_new.ogg b/sound/ambience/aurora_caelus_new.ogg new file mode 100644 index 00000000..b8df83e3 Binary files /dev/null and b/sound/ambience/aurora_caelus_new.ogg differ diff --git a/tgstation.dme b/tgstation.dme index 705ac989..2c84ab36 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1678,6 +1678,7 @@ #include "code\modules\events\anomaly_grav.dm" #include "code\modules\events\anomaly_pyro.dm" #include "code\modules\events\anomaly_vortex.dm" +#include "code\modules\events\aurora_aquilae.dm" #include "code\modules\events\aurora_caelus.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm"