// 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; }