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