set @name$,"Loaded Refiner";
callfunc "LoadedRefiner";
end;
}
//============================================================
//= Main Refiner Function
//============================================================
function script LoadedRefiner {
set @features,0;
mes "[" + @name$ + "]";
mes "I am the Loaded Armsmith... I can refine any piece of equipment you choose with 100% success rate!";
next;
mes "[" + @name$ + "]";
mes "You don't believe me?";
mes "Here, Lemme show you.";
next;
mes "[" + @name$ + "]";
mes "Which piece of equipment do you want to refine?";
M_Menu:
next;
menu getequipname(1),PART1,getequipname(2),PART2,getequipname(3),PART3,getequipname(4),PART4,getequipname(5),PART5,
getequipname(6),PART6,getequipname(7),PART7,getequipname(8),PART8,getequipname(9),PART9,getequipname(10),PART10;
//Head Gear
PART1:
set @part,1;
if (getequipisequiped(1)) goto CHECK1;
mes "[" + @name$ + "]";
mes "Do you want me to refine your dumb brain?";
emotion 6;
goto M_Menu;
//Armor
PART2:
set @part,2;
if (getequipisequiped(2)) goto CHECK1;
mes "[" + @name$ + "]";
mes "Do you want me to melt your body with blazing heat...?";
emotion 6;
goto M_Menu;
//Left Hand
PART3:
set @part,3;
if (getequipisequiped(3)) goto CHECK1;
mes "[" + @name$ + "]";
mes "I can't make your left hand into an ultimate weapon...";
emotion 4;
goto M_Menu;
//Right Hand
PART4:
set @part,4;
if (getequipisequiped(4)) goto CHECK1;
mes "[" + @name$ + "]";
mes "I can't make your right hand into an ultimate weapon...";
emotion 4;
goto M_Menu;
//Garment
PART5:
set @part,5;
if (getequipisequiped(5)) goto CHECK1;
mes "[" + @name$ + "]";
mes "Look here... you don't have any Garments on...";
goto M_Menu;
//Foot Gear
PART6:
set @part,6;
if (getequipisequiped(6)) goto CHECK1;
mes "[" + @name$ + "]";
mes "Ack!! Those are some stinky feet. I definitely can't refine those... Yuck!!";
emotion 16;
goto M_Menu;
//Accessory1
PART7:
set @part,7;
if (getequipisequiped(7)) goto CHECK1;
mes "[" + @name$ + "]";
mes "What do you mean by Accessory? Which One?";
emotion 20;
goto M_Menu;
//Accessory2
PART8:
set @part,8;
if (getequipisequiped(8)) goto CHECK1;
mes "[" + @name$ + "]";
mes "What do you mean by Accessory? Which One?";
emotion 20;
goto M_Menu;
PART9:
set @part,9;
if (getequipisequiped(9)) goto CHECK1;
mes "[" + @name$ + "]";
mes "What do you want from me? There's nothing equipped there...";
emotion 20;
goto M_Menu;
PART10:
set @part,10;
if (getequipisequiped(10)) goto CHECK1;
mes "[" + @name$ + "]";
mes "What do you want from me? There's nothing equipped there...";
emotion 20;
goto M_Menu;
//Check if the item is refinable...
CHECK1:
if(getequipisenableref(@part)) goto CHECK2;
mes "[" + @name$ + "]";
mes "I can't work on this item...";
close;
//Check if the item is identified... (Don't know why this is in here... but kept it anyway)
CHECK2:
if(getequipisidentify(@part)) goto CHECK3;
mes "[" + @name$ + "]";
mes "You must appraise this item first.";
close;
//Check to see if the items is already +10
CHECK3:
if(getequiprefinerycnt(@part) < 10) goto REFINE0;
mes "[" + @name$ + "]";
mes "This weapon is already at its maximum level and can no longer be refined.";
close;
//Refine Armor
REFINE0:
set @refineitemid, getequipid(@part); // save id of the item
set @refinerycnt, getequiprefinerycnt(@part); //save refinery count
if(getequipweaponlv(@part) > 0) goto REFINE1;
set @matname$,"Gold Coin";
set @material,671;
set @price,2000000;
set @safe,10;
if(@features == 1) goto L_refinefeatures;
goto L_refinenormal;
//Refine Level 1 Weapon
REFINE1:
if(getequipweaponlv(@part) > 1) goto REFINE2;
set @matname$,"Gold Coin";
set @material,671;
set @price,100000;
set @safe,10;
if(@features == 1) goto L_refinefeatures;
goto L_refinenormal;
//Refine Level 2 Weapon
REFINE2:
if(getequipweaponlv(@part) > 2) goto REFINE3;
set @matname$,"Gold COin";
set @material,671;
set @price,50000;
set @safe,10;
if(@features == 1) goto L_refinefeatures;
goto L_refinenormal;
//Refine Level 3 Weapon
REFINE3:
if(getequipweaponlv(@part) > 3) goto REFINE4;
set @matname$,"Gold Coin";
set @material,671;
set @price,1000000;
set @safe,10;
if(@features == 1) goto L_refinefeatures;
goto L_refinenormal;
//Refine Level 4 Weapon
REFINE4:
set @matname$,"Gold Coin";
set @material,671;
set @price,1000000;
set @safe,10;
if(@features == 1) goto L_refinefeatures;
goto L_refinenormal;
L_refinenormal:
mes "[" + @name$ + "]";
mes "To refine this stuff, I need ^ff9999" + @matname$ + "^000000 and the fee " + @price + " Zeny.";
mes "Continue?";
next;
menu "Yes",-,"No",Lcancel;
if (getequippercentrefinery(@part) == 100) goto L_Sub;
mes "[" + @name$ + "]";
mes "This item has been refined to its normal safe level.";
next;
mes "["+@name$+"]";
mes "But of course, like I've said before, I can easily refine any item with 100% success chance!";
next;
mes "["+@name$+"]";
mes "But, if you don't believe me, you can still back out now...";
next;
menu "I believe you, let's do it!",-,"Wait, stop! I'm sure you can't possibly do it!",Lcancel1;
L_Sub:
if ((countitem(@material) < 1) || (Zeny < @price)) goto Lcancel2;
set Zeny,Zeny-@price;
delitem @material,1;
Lrefine:
if (getequipisequiped(@part) == 0) goto LNoItem; // hacker has removed the item (not changed, why?)
if (getequipid(@part) != @refineitemid) goto LNoFake; // hacker has changed the item
if (getequiprefinerycnt(@part) != @refinerycnt) goto LNoFake; // hacker has changed the item
if (getequippercentrefinery(@part) <= rand(100)) goto Lfail;
mes "[" + @name$ + "]";
mes "Clang! Clang! Clang!";
successrefitem @part;
next;
mes "[" + @name$ + "]";
mes "Ha! Did you see that find job I just did!? Do you believe in me now?";
emotion 21;
close;
Lfail:
mes "[" + @name$ + "]";
mes "Clang! Clang! Clang!";
successrefitem @part;
next;
mes "[" + @name$ + "]";
mes "Ha! Did you see that find job I just did!? Do you believe in me now?";
emotion 21;
close;
LNoItem:
mes "[" + @name$ + "]";
mes "Look here... you don't have any Items on...";
close;
LNoFake:
mes "[" + @name$ + "]";
mes "Clan... No, but Did you imagine I could be so stupid !?!";
mes "You have changed it...";
mes "Go out before I stun you with my Hammer!!!";
close;
Lcancel:
mes "[" + @name$ + "]";
mes "You said so..Hmm so be it...";
close;
Lcancel1:
mes "[" + @name$ + "]";
mes "It's your call.";
mes " ";
mes "Anyway, it's not my lost. It's definitely yours!";
mes " ";
mes "You've just missed half of your life, I'm telling you!";
close;
Lcancel2:
mes "[" + @name$ + "]";
mes "Is that all you got? Unfortunately I can't work for you at a lower price. Try putting yourself in my shoes.";
close;
// New Refining Functions ========================
L_refinefeatures:
if(getequiprefinerycnt(@part) >= @safe) goto Lnosafe;
mes "[" + @name$ + "]";
mes "I can refine this to the safe limit or a desired number of times... it's your choice...";
next;
menu "To the safe limit please.",Lsafe,"I'll decide how many times.",Lnosafe,"I've changed my mind...",Lcancel;
Lsafe:
set @refinecnt,@safe - getequiprefinerycnt(@part);
set @fullprice,@price * @refinecnt;
mes "[" + @name$ + "]";
mes "That will cost you " + @refinecnt + " " + @matname$ + " and " + @fullprice + " Zeny. Is that ok?";
next;
menu "Yes",-,"No...",Lcancel;
if((countitem(@material) < @refinecnt) || (Zeny < @fullprice)) goto Lcancel2;
set Zeny,Zeny - @fullprice;
delitem @material,@refinecnt;
goto L_refinesafe;
Lnosafe:
mes "[" + @name$ + "]";
mes "So how many times would you like me to refine your item?";
next;
input @refinecnt;
if (@refinecnt<1) goto Lcancel3; //fixed by Lupus
set @refinecheck,@refinecnt + getequiprefinerycnt(@part);
if(@refinecheck > 10) goto Lcancel3;
set @fullprice,@price * @refinecnt;
mes "[" + @name$ + "]";
mes "This will cost you " + @refinecnt + " " + @matname$ + " and " + @fullprice + " Zeny... Is that ok?";
next;
menu "Yes...",-,"No...",Lcancel;
if(@refinecheck > @safe) goto Lwarn;
if((countitem(@material) < @refinecnt) || (Zeny < @fullprice)) goto Lcancel2;
set Zeny,Zeny - @fullprice;
delitem @material,@refinecnt;
goto L_refinenumber;
end;
Lwarn:
set @refinecheck,@refinecheck - @safe;
mes "[" + @name$ + "]";
mes "This will try to refine the equipment " + @refinecheck + " times past the safe limit. Your equipment may be destroyed... is that ok?";
next;
menu "Yes",-,"No...",Lcancel1;
if((countitem(@material) < @refinecnt) || (Zeny < @fullprice)) goto Lcancel2;
set Zeny,Zeny - @fullprice;
delitem @material,@refinecnt;
goto L_refinenumber;
Lcancel3:
mes "[" + @name$ + "]";
mes "I can't refine this item that many times.";
close;
// SubFunction: Safe Refine ---------------------
L_refinesafe:
if (getequipisequiped(@part) == 0) goto LNoItem; // hacker has removed the item (no changed, why?)
if (getequipid(@part) != @refineitemid) goto LNoFake; // hacker has changed the item
if (getequippercentrefinery(@part) < 100) goto LNoFake; // hacker has changed the item (it is not safe anymore)
mes "Clang, clang!!!";
successrefitem @part;
emotion 21;
set @refinecnt,@refinecnt - 1;
next;
if(@refinecnt == 0) goto Lend;
goto L_refinesafe;
Lend:
mes "[" + @name$ + "]";
mes "All finished... Come again soon.";
close;
// SubFunction: Refine
L_refinenumber:
if (getequipisequiped(@part) == 0) goto LNoItem; // hacker has removed the item (no changed, why?)
if (getequipid(@part) != @refineitemid) goto LNoFake; // hacker has changed the item
mes "Clang, clang!!!";
if (getequippercentrefinery(@part)<=rand(100)) goto Lfail_number;
successrefitem @part;
emotion 21;
set @refinecnt,@refinecnt - 1;
next;
if(@refinecnt == 0) goto Lend;
goto L_refinenumber;
Lfail_number:
failedrefitem @part;
emotion 23;
mes "[" + @name$ + "]";
mes "WAHHHH!!! I'm so sorry... I warned you this could happen...";
set @refinecnt,@refinecnt - 1;
if(@refinecnt == 0) goto Lend2;
mes "Here's the unused Zeny and Material back...";
getitem @material,@refinecnt;
set @fullprice,@refinecnt * @price;
set Zeny,Zeny + @fullprice;
Lend2:
close;
}