diff options
| -rw-r--r-- | src/game/g_main.c | 69 | 
1 files changed, 35 insertions, 34 deletions
diff --git a/src/game/g_main.c b/src/game/g_main.c index 7e72b87..741f61a 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -1690,8 +1690,6 @@ void G_CalculateStages( void )  {    float         alienPlayerCountMod     = level.averageNumAlienClients / PLAYER_COUNT_MOD;    float         humanPlayerCountMod     = level.averageNumHumanClients / PLAYER_COUNT_MOD; -  static int    lastAlienStageModCount  = 1; -  static int    lastHumanStageModCount  = 1;    static int    alienTriggerStage       = 0;    static int    humanTriggerStage       = 0; @@ -1706,9 +1704,7 @@ void G_CalculateStages( void )        g_alienStage.integer == S1 && g_alienMaxStage.integer > S1 )    {      trap_Cvar_Set( "g_alienStage", va( "%d", S2 ) ); -    level.alienStage2Time = level.time; -    lastAlienStageModCount = g_alienStage.modificationCount; -    G_LogPrintf("Stage: A 2: Aliens reached Stage 2\n"); +    g_alienStage.integer = S2; // update immediately    }    if( g_alienKills.integer >= @@ -1716,9 +1712,7 @@ void G_CalculateStages( void )        g_alienStage.integer == S2 && g_alienMaxStage.integer > S2 )    {      trap_Cvar_Set( "g_alienStage", va( "%d", S3 ) ); -    level.alienStage3Time = level.time; -    lastAlienStageModCount = g_alienStage.modificationCount; -    G_LogPrintf("Stage: A 3: Aliens reached Stage 3\n"); +    g_alienStage.integer = S3;    }    if( g_humanKills.integer >= @@ -1726,9 +1720,7 @@ void G_CalculateStages( void )        g_humanStage.integer == S1 && g_humanMaxStage.integer > S1 )    {      trap_Cvar_Set( "g_humanStage", va( "%d", S2 ) ); -    level.humanStage2Time = level.time; -    lastHumanStageModCount = g_humanStage.modificationCount; -    G_LogPrintf("Stage: H 2: Humans reached Stage 2\n"); +    g_humanStage.integer = S2;    }    if( g_humanKills.integer >= @@ -1736,36 +1728,45 @@ void G_CalculateStages( void )        g_humanStage.integer == S2 && g_humanMaxStage.integer > S2 )    {      trap_Cvar_Set( "g_humanStage", va( "%d", S3 ) ); -    level.humanStage3Time = level.time; -    G_LogPrintf("Stage: H 3: Humans reached Stage 3\n"); -    lastHumanStageModCount = g_humanStage.modificationCount; +    g_humanStage.integer = S3;    } -  -  if( g_alienStage.modificationCount > lastAlienStageModCount ) + +  while( alienTriggerStage < MIN( g_alienStage.integer, S3 ) )    { -    G_Checktrigger_stages( PTE_ALIENS, g_alienStage.integer ); -    while( alienTriggerStage < MIN( g_alienStage.integer, S3 ) ) -      G_Checktrigger_stages( PTE_ALIENS, ++alienTriggerStage ); +     alienTriggerStage++; + +     switch( alienTriggerStage ) +     { +     case S2: +       level.alienStage2Time = level.time; +       G_LogPrintf( "Stage: A 2: Aliens reached Stage 2\n" ); +       break; +     case S3: +       level.alienStage3Time = level.time; +       G_LogPrintf( "Stage: A 3: Aliens reached Stage 3\n" ); +       break; +     } -      if( g_alienStage.integer == S2 ) -      level.alienStage2Time = level.time; -    else if( g_alienStage.integer == S3 ) -      level.alienStage3Time = level.time; -  -    lastAlienStageModCount = g_alienStage.modificationCount; +     G_Checktrigger_stages( PTE_ALIENS, alienTriggerStage );    } -  -  if( g_humanStage.modificationCount > lastHumanStageModCount ) + +  while( humanTriggerStage < MIN( g_humanStage.integer, S3 ) )    { -    while( humanTriggerStage < MIN( g_humanStage.integer, S3 ) ) -      G_Checktrigger_stages( PTE_HUMANS, ++humanTriggerStage ); +     humanTriggerStage++; -    if( g_humanStage.integer == S2 ) -      level.humanStage2Time = level.time; -    else if( g_humanStage.integer == S3 ) -      level.humanStage3Time = level.time; +     switch( humanTriggerStage ) +     { +     case S2: +       level.humanStage2Time = level.time; +       G_LogPrintf( "Stage: H 2: Humans reached Stage 2\n" ); +       break; +     case S3: +       level.humanStage3Time = level.time; +       G_LogPrintf( "Stage: H 3: Humans reached Stage 3\n" ); +       break; +     } -    lastHumanStageModCount = g_humanStage.modificationCount; +     G_Checktrigger_stages( PTE_HUMANS, humanTriggerStage );    }  }  | 
