class PlayerConstants 
{
	static const float WEAPON_RAISE_BLEND_DELAY = 0.2;
	static const float MELEE2_MOVEMENT_BLEND_DELAY = 0.35;
	static const float HEAVY_HIT_THRESHOLD = 0.5; //defines what is considered a 'heavy hit' from the indicator's standpoint

	static const float FULL_SPRINT_DELAY_DEFAULT 		= 0.5;	//! [seconds]
	static const float FULL_SPRINT_DELAY_FROM_CROUCH 	= 1.0;	//! [seconds]
	static const float FULL_SPRINT_DELAY_FROM_PRONE 	= 2.0;	//! [seconds]
	
	//approximate head heights
	static const float HEAD_HEIGHT_ERECT = 1.6;
	static const float HEAD_HEIGHT_CROUCH = 1.05;
	static const float HEAD_HEIGHT_PRONE = 0.66;
	
	//----------------------------------------------------------
	//				SHOES DAMAGE/FEET BLEEDING
	//----------------------------------------------------------
	static const float BAREFOOT_MOVEMENT_BLEED_MODIFIER = 0.1;
	static const float SHOES_MOVEMENT_DAMAGE_PER_STEP = 0.035;
	static const int CHECK_EVERY_N_STEP = 10;//will process every n-th step(for performance reasons)
	//----------------------------------------------------------
	//					STAT LEVELS START
	//----------------------------------------------------------
	static const float SL_HEALTH_CRITICAL = 15;
	static const float SL_HEALTH_LOW = 30;
	static const float SL_HEALTH_NORMAL = 50;
	static const float SL_HEALTH_HIGH = 80;	
	
	static const float SL_TOXICITY_CRITICAL = 20;
	static const float SL_TOXICITY_LOW = 40;
	static const float SL_TOXICITY_NORMAL = 60;
	static const float SL_TOXICITY_HIGH = 80;

	static const float SL_BLOOD_CRITICAL = 3000;
	static const float SL_BLOOD_LOW = 3500;
	static const float SL_BLOOD_NORMAL = 4000;
	static const float SL_BLOOD_HIGH = 4500;
	
	static const float SL_ENERGY_CRITICAL = 0;
	static const float SL_ENERGY_LOW = 300;
	static const float SL_ENERGY_NORMAL = 800;
	static const float SL_ENERGY_HIGH = 3500;
	static const float SL_ENERGY_MAX = 5000;
	
	static const float SL_WATER_CRITICAL = 0;
	static const float SL_WATER_LOW = 300;
	static const float SL_WATER_NORMAL = 800;
	static const float SL_WATER_HIGH = 3500;
	static const float SL_WATER_MAX = 5000;
	//----------------------------------------------------------
	//						STAT LEVELS END
	//----------------------------------------------------------

	//-------------------------------------------------------
	static const float NORMAL_TEMPERATURE_L = 36.0;
	static const float NORMAL_TEMPERATURE_H = 36.5;
	static const float HIGH_TEMPERATURE_L 	= 38.5;
	static const float HIGH_TEMPERATURE_H	= 39.0;
	//-------------------------------------------------------
	static const float DIGESTION_SPEED							= 1.7;	//quantity processed in the stomach per second
	static const float CONSUMPTION_MULTIPLIER_BASE				= 1;	//must not be 0 or less
	static const float STOMACH_ENERGY_TRANSFERED_PER_SEC 		= 3;	//amount of kcal transfered to energy per second(this should ideally be higher than what player burns under high metabolic load[sprint])
	static const float STOMACH_WATER_TRANSFERED_PER_SEC 		= 6;	//amount of ml transfered to water per second(this should ideally be higher than what player burns under high metabolic load[sprint])
	static const float STOMACH_SOLID_EMPTIED_PER_SEC 			= 7;	//amount of g/ml emptied from stomach per second
	
	static const float STOMACH_DIGEST_AGENT_RANDOM_MIN = -0.5; 	//! Percents of agents count <-1.0; 1.0>
	static const float STOMACH_DIGEST_AGENT_RANDOM_MAX = 0.5; 	//! Percents of agents count <-1.0; 1.0>

	static const float LOW_WATER_THRESHOLD 						= SL_WATER_LOW;		//threshold from which water affects health

