Merge pull request #3894 from Citadel-Station-13/upstream-merge-32559

[MIRROR] Makes false alarm use more explicit in event code.
This commit is contained in:
LetterJay
2017-11-13 11:42:53 -06:00
committed by GitHub
47 changed files with 927 additions and 910 deletions

View File

@@ -108,11 +108,12 @@
var/datum/round_event_control/control var/datum/round_event_control/control
var/startWhen = 0 //When in the lifetime to call start(). var/startWhen = 0 //When in the lifetime to call start().
var/announceWhen = 0 //When in the lifetime to call announce(). Set an event's announceWhen to >0 if there is an announcement. var/announceWhen = 0 //When in the lifetime to call announce(). Set an event's announceWhen to -1 if announcement should not be shown.
var/endWhen = 0 //When in the lifetime the event should end. var/endWhen = 0 //When in the lifetime the event should end.
var/activeFor = 0 //How long the event has existed. You don't need to change this. var/activeFor = 0 //How long the event has existed. You don't need to change this.
var/current_players = 0 //Amount of of alive, non-AFK human players on server at the time of event start var/current_players = 0 //Amount of of alive, non-AFK human players on server at the time of event start
var/fakeable = TRUE //Can be faked by fake news event.
//Called first before processing. //Called first before processing.
//Allows you to setup your event, such as randomly //Allows you to setup your event, such as randomly
@@ -133,7 +134,7 @@
//Called when the tick is equal to the announceWhen variable. //Called when the tick is equal to the announceWhen variable.
//Allows you to announce before starting or vice versa. //Allows you to announce before starting or vice versa.
//Only called once. //Only called once.
/datum/round_event/proc/announce() /datum/round_event/proc/announce(fake)
return return
//Called on or after the tick counter is equal to startWhen. //Called on or after the tick counter is equal to startWhen.
@@ -167,7 +168,7 @@
if(activeFor == announceWhen) if(activeFor == announceWhen)
processing = FALSE processing = FALSE
announce() announce(FALSE)
processing = TRUE processing = TRUE
if(startWhen < activeFor && activeFor < endWhen) if(startWhen < activeFor && activeFor < endWhen)

View File

@@ -9,6 +9,7 @@
/datum/round_event/ghost_role/abductor /datum/round_event/ghost_role/abductor
minimum_required = 2 minimum_required = 2
role_name = "abductor team" role_name = "abductor team"
fakeable = FALSE //Nothing to fake here
/datum/round_event/ghost_role/abductor/spawn_role() /datum/round_event/ghost_role/abductor/spawn_role()
var/list/mob/dead/observer/candidates = get_candidates("abductor", null, ROLE_ABDUCTOR) var/list/mob/dead/observer/candidates = get_candidates("abductor", null, ROLE_ABDUCTOR)

View File

@@ -30,8 +30,8 @@
control.occurrences-- control.occurrences--
return ..() return ..()
/datum/round_event/ghost_role/alien_infestation/announce() /datum/round_event/ghost_role/alien_infestation/announce(fake)
if(successSpawn) if(successSpawn || fake)
priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg') priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg')

View File

@@ -1,33 +1,33 @@
/datum/round_event_control/anomaly /datum/round_event_control/anomaly
name = "Anomaly: Energetic Flux" name = "Anomaly: Energetic Flux"
typepath = /datum/round_event/anomaly typepath = /datum/round_event/anomaly
min_players = 1 min_players = 1
max_occurrences = 0 //This one probably shouldn't occur! It'd work, but it wouldn't be very fun. max_occurrences = 0 //This one probably shouldn't occur! It'd work, but it wouldn't be very fun.
weight = 15 weight = 15
/datum/round_event/anomaly /datum/round_event/anomaly
var/area/impact_area var/area/impact_area
var/obj/effect/anomaly/newAnomaly var/obj/effect/anomaly/newAnomaly
announceWhen = 1 announceWhen = 1
/datum/round_event/anomaly/setup(loop=0) /datum/round_event/anomaly/setup(loop=0)
var/safety_loop = loop + 1 var/safety_loop = loop + 1
if(safety_loop > 50) if(safety_loop > 50)
kill() kill()
end() end()
impact_area = findEventArea() impact_area = findEventArea()
if(!impact_area) if(!impact_area)
setup(safety_loop) setup(safety_loop)
var/list/turf_test = get_area_turfs(impact_area) var/list/turf_test = get_area_turfs(impact_area)
if(!turf_test.len) if(!turf_test.len)
setup(safety_loop) setup(safety_loop)
/datum/round_event/anomaly/announce() /datum/round_event/anomaly/announce(fake)
priority_announce("Localized energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert") priority_announce("Localized energetic flux wave detected on long range scanners. Expected location of impact: [impact_area.name].", "Anomaly Alert")
/datum/round_event/anomaly/start() /datum/round_event/anomaly/start()
var/turf/T = safepick(get_area_turfs(impact_area)) var/turf/T = safepick(get_area_turfs(impact_area))
if(T) if(T)
newAnomaly = new /obj/effect/anomaly/flux(T) newAnomaly = new /obj/effect/anomaly/flux(T)

View File

