Adds "apprehended" status to cuffed/brigged antags at end of round (#10302)

This commit is contained in:
Jiří Barouš
2020-10-23 11:45:18 +02:00
committed by GitHub
parent bd18a4b8da
commit 760ea89fc4
9 changed files with 50 additions and 15 deletions
+6 -4
View File
@@ -130,10 +130,12 @@
#define DEFAULT_JOB_TYPE /datum/job/assistant
//Area flags, possibly more to come
#define RAD_SHIELDED 1 //shielded from radiation, clearly
#define SPAWN_ROOF 2 // if we should attempt to spawn a roof above us.
#define HIDE_FROM_HOLOMAP 4 // if we shouldn't be drawn on station holomaps
#define FIRING_RANGE 8
#define RAD_SHIELDED 1 //shielded from radiation, clearly
#define SPAWN_ROOF 2 // if we should attempt to spawn a roof above us.
#define HIDE_FROM_HOLOMAP 4 // if we shouldn't be drawn on station holomaps
#define FIRING_RANGE 8
#define NO_CREW_EXPECTED 16 // Areas where crew is not expected to ever be. Used to tell antag bases and such from crew-accessible areas on centcom level.
#define PRISON 32 // Marks prison area for purposes of checking if brigged/imprisoned
// Convoluted setup so defines can be supplied by Bay12 main server compile script.
// Should still work fine for people jamming the icons into their repo.
+3 -2
View File
@@ -459,11 +459,12 @@
// have to call this periodically for the duration to work properly
/datum/mind/proc/is_brigged(duration)
var/turf/T = current.loc
if(!istype(T))
if(isnull(T))
brigged_since = -1
return 0
var/area/A = T.loc
var/is_currently_brigged = 0
if(istype(T.loc,/area/security/brig))
if(A?.is_prison())
is_currently_brigged = 1
for(var/obj/item/card/id/card in current)
is_currently_brigged = 0
+13 -5
View File
@@ -1,5 +1,4 @@
/datum/antagonist/proc/print_player_summary()
if(!current_antagonists.len)
return 0
@@ -64,14 +63,23 @@
var/role = ply.assigned_role ? "\improper[ply.assigned_role]" : "\improper[ply.special_role]"
var/text = "<br><b>[ply.name]</b> as \a <b>[role]</b> ("
if(ply.current)
if(ply.current.stat == DEAD)
var/mob/living/M = ply.current
var/mob/living/carbon/C = M
var/turf/T = M.loc
var/area/A = T.loc
if(M.stat == DEAD)
text += "died"
else if(isNotStationLevel(ply.current.z))
else if(A?.is_prison() || (!A?.is_no_crew_expected() && C?.handcuffed))
// they are either imprisoned, or handcuffed in an area that can't be considered a hideout
text += "apprehended"
else if(isNotStationLevel(M.z))
text += "fled the station"
else
text += "survived"
if(ply.current.real_name != ply.name)
text += " as <b>[ply.current.real_name]</b>"
if(M.stat == UNCONSCIOUS)
text += " - unconscious"
if(M.real_name != ply.name)
text += " as <b>[M.real_name]</b>"
else
text += "body destroyed"
text += ")"
+6
View File
@@ -92,6 +92,12 @@
. = ..()
/area/proc/is_prison()
return flags & PRISON
/area/proc/is_no_crew_expected()
return flags & NO_CREW_EXPECTED
/area/proc/set_lightswitch(var/state)
lightswitch = state
var/obj/machinery/light_switch/L = locate() in src
+1 -1
View File
@@ -31,7 +31,7 @@ var/hadevent = 0
var/list/area/areas = list()
for(var/area/A in the_station_areas)
if(istype(A, /area/security/prison) || istype(A, /area/security/brig))
if(A.is_prison())
areas += A
if(areas && areas.len > 0)