	static const float LOW_ENERGY_THRESHOLD 					= SL_ENERGY_LOW;	//threshold from which energy affects health

	//--------------------------------------------------------
	static const float METABOLIC_SPEED_ENERGY_BASAL		= 0.01;		//energy loss per second while idle
	
	static const float METABOLIC_SPEED_ENERGY_WALK		= 0.1;		//energy loss per second
	static const float METABOLIC_SPEED_ENERGY_JOG		= 0.3;		//energy loss per second
	static const float METABOLIC_SPEED_ENERGY_SPRINT	= 0.6;		//energy loss per second
	
	static const float METABOLIC_SPEED_WATER_BASAL		= 0.01;		//water loss per second while idle
	
	static const float METABOLIC_SPEED_WATER_WALK		= 0.1;		//water loss per second
	static const float METABOLIC_SPEED_WATER_JOG		= 0.3;		//water loss per second
	static const float METABOLIC_SPEED_WATER_SPRINT		= 0.6;		//water loss per second
	//--------------------------------------------------------
	
	static const float	THRESHOLD_HEAT_COMFORT_PLUS_WARNING		= 0.15;	//yellow zone
	static const float	THRESHOLD_HEAT_COMFORT_PLUS_CRITICAL 	= 0.45;	//red zone
	static const float	THRESHOLD_HEAT_COMFORT_PLUS_EMPTY		= 0.75;	//flashing red zone

	static const float	THRESHOLD_HEAT_COMFORT_MINUS_WARNING	= -0.15;	//light blue zone
	static const float	THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL	= -0.45;	//dark blue zone
	static const float	THRESHOLD_HEAT_COMFORT_MINUS_EMPTY		= -0.75;	//flashing dark blue zone

	//--------------------------------------------------------
	static const int BLOOD_THRESHOLD_FATAL 					= 2500;	//fatal blood level
	
	static const float BLOOD_REGEN_RATE_PER_SEC				= 0.3; 	//base amount of blood regenerated per second
	static const float DAMAGE_ZONE_BLOOD_REGEN_MODIFIER 	= 0.7;
	
	static const float UNCONSCIOUS_BLOOD_REGEN_MLTP 		= 2;	//multiplier for blood regen while character has critical blood and uncon
	
	static const float BLOOD_REGEN_MODIFIER_ENERGY_LOW		= 0; 	//multiplier for blood regen rate 
	static const float BLOOD_REGEN_MODIFIER_ENERGY_MID		= 0.65;
	static const float BLOOD_REGEN_MODIFIER_ENERGY_HIGH		= 1;
	
	static const float BLOOD_REGEN_MODIFIER_WATER_LOW		= 0; 	//multiplier for blood regen rate (BLOOD_REGEN_MULTIPLIER_WATER_LOW ?)
	static const float BLOOD_REGEN_MODIFIER_WATER_MID		= 0.65;
	static const float BLOOD_REGEN_MODIFIER_WATER_HIGH		= 1;
	
	static const float SALINE_BLOOD_REGEN_PER_SEC			= 3;	//boost for blood regen per second, independent on BLOOD_REGEN_SPEED
	static const float SALINE_LIQUID_AMOUNT					= 500;
	static const float SALINE_WATER_REGEN_PER_SEC 			= 2.1;
	
	static const float HEMOLYTIC_BLOOD_DRAIN_PER_SEC		= 7;	//hemolytic reaction blood drain per second
	static const float HEMOLYTIC_BLOODLOSS_AMOUNT			= 500;
	static const float HEMOLYTIC_RISK_SHOCK_THRESHOLD		= 75;	// amount of blood from transfusion causing player character going into shock
	static const float HEMOLYTIC_REACTION_THRESHOLD			= 175;	// amount of blood from transfusion triggering hemolytic reaction
	
	static const float WATER_LOSS_THRESHOLD_HC_PLUS_LOW		= THRESHOLD_HEAT_COMFORT_PLUS_WARNING;
	static const float WATER_LOSS_THRESHOLD_HC_PLUS_HIGH	= THRESHOLD_HEAT_COMFORT_PLUS_CRITICAL;
	
