Command alerts datums, new malf AI module (#11146)

* Command alerts datums, replaced Interhack malf module with something better

* Oh crap forgot bout this one

* ok
This commit is contained in:
unid15
2016-08-01 17:42:15 +02:00
committed by clusterfack
parent e35f31089a
commit 959076e808
39 changed files with 581 additions and 105 deletions

View File

@@ -0,0 +1,457 @@
/datum/command_alert
var/name //Descriptive name - it's not shown to anybody, so feel free to make it OOC
var/alert_title = "Central Command"
var/message
var/force_report = 0
var/alert = 'sound/AI/commandreport.ogg'//sound
var/noalert = 0
/datum/command_alert/proc/announce()
command_alert(message, alert_title, force_report, alert, noalert)
//////BIOHAZARD
/datum/command_alert/biohazard_alert
name = "Biohazard Alert"
alert_title = "Biohazard Alert"
noalert = 1
force_report = 1
var/level = 1
/datum/command_alert/biohazard_alert/announce()
level = rand(4,7)
message = "Confirmed outbreak of level [level] biohazard aboard [station_name()]. All personnel must contain the outbreak."
..()
var/list/vox_sentence=list(
'sound/AI/outbreak_before.ogg',
outbreak_level_words[level],
'sound/AI/outbreak_after.ogg',
)
for(var/word in vox_sentence)
play_vox_sound(word,STATION_Z,null)
///////BIOHAZARD UPDATED
/datum/command_alert/biohazard_station_lockdown
name = "Biohazard Level Updated - Station Locked Down"
alert_title = "Directive 7-10 Initiated"
alert = 'sound/AI/blob_confirmed.ogg'
force_report = 1
/datum/command_alert/biohazard_station_lockdown/announce()
message = "Biohazard outbreak alert status upgraded to level 9. [station_name()] is now locked down, under Directive 7-10, until further notice."
..()
/datum/command_alert/biohazard_station_nuke
name = "Biohazard Level Updated - Nuclear Force Authorized"
alert_title = "Final Measure"
noalert = 1
/datum/command_alert/biohazard_station_nuke/announce()
message = "Biohazard outbreak containment status reaching critical mass, total quarantine failure is now possibile. As such, Directive 7-12 has now been authorized for [station_name()]."
..()
////////BLOB (mini)
/datum/command_alert/biohazard_level_5
name = "Biohazard Alert (level 5)"
alert_title = "Biohazard Alert"
alert = 'sound/AI/outbreak5.ogg'
force_report = 1
/datum/command_alert/biohazard_level_5/announce()
message = "Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak."
..()
/////////ERT
/datum/command_alert/ert_fail
name = "ERT - Unable To Send"
/datum/command_alert/ert_fail/announce()
message = "It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time."
..()
/datum/command_alert/ert_success
name = "ERT - Team Sent"
/datum/command_alert/ert_success/announce()
message = "It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible."
..()
////////AYY
/datum/command_alert/xenomorphs
name = "Unidentified Lifesigns Alert"
alert_title = "Lifesign Alert"
alert = 'sound/AI/aliens.ogg'
/datum/command_alert/xenomorphs/announce()
message = "Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation."
..()
///////RADIATION
/datum/command_alert/radiation_storm
name = "Radiation Storm - Warning"
alert_title = "Anomaly Alert"
alert = 'sound/AI/radiation.ogg'
message = "High levels of radiation detected near the station, ETA in 30 seconds. Please evacuate into one of the shielded maintenance tunnels."
/datum/command_alert/radiation_storm/start
name = "Radiation Storm - Start"
alert = null
message = "The station has entered the radiation belt. Please remain in a sheltered area until we have passed the radiation belt."
/datum/command_alert/radiation_storm/end
name = "Radiation Storm - End"
alert = null
message = "The station has passed the radiation belt. Please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly."
/datum/command_alert/radiation
name = "High Levels Of Radiation"
alert_title = "Anomaly Alert"
alert = 'sound/AI/radiation.ogg'
message = "High levels of radiation detected near the station. Please report to the Med-bay if you feel strange."
///////GRAYTIDE VIRUS
/datum/command_alert/graytide
name = "Gr3y.T1d3 virus"
alert_title = "Security Alert"
/datum/command_alert/graytide/announce()
message = "[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] imprisonment subroutines. Recommend station AI involvement."
..()
//////CARP
/datum/command_alert/carp
name = "Carp Migration"
alert_title = "Lifesign Alert"
/datum/command_alert/carp/announce()
message = "Unknown biological entities have been detected near [station_name()], please stand-by."
..()
////////ELECTRICAL STORM
/datum/command_alert/electrical_storm
name = "Electrical Storm"
alert_title = "Electrical Storm Alert"
message = "An Electrical storm has been detected in your area, please repair potential electronic overloads."
///////SUMMARY DOWNLOADED AND PRINTED AT COMMS
/datum/command_alert/enemy_comms_interception
name = "Enemy Communications Intercepted"
alert_title = "Enemy communications intercept"
message = "Summary downloaded and printed out at all communications consoles."
//////////SUPERMATTER CASCADE
/datum/command_alert/supermatter_cascade
name = "Supermatter Cascade Start"
alert_title = "SUPERMATTER CASCADE DETECTED"
/datum/command_alert/supermatter_cascade/announce()
message = {"
There's been a galaxy-wide electromagnetic pulse. All of our systems are heavily damaged and many personnel are dead or dying. We are seeing increasing indications of the universe itself beginning to unravel.
[station_name()], you are the only facility nearby a bluespace rift, which is near your research outpost. You are hereby directed to enter the rift using all means necessary, quite possibly as the last humans alive.
You have five minutes before the universe collapses. Good l\[\[###!!!-
AUTOMATED ALERT: Link to [command_name()] lost.
The access requirements on the Asteroid Shuttles' consoles have now been revoked.
"}
..()
/////////////POWER OUTAGE
/datum/command_alert/power_outage
name = "Power Outage - Start"
alert_title = "Critical Power Failure"
alert ='sound/AI/poweroff.ogg'
/datum/command_alert/power_outage/announce()
message = "Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration."
..()
/datum/command_alert/power_restored
name = "Power Outage - End"
alert_title = "Power Systems Nominal"
alert = 'sound/AI/poweron.ogg'
/datum/command_alert/power_restored/announce()
message = "Power has been restored to [station_name()]. We apologize for the inconvenience."
..()
/datum/command_alert/smes_charged
name = "SMES Recharged"
alert_title = "Power Systems Nominal"
alert = 'sound/AI/poweron.ogg'
/datum/command_alert/smes_charged/announce()
message = "All SMESs on [station_name()] have been recharged. We apologize for the inconvenience."
..()
////////////////WORMHOLES
/datum/command_alert/wormholes
name = "Space-Time Anomalities Detected"
alert_title = "Anomaly Alert"
alert = 'sound/AI/spanomalies.ogg'
message = "Space-time anomalies detected on the station. There is no additional data."
//////////////MALF ANNOUNCEMENT
/datum/command_alert/malf_announce
name = "AI Malfunctioning Warning"
alert_title = "Anomaly Alert"
alert = 'sound/AI/aimalf.ogg'
message = "Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core."
/////////////METEOR STORM
/datum/command_alert/meteor_round
name = "Major Meteor Storm Warning"
alert_title = "Space Weather Automated Announcements"
alert = 'sound/AI/meteorround.ogg'
var/meteor_delay = 2000
var/supply_delay = 100
/datum/command_alert/meteor_round/announce()
meteor_delay = rand(4500, 6000)
if(prob(70)) //slightly off-scale
message = "A meteor storm has been detected in proximity of [station_name()] and is expected to strike within [round((rand(meteor_delay - 600, meteor_delay + 600))/600)] minutes. A backup emergency shuttle is being dispatched and emergency gear should be teleported into your station's Bar area in [supply_delay/10] seconds."
else
message = "A meteor storm has been detected in proximity of [station_name()] and is expected to strike within [round((rand(meteor_delay - 1800, meteor_delay + 1800))/600)] minutes. A backup emergency shuttle is being dispatched and emergency gear should be teleported into your station's Bar area in [supply_delay/10] seconds."
..()
////small meteor storm
/datum/command_alert/meteor_wave
name = "Meteor Storm Warning"
alert_title = "Meteor Alert"
alert = 'sound/AI/meteors.ogg'
message = "A meteor storm has been detected on collision course with the station. Seek shelter within the core of the station immediately."
/////meteor storm end
/datum/command_alert/meteor_wave_end
name = "Meteor Storm Cleared"
alert_title = "Meteor Alert"
message = "The station has cleared the meteor storm."
/datum/command_alert/meteor_storm
name = "Small-Intensity Meteor Storm Warning"
alert_title = "Meteor Alert"
message = "The station is about to be hit by a small-intensity meteor storm. Seek shelter within the core of the station immediately."
//////blob storm
/datum/command_alert/blob_storm
name = "Meteor Blob Cluster - No Overminds"
alert_title = "Blob Cluster"
message = "The station is about to pass through a Blob cluster. No overmind brainwaves detected."
/datum/command_alert/blob_storm/end
name = "Meteor Blob Cluster Ended (No Overminds)"
message = "The station has cleared the Blob cluster. Eradicate the blob from hit areas."
/datum/command_alert/blob_storm/overminds
name = "Meteor Blob Cluster - Overminds!"
alert_title = "Blob Conglomerate"
message = "The station is about to pass through a Blob conglomerate. Overmind brainwaves possibly detected."
/datum/command_alert/blob_storm/overminds/end
name = "Meteor Blob Cluster Ended (Overminds!)"
message = "The station has cleared the Blob conglomerate. Investigate the hit areas at once and clear the blob. Beware for possible Overmind presence."
/////////////GRAVITY
/datum/command_alert/gravity_enabled
name = "Gravity - Enabled"
message = "Gravity generators are again functioning within normal parameters. Sorry for any inconvenience."
/datum/command_alert/gravity_disabled
name = "Gravity - Disabled"
message = "Feedback surge detected in mass-distributions systems. Artifical gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day."
//////////////////////////////ION STORM
/datum/command_alert/ion_storm
name = "Ion Storm - AI affected"
alert_title = "Anomaly Alert"
alert = 'sound/AI/ionstorm.ogg'
message = "Ion storm detected near the station. Please check all AI-controlled equipment for errors."
/datum/command_alert/ion_storm_large
name = "Ion Storm - All Affected"
alert_title = "Anomaly Alert"
message = "It has come to our attention that the station passed through an ion storm. Please monitor all electronic equipment for malfunctions."
///////////BLUESPACE ANOMALY
/datum/command_alert/bluespace_anomaly
name = "Bluespace Anomaly"
alert_title = "Anomaly Alert"
/datum/command_alert/bluespace_anomaly/New(impact_area_name)
message = "Bluespace anomaly detected in the vicinity of [station_name()]. [impact_area_name || "An unknown area"] has been affected."
..()
//////////POWER DISABLED
/datum/command_alert/power_disabled
name = "Station Power - Disabled"
alert_title = "Automated Grid Check"
alert = 'sound/AI/poweroff.ogg'
/datum/command_alert/power_disabled/announce()
message = "Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration."
..()
/datum/command_alert/power_restored
name = "Station Power - Restored"
alert_title = "Power Nominal"
alert = 'sound/AI/poweron.ogg'
/datum/command_alert/power_restored/announce()
message = "Power has been restored to [station_name()]. We apologize for the inconvenience."
..()
//////////////CENTCOM LINK
/datum/command_alert/command_link_lost
name = "Centcom Link Lost"
alert_title = "Automated Announcement"
alert = 'sound/AI/loss.ogg'
message = "This is an automated announcement. The link with central command has been lost. Repeat: The link with central command has been lost. Attempting to re-establish communications in T-10."
/datum/command_alert/command_link_restored
name = "Centcom Link Restored"
alert_title = "Link Established"
/datum/command_alert/command_link_restored/announce()
message = "A link to Central Command has been established on [station_name()]."
..()
/////////HOSTILE CREATURES
/datum/command_alert/hostile_creatures
name = "Hostile Creatures Alert"
alert_title = "WARNING: Hostile Creature(s)"
/datum/command_alert/hostile_creatures/New(localestring = "an unknown location", monsterstring = "malicious intent")
..()
message = "One or more hostile creatures have entered the station in [localestring]. External security cameras indicate that the creature has [monsterstring]."
/datum/command_alert/vermin
name = "Vermin Alert"
alert_title = "Vermin infestation"
/datum/command_alert/vermin/New(vermstring = "various vermin", locstring = "the station's maintenance tunnels")
..()
message = "Bioscans indicate that [vermstring] have been breeding in [locstring]. Clear them out, before this starts to affect productivity."
/datum/command_alert/mob_swarm
name = "Mob Swarm"
/datum/command_alert/mob_swarm/New(mob_name = "animals")
..()
message = "Due to timespace anomalies of unknown origin, [station_name] is now host to several [mob_name]\s more than there were a moment ago."
////////MISC STUFF
/datum/command_alert/eagles
name = "Airlock Access Removed"
message = "Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers."
/datum/command_alert/bluespace_artillery
name = "Bluespace Artillery Strike Detected"
message = "Bluespace artillery fire detected. Brace for impact."
/datum/command_alert/vending_machines
name = "Rampant Brand Intelligence Detected"
alert_title = "Machine Learning Alert"
/datum/command_alert/vending_machines/announce()
message = "Rampant brand intelligence has been detected aboard [station_name()], please stand-by."
/datum/command_alert/comms_blackout
name = "Ionospheric Anomalies - Telecommunications Failure"
message = "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT"
/datum/command_alert/comms_blackout/announce()
message = pick( "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT", \
"Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v¬-BZZZT", \
"Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", \
"Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", \
"Ionospheri:%£ MCayj^j<.3-BZZZZZZT", \
"#4nd%;f4y6,>£%-BZZZZZZZT")
..()
/datum/command_alert/electrical_storm
name = "Electrical Storm Alert"
alert_title = "Electrical Storm Alert"
message = "An electrical storm has been detected in your area, please repair potential electronic overloads."
/datum/command_alert/immovable_rod
name = "Immovable Rod (\"What The Fuck Was That?\")"
alert_title = "General Alert"
message = "What the fuck was that?!"
/datum/command_alert/rogue_drone
name = "Rogue Drones - Alert"
alert_title = "Rogue Drone Alert"
/datum/command_alert/rogue_drone/announce()
if(prob(33))
message = "A combat drone wing operating out of the NMV Icarus has failed to return from a sweep of this sector, if any are sighted approach with caution."
else if(prob(50))
message = "Contact has been lost with a combat drone wing operating out of the NMV Icarus. If any are sighted in the area, approach with caution."
else
message = "Unidentified hackers have targeted a combat drone wing deployed from the NMV Icarus. If any are sighted in the area, approach with caution."
..()
/datum/command_alert/drones_recovered
name = "Rogue Drones - Recovered Successfully"
alert_title = "Rogue Drone Alert"
message = "Icarus drone control reports the malfunctioning wing has been recovered safely."
/datum/command_alert/drones_recovered/failure
name = "Rogue Drones - Failed To Recover"
message = "Icarus drone control registers disappointment at the loss of the drones, but the survivors have been recovered."
/datum/command_alert/wall_fungi
name = "Wall Fungi"
alert_title = "Biohazard Alert"
message = "Harmful fungi detected on station. Station structures may be contaminated."

View File

@@ -8,17 +8,7 @@ var/global/list/outbreak_level_words=list(
/* 7 */ 'sound/vox_fem/seven.ogg', /* 7 */ 'sound/vox_fem/seven.ogg',
) )
/proc/biohazard_alert(var/level=0) /proc/biohazard_alert(var/level=0)
if(!level) command_alert(/datum/command_alert/biohazard_alert)
level = rand(4,7)
command_alert("Confirmed outbreak of level [level] biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert",1,noalert = 1)
var/list/vox_sentence=list(
'sound/AI/outbreak_before.ogg',
outbreak_level_words[level],
'sound/AI/outbreak_after.ogg',
)
for(var/word in vox_sentence)
play_vox_sound(word,STATION_Z,null)
/* /*
#warning TELL N3X15 TO COMMENT THIS SHIT OUT #warning TELL N3X15 TO COMMENT THIS SHIT OUT

View File

@@ -1,4 +1,13 @@
//First argument can be a /datum/command_alert object or path. See "code/datums/helper_datums/command_alerts.dm" for more info
/proc/command_alert(var/text, var/title = "",var/force_report = 0,var/alert,var/noalert = 0) /proc/command_alert(var/text, var/title = "",var/force_report = 0,var/alert,var/noalert = 0)
if(ispath(text, /datum/command_alert))
var/datum/command_alert/CA = new text
return CA.announce()
else if(istype(text, /datum/command_alert))
var/datum/command_alert/CA = text
return CA.announce()
if(!alert && !noalert) if(!alert && !noalert)
alert = 'sound/AI/commandreport.ogg' alert = 'sound/AI/commandreport.ogg'
var/gibberish = map.linked_to_centcomm ? 0 : 1 var/gibberish = map.linked_to_centcomm ? 0 : 1

View File

@@ -172,7 +172,7 @@ You must kill it all while minimizing the damage to the station."})
return return
if (1) if (1)
command_alert("Biohazard outbreak alert status upgraded to level 9. [station_name()] is now locked down, under Directive 7-10, until further notice.", "Directive 7-10 Initiated",1,alert='sound/AI/blob_confirmed.ogg') command_alert(/datum/command_alert/biohazard_station_lockdown)
for(var/mob/M in player_list) for(var/mob/M in player_list)
var/T = M.loc var/T = M.loc
if((istype(T, /turf/space)) || ((istype(T, /turf)) && (M.z!=1))) if((istype(T, /turf/space)) || ((istype(T, /turf)) && (M.z!=1)))
@@ -183,7 +183,7 @@ You must kill it all while minimizing the damage to the station."})
research_shuttle.lockdown = "Under directive 7-10, [station_name()] is quarantined until further notice." //LOCKDOWN THESE SHUTTLES research_shuttle.lockdown = "Under directive 7-10, [station_name()] is quarantined until further notice." //LOCKDOWN THESE SHUTTLES
mining_shuttle.lockdown = "Under directive 7-10, [station_name()] is quarantined until further notice." mining_shuttle.lockdown = "Under directive 7-10, [station_name()] is quarantined until further notice."
if (2) if (2)
command_alert("Biohazard outbreak containment status reaching critical mass, total quarantine failure is now possibile. As such, Directive 7-12 has now been authorized for [station_name()].", "Final Measure",1) command_alert(/datum/command_alert/biohazard_station_nuke)
for(var/mob/camera/blob/B in player_list) for(var/mob/camera/blob/B in player_list)
to_chat(B, "<span class='blob'>The beings intend to eliminate you with a final suicidal attack, you must stop them quickly or consume the station before this occurs!</span>") to_chat(B, "<span class='blob'>The beings intend to eliminate you with a final suicidal attack, you must stop them quickly or consume the station before this occurs!</span>")
if(!mixed) send_intercept(2) if(!mixed) send_intercept(2)

View File

@@ -75,18 +75,7 @@
message_admins("<span class='warning'><font size=7>SOMEBODY DIDNT PUT ENDGAME EXITS FOR THIS FUCKING MAP: [map.nameLong]</span></font>") message_admins("<span class='warning'><font size=7>SOMEBODY DIDNT PUT ENDGAME EXITS FOR THIS FUCKING MAP: [map.nameLong]</span></font>")
else new /obj/machinery/singularity/narsie/large/exit(pick(endgame_exits)) else new /obj/machinery/singularity/narsie/large/exit(pick(endgame_exits))
spawn(rand(30,60) SECONDS) spawn(rand(30,60) SECONDS)
var/txt = {" command_alert(/datum/command_alert/supermatter_cascade)
There's been a galaxy-wide electromagnetic pulse. All of our systems are heavily damaged and many personnel are dead or dying. We are seeing increasing indications of the universe itself beginning to unravel.
[station_name()], you are the only facility nearby a bluespace rift, which is near your research outpost. You are hereby directed to enter the rift using all means necessary, quite possibly as the last humans alive.
You have five minutes before the universe collapses. Good l\[\[###!!!-
AUTOMATED ALERT: Link to [command_name()] lost.
The access requirements on the Asteroid Shuttles' consoles have now been revoked.
"}
command_alert(txt,"SUPERMATTER CASCADE DETECTED")
for(var/obj/machinery/computer/shuttle_control/C in machines) for(var/obj/machinery/computer/shuttle_control/C in machines)
if(istype(C.shuttle,/datum/shuttle/mining) || istype(C.shuttle,/datum/shuttle/research)) if(istype(C.shuttle,/datum/shuttle/mining) || istype(C.shuttle,/datum/shuttle/research))

View File

@@ -205,7 +205,7 @@
spawncount-- spawncount--
spawn(rand(5000, 6000)) //Delayed announcements to keep the crew on their toes. spawn(rand(5000, 6000)) //Delayed announcements to keep the crew on their toes.
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert",alert = 'sound/AI/aliens.ogg') command_alert(/datum/command_alert/xenomorphs)
/proc/high_radiation_event() /proc/high_radiation_event()
@@ -242,7 +242,7 @@
continue continue
M.apply_effect((rand(15,75)),IRRADIATE,0) M.apply_effect((rand(15,75)),IRRADIATE,0)
sleep(100) sleep(100)
command_alert("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert",alert='sound/AI/radiation.ogg') command_alert(/datum/command_alert/radiation)
//Changing this to affect the main station. Blame Urist. --Pete //Changing this to affect the main station. Blame Urist. --Pete
@@ -282,7 +282,7 @@
temp_timer.releasetime = 1 temp_timer.releasetime = 1
sleep(150) sleep(150)
command_alert("Gr3y.T1d3 virus detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert") command_alert(/datum/command_alert/graytide)
else else
world.log << "ERROR: Could not initate grey-tide. Unable find prison or brig area." world.log << "ERROR: Could not initate grey-tide. Unable find prison or brig area."
@@ -292,11 +292,11 @@
new /mob/living/simple_animal/hostile/carp(C.loc) new /mob/living/simple_animal/hostile/carp(C.loc)
//sleep(100) //sleep(100)
spawn(rand(300, 600)) //Delayed announcements to keep the crew on their toes. spawn(rand(300, 600)) //Delayed announcements to keep the crew on their toes.
command_alert("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") command_alert(/datum/command_alert/carp)
/proc/lightsout(isEvent = 0, lightsoutAmount = 1,lightsoutRange = 25) //leave lightsoutAmount as 0 to break ALL lights /proc/lightsout(isEvent = 0, lightsoutAmount = 1,lightsoutRange = 25) //leave lightsoutAmount as 0 to break ALL lights
if(isEvent) if(isEvent)
command_alert("An Electrical storm has been detected in your area, please repair potential electronic overloads.","Electrical Storm Alert") command_alert(/datum/command_alert/electrical_storm)
if(lightsoutAmount) if(lightsoutAmount)
var/list/epicentreList = list() var/list/epicentreList = list()

View File

@@ -13,7 +13,7 @@
spawn(3000) spawn(3000)
blobevent = 0 blobevent = 0
spawn(rand(1000, 2000)) //Delayed announcements to keep the crew on their toes. spawn(rand(1000, 2000)) //Delayed announcements to keep the crew on their toes.
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert",1,alert='sound/AI/outbreak5.ogg') command_alert(/datum/command_alert/biohazard_level_5)
/proc/dotheblobbaby() /proc/dotheblobbaby()
if (blobevent) if (blobevent)

View File

@@ -2,7 +2,7 @@
/proc/power_failure(var/announce = 1) /proc/power_failure(var/announce = 1)
suspend_alert = 1 suspend_alert = 1
if(announce) if(announce)
command_alert("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",alert ='sound/AI/poweroff.ogg') command_alert(/datum/command_alert/power_outage)
for(var/obj/machinery/power/battery/smes/S in power_machines) for(var/obj/machinery/power/battery/smes/S in power_machines)
if(istype(get_area(S), /area/turret_protected) || S.z != 1) if(istype(get_area(S), /area/turret_protected) || S.z != 1)
continue continue
@@ -49,7 +49,7 @@
if(announce) if(announce)
command_alert("Power has been restored to [station_name()]. We apologize for the inconvenience.", "Power Systems Nominal",alert='sound/AI/poweron.ogg') command_alert(/datum/command_alert/power_restored)
for(var/obj/machinery/power/apc/C in power_machines) for(var/obj/machinery/power/apc/C in power_machines)
if(C.cell && C.z == 1) if(C.cell && C.z == 1)
C.cell.charge = C.cell.maxcharge C.cell.charge = C.cell.maxcharge
@@ -71,7 +71,7 @@
/proc/power_restore_quick(var/announce = 1) /proc/power_restore_quick(var/announce = 1)
if(announce) if(announce)
command_alert("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal",alert='sound/AI/poweron.ogg') command_alert(/datum/command_alert/smes_charged)
for(var/obj/machinery/power/battery/smes/S in power_machines) for(var/obj/machinery/power/battery/smes/S in power_machines)
if(S.z != 1) if(S.z != 1)
continue continue

View File

@@ -7,7 +7,7 @@
if(pick_turfs.len) if(pick_turfs.len)
//All ready. Announce that bad juju is afoot. //All ready. Announce that bad juju is afoot.
command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert",alert='sound/AI/spanomalies.ogg') command_alert(/datum/command_alert/wormholes)
//prob(20) can be approximated to 1 wormhole every 5 turfs! //prob(20) can be approximated to 1 wormhole every 5 turfs!
//admittedly less random but totally worth it >_< //admittedly less random but totally worth it >_<
var/event_duration = 3000 //~5 minutes in ticks var/event_duration = 3000 //~5 minutes in ticks

View File

@@ -226,7 +226,7 @@
comm.messagetitle.Add("[command_name()] Status Summary") comm.messagetitle.Add("[command_name()] Status Summary")
comm.messagetext.Add(intercepttext) comm.messagetext.Add(intercepttext)
command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept.") command_alert(/datum/command_alert/enemy_comms_interception)
/* for(var/mob/M in player_list) /* for(var/mob/M in player_list)
if(!istype(M,/mob/new_player)) if(!istype(M,/mob/new_player))
M << sound('sound/AI/intercept.ogg') M << sound('sound/AI/intercept.ogg')

View File

@@ -218,20 +218,53 @@ rcd light flash thingy on matter drain
else to_chat(src, "Out of uses.") else to_chat(src, "Out of uses.")
/datum/AI_Module/small/interhack /datum/AI_Module/small/interhack
module_name = "Hack intercept" module_name = "Fake Centcom Announcement"
mod_pick_name = "interhack" mod_pick_name = "interhack"
description = "Hacks the status upgrade from Cent. Com, removing any information about malfunctioning electrical systems." description = "Gain control of the station's automated announcement system, allowing you to create up to 3 fake Centcom announcements - completely undistinguishable from real ones."
cost = 15 cost = 15
one_time = 1 uses = 3
power_type = /mob/living/silicon/ai/proc/interhack power_type = /mob/living/silicon/ai/proc/interhack
/mob/living/silicon/ai/proc/interhack() /mob/living/silicon/ai/proc/interhack()
set category = "Malfunction" set category = "Malfunction"
set name = "Hack intercept" set name = "Fake Announcement"
src.verbs -= /mob/living/silicon/ai/proc/interhack var/allowed = 0
ticker.mode:hack_intercept() var/datum/AI_Module/small/interhack/module_to_charge
for(var/datum/AI_Module/small/interhack/interhack in current_modules)
if(interhack.uses > 0)
module_to_charge = interhack
allowed = 1
break
if(!allowed)
to_chat(src, "Out of uses.")
return
//Create a list which looks like this
//list( "Alert 1" = /datum/command_alert_1, "Alert 5" = /datum/command_alert_5, ...)
//Then ask the AI to pick one announcement from the list
var/list/possible_announcements = typesof(/datum/command_alert)
for(var/A in possible_announcements)
var/datum/command_alert/CA = A
possible_announcements[initial(CA.name)] = A
possible_announcements.Remove(A)
var/chosen_announcement = input(usr, "Select a fake announcement to send out.", "Interhack") as null|anything in possible_announcements
if(!chosen_announcement)
to_chat(src, "Selection cancelled.")
return
if(module_to_charge.uses <= 0)
to_chat(src, "ERROR: Out of uses.")
return
module_to_charge.uses--
command_alert(possible_announcements[chosen_announcement])
log_game("[key_name(usr)] faked a centcom announcement: [possible_announcements[chosen_announcement]]!")
message_admins("[key_name(usr)] faked a centcom announcement: [possible_announcements[chosen_announcement]]!")
/datum/AI_Module/small/reactivate_camera /datum/AI_Module/small/reactivate_camera
module_name = "Reactivate camera" module_name = "Reactivate camera"

View File

@@ -183,7 +183,7 @@ You should now be able to use your Explode verb to interface with the nuclear fi
if (alert(usr, "Are you sure you wish to initiate the takeover? The station hostile runtime detection software is bound to alert everyone. You have hacked [ticker.mode:apcs] APCs.", "Takeover:", "Yes", "No") != "Yes") if (alert(usr, "Are you sure you wish to initiate the takeover? The station hostile runtime detection software is bound to alert everyone. You have hacked [ticker.mode:apcs] APCs.", "Takeover:", "Yes", "No") != "Yes")
return return
command_alert("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert",alert='sound/AI/aimalf.ogg') command_alert(/datum/command_alert/malf_announce)
set_security_level("delta") set_security_level("delta")
ticker.mode:malf_mode_declared = 1 ticker.mode:malf_mode_declared = 1

View File

@@ -95,12 +95,10 @@
sleep(20) //Two seconds for warning to play sleep(20) //Two seconds for warning to play
if(prob(70)) //Slighty off-scale var/datum/command_alert/meteor_round/CA = new()
command_alert("A meteor storm has been detected in proximity of [station_name()] and is expected to strike within [round((rand(meteor_delay - 600, meteor_delay + 600))/600)] minutes. A backup emergency shuttle is being dispatched and emergency gear should be teleported into your station's Bar area in [supply_delay/10] seconds.", \ CA.meteor_delay = meteor_delay
"Space Weather Automated Announcements", alert = 'sound/AI/meteorround.ogg') CA.supply_delay = supply_delay
else //Oh boy command_alert(CA)
command_alert("A meteor storm has been detected in proximity of [station_name()] and is expected to strike within [round((rand(meteor_delay - 1800, meteor_delay + 1800))/600)] minutes. A backup emergency shuttle is being dispatched and emergency gear should be teleported into your station's Bar area in [supply_delay/10] seconds.", \
"Space Weather Automated Announcements", alert = 'sound/AI/meteorround.ogg')
message_admins("Meteor Storm announcement given. Meteors will arrive in approximately [round(meteor_delay/600)] minutes. Shuttle will take [10*meteor_shuttle_multiplier] minutes to arrive and supplies are about to be dispatched in the Bar.") message_admins("Meteor Storm announcement given. Meteors will arrive in approximately [round(meteor_delay/600)] minutes. Shuttle will take [10*meteor_shuttle_multiplier] minutes to arrive and supplies are about to be dispatched in the Bar.")

View File

@@ -135,11 +135,11 @@ proc/trigger_armed_response_team(var/force = 0)
// there's only a certain chance a team will be sent // there's only a certain chance a team will be sent
if(!prob(send_team_chance)) if(!prob(send_team_chance))
command_alert("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "Central Command") command_alert(/datum/command_alert/ert_fail)
can_call_ert = 0 // Only one call per round, ladies. can_call_ert = 0 // Only one call per round, ladies.
return return
command_alert("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "Central Command") command_alert(/datum/command_alert/ert_success)
can_call_ert = 0 // Only one call per round, gentleman. can_call_ert = 0 // Only one call per round, gentleman.
send_emergency_team = 1 send_emergency_team = 1

View File

@@ -2360,11 +2360,11 @@
if(gravity_is_on) if(gravity_is_on)
log_admin("[key_name(usr)] toggled gravity on.", 1) log_admin("[key_name(usr)] toggled gravity on.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] toggled gravity on.</span>", 1) message_admins("<span class='notice'>[key_name_admin(usr)] toggled gravity on.</span>", 1)
command_alert("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.") command_alert(/datum/command_alert/gravity_enabled)
else else
log_admin("[key_name(usr)] toggled gravity off.", 1) log_admin("[key_name(usr)] toggled gravity off.", 1)
message_admins("<span class='notice'>[key_name_admin(usr)] toggled gravity off.</span>", 1) message_admins("<span class='notice'>[key_name_admin(usr)] toggled gravity off.</span>", 1)
command_alert("Feedback surge detected in mass-distributions systems. Artifical gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day.") command_alert(/datum/command_alert/gravity_disabled)
if("wave") if("wave")
feedback_inc("admin_secrets_fun_used",1) feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","Meteor") feedback_add_details("admin_secrets_fun_used","Meteor")
@@ -2660,8 +2660,7 @@
if("gravanomalies") if("gravanomalies")
feedback_inc("admin_secrets_fun_used",1) feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","GA") feedback_add_details("admin_secrets_fun_used","GA")
command_alert("Gravitational anomalies detected on the station. There is no additional data.", "Anomaly Alert") command_alert(/datum/command_alert/wormholes)
world << sound('sound/AI/granomalies.ogg')
var/turf/T = pick(blobstart) var/turf/T = pick(blobstart)
var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 ) var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 )
spawn(rand(100, 600)) spawn(rand(100, 600))
@@ -2888,7 +2887,7 @@
if(W.z == 1 && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison)) if(W.z == 1 && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison))
W.req_access = list() W.req_access = list()
message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") message_admins("[key_name_admin(usr)] activated Egalitarian Station mode")
command_alert("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.") command_alert(/datum/command_alert/eagles)
if("dorf") if("dorf")
feedback_inc("admin_secrets_fun_used",1) feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","DF") feedback_add_details("admin_secrets_fun_used","DF")
@@ -2903,7 +2902,7 @@
message_admins("[key_name_admin(usr)] triggered an ion storm") message_admins("[key_name_admin(usr)] triggered an ion storm")
var/show_log = alert(usr, "Show ion message?", "Message", "Yes", "No") var/show_log = alert(usr, "Show ion message?", "Message", "Yes", "No")
if(show_log == "Yes") if(show_log == "Yes")
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert",alert='sound/AI/ionstorm.ogg') command_alert(/datum/command_alert/ion_storm)
if("spacevines") if("spacevines")
feedback_inc("admin_secrets_fun_used",1) feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","K") feedback_add_details("admin_secrets_fun_used","K")
@@ -3017,14 +3016,14 @@
log_admin("[key_name_admin(usr)] triggered a FAKE Biohzard Alert.") log_admin("[key_name_admin(usr)] triggered a FAKE Biohzard Alert.")
return return
if(choice == "Lifesigns") //MUH ALIUMS if(choice == "Lifesigns") //MUH ALIUMS
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert",alert='sound/AI/aliens.ogg') command_alert(/datum/command_alert/xenomorphs)
message_admins("[key_name_admin(usr)] triggered a FAKE Lifesign Alert.") message_admins("[key_name_admin(usr)] triggered a FAKE Lifesign Alert.")
log_admin("[key_name_admin(usr)] triggered a FAKE Lifesign Alert.") log_admin("[key_name_admin(usr)] triggered a FAKE Lifesign Alert.")
return return
if(choice == "Malfunction") //BLOW EVERYTHING if(choice == "Malfunction") //BLOW EVERYTHING
var/salertchoice = input("Do you wish to include the Hostile Runtimes warning to have an authentic Malfunction Takeover Alert ?", "Nanotrasen Alert Level Monitor") in list("Yes", "No") var/salertchoice = input("Do you wish to include the Hostile Runtimes warning to have an authentic Malfunction Takeover Alert ?", "Nanotrasen Alert Level Monitor") in list("Yes", "No")
if(salertchoice == "Yes") if(salertchoice == "Yes")
command_alert("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert",alert='sound/AI/aimalf.ogg') command_alert(/datum/command_alert/malf_announce)
to_chat(world, "<font size=4 color='red'>Attention! Delta security level reached!</font>")//Don't ACTUALLY set station alert to Delta to avoid fucking shit up for real to_chat(world, "<font size=4 color='red'>Attention! Delta security level reached!</font>")//Don't ACTUALLY set station alert to Delta to avoid fucking shit up for real
to_chat(world, "<font color='red'>[config.alert_desc_delta]</font>") to_chat(world, "<font color='red'>[config.alert_desc_delta]</font>")
@@ -3033,17 +3032,17 @@
log_admin("[key_name_admin(usr)] triggered a FAKE Malfunction Takeover Alert (Hostile Runtimes alert [salertchoice == "Yes" ? "included":"excluded"])") log_admin("[key_name_admin(usr)] triggered a FAKE Malfunction Takeover Alert (Hostile Runtimes alert [salertchoice == "Yes" ? "included":"excluded"])")
return return
if(choice == "Ion") if(choice == "Ion")
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert",alert='sound/AI/ionstorm.ogg') command_alert(/datum/command_alert/ion_storm)
message_admins("[key_name_admin(usr)] triggered a FAKE Ion Alert.") message_admins("[key_name_admin(usr)] triggered a FAKE Ion Alert.")
log_admin("[key_name_admin(usr)] triggered a FAKE Ion Alert.") log_admin("[key_name_admin(usr)] triggered a FAKE Ion Alert.")
return return
if(choice == "Meteor Wave") if(choice == "Meteor Wave")
command_alert("A meteor storm has been detected on collision course with the station. Seek shelter within the core of the station immediately.", "Meteor Alert",alert='sound/AI/meteors.ogg') command_alert(/datum/command_alert/meteor_wave)
message_admins("[key_name_admin(usr)] triggered a FAKE Meteor Alert.") message_admins("[key_name_admin(usr)] triggered a FAKE Meteor Alert.")
log_admin("[key_name_admin(usr)] triggered a FAKE Meteor Alert.") log_admin("[key_name_admin(usr)] triggered a FAKE Meteor Alert.")
return return
if(choice == "Carp Migration") if(choice == "Carp Migration")
command_alert("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") command_alert(/datum/command_alert/carp)
message_admins("[key_name_admin(usr)] triggered a FAKE Carp Migration Alert.") message_admins("[key_name_admin(usr)] triggered a FAKE Carp Migration Alert.")
log_admin("[key_name_admin(usr)] triggered a FAKE Carp Migration Alert.") log_admin("[key_name_admin(usr)] triggered a FAKE Carp Migration Alert.")
return return

View File

@@ -207,7 +207,7 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No") var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
if(show_log == "Yes") if(show_log == "Yes")
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert",alert='sound/AI/ionstorm.ogg') command_alert(/datum/command_alert/ion_storm)
generate_ion_law() generate_ion_law()
feedback_add_details("admin_verb","ION") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! feedback_add_details("admin_verb","ION") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -566,7 +566,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No") var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
if(show_log == "Yes") if(show_log == "Yes")
command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert",alert='sound/AI/ionstorm.ogg') command_alert(/datum/command_alert/ion_storm)
feedback_add_details("admin_verb","IONC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! feedback_add_details("admin_verb","IONC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in mob_list) /client/proc/cmd_admin_rejuvenate(mob/living/M as mob in mob_list)

View File

@@ -41,7 +41,7 @@
if (usr.stat || usr.restrained()) return if (usr.stat || usr.restrained()) return
if(src.reload < 180) return if(src.reload < 180) return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
command_alert("Bluespace artillery fire detected. Brace for impact.") command_alert(/datum/command_alert/bluespace_artillery)
message_admins("[key_name_admin(usr)] has launched an artillery strike.", 1) message_admins("[key_name_admin(usr)] has launched an artillery strike.", 1)
var/list/L = list() var/list/L = list()
for(var/turf/T in get_area_turfs(thearea.type)) for(var/turf/T in get_area_turfs(thearea.type))

View File

@@ -16,7 +16,7 @@
/datum/event/alien_infestation/announce() /datum/event/alien_infestation/announce()
if(successSpawn) if(successSpawn)
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert",alert='sound/AI/aliens.ogg') command_alert(/datum/command_alert/xenomorphs)
/datum/event/alien_infestation/start() /datum/event/alien_infestation/start()

View File

@@ -34,7 +34,7 @@
/datum/event/bluespace_anomaly/announce() /datum/event/bluespace_anomaly/announce()
command_alert("Bluespace anomaly detected in the vicinity of [station_name()]. [impact_area.name] has been affected.", "Anomaly Alert") command_alert(new /datum/command_alert/bluespace_anomaly(impact_area.name))
/datum/event/bluespace_anomaly/start() /datum/event/bluespace_anomaly/start()

View File

@@ -9,7 +9,7 @@
/datum/event/brand_intelligence/announce() /datum/event/brand_intelligence/announce()
command_alert("Rampant brand intelligence has been detected aboard [station_name()], please stand-by.", "Machine Learning Alert") command_alert(/datum/command_alert/vending_machines)
/datum/event/brand_intelligence/start() /datum/event/brand_intelligence/start()

View File

@@ -8,7 +8,7 @@
endWhen = rand(600,1200) endWhen = rand(600,1200)
/datum/event/carp_migration/announce() /datum/event/carp_migration/announce()
command_alert("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") command_alert(/datum/command_alert/carp)
/datum/event/carp_migration/start() /datum/event/carp_migration/start()
for(var/obj/effect/landmark/C in landmarks_list) for(var/obj/effect/landmark/C in landmarks_list)

View File

@@ -3,7 +3,7 @@
if(!silent) if(!silent)
command_alert("Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT") command_alert(/datum/command_alert/comms_blackout)
else // AIs will always know if there's a comm blackout, rogue AIs could then lie about comm blackouts in the future while they shutdown comms else // AIs will always know if there's a comm blackout, rogue AIs could then lie about comm blackouts in the future while they shutdown comms
for(var/mob/living/silicon/ai/A in player_list) for(var/mob/living/silicon/ai/A in player_list)
to_chat(A, "<br>") to_chat(A, "<br>")

View File

@@ -12,7 +12,7 @@
to_chat(A, "<br>") to_chat(A, "<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)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts.
command_alert(alert) command_alert(/datum/command_alert/comms_blackout)
/datum/event/communications_blackout/start() /datum/event/communications_blackout/start()

View File

@@ -4,7 +4,7 @@
/datum/event/electrical_storm/announce() /datum/event/electrical_storm/announce()
command_alert("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert") command_alert(/datum/command_alert/electrical_storm)
/datum/event/electrical_storm/start() /datum/event/electrical_storm/start()

View File

@@ -8,7 +8,7 @@
power_failure(0) power_failure(0)
/datum/event/grid_check/announce() /datum/event/grid_check/announce()
command_alert("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration.", "Automated Grid Check",alert='sound/AI/poweroff.ogg') command_alert(/datum/command_alert/power_disabled)
/datum/event/grid_check/end() /datum/event/grid_check/end()
if(universe.name != "Normal") if(universe.name != "Normal")

View File

@@ -115,7 +115,7 @@
/datum/event/hostile_infestation/announce() /datum/event/hostile_infestation/announce()
command_alert("One or more hostile creatures have entered the station in [localestring]. External security cameras indicate that the creature has [monsterstring].", "WARNING: Hostile Creature(s)") command_alert(new /datum/command_alert/hostile_creatures(localestring, monsterstring))
#undef LOC_KITCHEN #undef LOC_KITCHEN

View File

@@ -8,7 +8,7 @@
announceWhen = 100 announceWhen = 100
/datum/event/immovable_rod/announce() /datum/event/immovable_rod/announce()
command_alert("What the fuck was that?!", "General Alert") command_alert(/datum/command_alert/immovable_rod)
/datum/event/immovable_rod/start() /datum/event/immovable_rod/start()
immovablerod() immovablerod()

View File

@@ -108,7 +108,7 @@
new spawn_type(picked) new spawn_type(picked)
/datum/event/infestation/announce() /datum/event/infestation/announce()
command_alert("Bioscans indicate that [vermstring] have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Vermin infestation") command_alert(new /datum/command_alert/vermin(vermstring, locstring))
#undef LOC_KITCHEN #undef LOC_KITCHEN
#undef LOC_ATMOS #undef LOC_ATMOS

View File

@@ -174,7 +174,7 @@
active = 0 active = 0
spawn(rand(5000,8000)) spawn(rand(5000,8000))
if(prob(50)) if(prob(50))
command_alert("It has come to our attention that the station passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert") command_alert(/datum/command_alert/ion_storm_large)
/* /*
/proc/IonStorm(botEmagChance = 10) /proc/IonStorm(botEmagChance = 10)

View File

@@ -10,9 +10,9 @@
proc/link_to_centcomm() proc/link_to_centcomm()
if(!map.linked_to_centcomm) if(!map.linked_to_centcomm)
map.linked_to_centcomm = 1 map.linked_to_centcomm = 1
command_alert("A link to Central Command has been established on [station_name()].","Link Established") command_alert(/datum/command_alert/command_link_restored)
proc/unlink_from_centcomm() proc/unlink_from_centcomm()
if(map.linked_to_centcomm) if(map.linked_to_centcomm)
command_alert("This is an automated announcement. The link with central command has been lost. Repeat: The link with central command has been lost. Attempting to re-establish communications in T-10.","Automated announcement",1,alert='sound/AI/loss.ogg') command_alert(/datum/command_alert/command_link_lost)
map.linked_to_centcomm = 0 map.linked_to_centcomm = 0

View File

@@ -12,14 +12,14 @@
endWhen = rand(45, 90) //More drawn out than the shower, but not too powerful. Supposed to be a devastating event endWhen = rand(45, 90) //More drawn out than the shower, but not too powerful. Supposed to be a devastating event
/datum/event/meteor_wave/announce() /datum/event/meteor_wave/announce()
command_alert("A meteor storm has been detected on collision course with the station. Seek shelter within the core of the station immediately.", "Meteor Alert",alert='sound/AI/meteors.ogg') command_alert(/datum/command_alert/meteor_wave)
//Two to three waves. So 40 to 120 //Two to three waves. So 40 to 120
/datum/event/meteor_wave/tick() /datum/event/meteor_wave/tick()
meteor_wave(rand(20, 40), max_size = 2) //Large waves, panic is mandatory meteor_wave(rand(20, 40), max_size = 2) //Large waves, panic is mandatory
/datum/event/meteor_wave/end() /datum/event/meteor_wave/end()
command_alert("The station has cleared the meteor storm.", "Meteor Alert") command_alert(/datum/command_alert/meteor_wave_end)
//One to two vawes //One to two vawes
/datum/event/meteor_shower /datum/event/meteor_shower
@@ -30,7 +30,7 @@
endWhen = rand(45, 60) //From thirty seconds to one minute endWhen = rand(45, 60) //From thirty seconds to one minute
/datum/event/meteor_shower/announce() /datum/event/meteor_shower/announce()
command_alert("The station is about to be hit by a small-intensity meteor storm. Seek shelter within the core of the station immediately.", "Meteor Alert") command_alert(/datum/command_alert/meteor_storm)
//Meteor showers are lighter and more common //Meteor showers are lighter and more common
//Sometimes a single wave, most likely two, so anywhere from 10 to 30 small meteors //Sometimes a single wave, most likely two, so anywhere from 10 to 30 small meteors
@@ -38,7 +38,7 @@
meteor_wave(rand(10, 15), max_size = 1) //Much more clement meteor_wave(rand(10, 15), max_size = 1) //Much more clement
/datum/event/meteor_shower/end() /datum/event/meteor_shower/end()
command_alert("The station has cleared the meteor shower.", "Meteor Alert") command_alert(/datum/command_alert/meteor_wave_end)
//Meteor wave that doesn't trigger an announcement. Perfect for adminbus involving extended meteor bombardments without spamming the crew with Meteor alerts. //Meteor wave that doesn't trigger an announcement. Perfect for adminbus involving extended meteor bombardments without spamming the crew with Meteor alerts.
/datum/event/meteor_shower/meteor_quiet /datum/event/meteor_shower/meteor_quiet
@@ -124,7 +124,7 @@ var/global/list/thing_storm_types = list(
storm_name=pick(possible_names) storm_name=pick(possible_names)
/datum/event/thing_storm/announce() /datum/event/thing_storm/announce()
command_alert("The station is about to be hit by a small-intensity meteor storm. Seek shelter within the core of the station immediately.", "Meteor Alert") command_alert(/datum/command_alert/meteor_storm)
//Meteor showers are lighter and more common //Meteor showers are lighter and more common
//Since this isn't rocks of pure pain and explosion, we have more, anywhere from 10 to 40 items //Since this isn't rocks of pure pain and explosion, we have more, anywhere from 10 to 40 items
@@ -159,10 +159,10 @@ var/global/list/thing_storm_types = list(
meteor_wave(rand(12, 24), types = thing_storm_types[storm_name]) meteor_wave(rand(12, 24), types = thing_storm_types[storm_name])
/datum/event/thing_storm/blob_shower/announce() /datum/event/thing_storm/blob_shower/announce()
command_alert("The station is about to pass through a Blob cluster. No overmind brainwaves detected.", "Blob Cluster") command_alert(/datum/command_alert/blob_storm)
/datum/event/thing_storm/blob_shower/end() /datum/event/thing_storm/blob_shower/end()
command_alert("The station has cleared the Blob cluster. Eradicate the blob from hit areas.", "Blob Cluster") command_alert(/datum/command_alert/blob_storm/end)
/datum/event/thing_storm/blob_storm /datum/event/thing_storm/blob_storm
var/cores_spawned = 0 var/cores_spawned = 0
@@ -183,7 +183,7 @@ var/global/list/thing_storm_types = list(
spawn_meteor(chosen_dir, /obj/item/projectile/meteor/blob/core) spawn_meteor(chosen_dir, /obj/item/projectile/meteor/blob/core)
/datum/event/thing_storm/blob_storm/announce() /datum/event/thing_storm/blob_storm/announce()
command_alert("The station is about to pass through a Blob conglomerate. Overmind brainwaves possibly detected.", "Blob Conglomerate") command_alert(/datum/command_alert/blob_storm/overminds)
/datum/event/thing_storm/blob_storm/end() /datum/event/thing_storm/blob_storm/end()
command_alert("The station has cleared the Blob conglomerate. Investigate the hit areas at once and clear the blob. Beware for possible Overmind presence.", "Blob Conglomerate") command_alert(/datum/command_alert/blob_storm/overminds/end)

View File

@@ -51,4 +51,4 @@
/datum/event/mob_swarm/announce() /datum/event/mob_swarm/announce()
command_alert("Due to timespace anomalies of unknown origin, [station_name] is now host to several [mob_name]\s more than there were a moment ago.") command_alert(new /datum/command_alert/mob_swarm(mob_name))

View File

@@ -14,7 +14,7 @@
/datum/event/prison_break/announce() /datum/event/prison_break/announce()
if(prisonAreas && prisonAreas.len > 0) if(prisonAreas && prisonAreas.len > 0)
command_alert("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert") command_alert(/datum/command_alert/graytide)
else else
world.log << "ERROR: Could not initate grey-tide. Unable find prison or brig area." world.log << "ERROR: Could not initate grey-tide. Unable find prison or brig area."
kill() kill()

View File

@@ -24,7 +24,7 @@
/datum/event/radiation_storm/start() /datum/event/radiation_storm/start()
spawn() spawn()
command_alert("High levels of radiation detected near the station, ETA in 30 seconds. Please evacuate into one of the shielded maintenance tunnels.", "Anomaly Alert",alert='sound/AI/radiation.ogg') command_alert(/datum/command_alert/radiation_storm)
for(var/area/A in areas) for(var/area/A in areas)
if(A.z != 1 || is_safe_zone(A)) if(A.z != 1 || is_safe_zone(A))
@@ -38,7 +38,7 @@
sleep(30 SECONDS) sleep(30 SECONDS)
command_alert("The station has entered the radiation belt. Please remain in a sheltered area until we have passed the radiation belt.", "Anomaly Alert") command_alert(/datum/command_alert/radiation_storm/start)
for(var/i = 0, i < 15, i++) for(var/i = 0, i < 15, i++)
var/irradiationThisBurst = rand(15,25) //everybody gets the same rads this radiation burst var/irradiationThisBurst = rand(15,25) //everybody gets the same rads this radiation burst
@@ -66,7 +66,7 @@
sleep(25) sleep(25)
command_alert("The station has passed the radiation belt. Please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert") command_alert(/datum/command_alert/radiation_storm/end)
for(var/area/A in areas) for(var/area/A in areas)
if(A.z != 1 || is_safe_zone(A)) if(A.z != 1 || is_safe_zone(A))

View File

@@ -24,14 +24,7 @@
D.disabled = rand(15, 60) D.disabled = rand(15, 60)
/datum/event/rogue_drone/announce() /datum/event/rogue_drone/announce()
var/msg command_alert(/datum/command_alert/rogue_drone)
if(prob(33))
msg = "A combat drone wing operating out of the NMV Icarus has failed to return from a sweep of this sector, if any are sighted approach with caution."
else if(prob(50))
msg = "Contact has been lost with a combat drone wing operating out of the NMV Icarus. If any are sighted in the area, approach with caution."
else
msg = "Unidentified hackers have targeted a combat drone wing deployed from the NMV Icarus. If any are sighted in the area, approach with caution."
command_alert(msg, "Rogue drone alert")
/datum/event/rogue_drone/tick() /datum/event/rogue_drone/tick()
return return
@@ -51,6 +44,6 @@
num_recovered++ num_recovered++
if(num_recovered > drones_list.len * 0.75) if(num_recovered > drones_list.len * 0.75)
command_alert("Icarus drone control reports the malfunctioning wing has been recovered safely.", "Rogue drone alert") command_alert(/datum/command_alert/drones_recovered)
else else
command_alert("Icarus drone control registers disappointment at the loss of the drones, but the survivors have been recovered.", "Rogue drone alert") command_alert(/datum/command_alert/drones_recovered/failure)

View File

@@ -12,7 +12,7 @@
sent_spiders_to_station = 0 sent_spiders_to_station = 0
/datum/event/spider_infestation/announce() /datum/event/spider_infestation/announce()
command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert",alert='sound/AI/aliens.ogg') command_alert(/datum/command_alert/xenomorphs)
/datum/event/spider_infestation/start() /datum/event/spider_infestation/start()

View File

@@ -10,7 +10,7 @@ datum/event/wallrot/setup()
severity = rand(5, 10) severity = rand(5, 10)
datum/event/wallrot/announce() datum/event/wallrot/announce()
command_alert("Harmful fungi detected on station. Station structures may be contaminated.", "Biohazard Alert") command_alert(/datum/command_alert/wall_fungi)
datum/event/wallrot/start() datum/event/wallrot/start()
spawn() spawn()

View File

@@ -0,0 +1,7 @@
author: Unid
delete-after: True
changes:
- rscdel: "Changed Malf AI modules: Replaced Interhack (useless module) with Fake Centcom Announcement:"
- rscadd: "Fake Centcom Announcement: Buying it lets you create up to 3 centcom announcements (such as meteor waves warning, unidentified lifesigns warning etc). Costs 15 units."

View File

@@ -208,6 +208,7 @@
#include "code\datums\diseases\advance\symptoms\vomit.dm" #include "code\datums\diseases\advance\symptoms\vomit.dm"
#include "code\datums\diseases\advance\symptoms\weight.dm" #include "code\datums\diseases\advance\symptoms\weight.dm"
#include "code\datums\helper_datums\butchering.dm" #include "code\datums\helper_datums\butchering.dm"
#include "code\datums\helper_datums\command_alerts.dm"
#include "code\datums\helper_datums\construction_datum.dm" #include "code\datums\helper_datums\construction_datum.dm"
#include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\events.dm"
#include "code\datums\helper_datums\getrev.dm" #include "code\datums\helper_datums\getrev.dm"