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