	static const float ENERGY_LOSS_THRESHOLD_HC_MINUS_LOW	= THRESHOLD_HEAT_COMFORT_MINUS_WARNING;
	static const float ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH	= THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL;
	
	static const float WATER_LOSS_HC_PLUS_LOW				= 0;
	static const float WATER_LOSS_HC_PLUS_HIGH				= 0.4;

	static const float ENERGY_LOSS_HC_MINUS_LOW				= 0.2;
	static const float ENERGY_LOSS_HC_MINUS_HIGH			= 0.45;
	
	static const float HEALTH_LOSS_HC_PLUS_LOW				= 0.035;
	static const float HEALTH_LOSS_HC_PLUS_HIGH				= 0.30;		
	
	static const float HEALTH_LOSS_HC_MINUS_LOW				= 0.035;
	static const float HEALTH_LOSS_HC_MINUS_HIGH 			= 0.30;	
	
	static const float WATER_LOSS_FEVER						= 0.2;
	
	//--------------------------------------------------------
	static const float LOW_ENERGY_DAMAGE_PER_SEC			= 0.05;	//health loss per second while low on energy
	static const float LOW_WATER_DAMAGE_PER_SEC				= 0.05;	//health loss per second while low on water
	
	static const float CONSUMPTION_DAMAGE_PER_BITE 			= 2.0;
	static const float CONSUMPTION_DAMAGE_TEMP_THRESHOLD	= 70.0; //Celsius
	
	static const float HEALTH_REGEN_MIN						= 0.005;	//health regen rate at BLOOD_THRESHOLD_FATAL blood level
	static const float HEALTH_REGEN_MAX						= 0.03;		//health regen rate at MAXIMUM blood level
	
	static const float LEG_HEALTH_REGEN						= 1;		//Leg health regen when leg is NOT BROKEN
	static const float LEG_HEALTH_REGEN_BROKEN				= 0.18;		//Leg health regen when BROKEN OR SPLINTED
	
	static const float UNCONSCIOUS_THRESHOLD				= 25.0;		//player goes unconscious when we get under this threshold
	static const float CONSCIOUS_THRESHOLD					= 50.0;		//player regains consciousness when he gets above this threshold
	
	static const float SHOCK_REFILL_CONSCIOUS_SPEED				= 5;		//shock refill speed when the player is conscious
	static const float SHOCK_REFILl_UNCONSCIOUS_SPEED			= 1;		//shock refill speed when the player is unconscious
	static const float SHOCK_REFILL_UNCON_CRITICAL_BLOOD_MLTP	= 0.8;		//shock refill speed multiplier when the player is unconscious and has critical blood level
	
	static const float SHOCK_DAMAGE_BLOOD_THRESHOLD_HIGH	= 3000;		// we start dealing shock damage over time when we get at this value or lower
	static const float SHOCK_DAMAGE_BLOOD_THRESHOLD_LOW		= 2500; 	// the closer we get to this value, the higher the over time shock damage we deal
	
	static const float SHOCK_DAMAGE_HIGH					= 5.5; 		// shock damage per second when the blood is near the upper blood threshold
	static const float SHOCK_DAMAGE_LOW						= 6.25; 	// shock damage per second when the blood is near the lower blood threshold
	
	static const float SHOCK_REFILL_COOLDOWN_AFTER_HIT 		= 1000; 	// duration of cooldown (ms) during which shock regeneration is paused
	
	static const float UNCONSCIOUS_IN_WATER_TIME_LIMIT_TO_DEATH	= 20;	// how long can player survive while unconscious when in water in secs 
	//----------------------------------------------------------
	static const float BLEEDING_SOURCE_BLOODLOSS_PER_SEC 	= -20; 		// amount of blood loss per second from one bleeding source 
	static const float BLEEDING_SOURCE_FLOW_MODIFIER_MEDIUM = 0.6; 		// modifier of the bloodloss given by BLEEDING_SOURCE_BLOODLOSS_PER_SEC, multiplying these two will give the resulting bloodloss
	static const float BLEEDING_SOURCE_FLOW_MODIFIER_LOW	= 0.1; 		// modifier of the bloodloss given by BLEEDING_SOURCE_BLOODLOSS_PER_SEC, multiplying these two will give the resulting bloodloss
	static const float BLEEDING_SOURCE_FLOW_MODIFIER_HIGH	= 1; 		// modifier of the bloodloss given by BLEEDING_SOURCE_BLOODLOSS_PER_SEC, multiplying these two will give the resulting bloodloss
	static const int BLEEDING_SOURCE_DURATION_NORMAL = 300; 			// in seconds, how long will bleeding source exist until disapearing
	static const float BLEEDING_LOW_PRESSURE_BLOOD = 4000.0;			// from which blood level we start lowering BLEEDING_SOURCE_BLOODLOSS_PER_SEC
	static const float BLEEDING_LOW_PRESSURE_MIN_MOD = 0.3;				// minimal value for low pressure bleeding (lowest possible multiplier of BLEEDING_SOURCE_BLOODLOSS_PER_SEC)
	
