summaryrefslogtreecommitdiff
path: root/npc/items/rand_sc_heal.txt
diff options
context:
space:
mode:
authorSaulc <lucashelaine14@gmail.com>2018-01-13 20:50:42 +0100
committerSaulc <lucashelaine14@gmail.com>2018-01-13 20:50:42 +0100
commit20df2abc1aca00d6aa5dc78347133890f36b32f3 (patch)
tree4ad4a8bb8b0605473a702e314799a4626347721a /npc/items/rand_sc_heal.txt
downloadserverdata-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.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 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;
+}