@@ -1,19 +1,19 @@
/datum/round_event_control/anomaly/anomaly_bluespace /datum/round_event_control/anomaly/anomaly_bluespace
name = "Anomaly: Bluespace" name = "Anomaly: Bluespace"
typepath = /datum/round_event/anomaly/anomaly_bluespace typepath = /datum/round_event/anomaly/anomaly_bluespace
max_occurrences = 1 max_occurrences = 1
weight = 5 weight = 5
/datum/round_event/anomaly/anomaly_bluespace /datum/round_event/anomaly/anomaly_bluespace
startWhen = 3 startWhen = 3
announceWhen = 10 announceWhen = 10
/datum/round_event/anomaly/anomaly_bluespace/announce() /datum/round_event/anomaly/anomaly_bluespace/announce(fake)
priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
/datum/round_event/anomaly/anomaly_bluespace/start() /datum/round_event/anomaly/anomaly_bluespace/start()
var/turf/T = safepick(get_area_turfs(impact_area)) var/turf/T = safepick(get_area_turfs(impact_area))
if(T) if(T)
newAnomaly = new /obj/effect/anomaly/bluespace(T) newAnomaly = new /obj/effect/anomaly/bluespace(T)

View File

@@ -1,20 +1,20 @@
/datum/round_event_control/anomaly/anomaly_flux /datum/round_event_control/anomaly/anomaly_flux
name = "Anomaly: Hyper-Energetic Flux" name = "Anomaly: Hyper-Energetic Flux"
typepath = /datum/round_event/anomaly/anomaly_flux typepath = /datum/round_event/anomaly/anomaly_flux
min_players = 10 min_players = 10
max_occurrences = 5 max_occurrences = 5
weight = 20 weight = 20
/datum/round_event/anomaly/anomaly_flux /datum/round_event/anomaly/anomaly_flux
startWhen = 10 startWhen = 10
announceWhen = 3 announceWhen = 3
/datum/round_event/anomaly/anomaly_flux/announce() /datum/round_event/anomaly/anomaly_flux/announce(fake)
priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
/datum/round_event/anomaly/anomaly_flux/start() /datum/round_event/anomaly/anomaly_flux/start()
var/turf/T = safepick(get_area_turfs(impact_area)) var/turf/T = safepick(get_area_turfs(impact_area))
if(T) if(T)
newAnomaly = new /obj/effect/anomaly/flux(T) newAnomaly = new /obj/effect/anomaly/flux(T)

View File

@@ -1,17 +1,17 @@
/datum/round_event_control/anomaly/anomaly_grav /datum/round_event_control/anomaly/anomaly_grav
name = "Anomaly: Gravitational" name = "Anomaly: Gravitational"
typepath = /datum/round_event/anomaly/anomaly_grav typepath = /datum/round_event/anomaly/anomaly_grav
max_occurrences = 5 max_occurrences = 5
weight = 20 weight = 20
/datum/round_event/anomaly/anomaly_grav /datum/round_event/anomaly/anomaly_grav
startWhen = 3 startWhen = 3
announceWhen = 20 announceWhen = 20
/datum/round_event/anomaly/anomaly_grav/announce() /datum/round_event/anomaly/anomaly_grav/announce(fake)
priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
/datum/round_event/anomaly/anomaly_grav/start() /datum/round_event/anomaly/anomaly_grav/start()
var/turf/T = safepick(get_area_turfs(impact_area)) var/turf/T = safepick(get_area_turfs(impact_area))
if(T) if(T)
newAnomaly = new /obj/effect/anomaly/grav(T) newAnomaly = new /obj/effect/anomaly/grav(T)

View File

@@ -8,7 +8,7 @@
startWhen = 3 startWhen = 3
announceWhen = 10 announceWhen = 10
/datum/round_event/anomaly/anomaly_pyro/announce() /datum/round_event/anomaly/anomaly_pyro/announce(fake)
priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert") priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
/datum/round_event/anomaly/anomaly_pyro/start() /datum/round_event/anomaly/anomaly_pyro/start()

View File

@@ -1,19 +1,19 @@
/datum/round_event_control/anomaly/anomaly_vortex /datum/round_event_control/anomaly/anomaly_vortex
name = "Anomaly: Vortex" name = "Anomaly: Vortex"
typepath = /datum/round_event/anomaly/anomaly_vortex typepath = /datum/round_event/anomaly/anomaly_vortex
min_players = 20 min_players = 20
max_occurrences = 2 max_occurrences = 2
weight = 5 weight = 5
/datum/round_event/anomaly/anomaly_vortex /datum/round_event/anomaly/anomaly_vortex
startWhen = 10 startWhen = 10
announceWhen = 3 announceWhen = 3
/datum/round_event/anomaly/anomaly_vortex/announce() /datum/round_event/anomaly/anomaly_vortex/announce(fake)
priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert") priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert")
/datum/round_event/anomaly/anomaly_vortex/start() /datum/round_event/anomaly/anomaly_vortex/start()
var/turf/T = safepick(get_area_turfs(impact_area)) var/turf/T = safepick(get_area_turfs(impact_area))
if(T) if(T)
newAnomaly = new /obj/effect/anomaly/bhole(T) newAnomaly = new /obj/effect/anomaly/bhole(T)

View File