	static const float BLEEDING_SOURCE_CLOSE_INFECTION_CHANCE = 0.40;	// a chance for wound infection when the wound is self-closing
	static const float BLEEDING_SOURCE_BURN_MODIFIER = 0.65;			// modifies a bloodflow for any bleeding source obtained through skin burn from contaminated area

	 
	//----------------------------------------------------------
	static const float BREATH_VAPOUR_THRESHOLD_HIGH 		= -5.0; 	//missing comment
	static const float BREATH_VAPOUR_THRESHOLD_LOW 			= 7.0; 		//missing comment
	//----------------------------------------------------------
	static const float IMMUNITY_THRESHOLD_LEVEL_HIGH = 0.95;
	static const float IMMUNITY_THRESHOLD_LEVEL_NORMAL = 0.72;
	static const float IMMUNITY_THRESHOLD_LEVEL_LOW = 0.35;
	static const float IMMUNITY_THRESHOLD_LEVEL_CRITICAL = 0.15;
	//----------------------------------------------------------
	static const float VITAMINS_LIFETIME_SECS				= 300;

	static const float CHANCE_TO_BLEED_SLIDING_LADDER_PER_SEC = 0.3; // probability of bleeding source occuring while sliding down ladder without gloves given as percentage per second(0.5 means 50% chance bleeding source will happen every second while sliding down) 
	static const float GLOVES_DAMAGE_SLIDING_LADDER_PER_SEC = -3;// how much damage the gloves receive while sliding down the ladder (per sec)
	
	//----------------------------------------------------------
	//						BADGE THRESHOLDS
	//----------------------------------------------------------
	static const int BT_STOMACH_VOLUME_LVL3 = 1000;
	static const int BT_STOMACH_VOLUME_LVL2 = 750;
	static const int BT_STOMACH_VOLUME_LVL1 = 1;

	//!
	static const int LAST_UA_MSG_LIFETIME = 30;						//! last User Action message lifetime [s] (default: 30s)
	
	//!
	const int	 	VOMIT_THRESHOLD 			= 2000;
	
	static const float 	CORPSE_THRESHOLD_MEDIUM = 0.7; //0.7
	static const float 	CORPSE_THRESHOLD_DECAYED = 0.3; //0.3
	
	static const int 	CORPSE_STATE_FRESH = 0;
	static const int 	CORPSE_STATE_MEDIUM = 1;
	static const int 	CORPSE_STATE_DECAYED = 2;
	//----------------------------------------------------------
	static const float 	CAMERA_THRESHOLD_PITCH = -70.0;
	
	//----------------------------------------------------------
	//						BROKEN LEGS SHOCK
	//----------------------------------------------------------
	static const float 	BROKEN_LEGS_INITIAL_SHOCK = 20;				//Inflicted shock on modifier start
	static const float 	BROKEN_LEGS_LOW_SHOCK_WALK = 4;				//Inflicted shock on modifier update with almost healthy legs 
	static const float 	BROKEN_LEGS_MID_SHOCK_WALK = 6;				//Inflicted shock on modifier update with mid health legs
	static const float 	BROKEN_LEGS_HIGH_SHOCK_WALK = 8;			//Inflicted shock on modifier update with low health legs
	static const float 	BROKEN_LEGS_SHOCK_SWIM = 2;					//Inflicted shock on modifier update when swimming
	static const float 	BROKEN_LEGS_LIGHT_MELEE_SHOCK = 10; 		//Inflicted shock per light weapon swing
	static const float 	BROKEN_LEGS_HEAVY_MELEE_SHOCK = 25; 		//Inflicted shock per heavy weapon swing
	static const float	BROKEN_LEGS_LOW_HEALTH_THRESHOLD = 25;		//Amount of health BELOW which legs have "low health"
	static const float	BROKEN_LEGS_HIGH_HEALTH_THRESHOLD = 75;		//Amount of health OVER which legs have "low health"
	//static const int	BROKEN_LEGS_FALL_STEP_COUNT = 10;			//Number of steps before falling over
	static const float	BROKEN_LEGS_STAND_SHOCK = 0;				//Shock dealt when standing with broken legs
	static const float	BROKEN_LEGS_ROLL_SHOCK = 10;				//Shock dealt when rolling with broken legs
	static const float	BROKEN_CROUCH_MODIFIER = 0.5;				//Inflicted shock modifier for crouched stance
	
