Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
[email protected] webmail now available. Want one? Go here.
Cannot use outlook/hotmail/live here to register as they blocking our mail servers. #microsoftdeez
Obey the Epel!

Paste

Pasted as C by Tortuosit ( 1 year ago )
waituntil {alive player};

if (isNil "tort_debug") then {tort_debug = false};
if (!isNil "hlp_autoheal") then {
   if (!scriptDone hlp_autoheal) then {
      terminate hlp_autoheal;
      waitUntil {scriptDone hlp_autoheal};
   };
};

_scriptname = "hlp_autoheal";
if (tolower(str(_this#0)) find "false" >= 0) exitWith {tort_tasks = tort_tasks - [_scriptname]; systemchat "Autoheal script terminated."};
if (isnil "tort_tasks") then {tort_tasks = [_scriptname]} else {if !(_scriptname in tort_tasks) then {tort_tasks pushback _scriptname}};

hlp_autoheal = _this spawn
{
   sleep random 5;
   _full_heal_seconds = param [0, 700 + random 200];
   _heal_bonus_delay = param [1, 10 + random 10];
   _heal_bonus_multiplier = param [2, 4 + random 2];
   _removeDamage_until = 0.25;
   _addDamage_above_damage = random [0.35,0.4,0.5];
   _moredamage_above_damage = random [0.5,0.55,0.7];
   _addDamage_until = 0.8 + random 0.1;
   _random_factor = 0.1;

    private ["_i", "_player_damage", "_speed", "_speedmult", "_modifier", "_pom"];
   _prone_modifier_min = -0.75;
   _prone_modifier_max = 0.6;
   _prone_maxspd = 5;
   _prone_exponent = 1;
   _crouch_modifier_min = -0.3;
   _crouch_modifier_max = 0.55;
   _crouch_maxspd = 18;
   _crouch_exponent = 1.5;
   _stand_modifier_min = -0.65;
   _stand_modifier_max = 0.7;
   _stand_maxspd = 19;
   _stand_exponent = 2;
   _sitsec = 0;

   if (_random_factor > 0) then {
   _full_heal_seconds = _full_heal_seconds - random (_random_factor * _full_heal_seconds) + random (2 * _random_factor * _full_heal_seconds);
   _heal_bonus_multiplier = _heal_bonus_multiplier - random (_random_factor * _heal_bonus_multiplier) + random (2 * _random_factor * _heal_bonus_multiplier);
   _heal_bonus_delay = _heal_bonus_delay - random (_random_factor * _heal_bonus_delay) + random (2 * _random_factor * _heal_bonus_delay);
   _removeDamage_until = random [0, _removeDamage_until, _addDamage_above_damage];
   _addDamage_above_damage = random [_removeDamage_until, _addDamage_above_damage, _moreDamage_above_damage];
   _moreDamage_above_damage = random [_addDamage_above_damage, _moreDamage_above_damage, _addDamage_until];
   _addDamage_until = random [_moreDamage_above_damage, _addDamage_until, 1];
   };

   while {true} do
   {
   _pom = 0; _modifier = 0;
   for "_i" from 1 to 10  do
   {
         _player_damage = damage player;
         if (vehicle player == player) then
         {
         if (_player_damage >= _moredamage_above_damage) then {
               _speed = abs(speed player) * _stand_maxspd}
         else {
               _speed = abs(speed player)};
         switch (stance player) do
         {
               case "PRONE": {
               _sitsec = 0;
               _speedmult = ((_speed / _prone_maxspd) min 1) ^ (_prone_exponent);
               _pom = _prone_modifier_min + (_prone_modifier_max - _prone_modifier_min) * _speedmult;};
               case "CROUCH": {
               if (((animationstate player) find "amovpsit") == 0) then {
                     _sitsec = _sitsec + 1;
                     if (_sitsec > _heal_bonus_delay) then {
                     _pom = _prone_modifier_min * _heal_bonus_multiplier;
                     } else {
                     _pom = _prone_modifier_min;
                     };
               }
               else
               {
                     _sitsec = 0;
                     _speedmult = ((_speed / _crouch_maxspd) min 1)^(_crouch_exponent);
                     _pom = _crouch_modifier_min + (_crouch_modifier_max - _crouch_modifier_min) * _speedmult;
               };
               };
               case "STAND": {
               _sitsec = 0;
               _speedmult = ((_speed / _stand_maxspd) min 1)^(_stand_exponent);
               _pom = _stand_modifier_min + (_stand_modifier_max - _stand_modifier_min) * _speedmult;};
               case "UNDEFINED": {
               _sitsec = 0;
               _pom = _prone_modifier_min;};
               default {
               _sitsec = 0;
               _speedmult = ((_speed / _stand_maxspd) min 1)^(_stand_exponent);
               _pom = _stand_modifier_min + (_stand_modifier_max - _stand_modifier_min) * _speedmult;};
         };
         } else
         {
         _sitsec = _sitsec + 1; _speed = 0;
         if (_sitsec > _heal_bonus_delay) then {
               _pom = _prone_modifier_min * _heal_bonus_multiplier;
         } else {
               _pom = _prone_modifier_min;
         };
         };
         _modifier = _modifier + _pom;
         sleep 1;
   };
   _modifier = (_modifier / _full_heal_seconds) / abs(_prone_modifier_min);
   _modifier = _modifier - ((random _random_factor) * _modifier) + ((random _random_factor) * 2 * _modifier);
   if (_modifier < 0) then {
         if (_player_damage <= _addDamage_until) then {
            if (_sitsec < _heal_bonus_delay) then {
                  if ((_player_damage + _modifier) >= _removeDamage_until) then {player setDamage ((_player_damage + _modifier) max 0)};
            }
            else {
                  player setDamage ((_player_damage + _modifier) max 0);
            };
         };
   }
   else
   {
         if (_player_damage > _addDamage_above_damage) then {player setDamage ((((_player_damage + _modifier) min _addDamage_until) max _player_damage) min 1)};
   };
   if (tort_debug) then {systemChat format ["SPD:%1 MODIFIER:%2 DAMAGE:%3 SITSEC:%4 %5", _speed, _modifier, (damage player), _sitsec, animationstate player]};
   if ((_player_damage > 0) && ((damage player) == 0)) then {player say "TacticalPing2"; systemChat (["Oooooh yeah!", "So good...", "I am feeling so good now!", "I feel I am fully healed.", "I feel like superman."] select (floor (random 5)))};
   };
};

 

Revise this Paste

Your Name: Code Language: