diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 6b4ce261b94..95d285d80ea 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -25,6 +25,7 @@ SUBSYSTEM_DEF(shuttle) var/area/emergencyLastCallLoc var/emergencyCallAmount = 0 //how many times the escape shuttle was called var/emergencyNoEscape + var/emergencyNoRecall = FALSE var/list/hostileEnvironments = list() //supply shuttle stuff diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index bb4bf455dcd..4c937af209a 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -261,6 +261,16 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ gang_bosses += G.bosses return gang_bosses +/datum/game_mode/proc/shuttle_check() + var/alive = 0 + for(var/mob/living/L in GLOB.player_list) + if(L.stat != DEAD) + alive++ + if((alive < (GLOB.joined_player_list.len * 0.4)) && (SSshuttle.emergency.timeLeft(1) < (SSshuttle.emergencyCallTime * 0.4))) + SSshuttle.emergencyNoRecall = TRUE + SSshuttle.emergency.request(null, set_coefficient = 0.4) + priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.") + /proc/determine_domination_time(var/datum/gang/G) return max(180,480 - (round((G.territory.len/GLOB.start_state.num_territories)*100, 1) * 9)) diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index 0ff9ef4f2db..95cbb5d2691 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -204,7 +204,9 @@ return var/added_names = "" var/lost_names = "" - + + SSticker.mode.shuttle_check() // See if its time to start wrapping things up + //Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report var/list/reclaimed_territories = territory_new & territory_lost territory |= reclaimed_territories diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index ad2da7b5024..3e4debd9749 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -167,6 +167,9 @@ if(!can_use(user)) return 0 + if(SSshuttle.emergencyNoRecall) + return 0 + if(recalling) to_chat(usr, "Error: Recall already in progress.") return 0 diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 6344689f0bd..d479ddf1bc5 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -235,7 +235,9 @@ /obj/docking_port/mobile/emergency/cancel(area/signalOrigin) if(mode != SHUTTLE_CALL) return - + if(SSshuttle.emergencyNoRecall) + return + invertTimer() mode = SHUTTLE_RECALL