src/game/Tactical/Campaign.cc
void HourlyProgressUpdate(void)
{
	UINT8 ubCurrentProgress;

	ubCurrentProgress = CurrentPlayerProgressPercentage();

	// if this is new high, remember it as that
	if (ubCurrentProgress > gStrategicStatus.ubHighestProgress)
	{
		// CJC:  note when progress goes above certain values for the first time
		#define first_event_trigger( progress_threshold ) (ubCurrentProgress >= progress_threshold && gStrategicStatus.ubHighestProgress < progress_threshold)

		// at 35% start the Madlab quest
		if (first_event_trigger(gamepolicy(progress_event_madlab_min)))
		{
			HandleScientistAWOLMeanwhileScene();
		}

		// at 50% make Mike available to the strategic AI
		if (first_event_trigger(gamepolicy(progress_event_mike_min)))
		{
			SetFactTrue( FACT_MIKE_AVAILABLE_TO_ARMY );
		}

		// at 70% add Iggy to the world
		if (first_event_trigger(gamepolicy(progress_event_iggy_min)))
		{
			gMercProfiles[ IGGY ].sSectorX = 5;
			gMercProfiles[ IGGY ].sSectorY = MAP_ROW_C;
		}
		#undef first_event_trigger

		gStrategicStatus.ubHighestProgress = ubCurrentProgress;

		// debug message
		SLOGD("New player progress record: %d%%", gStrategicStatus.ubHighestProgress );
	}
}
// monitors the highest level of progress that player has achieved so far (checking hourly),
// as opposed to his immediate situation (which may be worse if he's suffered a setback).
monitors the highest level of progress that player has achieved so far (checking hourly),
as opposed to his immediate situation (which may be worse if he's suffered a setback).
monitors the highest level of progress that player has achieved so far ( checking hourly ) as opposed to his immediate situation ( which may be worse if he ' s suffered a setback ) .
void HourlyProgressUpdate(void)
{
	UINT8 ubCurrentProgress;
	ubCurrentProgress = CurrentPlayerProgressPercentage();
	if (ubCurrentProgress > gStrategicStatus.ubHighestProgress)
	{
		#define first_event_trigger( progress_threshold ) (ubCurrentProgress >= progress_threshold && gStrategicStatus.ubHighestProgress < progress_threshold)
		if (first_event_trigger(gamepolicy(progress_event_madlab_min)))
		{
			HandleScientistAWOLMeanwhileScene();
		}
		if (first_event_trigger(gamepolicy(progress_event_mike_min)))
		{
			SetFactTrue( FACT_MIKE_AVAILABLE_TO_ARMY );
		}
		if (first_event_trigger(gamepolicy(progress_event_iggy_min)))
		{
			gMercProfiles[ IGGY ].sSectorX = 5;
			gMercProfiles[ IGGY ].sSectorY = MAP_ROW_C;
		}
		#undef first_event_trigger
		gStrategicStatus.ubHighestProgress = ubCurrentProgress;
		SLOGD("New player progress record: %d%%", gStrategicStatus.ubHighestProgress );
	}
}
void HourlyProgressUpdate ( void ) { UINT8 ubCurrentProgress ; ubCurrentProgress = CurrentPlayerProgressPercentage ( ) ; if ( ubCurrentProgress > gStrategicStatus . ubHighestProgress ) { #define first_event_trigger ( progress_threshold )  (ubCurrentProgress >= progress_threshold && gStrategicStatus.ubHighestProgress < progress_threshold) if ( first_event_trigger ( gamepolicy ( progress_event_madlab_min ) ) ) { HandleScientistAWOLMeanwhileScene ( ) ; } if ( first_event_trigger ( gamepolicy ( progress_event_mike_min ) ) ) { SetFactTrue ( FACT_MIKE_AVAILABLE_TO_ARMY ) ; } if ( first_event_trigger ( gamepolicy ( progress_event_iggy_min ) ) ) { gMercProfiles [ IGGY ] . sSectorX = 5 ; gMercProfiles [ IGGY ] . sSectorY = MAP_ROW_C ; } #undef  first_event_trigger gStrategicStatus . ubHighestProgress = ubCurrentProgress ; SLOGD ( " " , gStrategicStatus . ubHighestProgress ) ; } }
monitors the highest level of progress that player has achieved so far (checking hourly),
as opposed to his immediate situation (which may be worse if he's suffered a setback).
monitors the highest level of progress that player has achieved so far ( checking hourly ) as opposed to his immediate situation ( which may be worse if he ' s suffered a setback ) .
// if this is new high, remember it as that // CJC:  note when progress goes above certain values for the first time // at 35% start the Madlab quest // at 50% make Mike available to the strategic AI // at 70% add Iggy to the world // debug message