blob: 8fe893e6b4f5bc11a8601f34f5ba5bd116cc386a (
plain) (
tree)
|
|
// Evol scripts.
// Authors:
// Reid
// Description:
// Random heal every x seconds.
//
// Variables:
// @delay Second of healing
// @min Min amount of healing
// @max Max amount of healing
// @type 1 Heal
// 2 Other
// 3 Special 1
// 4 Special 2
- script rand_sc_heal -1,{
// Add remaning bonus if the last one hasn't finished
function remaining_bonus
{
if (getstatus (getarg (0)))
{
.@old_val1 = getstatus (getarg (0), 1);
.@old_delay = getstatus (getarg (0), 4) * 1000;
// change the delay to prevent fast healing
if (.@old_delay > @delay)
{
@delay = .@old_delay;
@val1 += .@old_val1;
}
else
{
@val1 += (.@old_val1 * .@old_delay) / @delay;
}
}
else
{
@val1 = @val3;
}
return;
}
OnUse:
if (@delay <= 0) close;
// minimum between @min and bVit / 2 * BaseLevel / 10
.@vitality_bonus = min (@min, readparam (bVit) * BaseLevel / 20);
.@rand_heal_val = rand (@min, @max);
// val1 is the heal value without the vitality bonus
@val1 = .@rand_heal_val / @delay;
@val3 = (.@rand_heal_val + .@vitality_bonus) / @delay;
if (@val1 <= 0) close;
@delay *= 1000; // Put the delay in ms
switch (@type)
{
case 1:
.@skill = SC_S_LIFEPOTION;
break;
case 2:
.@skill = SC_L_LIFEPOTION;
break;
case 3:
.@skill = SC_G_LIFEPOTION;
break;
case 4:
.@skill = SC_M_LIFEPOTION;
break;
default :
.@skill = 0;
break;
}
if (.@skill != 0)
{
remaining_bonus (.@skill);
sc_end .@skill;
sc_start2 .@skill, @delay, @val1, 1;
}
close;
}
|