@@ -12,7 +12,7 @@
announceWhen = -1 announceWhen = -1
role_name = "blob overmind" role_name = "blob overmind"
/datum/round_event/ghost_role/blob/announce() /datum/round_event/ghost_role/blob/announce(fake)
priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg') priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg')
/datum/round_event/ghost_role/blob/spawn_role() /datum/round_event/ghost_role/blob/spawn_role()

View File

@@ -21,9 +21,14 @@
"You don't want to buy anything? Yeah, well, I didn't want to buy your mom either.") "You don't want to buy anything? Yeah, well, I didn't want to buy your mom either.")
/datum/round_event/brand_intelligence/announce() /datum/round_event/brand_intelligence/announce(fake)
priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [originMachine.name].", "Machine Learning Alert") var/source = "unknown machine"
if(fake)
var/obj/machinery/vending/cola/example = /obj/machinery/vending/cola
source = initial(example.name)
else if(originMachine)
source = originMachine.name
priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert")
/datum/round_event/brand_intelligence/start() /datum/round_event/brand_intelligence/start()
for(var/obj/machinery/vending/V in GLOB.machines) for(var/obj/machinery/vending/V in GLOB.machines)

View File

@@ -8,7 +8,7 @@
/datum/round_event/camera_failure /datum/round_event/camera_failure
startWhen = 1 startWhen = 1
endWhen = 2 endWhen = 2
announceWhen = 0 fakeable = FALSE
/datum/round_event/camera_failure/tick() /datum/round_event/camera_failure/tick()
var/iterations = 1 var/iterations = 1

View File

@@ -13,7 +13,7 @@
/datum/round_event/carp_migration/setup() /datum/round_event/carp_migration/setup()
startWhen = rand(40, 60) startWhen = rand(40, 60)
/datum/round_event/carp_migration/announce() /datum/round_event/carp_migration/announce(fake)
priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")

View File

@@ -1,26 +1,26 @@
/datum/round_event_control/communications_blackout /datum/round_event_control/communications_blackout
name = "Communications Blackout" name = "Communications Blackout"
typepath = /datum/round_event/communications_blackout typepath = /datum/round_event/communications_blackout
weight = 30 weight = 30
/datum/round_event/communications_blackout /datum/round_event/communications_blackout
announceWhen = 1 announceWhen = 1
/datum/round_event/communications_blackout/announce() /datum/round_event/communications_blackout/announce(fake)
var/alert = pick( "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT", \ var/alert = pick( "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT", \
"Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v<31>-BZZZT", \ "Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v<31>-BZZZT", \
"Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", \ "Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", \
"Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", \ "Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", \
"Ionospheri:%<25> MCayj^j<.3-BZZZZZZT", \ "Ionospheri:%<25> MCayj^j<.3-BZZZZZZT", \
"#4nd%;f4y6,><3E>%-BZZZZZZZT") "#4nd%;f4y6,><3E>%-BZZZZZZZT")
for(var/mob/living/silicon/ai/A in GLOB.ai_list) //AIs are always aware of communication blackouts. for(var/mob/living/silicon/ai/A in GLOB.ai_list) //AIs are always aware of communication blackouts.
to_chat(A, "<br><span class='warning'><b>[alert]</b></span><br>") to_chat(A, "<br><span class='warning'><b>[alert]</b></span><br>")
if(prob(30)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts. if(prob(30) || fake) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts.
priority_announce(alert) priority_announce(alert)
/datum/round_event/communications_blackout/start() /datum/round_event/communications_blackout/start()
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list) for(var/obj/machinery/telecomms/T in GLOB.telecomms_list)
T.emp_act(EMP_HEAVY) T.emp_act(EMP_HEAVY)

View File

@@ -6,6 +6,7 @@
/datum/round_event/ghost_role/devil /datum/round_event/ghost_role/devil
var/success_spawn = 0 var/success_spawn = 0
role_name = "devil" role_name = "devil"
fakeable = FALSE
/datum/round_event/ghost_role/devil/kill() /datum/round_event/ghost_role/devil/kill()
if(!success_spawn && control) if(!success_spawn && control)

View File

@@ -11,7 +11,7 @@
var/virus_type var/virus_type
/datum/round_event/disease_outbreak/announce() /datum/round_event/disease_outbreak/announce(fake)
priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak7.ogg') priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak7.ogg')
/datum/round_event/disease_outbreak/setup() /datum/round_event/disease_outbreak/setup()

View File

@@ -1,30 +1,31 @@
/datum/round_event_control/space_dust /datum/round_event_control/space_dust
name = "Minor Space Dust" name = "Minor Space Dust"
typepath = /datum/round_event/space_dust typepath = /datum/round_event/space_dust
weight = 200 weight = 200
max_occurrences = 1000 max_occurrences = 1000
earliest_start = 0 earliest_start = 0
alertadmins = 0 alertadmins = 0
/datum/round_event/space_dust /datum/round_event/space_dust
startWhen = 1 startWhen = 1
endWhen = 2 endWhen = 2
announceWhen = 0 fakeable = FALSE
/datum/round_event/space_dust/start() /datum/round_event/space_dust/start()
spawn_meteors(1, GLOB.meteorsC) spawn_meteors(1, GLOB.meteorsC)
/datum/round_event_control/sandstorm /datum/round_event_control/sandstorm
name = "Sandstorm" name = "Sandstorm"
typepath = /datum/round_event/sandstorm typepath = /datum/round_event/sandstorm
weight = 0 weight = 0
max_occurrences = 0 max_occurrences = 0
earliest_start = 0 earliest_start = 0
/datum/round_event/sandstorm /datum/round_event/sandstorm
startWhen = 1 startWhen = 1
endWhen = 150 // ~5 min endWhen = 150 // ~5 min
announceWhen = 0 announceWhen = 0
fakeable = FALSE
/datum/round_event/sandstorm/tick()
spawn_meteors(10, GLOB.meteorsC) /datum/round_event/sandstorm/tick()
spawn_meteors(10, GLOB.meteorsC)

