Advertisement
Guest User

Untitled

a guest
Oct 10th, 2015
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.12 KB | None | 0 0
  1. /**
  2. * Exile Mod
  3. * www.exilemod.com
  4. * © 2015 Exile Mod Team
  5. *
  6. * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
  7. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
  8. */
  9.  
  10. private["_timeElapsed","_hungerFactor","_thirstFactor","_bloodAlcohol","_effectAttribute","_effectValue","_effectDuration","_effectStartTime","_effectValueRemaining","_endEffect","_effectToApply","_hunger","_thirst"];
  11. if (isNil "ExileLastStatUpdate") then
  12. {
  13. ExileLastStatUpdate = diag_tickTime;
  14. };
  15. _timeElapsed = diag_tickTime - ExileLastStatUpdate;
  16. ExileClientPlayerLoad = loadAbs player;
  17. ExileClientPlayerOxygen = getOxygenRemaining player * 100;
  18. ExileClientPlayerAttributes set [0, (1 - damage player) * 100];
  19. ExileClientPlayerAttributes set [1, (1 - getFatigue player) * 100];
  20. ExileClientPlayerIsAbleToBreathe = isAbleToBreathe player;
  21. ExileClientPlayerIsInfantry = (vehicle player) isEqualTo player;
  22. ExileClientPlayerVelocity = player call BIS_fnc_absSpeed;
  23. ExileClientPlayerIsBleeding = isBleeding player;
  24. ExileClientPlayerIsBurning = isBurning player;
  25. ExileClientPlayerIsOverburdened = ExileClientPlayerLoad > 900;
  26. ExileClientPlayerIsDrowning = ExileClientPlayerOxygen < 50;
  27. ExileClientPlayerIsInjured = (ExileClientPlayerAttributes select 0) < 50;
  28. ExileClientPlayerIsHungry = (ExileClientPlayerAttributes select 2) < 25;
  29. ExileClientPlayerIsThirsty = (ExileClientPlayerAttributes select 3) < 25;
  30. ExileClientPlayerIsExhausted = (ExileClientPlayerAttributes select 1) < 40;
  31. if (ExileClientIsAutoRunning) then
  32. {
  33. call ExileClient_system_autoRun_update;
  34. };
  35. if( ExileClientPlayerIsInCombat ) then
  36. {
  37. if( diag_tickTime - ExileClientPlayerLastCombatAt >= 30 ) then
  38. {
  39. ExileClientPlayerIsInCombat = false;
  40. false call ExileClient_gui_hud_toggleCombatIcon;
  41. call ExileClient_system_rating_balance;
  42. };
  43. };
  44. _hungerFactor = 1;
  45. _thirstFactor = 1;
  46. if (ExileClientPlayerIsInfantry) then
  47. {
  48. ExileClientPlayerVelocity = ExileClientPlayerVelocity min 24;
  49. if (ExileClientPlayerVelocity > 0) then
  50. {
  51. _hungerFactor = 1 + ExileClientPlayerVelocity / 64 * _timeElapsed;
  52. _thirstFactor = 1 + ExileClientPlayerVelocity / 48 * _timeElapsed;
  53. };
  54. }
  55. else
  56. {
  57. if (ExileClientPlayerIsBambi) then
  58. {
  59. if !((typeOf (vehicle player)) isEqualTo "Steerable_Parachute_F") then
  60. {
  61. call ExileClient_object_player_bambiStateEnd;
  62. };
  63. };
  64. };
  65. ExileClientPlayerAttributes set [2, ((((ExileClientPlayerAttributes select 2) - (100 / 5400 * _hungerFactor * _timeElapsed)) min 100) max 0)];
  66. ExileClientPlayerAttributes set [3, ((((ExileClientPlayerAttributes select 3) - (100 / 3600 * _thirstFactor * _timeElapsed)) min 100) max 0)];
  67. if (ExileClientPlayerIsOverburdened) then
  68. {
  69. ExileClientPlayerAttributes set [1, ((((ExileClientPlayerAttributes select 1) - 5 * _timeElapsed) min 100) max 0)];
  70. };
  71. if ((ExileClientPlayerAttributes select 2) == 0 || (ExileClientPlayerAttributes select 3) == 0 || ExileClientPlayerIsBleeding) then
  72. {
  73. ExileClientPlayerAttributes set [0, ((((ExileClientPlayerAttributes select 0) - 5 * _timeElapsed) min 100) max 0)];
  74. };
  75. _bloodAlcohol = (ExileClientPlayerAttributes select 4);
  76. if (_bloodAlcohol > 0) then
  77. {
  78. ExileClientPlayerAttributes set [1, linearConversion [0, 3, _bloodAlcohol, 100, 0, true]];
  79. };
  80. {
  81. _effectAttribute = _x select 0;
  82. _effectValue = _x select 1;
  83. _effectDuration = _x select 2;
  84. _effectStartTime = _x select 3;
  85. _effectValueRemaining = _x select 4;
  86. _endEffect = time - _effectStartTime >= _effectDuration;
  87. if( _effectValue > 0 ) then
  88. {
  89. if (_effectDuration == 0) then
  90. {
  91. _effectToApply = _effectValue;
  92. }
  93. else
  94. {
  95. _effectToApply = (_effectValue / _effectDuration * _timeElapsed) min _effectValueRemaining;
  96. };
  97. _x set [4, _effectValueRemaining - _effectToApply];
  98. ExileClientPlayerAttributes set [_effectAttribute, ((((ExileClientPlayerAttributes select _effectAttribute) + _effectToApply) min 100) max 0)];
  99. }
  100. else
  101. {
  102. if (_effectDuration == 0) then
  103. {
  104. _effectToApply = abs _effectValue;
  105. }
  106. else
  107. {
  108. _effectToApply = ((abs _effectValue) / _effectDuration * _timeElapsed) max _effectValueRemaining;
  109. };
  110. _x set [4, _effectValueRemaining + _effectToApply];
  111. ExileClientPlayerAttributes set [_effectAttribute, (((ExileClientPlayerAttributes select _effectAttribute) - (abs _effectToApply) min 100) max 0)];
  112. };
  113. if( (ExileClientPlayerAttributes select _effectAttribute) == 0 || (ExileClientPlayerAttributes select _effectAttribute) == 100 ) then
  114. {
  115. _endEffect = true;
  116. };
  117. if( _endEffect ) then
  118. {
  119. ExileClientPlayerEffects deleteAt _forEachIndex;
  120. };
  121. }
  122. foreach ExileClientPlayerEffects;
  123. player setDamage (1 - (ExileClientPlayerAttributes select 0) / 100);
  124. _hunger = ExileClientPlayerAttributes select 2;
  125. _thirst = ExileClientPlayerAttributes select 3;
  126. if (diag_tickTime - ExileClientPlayerLastHpRegenerationAt >= 60) then
  127. {
  128. if (_hunger >=80) then
  129. {
  130. if (_thirst >= 80) then
  131. {
  132. player setDamage (((damage player) - 0.02) max 0);
  133. ExileClientPlayerLastHpRegenerationAt = diag_tickTime;
  134. };
  135. };
  136. };
  137. ExileLastStatUpdate = diag_tickTime;
  138. true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement