Files
Paradise/code/modules/events/prison_break.dm
Tigercat2000 3a6ab84e83 Get_Area(), Event, and grab fixes
This commit fixes the following things:
 - Get_Area() now properly returns the area
 - Events will no longer runtime upon being manually triggered by an admin
 - The prison break event works again
 - Grabbing will no longer runtime (May result in people with pixel
   offsets from a grab being stuck, better than a runtime)
2015-05-12 17:04:28 -07:00

56 lines
1.9 KiB
Plaintext

/datum/event/prison_break
announceWhen = 50
var/releaseWhen = 25
var/list/area/prisonAreas = list()
var/list/potentialAreas = list("/area/security/prison","/area/security/brig","/area/security/processing","/area/security/permabrig","/area/security/lobby","/area/security/lobby")
var/list/candidateAreas = list()
/datum/event/prison_break/setup()
announceWhen = rand(50, 60)
releaseWhen = rand(20, 30)
src.startWhen = src.releaseWhen-1
src.endWhen = src.releaseWhen+1
for(var/areaa in potentialAreas)
var/path = text2path(areaa)
candidateAreas += typesof(path)
for(var/area/A in world)
if(is_type_in_list(A, candidateAreas))
prisonAreas += A
/datum/event/prison_break/announce()
if(prisonAreas && prisonAreas.len > 0)
command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert")
else
world.log << "ERROR: Could not initate grey-tide. Unable find prison or brig area."
kill()
/datum/event/prison_break/start()
if(prisonAreas && prisonAreas.len > 0)
for(var/area/A in prisonAreas)
for(var/obj/machinery/light/L in A)
L.flicker(10)
/datum/event/prison_break/tick()
if(activeFor == releaseWhen)
if(prisonAreas && prisonAreas.len > 0)
for(var/area/A in prisonAreas)
for(var/obj/machinery/power/apc/temp_apc in A)
temp_apc.overload_lighting()
for(var/obj/structure/closet/secure_closet/brig/temp_closet in A)
temp_closet.locked = 0
temp_closet.icon_state = temp_closet.icon_closed
for(var/obj/machinery/door/airlock/security/temp_airlock in A)
temp_airlock.prison_open()
for(var/obj/machinery/door/airlock/glass_security/temp_glassairlock in A)
temp_glassairlock.prison_open()
for(var/obj/machinery/door_timer/temp_timer in A)
temp_timer.releasetime = 1