View File

@@ -11,7 +11,7 @@
var/lightsoutRange = 25 var/lightsoutRange = 25
announceWhen = 1 announceWhen = 1
/datum/round_event/electrical_storm/announce() /datum/round_event/electrical_storm/announce(fake)
priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert") priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert")

View File

@@ -13,10 +13,8 @@
var/list/possible_types = list() var/list/possible_types = list()
for(var/datum/round_event_control/E in SSevents.control) for(var/datum/round_event_control/E in SSevents.control)
if(istype(E, /datum/round_event_control/falsealarm))
continue
var/datum/round_event/event = E.typepath var/datum/round_event/event = E.typepath
if(initial(event.announceWhen) <= 0) if(!initial(event.fakeable))
continue continue
possible_types += E possible_types += E
@@ -28,8 +26,11 @@
/datum/round_event/falsealarm /datum/round_event/falsealarm
announceWhen = 0 announceWhen = 0
endWhen = 1 endWhen = 1
fakeable = FALSE
/datum/round_event/falsealarm/announce() /datum/round_event/falsealarm/announce(fake)
if(fake) //What are you doing
return
var/players_amt = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1) var/players_amt = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1)
var/gamemode = SSticker.mode.config_tag var/gamemode = SSticker.mode.config_tag
@@ -45,7 +46,7 @@
var/datum/round_event/Event = new event_control.typepath() var/datum/round_event/Event = new event_control.typepath()
message_admins("False Alarm: [Event]") message_admins("False Alarm: [Event]")
Event.kill() //do not process this event - no starts, no ticks, no ends Event.kill() //do not process this event - no starts, no ticks, no ends
Event.announce() //just announce it like it's happening Event.announce(TRUE) //just announce it like it's happening
/proc/gather_false_events(players_amt, gamemode) /proc/gather_false_events(players_amt, gamemode)
. = list() . = list()
@@ -56,6 +57,6 @@
continue continue
var/datum/round_event/event = E.typepath var/datum/round_event/event = E.typepath
if(initial(event.announceWhen) <= 0) if(!initial(event.fakeable))
continue continue
. += E . += E

View File

@@ -8,7 +8,7 @@
announceWhen = 1 announceWhen = 1
startWhen = 1 startWhen = 1
/datum/round_event/grid_check/announce() /datum/round_event/grid_check/announce(fake)
priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", 'sound/ai/poweroff.ogg') priority_announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Critical Power Failure", 'sound/ai/poweroff.ogg')

View File

@@ -1,18 +1,18 @@
// Basically, cut the event frequency in half to simulate unluckiness. // Basically, cut the event frequency in half to simulate unluckiness.
/datum/round_event_control/fridaythethirteen /datum/round_event_control/fridaythethirteen
name = "Friday the 13th" name = "Friday the 13th"
holidayID = FRIDAY_13TH holidayID = FRIDAY_13TH
typepath = /datum/round_event/fridaythethirteen typepath = /datum/round_event/fridaythethirteen
weight = -1 weight = -1
max_occurrences = 1 max_occurrences = 1
earliest_start = 0 earliest_start = 0
/datum/round_event/fridaythethirteen/start() /datum/round_event/fridaythethirteen/start()
//Very unlucky, cut the frequency of events in half. //Very unlucky, cut the frequency of events in half.
events.frequency_lower /= 2 events.frequency_lower /= 2
events.frequency_upper /= 2 events.frequency_upper /= 2
/datum/round_event/fridaythethirteen/announce() /datum/round_event/fridaythethirteen/announce(fake)
for(var/mob/living/L in player_list) for(var/mob/living/L in player_list)
to_chat(L, "<span class='warning'>You are feeling unlucky today.</span>") to_chat(L, "<span class='warning'>You are feeling unlucky today.</span>")

View File

@@ -19,7 +19,7 @@
new /mob/living/simple_animal/parrot/Poly/ghost(Poly.loc) new /mob/living/simple_animal/parrot/Poly/ghost(Poly.loc)
qdel(Poly) qdel(Poly)
/datum/round_event/spooky/announce() /datum/round_event/spooky/announce(fake)
priority_announce(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE") priority_announce(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE")
//spooky foods (you can't actually make these when it's not halloween) //spooky foods (you can't actually make these when it's not halloween)

View File

