Park/Events/EventEffects/HeatWaveEvent.cs
using HC3;

public class HeatWaveEvent : BaseEvent
{
	ColorGrading ColorGrading { get; set; }
	ColorAdjustments ColorAdjustments { get; set; }
	GameObject CameraObject { get; set; }

	private List<Guest> AllGuests;

	protected override void OnStart()
	{
		base.OnStart();

		ColorGrading = Scene.Camera.AddComponent<ColorGrading>();
		ColorGrading.GradingMethod = ColorGrading.GradingType.TemperatureControl;

		ColorAdjustments = Scene.Camera.AddComponent<ColorAdjustments>();

		AllGuests = Scene.GetAllComponents<Guest>().ToList();

	}

	protected override void OnUpdate()
	{
		base.OnUpdate();

		if ( !ColorGrading.IsValid() ) return;

		ColorGrading.ColorTempK = MathX.Lerp( ColorGrading.ColorTempK, 3000.0f, Time.Delta * 0.5f );
		ColorAdjustments.Brightness = MathX.Lerp( ColorAdjustments.Brightness, 2.0f, Time.Delta * 0.5f );

		// Don't update guests happiness if we aren't the host.
		if ( !Networking.IsHost )
			return;

		if ( AllGuests == null ) return;

		foreach ( var guest in AllGuests )
		{
			if ( guest.IsValid() )
			{
				var need = guest.Needs.GetNeed( "thirst" );
				if ( need != null )
				{
					need.Level -= Time.Delta * 0.2f;
				}
			}
		}
	}

	protected override void OnDestroy()
	{
		ColorGrading?.Destroy();
		ColorAdjustments?.Destroy();
	}
}