diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm index 64f4b92a1edd..44ec0def86a9 100644 --- a/code/controllers/subsystem/minimap.dm +++ b/code/controllers/subsystem/minimap.dm @@ -689,6 +689,11 @@ SUBSYSTEM_DEF(minimaps) if(faction == FACTION_NEUTRAL && isobserver(user)) faction = allowed_flags == MINIMAP_FLAG_XENO ? XENO_HIVE_NORMAL : FACTION_MARINE + if(is_xeno && xeno.hive.see_humans_on_tacmap) + allowed_flags = MINIMAP_FLAG_ALL + faction = FACTION_NEUTRAL + targeted_ztrait = ZTRAIT_MARINE_MAIN_SHIP + new_current_map = get_unannounced_tacmap_data_png(faction) old_map = get_tacmap_data_png(faction) current_svg = get_tacmap_data_svg(faction) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 5890a44f4168..41a50dce98d1 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -75,14 +75,23 @@ // Finding the last guy for anti-delay. if(SSticker.mode && SSticker.mode.is_in_endgame && SSticker.current_state != GAME_STATE_FINISHED && is_mainship_level(z)) var/mob/last_living_human + var/shipside_humans_count = 0 + var/datum/hive_status/main_hive = GLOB.hive_datum[XENO_HIVE_NORMAL] + var/see_humans_on_tacmap = main_hive.see_humans_on_tacmap for(var/mob/living/carbon/human/cur_human as anything in GLOB.alive_human_list) if(!is_mainship_level(cur_human.z)) continue - if(last_living_human) + shipside_humans_count++ + if(last_living_human && see_humans_on_tacmap) last_living_human = null break last_living_human = cur_human - if(last_living_human && (GLOB.last_qm_callout + 2 MINUTES) < world.time) + xeno_announcement("[shipside_humans_count].", XENO_HIVE_NORMAL, SPAN_ANNOUNCEMENT_HEADER_BLUE("[QUEEN_MOTHER_ANNOUNCE]")) + + if(!see_humans_on_tacmap && shipside_humans_count < main_hive.totalXenos.len * 0.75) + xeno_announcement("TRUE.", XENO_HIVE_NORMAL, SPAN_ANNOUNCEMENT_HEADER_BLUE("[QUEEN_MOTHER_ANNOUNCE]")) + main_hive.see_humans_on_tacmap = TRUE + if(last_living_human && shipside_humans_count <= 1 && (GLOB.last_qm_callout + 2 MINUTES) < world.time) GLOB.last_qm_callout = world.time // Tell the xenos where the human is. xeno_announcement("I sense the last tallhost hiding in [get_area(last_living_human)].", XENO_HIVE_NORMAL, SPAN_ANNOUNCEMENT_HEADER_BLUE("[QUEEN_MOTHER_ANNOUNCE]")) diff --git a/code/modules/mob/living/carbon/xenomorph/hive_status.dm b/code/modules/mob/living/carbon/xenomorph/hive_status.dm index 67f19c8d07cb..9fb8c6b611b1 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_status.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_status.dm @@ -70,6 +70,8 @@ /// Set to false if you want to prevent getting burrowed larva from latejoin marines var/latejoin_burrowed = TRUE + var/see_humans_on_tacmap = FALSE + var/list/hive_inherant_traits // Cultist Info