@@ -61,7 +61,7 @@
to_chat(lover, "<span class='warning'><B>You're on a date with [date]! Protect them at all costs. This takes priority over all other loyalties.</B></span>") to_chat(lover, "<span class='warning'><B>You're on a date with [date]! Protect them at all costs. This takes priority over all other loyalties.</B></span>")
/datum/round_event/valentines/announce() /datum/round_event/valentines/announce(fake)
priority_announce("It's Valentine's Day! Give a valentine to that special someone!") priority_announce("It's Valentine's Day! Give a valentine to that special someone!")
/obj/item/valentine /obj/item/valentine

View File

@@ -35,7 +35,7 @@
for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in GLOB.machines) for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in GLOB.machines)
Monitor.icon_state = "entertainment_xmas" Monitor.icon_state = "entertainment_xmas"
/datum/round_event/presents/announce() /datum/round_event/presents/announce(fake)
priority_announce("Ho Ho Ho, Merry Xmas!", "Unknown Transmission") priority_announce("Ho Ho Ho, Merry Xmas!", "Unknown Transmission")
@@ -105,7 +105,7 @@
/datum/round_event/santa /datum/round_event/santa
var/mob/living/carbon/human/santa //who is our santa? var/mob/living/carbon/human/santa //who is our santa?
/datum/round_event/santa/announce() /datum/round_event/santa/announce(fake)
priority_announce("Santa is coming to town!", "Unknown Transmission") priority_announce("Santa is coming to town!", "Unknown Transmission")
/datum/round_event/santa/start() /datum/round_event/santa/start()

View File

