diff options
author | Saulc <lucashelaine14@gmail.com> | 2018-01-13 20:50:42 +0100 |
---|---|---|
committer | Saulc <lucashelaine14@gmail.com> | 2018-01-13 20:50:42 +0100 |
commit | 20df2abc1aca00d6aa5dc78347133890f36b32f3 (patch) | |
tree | 4ad4a8bb8b0605473a702e314799a4626347721a /npc/items/rand_sc_heal.txt | |
download | serverdata-20df2abc1aca00d6aa5dc78347133890f36b32f3.tar.gz serverdata-20df2abc1aca00d6aa5dc78347133890f36b32f3.tar.bz2 serverdata-20df2abc1aca00d6aa5dc78347133890f36b32f3.tar.xz serverdata-20df2abc1aca00d6aa5dc78347133890f36b32f3.zip |
Initial commit
Diffstat (limited to 'npc/items/rand_sc_heal.txt')
-rw-r--r-- | npc/items/rand_sc_heal.txt | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/npc/items/rand_sc_heal.txt b/npc/items/rand_sc_heal.txt new file mode 100644 index 000000000..e4b0875a8 --- /dev/null +++ b/npc/items/rand_sc_heal.txt @@ -0,0 +1,85 @@ +// Evol scripts. +// Author: +// 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; +} |