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

public class ColdEvent : BaseEvent
{
	[Property] GameObject RainObject { get; set; } = null;
	ColorGrading ColorGrading { get; set; }
	Vignette Vignette { get; set; }
	GameObject CameraObject { get; set; }

	private IEnumerable<Guest> AllGuests => GuestManager.Instance.GuestList;

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

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

		Vignette = Scene.Camera.AddComponent<Vignette>();
		Vignette.Color = "#167173";
		Vignette.Intensity = 0.2f;
	}

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

		if ( !ColorGrading.IsValid() ) return;

		ColorGrading.ColorTempK = MathX.Lerp( ColorGrading.ColorTempK, 40000, 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() )
			{
				guest.Needs.Happiness -= Time.Delta * 0.002f;
			}
		}
	}

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