mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-09 00:42:34 +00:00
Changed the spawning mechanics of hivebots and expanded their roster with three new types, Bomber, Guardian and Harvester.
Tweaked the slime infestation event to be a bit more colorful and spawn a couple more slimes than currently.
Made it so infestation events no longer trigger outside the station at shuttle docks,, inside xenobiology cells, substations, at centcomm or outside etc.
Fixed the prison break event from not working correctly with virology, added a chance for it to happen at the bridge.
Fixed some announcements missing their custom titles. Particularly those used by random events. Tweaked their font and size.
79 lines
3.5 KiB
Plaintext
79 lines
3.5 KiB
Plaintext
/datum/event/prison_break
|
|
startWhen = 5
|
|
announceWhen = 75
|
|
|
|
var/releaseWhen = 60
|
|
var/list/area/areas = list() //List of areas to affect. Filled by start()
|
|
ic_name = "an imprisonment system virus"
|
|
no_fake = 1
|
|
|
|
var/eventDept = "Security" //Department name in announcement
|
|
var/list/areaName = list("Brig") //Names of areas mentioned in AI and Engineering announcements
|
|
var/list/areaType = list(/area/security/prison, /area/security/brig) //Area types to include.
|
|
var/list/areaNotType = list() //Area types to specifically exclude.
|
|
|
|
/datum/event/prison_break/virology
|
|
eventDept = "Medical"
|
|
areaName = list("Virology")
|
|
areaType = list(/area/medical/virology, /area/medical/virologyaccess, /area/medical/quarantineaccess, /area/medical/quarantine, /area/medical/virologytesting)
|
|
|
|
/datum/event/prison_break/xenobiology
|
|
eventDept = "Science"
|
|
areaName = list("Xenobiology")
|
|
areaType = list(/area/rnd/xenobiology)
|
|
areaNotType = list(/area/rnd/xenobiology/xenoflora, /area/rnd/xenobiology/xenoflora_storage)
|
|
|
|
/datum/event/prison_break/station
|
|
eventDept = "Station"
|
|
areaName = list("Brig","Virology","Xenobiology")
|
|
areaType = list(/area/security/prison, /area/security/brig, /area/medical/virology, /area/medical/virologyaccess, /area/medical/quarantineaccess, /area/medical/quarantine, /area/medical/virologytesting, /area/rnd/xenobiology)
|
|
areaNotType = list(/area/rnd/xenobiology/xenoflora, /area/rnd/xenobiology/xenoflora_storage)
|
|
|
|
/datum/event/prison_break/bridge
|
|
eventDept = "Bridge"
|
|
areaName = list("Bridge")
|
|
areaType = list(/area/bridge, /area/teleporter, /area/crew_quarters/heads/cryo, /area/maintenance/maintcentral)
|
|
areaNotType = list(/area/bridge/aibunker, /area/bridge/levela, /area/bridge/selfdestruct)
|
|
|
|
/datum/event/prison_break/setup()
|
|
announceWhen = rand(75, 105)
|
|
releaseWhen = rand(60, 90)
|
|
|
|
src.endWhen = src.releaseWhen+2
|
|
|
|
|
|
/datum/event/prison_break/announce()
|
|
if(areas && areas.len > 0)
|
|
command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] [(eventDept == "Security")? "imprisonment":"containment"] subroutines. Secure any compromised areas immediately. Station AI involvement is recommended.", "[eventDept] Alert")
|
|
|
|
|
|
/datum/event/prison_break/start()
|
|
for(var/area/A in the_station_areas)
|
|
if(is_type_in_list(A,areaType) && !is_type_in_list(A,areaNotType))
|
|
areas += A
|
|
|
|
if(areas && areas.len > 0)
|
|
var/my_department = "[station_name()] firewall subroutines"
|
|
var/rc_message = "An unknown malicious program has been detected in the [english_list(areaName)] lighting and airlock control systems at [worldtime2text()]. Systems will be fully compromised within approximately three minutes. Direct intervention is required immediately.<br>"
|
|
for(var/obj/machinery/message_server/MS in SSmachinery.processing_machines)
|
|
MS.send_rc_message("Engineering", my_department, rc_message, "", "", 2)
|
|
for(var/mob/living/silicon/ai/A in player_list)
|
|
to_chat(A, "<span class='danger'>Malicious program detected in the [english_list(areaName)] lighting and airlock control systems by [my_department].</span>")
|
|
|
|
else
|
|
world.log << "ERROR: Could not initate grey-tide. Unable to find suitable containment area."
|
|
kill()
|
|
|
|
|
|
/datum/event/prison_break/tick()
|
|
if(activeFor == releaseWhen)
|
|
if(areas && areas.len > 0)
|
|
for(var/area/A in areas)
|
|
for(var/obj/machinery/light/L in A)
|
|
L.flicker(10)
|
|
|
|
|
|
/datum/event/prison_break/end()
|
|
for(var/area/A in shuffle(areas))
|
|
A.prison_break()
|