prontera,150,150,0 script Fulerr 4_M_LGTMAN,{ callfunc "BulkRefine","Fulerr"; end;}function script BulkRefine { mes "[" + getarg(0) + "]"; mes "I'm the Armsmith."; mes "I can refine all kinds of weapons, armor and equipment, so let me"; mes "know what you want me to refine."; next; setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$,""; for(set .@i,1; .@i<=10; set .@i,.@i+1) { if(getequipisequiped(.@i)) { set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; set .@equipped,1; } set .@menu$, .@menu$ + ":"; } if (.@equipped == 0) { mes "[" + getarg(0) + "]"; mes "I don't think I can refine any items you have..."; close; } set .@part, select(.@menu$); if(!getequipisequiped(.@part)) { //custom check mes "[" + getarg(0) + "]"; mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion e_an; close; } //Check if the item is refinable... if(!getequipisenableref(.@part)) { mes "[" + getarg(0) + "]"; mes "I don't think I can"; mes "refine this item at all..."; close; } //Check to see if the items is already +10 if(getequiprefinerycnt(.@part) >= 10) { mes "[" + getarg(0) + "]"; mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } set .@refineitemid, getequipid(.@part); // save id of the item set .@refinerycnt, getequiprefinerycnt(.@part); //save refinery count switch(getequipweaponlv(.@part)){ case 0: //Refine Armor set .@price,2000; set .@material,985; set .@safe,4; break; case 1: //Refine Level 1 Weapon set .@price,50; set .@material,1010; set .@safe,7; break; case 2: //Refine Level 2 Weapon set .@price,200; set .@material,1011; set .@safe,6; break; case 3: //Refine Level 3 Weapon set .@price,5000; set .@material,984; set .@safe,5; break; case 4: //Refine Level 4 Weapon set .@price,20000; set .@material,984; set .@safe,4; break; case 5: //Refine other stuff? set .@price,2000; set .@material,985; set .@safe,4; break; } if(getequiprefinerycnt(.@part) < .@safe) { mes "[" + getarg(0) + "]"; mes "I can refine this to the safe limit or a desired number of times. It's your choice."; next; set .@menu2,select("To the safe limit, please.","I'll decide how many times.","I've changed my mind..."); } else set .@menu2,2; switch(.@menu2){ case 1: set .@refinecnt,.@safe - getequiprefinerycnt(.@part); break; case 2: next; mes "[" + getarg(0) + "]"; mes "So how many times would you like me to refine your item?"; next; input .@refinecnt; set .@refinecheck,.@refinecnt + getequiprefinerycnt(.@part); if (.@refinecnt < 1 || .@refinecheck > 10) { mes "[" + getarg(0) + "]"; mes "I can't refine this item that many times."; close; } set .@refinecnt, getequiprefinerycnt(.@part) + .@refinecnt; mes "Remember this will attempt to refine to ^009933+"+.@refinecnt+"^000000 ^FF0000ALL^000000 the ^0000FF"+getequipname(.@part)+"^000000 items you have in your inventory!!"; next; if(select("Accept","Reject") == 2){ mes "[" + getarg(0) + "]"; mes "Smart kid...."; close; } break; case 3: next; mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } deletearray @inventorylist_refine; deletearray @inventorylist_id; getinventorylist; set .@i, 0; for (set .@j, 0; .@j < @inventorylist_count; set .@j, .@j + 1) { if ( @inventorylist_id[.@j] == getequipid(.@part) ) { set .@temp[.@i], @inventorylist_refine[.@j]; set .@i, .@i + 1; } } deletearray @inventorylist_refine; deletearray @inventorylist_id; .@fullprice = 0; .@j = 0; for ( set .@k, 0; .@k < .@i ; set .@k, .@k + 1) { if ( .@temp[.@k] < .@refinecnt ) { set .@fullprice, .@fullprice + ( ( .@refinecnt - .@temp[.@k] ) * .@price ); set .@j, .@j + (.@refinecnt - .@temp[.@k]); } } deletearray .@temp; mes "[" + getarg(0) + "]"; mes "That will cost you " + .@j + " " + getitemname(.@material) + " and " + .@fullprice + " Zeny. Is that ok?"; next; if(select("Yes","No...") == 2){ mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } if ( getbrokenid (.@refineitemid) ) { mes "[" + getarg(0) + "]"; mes "Sorry but I can't work to refine an equipment if you have another of the same kind of item that's not repaired in your inventory."; close; } if(countitem(.@material) < .@j || Zeny < .@fullprice) { mes "[" + getarg(0) + "]"; mes "Is that all you got? Unfortunately I can't work for you at a lower price. Try putting yourself in my shoes."; close; } while(1){ for (set .@c, 0; .@c < .@re; set .@c, .@c + 1) deletearray getd(".@equip_inf"+.@c); if ( getequipisequiped(.@part) == 0 ) { equip .@refineitemid; set .@re, 0; while ( getequiprefinerycnt(.@part) >= .@refinecnt ) { for (set .@c, 0; .@c < 4; set .@c, .@c + 1) if (getequipcardid(.@part,.@c) != 0) setd ".@equip_inf"+.@re+"[.@c]", getequipcardid(.@part,.@c); setd ".@equip_inf"+.@re+"[4]", getequiprefinerycnt(.@part); unequip .@part; delitem2 .@refineitemid,1,1,getd(".@equip_inf"+.@re+"[4]"),0,getd(".@equip_inf"+.@re+"[0]"), getd(".@equip_inf"+.@re+"[1]"),getd(".@equip_inf"+.@re+"[2]"),getd(".@equip_inf"+.@re+"[3]"); equip .@refineitemid; set .@re, .@re + 1; } if (.@re) { for (set .@c, 0; .@c < .@re; set .@c, .@c + 1) { getitem2 .@refineitemid,1,1,getd(".@equip_inf"+.@c+"[4]"),0,getd(".@equip_inf"+.@c+"[0]"), getd(".@equip_inf"+.@c+"[1]"),getd(".@equip_inf"+.@c+"[2]"),getd(".@equip_inf"+.@c+"[3]"); } } for (set .@c, 0; .@c < .@re; set .@c, .@c + 1) deletearray getd(".@equip_inf"+.@c); } set Zeny, Zeny - .@price; delitem .@material, 1; if(getequippercentrefinery(.@part) <= rand(100)) { set .@breakgap, .@refinecnt - getequiprefinerycnt(.@part) ; set .@j, .@j - .@breakgap ; failedrefitem .@part; if(.@j <= 0) close; } else { successrefitem .@part; set .@j, .@j - 1; if(.@j <= 0) close; set .@re, 0; while ( getequiprefinerycnt(.@part) >= .@refinecnt ) { for (set .@c, 0; .@c < 4; set .@c, .@c + 1) if (getequipcardid(.@part,.@c) != 0) setd ".@equip_inf"+.@re+"[.@c]", getequipcardid(.@part,.@c); setd ".@equip_inf"+.@re+"[4]", getequiprefinerycnt(.@part); unequip .@part; delitem2 .@refineitemid,1,1,getd(".@equip_inf"+.@re+"[4]"),0,getd(".@equip_inf"+.@re+"[0]"), getd(".@equip_inf"+.@re+"[1]"),getd(".@equip_inf"+.@re+"[2]"),getd(".@equip_inf"+.@re+"[3]"); equip .@refineitemid; set .@re, .@re + 1; } if (.@re) { for (set .@c, 0; .@c < .@re; set .@c, .@c + 1) { getitem2 .@refineitemid,1,1,getd(".@equip_inf"+.@c+"[4]"),0,getd(".@equip_inf"+.@c+"[0]"), getd(".@equip_inf"+.@c+"[1]"),getd(".@equip_inf"+.@c+"[2]"),getd(".@equip_inf"+.@c+"[3]"); } } } set .@clang, .@clang + 1; sleep2 300; }}