DIFF

BreathVapourMdfr.c

const int BREATH_VAPOUR_LEVEL_MAX = 3;

class BreathVapourMdfr extends ModifierBase
{
	override void Init()
	{
		m_TrackActivatedTime 	= false;
		m_ID 					= eModifiers.MDF_BREATH_VAPOUR;
		m_TickIntervalInactive 	= DEFAULT_TICK_TIME_INACTIVE;
		m_TickIntervalActive 	= 6;
		DisableDeactivateCheck();

	}

	override bool ActivateCondition(PlayerBase player)
	{
		return true;
	}

	override bool DeactivateCondition(PlayerBase player)
	{
		return false;
	}

	override void OnReconnect(PlayerBase player)
	{

	}
	
	override string GetDebugText()
	{
		//return m_Player.GetStatHeatComfort().Get().ToString();
	}
	
	override string GetDebugTextSimple()
	{
		//return m_Player.GetStatHeatComfort().Get().ToString();
	}

	
	override void OnTick(PlayerBase player, float deltaT)
	{
		if( !player.m_Environment.IsTemperatureSet() )
			return;
		float air_temperature = player.m_Environment.GetTemperature();
		int level = 0;//default
		if( MiscGameplayFunctions.IsValueInRange( air_temperature, PlayerConstants.BREATH_VAPOUR_THRESHOLD_HIGH, PlayerConstants.BREATH_VAPOUR_THRESHOLD_LOW) )
		{
			float value = Math.InverseLerp( PlayerConstants.BREATH_VAPOUR_THRESHOLD_LOW, PlayerConstants.BREATH_VAPOUR_THRESHOLD_HIGH,air_temperature);
			value = Math.Clamp(value,0,1);
			level = Math.Round(Math.Lerp(1,BREATH_VAPOUR_LEVEL_MAX,value));
		}
		else if(air_temperature < PlayerConstants.BREATH_VAPOUR_THRESHOLD_HIGH)
		{
			level = BREATH_VAPOUR_LEVEL_MAX;
		}
		if( level != player.m_BreathVapour )
		{
			player.m_BreathVapour = level;
			player.SetSynchDirty();
		}
	}
};