@@ -16,7 +16,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
/datum/round_event/immovable_rod /datum/round_event/immovable_rod
announceWhen = 5 announceWhen = 5
/datum/round_event/immovable_rod/announce() /datum/round_event/immovable_rod/announce(fake)
priority_announce("What the fuck was that?!", "General Alert") priority_announce("What the fuck was that?!", "General Alert")
/datum/round_event/immovable_rod/start() /datum/round_event/immovable_rod/start()

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,7 @@
/datum/round_event/meteor_wave/major_dust /datum/round_event/meteor_wave/major_dust
wave_name = "space dust" wave_name = "space dust"
/datum/round_event/meteor_wave/major_dust/announce() /datum/round_event/meteor_wave/major_dust/announce(fake)
var/reason = pick( var/reason = pick(
"The station is passing through a debris cloud, expect minor damage \ "The station is passing through a debris cloud, expect minor damage \
to external fittings and fixtures.", to external fittings and fixtures.",

View File

@@ -1,10 +1,13 @@
/datum/round_event_control/mass_hallucination /datum/round_event_control/mass_hallucination
name = "Mass Hallucination" name = "Mass Hallucination"
typepath = /datum/round_event/mass_hallucination typepath = /datum/round_event/mass_hallucination
weight = 7 weight = 7
max_occurrences = 2 max_occurrences = 2
min_players = 1 min_players = 1
/datum/round_event/mass_hallucination/start() /datum/round_event/mass_hallucination
for(var/mob/living/carbon/C in GLOB.living_mob_list) fakeable = FALSE
C.hallucination += rand(20, 50)
/datum/round_event/mass_hallucination/start()
for(var/mob/living/carbon/C in GLOB.living_mob_list)
C.hallucination += rand(20, 50)

View File

@@ -7,5 +7,5 @@
/datum/round_event/meteor_wave/meaty /datum/round_event/meteor_wave/meaty
wave_name = "meaty" wave_name = "meaty"
/datum/round_event/meteor_wave/meaty/announce() /datum/round_event/meteor_wave/meaty/announce(fake)
priority_announce("Meaty ores have been detected on collision course with the station.", "Oh crap, get the mop.",'sound/ai/meteors.ogg') priority_announce("Meaty ores have been detected on collision course with the station.", "Oh crap, get the mop.",'sound/ai/meteors.ogg')

View File

@@ -45,7 +45,7 @@
WARNING("Wave name of [wave_name] not recognised.") WARNING("Wave name of [wave_name] not recognised.")
kill() kill()
/datum/round_event/meteor_wave/announce() /datum/round_event/meteor_wave/announce(fake)
priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", 'sound/ai/meteors.ogg') priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", 'sound/ai/meteors.ogg')
/datum/round_event/meteor_wave/tick() /datum/round_event/meteor_wave/tick()

View File

@@ -4,11 +4,10 @@
weight = 10 weight = 10
/datum/round_event/mice_migration /datum/round_event/mice_migration
announceWhen = 0
var/minimum_mice = 5 var/minimum_mice = 5
var/maximum_mice = 15 var/maximum_mice = 15
/datum/round_event/mice_migration/announce() /datum/round_event/mice_migration/announce(fake)
var/cause = pick("space-winter", "budget-cuts", "Ragnarok", var/cause = pick("space-winter", "budget-cuts", "Ragnarok",
"space being cold", "\[REDACTED\]", "climate change", "space being cold", "\[REDACTED\]", "climate change",
"bad luck") "bad luck")

View File

@@ -7,6 +7,7 @@
/datum/round_event/ghost_role/nightmare /datum/round_event/ghost_role/nightmare
minimum_required = 1 minimum_required = 1
role_name = "nightmare" role_name = "nightmare"
fakeable = FALSE
/datum/round_event/ghost_role/nightmare/spawn_role() /datum/round_event/ghost_role/nightmare/spawn_role()
var/list/candidates = get_candidates("alien", null, ROLE_ALIEN) var/list/candidates = get_candidates("alien", null, ROLE_ALIEN)

View File

@@ -7,6 +7,7 @@
/datum/round_event/ghost_role/operative /datum/round_event/ghost_role/operative
minimum_required = 1 minimum_required = 1
role_name = "lone operative" role_name = "lone operative"
fakeable = FALSE
/datum/round_event/ghost_role/operative/spawn_role() /datum/round_event/ghost_role/operative/spawn_role()
var/list/candidates = get_candidates("operative", null, ROLE_OPERATIVE) var/list/candidates = get_candidates("operative", null, ROLE_OPERATIVE)

View File

@@ -66,7 +66,7 @@
next_boss_spawn = startWhen + Ceiling(2 * number_of_hostiles / number_of_bosses) next_boss_spawn = startWhen + Ceiling(2 * number_of_hostiles / number_of_bosses)
/datum/round_event/portal_storm/announce() /datum/round_event/portal_storm/announce(fake)
set waitfor = 0 set waitfor = 0
sound_to_playing_players('sound/magic/lightning_chargeup.ogg') sound_to_playing_players('sound/magic/lightning_chargeup.ogg')
sleep(80) sleep(80)

View File

@@ -1,59 +1,59 @@
/datum/round_event_control/grey_tide /datum/round_event_control/grey_tide
name = "Grey Tide" name = "Grey Tide"
typepath = /datum/round_event/grey_tide typepath = /datum/round_event/grey_tide
max_occurrences = 2 max_occurrences = 2
min_players = 5 min_players = 5
/datum/round_event/grey_tide /datum/round_event/grey_tide
announceWhen = 50 announceWhen = 50
endWhen = 20 endWhen = 20
var/list/area/areasToOpen = list() var/list/area/areasToOpen = list()
var/list/potential_areas = list(/area/bridge, var/list/potential_areas = list(/area/bridge,
/area/engine, /area/engine,
/area/medical, /area/medical,
/area/security, /area/security,
/area/quartermaster, /area/quartermaster,
/area/science) /area/science)
var/severity = 1 var/severity = 1
/datum/round_event/grey_tide/setup() /datum/round_event/grey_tide/setup()
announceWhen = rand(50, 60) announceWhen = rand(50, 60)
endWhen = rand(20, 30) endWhen = rand(20, 30)
severity = rand(1,3) severity = rand(1,3)
for(var/i in 1 to severity) for(var/i in 1 to severity)
var/picked_area = pick_n_take(potential_areas) var/picked_area = pick_n_take(potential_areas)
for(var/area/A in world) for(var/area/A in world)
if(istype(A, picked_area)) if(istype(A, picked_area))
areasToOpen += A areasToOpen += A
/datum/round_event/grey_tide/announce() /datum/round_event/grey_tide/announce(fake)
if(areasToOpen && areasToOpen.len > 0) if(areasToOpen && areasToOpen.len > 0)
priority_announce("Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement.", "Security Alert") priority_announce("Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement.", "Security Alert")
else else
log_world("ERROR: Could not initate grey-tide. No areas in the list!") log_world("ERROR: Could not initate grey-tide. No areas in the list!")
kill() kill()
/datum/round_event/grey_tide/start() /datum/round_event/grey_tide/start()
for(var/area/A in areasToOpen) for(var/area/A in areasToOpen)
for(var/obj/machinery/light/L in A) for(var/obj/machinery/light/L in A)
L.flicker(10) L.flicker(10)
/datum/round_event/grey_tide/end() /datum/round_event/grey_tide/end()
for(var/area/A in areasToOpen) for(var/area/A in areasToOpen)
for(var/obj/O in A) for(var/obj/O in A)
if(istype(O, /obj/machinery/power/apc)) if(istype(O, /obj/machinery/power/apc))
var/obj/machinery/power/apc/temp = O var/obj/machinery/power/apc/temp = O
temp.overload_lighting() temp.overload_lighting()
else if(istype(O, /obj/structure/closet/secure_closet)) else if(istype(O, /obj/structure/closet/secure_closet))
var/obj/structure/closet/secure_closet/temp = O var/obj/structure/closet/secure_closet/temp = O
temp.locked = FALSE temp.locked = FALSE
temp.update_icon() temp.update_icon()
else if(istype(O, /obj/machinery/door/airlock)) else if(istype(O, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/temp = O var/obj/machinery/door/airlock/temp = O
temp.prison_open() temp.prison_open()
else if(istype(O, /obj/machinery/door_timer)) else if(istype(O, /obj/machinery/door_timer))
var/obj/machinery/door_timer/temp = O var/obj/machinery/door_timer/temp = O
temp.timer_end(forced = TRUE) temp.timer_end(forced = TRUE)

View File

@@ -7,7 +7,7 @@
/datum/round_event/processor_overload /datum/round_event/processor_overload
announceWhen = 1 announceWhen = 1
/datum/round_event/processor_overload/announce() /datum/round_event/processor_overload/announce(fake)
var/alert = pick( "Exospheric bubble inbound. Processor overload is likely. Please contact you*%xp25)`6cq-BZZT", \ var/alert = pick( "Exospheric bubble inbound. Processor overload is likely. Please contact you*%xp25)`6cq-BZZT", \
"Exospheric bubble inbound. Processor overload is likel*1eta;c5;'1v¬-BZZZT", \ "Exospheric bubble inbound. Processor overload is likel*1eta;c5;'1v¬-BZZZT", \
"Exospheric bubble inbound. Processor ov#MCi46:5.;@63-BZZZZT", \ "Exospheric bubble inbound. Processor ov#MCi46:5.;@63-BZZZZT", \
@@ -22,7 +22,7 @@
// Announce most of the time, but leave a little gap so people don't know // Announce most of the time, but leave a little gap so people don't know
// whether it's, say, a tesla zapping tcomms, or some selective // whether it's, say, a tesla zapping tcomms, or some selective
// modification of the tcomms bus // modification of the tcomms bus
if(prob(80)) if(prob(80) || fake)
priority_announce(alert) priority_announce(alert)

View File

@@ -11,7 +11,7 @@
endWhen = startWhen + 1 endWhen = startWhen + 1
announceWhen = 1 announceWhen = 1
/datum/round_event/radiation_storm/announce() /datum/round_event/radiation_storm/announce(fake)
priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/ai/radiation.ogg') priority_announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/ai/radiation.ogg')
//sound not longer matches the text, but an audible warning is probably good //sound not longer matches the text, but an audible warning is probably good

View File

@@ -10,8 +10,8 @@
var/animals = 1 var/animals = 1
var/one = "one" var/one = "one"
/datum/round_event/ghost_role/sentience/start() /datum/round_event/ghost_role/sentience/announce(fake)
var/sentience_report = "<font size=3><b>[command_name()] Medium-Priority Update</b></font>" var/sentience_report = ""
var/data = pick("scans from our long-range sensors", "our sophisticated probabilistic models", "our omnipotence", "the communications traffic on your station", "energy emissions we detected", "\[REDACTED\]") var/data = pick("scans from our long-range sensors", "our sophisticated probabilistic models", "our omnipotence", "the communications traffic on your station", "energy emissions we detected", "\[REDACTED\]")
var/pets = pick("animals/bots", "bots/animals", "pets", "simple animals", "lesser lifeforms", "\[REDACTED\]") var/pets = pick("animals/bots", "bots/animals", "pets", "simple animals", "lesser lifeforms", "\[REDACTED\]")
@@ -19,8 +19,7 @@
sentience_report += "<br><br>Based on [data], we believe that [one] of the station's [pets] has developed [strength] level intelligence, and the ability to communicate." sentience_report += "<br><br>Based on [data], we believe that [one] of the station's [pets] has developed [strength] level intelligence, and the ability to communicate."
print_command_report(text=sentience_report) priority_announce(sentience_report,"[command_name()] Medium-Priority Update")
..()
/datum/round_event/ghost_role/sentience/spawn_role() /datum/round_event/ghost_role/sentience/spawn_role()
var/list/mob/dead/observer/candidates var/list/mob/dead/observer/candidates

View File

@@ -20,10 +20,10 @@
var/bonus_points = 10000 var/bonus_points = 10000
var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble." var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble."
/datum/round_event/shuttle_loan/start() /datum/round_event/shuttle_loan/setup()
dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY, ANTIDOTE_NEEDED, PIZZA_DELIVERY) dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY, ANTIDOTE_NEEDED, PIZZA_DELIVERY)
/datum/round_event/shuttle_loan/announce() /datum/round_event/shuttle_loan/announce(fake)
SSshuttle.shuttle_loan = src SSshuttle.shuttle_loan = src
switch(dispatch_type) switch(dispatch_type)
if(HIJACK_SYNDIE) if(HIJACK_SYNDIE)

View File

@@ -5,6 +5,9 @@
max_occurrences = 3 max_occurrences = 3
min_players = 10 min_players = 10
/datum/round_event/spacevine
fakeable = FALSE
/datum/round_event/spacevine/start() /datum/round_event/spacevine/start()
var/list/turfs = list() //list of all the empty floor turfs in the hallway areas var/list/turfs = list() //list of all the empty floor turfs in the hallway areas

View File

@@ -15,7 +15,7 @@
announceWhen = rand(announceWhen, announceWhen + 50) announceWhen = rand(announceWhen, announceWhen + 50)
spawncount = rand(5, 8) spawncount = rand(5, 8)
/datum/round_event/spider_infestation/announce() /datum/round_event/spider_infestation/announce(fake)
priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg') priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/ai/aliens.ogg')

View File

@@ -1,13 +1,16 @@
/datum/round_event_control/spontaneous_appendicitis /datum/round_event_control/spontaneous_appendicitis
name = "Spontaneous Appendicitis" name = "Spontaneous Appendicitis"
typepath = /datum/round_event/spontaneous_appendicitis typepath = /datum/round_event/spontaneous_appendicitis
weight = 20 weight = 20
max_occurrences = 4 max_occurrences = 4
earliest_start = 6000 earliest_start = 6000
min_players = 5 // To make your chance of getting help a bit higher. min_players = 5 // To make your chance of getting help a bit higher.
/datum/round_event/spontaneous_appendicitis/start() /datum/round_event/spontaneous_appendicitis
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list)) fakeable = FALSE
/datum/round_event/spontaneous_appendicitis/start()
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list))
if(!H.client) if(!H.client)
continue continue
if(H.stat == DEAD) if(H.stat == DEAD)
@@ -19,8 +22,8 @@
foundAlready = TRUE foundAlready = TRUE
break break
if(foundAlready) if(foundAlready)
continue continue
var/datum/disease/D = new /datum/disease/appendicitis var/datum/disease/D = new /datum/disease/appendicitis
H.ForceContractDisease(D) H.ForceContractDisease(D)
break break

