mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-18 03:21:30 +01:00
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:
@@ -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))
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user