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 1087 times, submitted by Skorm.