// TMW-2 Script. // Evol scripts. // Author: // Reid // Jesusalva // Description: // Legacy Healing System // // Variables: // @delay Second of healing // @min Min amount of healing // @max Max amount of healing // // *getequipoption(EQI_HEAD_TOP,1,168); → Heal Bonus (should be first bonus on Chef Hat) // ItHeal(delay, min, {max=min}) function script ItHeal { .@delay=getarg(0, @delay); .@min=getarg(1, @min); .@max=getarg(2, (@max ? @max : .@min)); if (.@delay <= 0) { Exception("Invalid legacy healing item, deleting without healing effect."); end; } // Decide the healing bonus type. We have four types: S, L, G and M // By default, we use 'S' .@skill = SC_S_LIFEPOTION; // Vitality can improve the healing amount .@min = min(.@max, .@min + (.@min * readparam2(bVit) / 100)); .@max = .@max + (.@max * readparam2(bVit) / 240); // Obtain the real healing @val1 = rand2(.@min, .@max) / .@delay; debugmes "Heal %d-%d/%d = %d", .@min, .@max, .@delay, @val1; .@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)? .@v=getstatus(.@skill, 1); .@d=getstatus(.@skill, 4) * 1000; // 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); // Overflow and Underflow protection 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; // @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; }