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