From 5b8e0ceed2077d20c27d8e50f2be0ca56a2a61c8 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Tue, 17 May 2022 23:17:19 -0300 Subject: Reestructure legacy_heal --- db/re/item_db.conf | 70 ++++++++++------------------------------------- npc/items/legacy_heal.txt | 36 +++++++++++++++++------- 2 files changed, 40 insertions(+), 66 deletions(-) diff --git a/db/re/item_db.conf b/db/re/item_db.conf index aa1477c01..d82244ee3 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -411,10 +411,7 @@ item_db: ( UseEffect: "EFFECT_HEAL" Script: <" callfunc("SC_Bonus", 15, SC_ATTHASTE_POTION1, 5); - @min = 30; - @max = 60; - @delay = 3; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 3, 30, 60); "> }, { @@ -429,10 +426,7 @@ item_db: ( Delay: 500 UseEffect: "EFFECT_HEAL" Script: <" - @min = 30; - @max = 50; - @delay = 4; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 4, 30, 50); "> }, { @@ -1177,10 +1171,7 @@ item_db: ( Delay: 500 UseEffect: "EFFECT_HEAL" Script: <" - @min = 75; - @max = 120; - @delay = 3; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 3, 75, 120); "> }, { @@ -1195,10 +1186,7 @@ item_db: ( Delay: 500 UseEffect: "EFFECT_HEAL" Script: <" - @min = 200; - @max = 400; - @delay = 2; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 2, 200, 400); "> }, { @@ -1288,10 +1276,7 @@ item_db: ( Delay: 500 UseEffect: "EFFECT_HEAL" Script: <" - @min = 4; - @max = 4; - @delay = 3; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 3, 4); "> }, { @@ -1498,10 +1483,7 @@ item_db: ( Delay: 500 UseEffect: "EFFECT_HEAL" Script: <" - @min = 8; - @max = 14; - @delay = 1; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 1, 8, 14); "> }, { @@ -1713,10 +1695,7 @@ item_db: ( Delay: 450 UseEffect: "EFFECT_HEAL" Script: <" - @min = 180; - @max = 800; - @delay = 3; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 3, 180, 800); if (rand(1,7) != 4) getitem EmptyBottle, 1; "> @@ -1797,10 +1776,7 @@ item_db: ( // SC_STRUP is caught by client, but raises STR in a weird way. // SC_INCATKRATE works best of all ^.^ callfunc("SC_Bonus", 15, SC_PLUSATTACKPOWER, 5); - @min = 30; - @max = 60; - @delay = 3; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 3, 30, 60); "> }, { @@ -1815,10 +1791,7 @@ item_db: ( Delay: 500 UseEffect: "EFFECT_HEAL" Script: <" - @min = 45; - @max = 75; - @delay = 6; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 6, 45, 75); "> }, { @@ -1870,10 +1843,7 @@ item_db: ( // Usage: // sc_start(, , {, , {, }}) sc_start SC_POISON, 9000, 0, 3200; - @min = 18; - @max = 40; - @delay = 3; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 3, 18, 40); getitem EmptyBottle, 1; "> }, @@ -2115,10 +2085,7 @@ item_db: ( Delay: 450 UseEffect: "EFFECT_HEAL" Script: <" - @min = 300; - @max = 700; - @delay = 3; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 3, 300, 700); if (rand(1,7) != 4) getitem EmptyBottle, 1; "> @@ -2295,10 +2262,7 @@ item_db: ( Delay: 1000 UseEffect: "EFFECT_HEAL" Script: <" - @min = 70; - @max = 150; - @delay = 2; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 2, 70, 150); "> }, { @@ -2314,10 +2278,7 @@ item_db: ( UseEffect: "EFFECT_HEAL" Script: <" callfunc("SC_Bonus", 17, SC_ATTHASTE_POTION1, 10); - @min = 40; - @max = 70; - @delay = 4; - doevent "legacy_heal::OnUse"; + callfunc("ItHeal", 4, 40, 70); "> }, { @@ -17361,10 +17322,7 @@ item_db: ( UseEffect: "EFFECT_HEAL" Script: <" if (@useType == 1) { - @min = 8; - @max = 30; - @delay = 3; - doevent "legacy_heal::OnUse"; + callfunc "ItHeal", 3, 8, 30; } else { if (!getmapxy(.@map$, .@x, .@y, 0)) { monster(.@map$, .@x, .@y, l("Oak"), 1017, 1); diff --git a/npc/items/legacy_heal.txt b/npc/items/legacy_heal.txt index 106b92b8d..3157563c5 100644 --- a/npc/items/legacy_heal.txt +++ b/npc/items/legacy_heal.txt @@ -14,10 +14,13 @@ // *getequipoption(EQI_HEAD_TOP,1,168); → Heal Bonus (should be first bonus on Chef Hat) -- script legacy_heal -1,{ +// ItHeal(delay, min, {max=min}) +function script ItHeal { + .@delay=getarg(0, @delay); + .@min=getarg(1, @min); + .@max=getarg(2, (@max ? @max : .@min)); -OnUse: - if (@delay <= 0) { + if (.@delay <= 0) { Exception("Invalid legacy healing item, deleting without healing effect."); end; } @@ -28,9 +31,10 @@ OnUse: // minimum between @min and bVit / 2 * BaseLevel / 10 //@min = min(@max, readparam(bVit) * BaseLevel / 20); - @val1 = rand2(@min, @max); + // Vitality no longer applies to these + @val1 = rand2(.@min, .@max); - @delay *= 1000; // Put the delay in ms + .@delay *= 1000; // Put the delay in ms // We now have @val1 (new effect), @delay (new delay) // But do we have .@v and .@d (old effect and delay)? @@ -40,21 +44,33 @@ OnUse: // If there WAS an effect previously, get ponderate average // Note: never use double-precision ponderate averages if (.@v > 0) { - @val1=ponderate_avg(@val1, @delay, .@v, .@d); + @val1=ponderate_avg(@val1, .@delay, .@v, .@d); // Overflow and Underflow protection - if (@delay+.@d < @delay*5 && .@d > 0) - @delay=@delay+.@d; - //@delay=ponderate_avg(@delay, @val1, .@d, .@v); + if (.@delay+.@d < .@delay*5 && .@d > 0) + .@delay=.@delay+.@d; + //.@delay=ponderate_avg(.@delay, @val1, .@d, .@v); } // Apply the effect and finish sc_end .@skill; - sc_start2 .@skill, @delay, @val1, 1; + sc_start2 .@skill, .@delay, @val1, 1; // @val1 must be preserved for cross-reading @delay=0; @min=0; @max=0; // @val1=0; + return; +} + +- script legacy_heal -1,{ + +OnUse: + if (@delay <= 0) { + Exception("Invalid legacy healing item, deleting without healing effect."); + end; + } + + ItHeal(@delay, @min, @max); end; } -- cgit v1.2.3-60-g2f50