Merge pull request #754 from MalricB/euthanasia

[READY TO MERGE] Aurora Aquilae, like Aurora Caelus but a bit terrifying. Also minor tweak to Aurora Caelus.
This commit is contained in:
Dahlular
2020-12-09 19:22:28 -07:00
committed by GitHub
7 changed files with 126 additions and 6 deletions
+98
View File
@@ -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))
+4 -4
View File
@@ -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)
+22 -1
View File
@@ -1289,4 +1289,25 @@ GLOBAL_LIST_INIT(hallucination_list, list(
H.hal_target = target
H.preparePixelProjectile(target, start)
H.fire()
qdel(src)
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)