summaryrefslogblamecommitdiff
path: root/npc/items/legacy_heal.txt
blob: 2f34840808ef96225f57307e1b7807c793e8b5de (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                                                                          




                                           
 
                       


                                                                                   
 



                                                                       
                                              
                                                                 


                                                     

                                                                
 
                                           


                                                         

                                     

                                                               
                                                          
                  
                                                      
                                            


                                                          

     

                                  
                                         
 
                                                
             

           
               











                                                                                   

        
// 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;
}