View File

@@ -12,7 +12,7 @@
var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube", var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube",
"plantbgone","banana","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","sacid") "plantbgone","banana","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","sacid")
/datum/round_event/vent_clog/announce() /datum/round_event/vent_clog/announce(fake)
priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert") priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert")

View File

@@ -1,32 +1,30 @@
/datum/round_event_control/weightless /datum/round_event_control/weightless
name = "Gravity Systems Failure" name = "Gravity Systems Failure"
typepath = /datum/round_event/weightless typepath = /datum/round_event/weightless
weight = 15 weight = 15
/datum/round_event/weightless /datum/round_event/weightless
startWhen = 5 startWhen = 5
endWhen = 65 endWhen = 65
announceWhen = 1 announceWhen = 1
/datum/round_event/weightless/setup() /datum/round_event/weightless/setup()
startWhen = rand(0,10) startWhen = rand(0,10)
endWhen = rand(40,80) endWhen = rand(40,80)
/datum/round_event/weightless/announce() /datum/round_event/weightless/announce(fake)
command_alert("Warning: Failsafes for the station's artificial gravity arrays have been triggered. Please be aware that if this problem recurs it may result in formation of gravitational anomalies. Nanotrasen wishes to remind you that the unauthorised formation of anomalies within Nanotrasen facilities is strictly prohibited by health and safety regulation [rand(99,9999)][pick("a","b","c")]:subclause[rand(1,20)][pick("a","b","c")].") command_alert("Warning: Failsafes for the station's artificial gravity arrays have been triggered. Please be aware that if this problem recurs it may result in formation of gravitational anomalies. Nanotrasen wishes to remind you that the unauthorised formation of anomalies within Nanotrasen facilities is strictly prohibited by health and safety regulation [rand(99,9999)][pick("a","b","c")]:subclause[rand(1,20)][pick("a","b","c")].")
/datum/round_event/weightless/start() /datum/round_event/weightless/start()
for(var/area/A in world) for(var/area/A in world)
A.gravitychange(0) A.gravitychange(0)
if(control) if(control)
control.weight *= 2 control.weight *= 2
/datum/round_event/weightless/end() /datum/round_event/weightless/end()
for(var/area/A in world) for(var/area/A in world)
A.gravitychange(1) A.gravitychange(1)
if(announceWhen >= 0) if(announceWhen >= 0)
command_alert("Artificial gravity arrays are now functioning within normal parameters. Please report any irregularities to your respective head of staff.") command_alert("Artificial gravity arrays are now functioning within normal parameters. Please report any irregularities to your respective head of staff.")

