summaryrefslogtreecommitdiff
path: root/npc/items/rand_sc_heal.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/items/rand_sc_heal.txt')
-rw-r--r--npc/items/rand_sc_heal.txt85
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 00000000..e4b0875a
--- /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;
+}