	//----------------------------------------------------------
	//						AI SENSOR MULTIPLIER
	//----------------------------------------------------------
	static const float AI_NOISE_ROLL 			= 2;				//Multiplier for the noise generated while prone rolling
	static const float AI_NOISE_SPRINT 			= 1;				//Multiplier for the noise generated while sprinting
	static const float AI_NOISE_RUN 			= 0.8;				//Multiplier for the noise generated while jogging
	static const float AI_NOISE_CROUCH_RUN 		= 0.6;				//Multiplier for the noise generated while Sprint crouch
	static const float AI_NOISE_WALK 			= 0.4;				//Multiplier for the noise generated while walking
	static const float AI_NOISE_IDLE 			= 0;				//Multiplier for the noise generated while staying still
	static const float AI_NOISE_SHOES_BOOTS 	= 0.85;				//Multiplier for the noise generated while wearing boots
	static const float AI_NOISE_SHOES_SNEAKERS	= 0.6;				//Multiplier for the noise generated while wearing sneakers
	static const float AI_NOISE_SHOES_NONE 		= 0.45;				//Multiplier for the noise generated while not wearing shoes
	static const float AI_VISIBILITY_RUN 		= 1;				//Multiplier for the visibility of the player while jogging or sprinting
	static const float AI_VISIBILITY_WALK 		= 0.66;				//Multiplier for the visibility of the player while walking
	static const float AI_VISIBILITY_IDLE 		= 0.3;				//Multiplier for the visibility of the player while staying still
	static const float AI_VISIBILITY_STANDING	= 1.5;				//Multiplier for the visibility of the player while standing
	static const float AI_VISIBILITY_CROUCH		= 0.6;				//Multiplier for the visibility of the player while crouched
	static const float AI_VISIBILITY_PRONE 		= 0.15;				//Multiplier for the visibility of the player while prone
	//----------------------------------------------------------
	//						DROWNING
	//----------------------------------------------------------
	
																	//(positive values mean the distance under water surface, ie 0.1 --> 10cm under water, -0.1 --> 10cm above water)
	static const float 	DROWNING_DEFAULT_THRESHOLD 			= 0.25;	//what water level value does it take for the player to be considered drowning while swimming - values <0.35 observed as the highest during swimming
	static const float 	DROWNING_SWIMMING_THRESHOLD 		= 0.4;	//what water level value does it take for the player to be considered drowning while swimming - values <0.35 observed as the highest during swimming
	static const float	DROWNING_UNCONSCIOUS_THRESHOLD 		= 0.1;	//what water level value does it take for the player to be considered drowning while unconscious -  0.10 seemed a reasonable value based on visual observation and matching it to water depth values(can be adjust more precisely though)
	static const int	DROWNING_BUBBLE_FREQUENCY_MAX		= 4000; //how often should bubbles appear when the stamina is at its highest,(in ms)
	static const int	DROWNING_BUBBLE_FREQUENCY_MIN		= 1000; //how often should bubbles appear when the stamina is at its lowest,(in ms)
	
	static const float	BLOODY_HANDS_FOOD_POISON_AGENT_INCREMENT = 5;
	
	//! DEPRECATED
	static const float	BLOODY_HANDS_SALMONELLA_CHANCE		= 0.05; //! replaced by EntityAI::m_BloodInfectionChanceCached
}
