diff --git a/code/game/gamemodes/cm_process.dm b/code/game/gamemodes/cm_process.dm index e4e0e32adff4..583039b4a70e 100644 --- a/code/game/gamemodes/cm_process.dm +++ b/code/game/gamemodes/cm_process.dm @@ -244,6 +244,35 @@ GLOBAL_VAR_INIT(next_admin_bioscan, 30 MINUTES) return num_marines +/datum/game_mode/proc/count_per_faction(list/z_levels = SSmapping.levels_by_any_trait(list(ZTRAIT_GROUND, ZTRAIT_RESERVED, ZTRAIT_MARINE_MAIN_SHIP))) + var/num_marines = 0 + var/num_WY = 0 + var/num_UPP = 0 + var/num_CLF = 0 + var/num_headcount = 0 + + for(var/faction_member in GLOB.alive_human_list) + var/mob/living/carbon/human/current_human = faction_member + if(!(current_human.z && (current_human.z in z_levels) && !istype(current_human.loc, /turf/open/space))) + continue + if(current_human.faction in FACTION_LIST_WY || current_human.job == "Corporate Liaison") //The CL is assigned the USCM faction for gameplay purposes + num_WY++ + num_headcount++ + continue + if(current_human.faction == FACTION_UPP) + num_UPP++ + num_headcount++ + continue + if(current_human.faction == FACTION_CLF) + num_CLF++ + num_headcount++ + continue + if(current_human.faction == FACTION_MARINE) + num_marines++ + num_headcount++ + continue + num_headcount++ + return list(num_marines,num_WY,num_UPP,num_CLF,num_headcount) /* #undef QUEEN_DEATH_COUNTDOWN diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index 65dc2666070d..b15c1f36ad12 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -372,7 +372,22 @@ round_statistics.current_map.total_marine_victories++ round_statistics.current_map.total_marine_majors++ if(MODE_INFESTATION_X_MINOR) - musical_track = pick('sound/theme/neutral_melancholy1.ogg','sound/theme/neutral_melancholy2.ogg') + var/living_player_list[] = count_humans_and_xenos(EvacuationAuthority.get_affected_zlevels()) + if(living_player_list[1] && !living_player_list[2]) // If Xeno Minor but Xenos are dead and Humans are alive, see which faction is the last standing + var/headcount = count_per_faction() + var/majority = 0.5 // What percent do we consider a 'majority?' + if ((headcount[2] / headcount[5]) > majority) // headcount[2] = Weyland-Yutani + musical_track = pick('sound/theme/LastManStanding_WY.ogg') + else if ((headcount[3] / headcount[5]) > majority) // headcount[3] = UPP + musical_track = pick('sound/theme/LastManStanding_UPP.ogg') + else if ((headcount[4] / headcount[5]) > majority) // headcount[4] = CLF + musical_track = pick('sound/theme/LastManStanding_CLF.ogg') + else if ((headcount[1] / headcount[5]) > majority) // headcount[1] = Marines + musical_track = pick('sound/theme/neutral_melancholy2.ogg') //This is the theme song for Colonial Marines the game, fitting + else + musical_track = pick('sound/theme/neutral_melancholy1.ogg') + else + musical_track = pick('sound/theme/neutral_melancholy1.ogg') end_icon = "xeno_minor" if(round_statistics && round_statistics.current_map) round_statistics.current_map.total_xeno_victories++ diff --git a/sound/theme/LastManStanding_CLF.ogg b/sound/theme/LastManStanding_CLF.ogg new file mode 100644 index 000000000000..7174248c200f Binary files /dev/null and b/sound/theme/LastManStanding_CLF.ogg differ diff --git a/sound/theme/LastManStanding_UPP.ogg b/sound/theme/LastManStanding_UPP.ogg new file mode 100644 index 000000000000..996c08ace81e Binary files /dev/null and b/sound/theme/LastManStanding_UPP.ogg differ diff --git a/sound/theme/LastManStanding_WY.ogg b/sound/theme/LastManStanding_WY.ogg new file mode 100644 index 000000000000..bc2d069d43cb Binary files /dev/null and b/sound/theme/LastManStanding_WY.ogg differ