playerconstants.c 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. class PlayerConstants
  2. {
  3. static const float WEAPON_RAISE_BLEND_DELAY = 0.2;
  4. static const float MELEE2_MOVEMENT_BLEND_DELAY = 0.35;
  5. static const float HEAVY_HIT_THRESHOLD = 0.5; //defines what is considered a 'heavy hit' from the indicator's standpoint
  6. static const float FULL_SPRINT_DELAY_DEFAULT = 0.5; //! [seconds]
  7. static const float FULL_SPRINT_DELAY_FROM_CROUCH = 1.0; //! [seconds]
  8. static const float FULL_SPRINT_DELAY_FROM_PRONE = 2.0; //! [seconds]
  9. //approximate head heights
  10. static const float HEAD_HEIGHT_ERECT = 1.6;
  11. static const float HEAD_HEIGHT_CROUCH = 1.05;
  12. static const float HEAD_HEIGHT_PRONE = 0.66;
  13. //----------------------------------------------------------
  14. // SHOES DAMAGE/FEET BLEEDING
  15. //----------------------------------------------------------
  16. static const float BAREFOOT_MOVEMENT_BLEED_MODIFIER = 0.1;
  17. static const float SHOES_MOVEMENT_DAMAGE_PER_STEP = 0.035;
  18. static const int CHECK_EVERY_N_STEP = 10;//will process every n-th step(for performance reasons)
  19. //----------------------------------------------------------
  20. // STAT LEVELS START
  21. //----------------------------------------------------------
  22. static const float SL_HEALTH_CRITICAL = 15;
  23. static const float SL_HEALTH_LOW = 30;
  24. static const float SL_HEALTH_NORMAL = 50;
  25. static const float SL_HEALTH_HIGH = 80;
  26. static const float SL_TOXICITY_CRITICAL = 20;
  27. static const float SL_TOXICITY_LOW = 40;
  28. static const float SL_TOXICITY_NORMAL = 60;
  29. static const float SL_TOXICITY_HIGH = 80;
  30. static const float SL_BLOOD_CRITICAL = 3000;
  31. static const float SL_BLOOD_LOW = 3500;
  32. static const float SL_BLOOD_NORMAL = 4000;
  33. static const float SL_BLOOD_HIGH = 4500;
  34. static const float SL_ENERGY_CRITICAL = 0;
  35. static const float SL_ENERGY_LOW = 300;
  36. static const float SL_ENERGY_NORMAL = 800;
  37. static const float SL_ENERGY_HIGH = 3500;
  38. static const float SL_ENERGY_MAX = 5000;
  39. static const float SL_WATER_CRITICAL = 0;
  40. static const float SL_WATER_LOW = 300;
  41. static const float SL_WATER_NORMAL = 800;
  42. static const float SL_WATER_HIGH = 3500;
  43. static const float SL_WATER_MAX = 5000;
  44. //----------------------------------------------------------
  45. // STAT LEVELS END
  46. //----------------------------------------------------------
  47. //-------------------------------------------------------
  48. static const float NORMAL_TEMPERATURE_L = 36.0;
  49. static const float NORMAL_TEMPERATURE_H = 36.5;
  50. static const float HIGH_TEMPERATURE_L = 38.5;
  51. static const float HIGH_TEMPERATURE_H = 39.0;
  52. //-------------------------------------------------------
  53. static const float DIGESTION_SPEED = 1.7; //quantity processed in the stomach per second
  54. static const float CONSUMPTION_MULTIPLIER_BASE = 1; //must not be 0 or less
  55. 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])
  56. 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])
  57. static const float STOMACH_SOLID_EMPTIED_PER_SEC = 7; //amount of g/ml emptied from stomach per second
  58. static const float STOMACH_DIGEST_AGENT_RANDOM_MIN = -0.5; //! Percents of agents count <-1.0; 1.0>
  59. static const float STOMACH_DIGEST_AGENT_RANDOM_MAX = 0.5; //! Percents of agents count <-1.0; 1.0>
  60. static const float LOW_WATER_THRESHOLD = SL_WATER_LOW; //threshold from which water affects health
  61. static const float LOW_ENERGY_THRESHOLD = SL_ENERGY_LOW; //threshold from which energy affects health
  62. //--------------------------------------------------------
  63. static const float METABOLIC_SPEED_ENERGY_BASAL = 0.01; //energy loss per second while idle
  64. static const float METABOLIC_SPEED_ENERGY_WALK = 0.1; //energy loss per second
  65. static const float METABOLIC_SPEED_ENERGY_JOG = 0.3; //energy loss per second
  66. static const float METABOLIC_SPEED_ENERGY_SPRINT = 0.6; //energy loss per second
  67. static const float METABOLIC_SPEED_WATER_BASAL = 0.01; //water loss per second while idle
  68. static const float METABOLIC_SPEED_WATER_WALK = 0.1; //water loss per second
  69. static const float METABOLIC_SPEED_WATER_JOG = 0.3; //water loss per second
  70. static const float METABOLIC_SPEED_WATER_SPRINT = 0.6; //water loss per second
  71. //--------------------------------------------------------
  72. static const float THRESHOLD_HEAT_COMFORT_PLUS_WARNING = 0.15; //yellow zone
  73. static const float THRESHOLD_HEAT_COMFORT_PLUS_CRITICAL = 0.45; //red zone
  74. static const float THRESHOLD_HEAT_COMFORT_PLUS_EMPTY = 0.75; //flashing red zone
  75. static const float THRESHOLD_HEAT_COMFORT_MINUS_WARNING = -0.15; //light blue zone
  76. static const float THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL = -0.45; //dark blue zone
  77. static const float THRESHOLD_HEAT_COMFORT_MINUS_EMPTY = -0.75; //flashing dark blue zone
  78. //--------------------------------------------------------
  79. static const int BLOOD_THRESHOLD_FATAL = 2500; //fatal blood level
  80. static const float BLOOD_REGEN_RATE_PER_SEC = 0.3; //base amount of blood regenerated per second
  81. static const float DAMAGE_ZONE_BLOOD_REGEN_MODIFIER = 0.7;
  82. static const float UNCONSCIOUS_BLOOD_REGEN_MLTP = 2; //multiplier for blood regen while character has critical blood and uncon
  83. static const float BLOOD_REGEN_MODIFIER_ENERGY_LOW = 0; //multiplier for blood regen rate
  84. static const float BLOOD_REGEN_MODIFIER_ENERGY_MID = 0.65;
  85. static const float BLOOD_REGEN_MODIFIER_ENERGY_HIGH = 1;
  86. static const float BLOOD_REGEN_MODIFIER_WATER_LOW = 0; //multiplier for blood regen rate (BLOOD_REGEN_MULTIPLIER_WATER_LOW ?)
  87. static const float BLOOD_REGEN_MODIFIER_WATER_MID = 0.65;
  88. static const float BLOOD_REGEN_MODIFIER_WATER_HIGH = 1;
  89. static const float SALINE_BLOOD_REGEN_PER_SEC = 3; //boost for blood regen per second, independent on BLOOD_REGEN_SPEED
  90. static const float SALINE_LIQUID_AMOUNT = 500;
  91. static const float SALINE_WATER_REGEN_PER_SEC = 2.1;
  92. static const float HEMOLYTIC_BLOOD_DRAIN_PER_SEC = 7; //hemolytic reaction blood drain per second
  93. static const float HEMOLYTIC_BLOODLOSS_AMOUNT = 500;
  94. static const float HEMOLYTIC_RISK_SHOCK_THRESHOLD = 75; // amount of blood from transfusion causing player character going into shock
  95. static const float HEMOLYTIC_REACTION_THRESHOLD = 175; // amount of blood from transfusion triggering hemolytic reaction
  96. static const float WATER_LOSS_THRESHOLD_HC_PLUS_LOW = THRESHOLD_HEAT_COMFORT_PLUS_WARNING;
  97. static const float WATER_LOSS_THRESHOLD_HC_PLUS_HIGH = THRESHOLD_HEAT_COMFORT_PLUS_CRITICAL;
  98. static const float ENERGY_LOSS_THRESHOLD_HC_MINUS_LOW = THRESHOLD_HEAT_COMFORT_MINUS_WARNING;
  99. static const float ENERGY_LOSS_THRESHOLD_HC_MINUS_HIGH = THRESHOLD_HEAT_COMFORT_MINUS_CRITICAL;
  100. static const float WATER_LOSS_HC_PLUS_LOW = 0;
  101. static const float WATER_LOSS_HC_PLUS_HIGH = 0.4;
  102. static const float ENERGY_LOSS_HC_MINUS_LOW = 0.2;
  103. static const float ENERGY_LOSS_HC_MINUS_HIGH = 0.45;
  104. static const float HEALTH_LOSS_HC_PLUS_LOW = 0.035;
  105. static const float HEALTH_LOSS_HC_PLUS_HIGH = 0.30;
  106. static const float HEALTH_LOSS_HC_MINUS_LOW = 0.035;
  107. static const float HEALTH_LOSS_HC_MINUS_HIGH = 0.30;
  108. static const float WATER_LOSS_FEVER = 0.2;
  109. //--------------------------------------------------------
  110. static const float LOW_ENERGY_DAMAGE_PER_SEC = 0.05; //health loss per second while low on energy
  111. static const float LOW_WATER_DAMAGE_PER_SEC = 0.05; //health loss per second while low on water
  112. static const float CONSUMPTION_DAMAGE_PER_BITE = 2.0;
  113. static const float CONSUMPTION_DAMAGE_TEMP_THRESHOLD = 70.0; //Celsius
  114. static const float HEALTH_REGEN_MIN = 0.005; //health regen rate at BLOOD_THRESHOLD_FATAL blood level
  115. static const float HEALTH_REGEN_MAX = 0.03; //health regen rate at MAXIMUM blood level
  116. static const float LEG_HEALTH_REGEN = 1; //Leg health regen when leg is NOT BROKEN
  117. static const float LEG_HEALTH_REGEN_BROKEN = 0.18; //Leg health regen when BROKEN OR SPLINTED
  118. static const float UNCONSCIOUS_THRESHOLD = 25.0; //player goes unconscious when we get under this threshold
  119. static const float CONSCIOUS_THRESHOLD = 50.0; //player regains consciousness when he gets above this threshold
  120. static const float SHOCK_REFILL_CONSCIOUS_SPEED = 5; //shock refill speed when the player is conscious
  121. static const float SHOCK_REFILl_UNCONSCIOUS_SPEED = 1; //shock refill speed when the player is unconscious
  122. 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
  123. static const float SHOCK_DAMAGE_BLOOD_THRESHOLD_HIGH = 3000; // we start dealing shock damage over time when we get at this value or lower
  124. 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
  125. static const float SHOCK_DAMAGE_HIGH = 5.5; // shock damage per second when the blood is near the upper blood threshold
  126. static const float SHOCK_DAMAGE_LOW = 6.25; // shock damage per second when the blood is near the lower blood threshold
  127. static const float SHOCK_REFILL_COOLDOWN_AFTER_HIT = 1000; // duration of cooldown (ms) during which shock regeneration is paused
  128. static const float UNCONSCIOUS_IN_WATER_TIME_LIMIT_TO_DEATH = 20; // how long can player survive while unconscious when in water in secs
  129. //----------------------------------------------------------
  130. static const float BLEEDING_SOURCE_BLOODLOSS_PER_SEC = -20; // amount of blood loss per second from one bleeding source
  131. 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
  132. 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
  133. 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
  134. static const int BLEEDING_SOURCE_DURATION_NORMAL = 300; // in seconds, how long will bleeding source exist until disapearing
  135. static const float BLEEDING_LOW_PRESSURE_BLOOD = 4000.0; // from which blood level we start lowering BLEEDING_SOURCE_BLOODLOSS_PER_SEC
  136. 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)
  137. static const float BLEEDING_SOURCE_CLOSE_INFECTION_CHANCE = 0.40; // a chance for wound infection when the wound is self-closing
  138. static const float BLEEDING_SOURCE_BURN_MODIFIER = 0.65; // modifies a bloodflow for any bleeding source obtained through skin burn from contaminated area
  139. //----------------------------------------------------------
  140. static const float BREATH_VAPOUR_THRESHOLD_HIGH = -5.0; //missing comment
  141. static const float BREATH_VAPOUR_THRESHOLD_LOW = 7.0; //missing comment
  142. //----------------------------------------------------------
  143. static const float IMMUNITY_THRESHOLD_LEVEL_HIGH = 0.95;
  144. static const float IMMUNITY_THRESHOLD_LEVEL_NORMAL = 0.72;
  145. static const float IMMUNITY_THRESHOLD_LEVEL_LOW = 0.35;
  146. static const float IMMUNITY_THRESHOLD_LEVEL_CRITICAL = 0.15;
  147. //----------------------------------------------------------
  148. static const float VITAMINS_LIFETIME_SECS = 300;
  149. 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)
  150. static const float GLOVES_DAMAGE_SLIDING_LADDER_PER_SEC = -3;// how much damage the gloves receive while sliding down the ladder (per sec)
  151. //----------------------------------------------------------
  152. // BADGE THRESHOLDS
  153. //----------------------------------------------------------
  154. static const int BT_STOMACH_VOLUME_LVL3 = 1000;
  155. static const int BT_STOMACH_VOLUME_LVL2 = 750;
  156. static const int BT_STOMACH_VOLUME_LVL1 = 1;
  157. //!
  158. static const int LAST_UA_MSG_LIFETIME = 30; //! last User Action message lifetime [s] (default: 30s)
  159. //!
  160. const int VOMIT_THRESHOLD = 2000;
  161. static const float CORPSE_THRESHOLD_MEDIUM = 0.7; //0.7
  162. static const float CORPSE_THRESHOLD_DECAYED = 0.3; //0.3
  163. static const int CORPSE_STATE_FRESH = 0;
  164. static const int CORPSE_STATE_MEDIUM = 1;
  165. static const int CORPSE_STATE_DECAYED = 2;
  166. //----------------------------------------------------------
  167. static const float CAMERA_THRESHOLD_PITCH = -70.0;
  168. //----------------------------------------------------------
  169. // BROKEN LEGS SHOCK
  170. //----------------------------------------------------------
  171. static const float BROKEN_LEGS_INITIAL_SHOCK = 20; //Inflicted shock on modifier start
  172. static const float BROKEN_LEGS_LOW_SHOCK_WALK = 4; //Inflicted shock on modifier update with almost healthy legs
  173. static const float BROKEN_LEGS_MID_SHOCK_WALK = 6; //Inflicted shock on modifier update with mid health legs
  174. static const float BROKEN_LEGS_HIGH_SHOCK_WALK = 8; //Inflicted shock on modifier update with low health legs
  175. static const float BROKEN_LEGS_SHOCK_SWIM = 2; //Inflicted shock on modifier update when swimming
  176. static const float BROKEN_LEGS_LIGHT_MELEE_SHOCK = 10; //Inflicted shock per light weapon swing
  177. static const float BROKEN_LEGS_HEAVY_MELEE_SHOCK = 25; //Inflicted shock per heavy weapon swing
  178. static const float BROKEN_LEGS_LOW_HEALTH_THRESHOLD = 25; //Amount of health BELOW which legs have "low health"
  179. static const float BROKEN_LEGS_HIGH_HEALTH_THRESHOLD = 75; //Amount of health OVER which legs have "low health"
  180. //static const int BROKEN_LEGS_FALL_STEP_COUNT = 10; //Number of steps before falling over
  181. static const float BROKEN_LEGS_STAND_SHOCK = 0; //Shock dealt when standing with broken legs
  182. static const float BROKEN_LEGS_ROLL_SHOCK = 10; //Shock dealt when rolling with broken legs
  183. static const float BROKEN_CROUCH_MODIFIER = 0.5; //Inflicted shock modifier for crouched stance
  184. //----------------------------------------------------------
  185. // AI SENSOR MULTIPLIER
  186. //----------------------------------------------------------
  187. static const float AI_NOISE_ROLL = 2; //Multiplier for the noise generated while prone rolling
  188. static const float AI_NOISE_SPRINT = 1; //Multiplier for the noise generated while sprinting
  189. static const float AI_NOISE_RUN = 0.8; //Multiplier for the noise generated while jogging
  190. static const float AI_NOISE_CROUCH_RUN = 0.6; //Multiplier for the noise generated while Sprint crouch
  191. static const float AI_NOISE_WALK = 0.4; //Multiplier for the noise generated while walking
  192. static const float AI_NOISE_IDLE = 0; //Multiplier for the noise generated while staying still
  193. static const float AI_NOISE_SHOES_BOOTS = 0.85; //Multiplier for the noise generated while wearing boots
  194. static const float AI_NOISE_SHOES_SNEAKERS = 0.6; //Multiplier for the noise generated while wearing sneakers
  195. static const float AI_NOISE_SHOES_NONE = 0.45; //Multiplier for the noise generated while not wearing shoes
  196. static const float AI_VISIBILITY_RUN = 1; //Multiplier for the visibility of the player while jogging or sprinting
  197. static const float AI_VISIBILITY_WALK = 0.66; //Multiplier for the visibility of the player while walking
  198. static const float AI_VISIBILITY_IDLE = 0.3; //Multiplier for the visibility of the player while staying still
  199. static const float AI_VISIBILITY_STANDING = 1.5; //Multiplier for the visibility of the player while standing
  200. static const float AI_VISIBILITY_CROUCH = 0.6; //Multiplier for the visibility of the player while crouched
  201. static const float AI_VISIBILITY_PRONE = 0.15; //Multiplier for the visibility of the player while prone
  202. //----------------------------------------------------------
  203. // DROWNING
  204. //----------------------------------------------------------
  205. //(positive values mean the distance under water surface, ie 0.1 --> 10cm under water, -0.1 --> 10cm above water)
  206. 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
  207. 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
  208. 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)
  209. static const int DROWNING_BUBBLE_FREQUENCY_MAX = 4000; //how often should bubbles appear when the stamina is at its highest,(in ms)
  210. static const int DROWNING_BUBBLE_FREQUENCY_MIN = 1000; //how often should bubbles appear when the stamina is at its lowest,(in ms)
  211. static const float BLOODY_HANDS_FOOD_POISON_AGENT_INCREMENT = 5;
  212. //! DEPRECATED
  213. static const float BLOODY_HANDS_SALMONELLA_CHANCE = 0.05; //! replaced by EntityAI::m_BloodInfectionChanceCached
  214. }