/* -------------------------------------------------------------- ACTION_IfPlayerCount -------------------------------------------------------------- Checks if player count is between MinPlayers and MaxPlayers (inclusive). If not - goes to section end. Setting MaxPlayers=0 (default) disables MaxPlayers restriction and only checks MinPlayers. Set bCountOnlyAlive=True to exclude dead players Author : PooSH -------------------------------------------------------------- */ class ACTION_IfPlayerCount extends ScriptedAction; var(Action) int MinPlayers, MaxPlayers; var(Action) bool bCountOnlyAlive; // all players should be counted or only alive? //returns adjusted NumToSpawn to difficulty and number of players function int GetPlayerCount(LevelInfo Level) { local int LivingCount; local Controller C; if ( !bCountOnlyAlive ) return Level.Game.NumPlayers; for ( C=Level.ControllerList; C!=None; C=C.NextController ) { if (C.PlayerReplicationInfo != None && C.bIsPlayer && !C.PlayerReplicationInfo.bOutOfLives && !C.PlayerReplicationInfo.bOnlySpectator ) LivingCount++; } return LivingCount; } function ProceedToNextAction(ScriptedController C) { local int PlayerCount; C.ActionNum += 1; PlayerCount = GetPlayerCount(C.Level); if ( PlayerCount < MinPlayers || (MaxPlayers != 0 && PlayerCount > MaxPlayers) ) ProceedToSectionEnd(C); } function bool StartsSection() { return true; } function string GetActionString() { if ( MaxPlayers == 0 ) return ActionString $ " > " $ MinPlayers; return ActionString $ " ["$MinPlayers$".."$MaxPlayers$"]"; } defaultproperties { ActionString="If player count" }