View File

@@ -12,7 +12,7 @@
/datum/round_event/wizard/magicarp/setup() /datum/round_event/wizard/magicarp/setup()
startWhen = rand(40, 60) startWhen = rand(40, 60)
/datum/round_event/wizard/magicarp/announce() /datum/round_event/wizard/magicarp/announce(fake)
priority_announce("Unknown magical entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") priority_announce("Unknown magical entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
/datum/round_event/wizard/magicarp/start() /datum/round_event/wizard/magicarp/start()

View File

@@ -28,7 +28,7 @@
var/turf/T = pick(pick_turfs) var/turf/T = pick(pick_turfs)
wormholes += new /obj/effect/portal/wormhole(T, null, 0, null, FALSE) wormholes += new /obj/effect/portal/wormhole(T, null, 0, null, FALSE)
/datum/round_event/wormholes/announce() /datum/round_event/wormholes/announce(fake)
priority_announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", 'sound/ai/spanomalies.ogg') priority_announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", 'sound/ai/spanomalies.ogg')
/datum/round_event/wormholes/tick() /datum/round_event/wormholes/tick()

View File

@@ -10,7 +10,7 @@
max_occurrences = 1 max_occurrences = 1
earliest_start = 0 earliest_start = 0
/datum/round_event/easter/announce() /datum/round_event/easter/announce(fake)
priority_announce(pick("Hip-hop into Easter!","Find some Bunny's stash!","Today is National 'Hunt a Wabbit' Day.","Be kind, give Chocolate Eggs!")) priority_announce(pick("Hip-hop into Easter!","Find some Bunny's stash!","Today is National 'Hunt a Wabbit' Day.","Be kind, give Chocolate Eggs!"))
@@ -21,7 +21,7 @@
weight = 5 weight = 5
max_occurrences = 10 max_occurrences = 10
/datum/round_event/rabbitrelease/announce() /datum/round_event/rabbitrelease/announce(fake)
priority_announce("Unidentified furry objects detected coming aboard [station_name()]. Beware of Adorable-ness.", "Fluffy Alert", 'sound/ai/aliens.ogg') priority_announce("Unidentified furry objects detected coming aboard [station_name()]. Beware of Adorable-ness.", "Fluffy Alert", 'sound/ai/aliens.ogg')