viewing paste Refine w/ Added Rate & No Reduction | Athena

Posted on the | Last edited on
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
// https://rathena.org/board/topic/107575-r-custom-refiner/
// Using item 7806 or 6232 will increase your odds or make the items not decrease when refined respectively.
prontera,150,192,5  script  God Refiner 4_F_KAFRA9,{
    @menu = 0;
    mes "[Sample]";
    mes "Select you refining options and click refine.";
    next;
    while( @menu != 1 ) {
        rf_opt = rf_opt ^ pow( 2, select (
            "[Refine]",
            ( ( rf_opt & 4 ? "[^0000FFOn^000000] ":"[^FF0000Off^000000] " ) + "Add Chance Refine" ),
            ( ( rf_opt & 8 ? "[^0000FFOn^000000] ":"[^FF0000Off^000000] " ) + "No Reduction Refine" )
        ) );
    }
    
    if( !countitem( 7806 ) ) {
        mes "[Sample]";
        mes "You need at least one " + getitemname( 7806 ) + " for me to refine your items.";
        close;
    }
    
    if( ( rf_opt & 4 ) && !countitem( 6232 ) ) {
        mes "[Sample]";
        mes "You need at least one " + getitemname( 6232 ) + " to use the 'Add Chance Refine' option.";
        close;
    }
    
    if( ( rf_opt & 8 ) && !countitem( 6228 ) ) {
        mes "[Sample]";
        mes "You need at least one " + getitemname( 6228 ) + " to use the 'No Reduction Refine' option.";
        close;
    }
    
    .@i = select( 
        ""+( ( .@ep = getequipid( EQI_HEAD_TOP )   +1 ) > 0 ? "^0000FF"+getitemname(getequipid( EQI_HEAD_TOP ))+"^000000" : "" ),
        ""+( ( .@ep[1] = getequipid( EQI_ARMOR )   +1 ) > 0 ? "^0000FF"+getitemname(getequipid( EQI_ARMOR ))   +"^000000" : "" ),
        ""+( ( .@ep[2] = getequipid( EQI_HAND_L )  +1 ) > 0 ? "^0000FF"+getitemname(getequipid( EQI_HAND_L ))  +"^000000" : "" ),
        ""+( ( .@ep[3] = getequipid( EQI_HAND_R )  +1 ) > 0 ? "^0000FF"+getitemname(getequipid( EQI_HAND_R ))  +"^000000" : "" ),
        ""+( ( .@ep[4] = getequipid( EQI_GARMENT ) +1 ) > 0 ? "^0000FF"+getitemname(getequipid( EQI_GARMENT )) +"^000000" : "" ),
        ""+( ( .@ep[5] = getequipid( EQI_SHOES )   +1 ) > 0 ? "^0000FF"+getitemname(getequipid( EQI_SHOES ))   +"^000000" : "" ),
        ( getarraysize(.@ep) ? "" : "I have nothing equipped!" )
    );
    
    if( getequipid( .@i ) != -1 || !.@ep ) {
        if ( getequipisenableref( .@i ) ) {
            .@refine = getequiprefinerycnt( .@i );
            if ( .@refine >= 10 ) {
                mes "[Sample]";
                mes "That item has already reached max level!";
                close;
            }
            delitem 7806,1;
            if ( ( rf_opt & 4 ) ) { delitem 6232,1; .@pr = .plus_refine; }
            if ( ( rf_opt & 8 ) ) { delitem 6228,1; .@rr++; }
            .@rand = rand(100) + 1;
            .@rand_refine = .refine_rates[.@refine] + .@pr;
            if( .@rand <= .@rand_refine ) {
                successrefitem .@i;
                mes "[Sample]";
                mes "Success!!!";
            } else {
                if( !.@rr ) {
                    downrefitem .@i;
                    mes "[Sample]";
                    mes "I failed and the item lost one refine!";
                } else {
                    mes "[Sample]";
                    mes "I failed but your item is fine!";
                }
            }
        } else {
            mes "[Sample]";
            mes "I'm sorry but I can't refine that item!";
        }
    } else {
        mes "[Sample]";
        mes "You need to equip something first!";
    }
    close;
    
    OnInit:
        .plus_refine = 5;
        setarray .refine_rates,
            100, 100, 100, 100, 100,
            15 , 10 , 5  , 3  , 1  ;
        end;
}
Viewed 1711 times, submitted by Skorm.