//===== eAthena Script ======================================= //= Refining NPCs //===== By: ================================================== //= Syrus22 (1.1) dafide18 (1.4) Skotlex (1.5) //===== Current Version: ===================================== //= 2.3 //===== Compatible With: ===================================== //= Any Athena Version //===== Description: ========================================= //= Refining NPCs and Metal Salesmen. //===== Additional Comments: ================================= //= 1.0 - by A bunch of people! //= Syrus22 - Completely redid the script using functions... also //= added the option for auto safe refining and multiple refining. //= 1.1 - Negative input bug fixed [Lupus] //= 1.2 - Added additional reparimen in morroc and payon. Added //= Christopher the blacksmith in Geffen. Edited some dialogue [kobra_k88] //= 1.3 - New Payon Locations [Darkchild] //= Corrected zeny subtraction thx to jpnmania77.[kobra_k88] //= 1.3a - Temporary corrected an exploit. Need to check sources //= to fully fix bug [Shinigami] //= Fixed repairman prices [shadowlady] //= Fixed bug that skips requirements thanks to sir_loon [massdriller] //= Fixed itemid error thanks to -Vitamin- [massdriller] //= 1.4 - check again item in refining procedure to avoid //= hacker that can change item [dafide18] //= 1.5 - Fixed crashing due to badly used callfunc's [Skotlex] // Lupus, don't rollback this important fix again! >.< //= 1.5a - Corrected an unneeded callfunc, fixed the anti-bot //= exploit ruining the safe refine loop. [Skotlex] //= 1.5b - Fixed Spelling mistakes. [Nexon] //= 1.6 - Replaced all breaks for ends as per the new script engine [Skotlex] //= 1.7 - Added Einbroch Refiners (Custom names ^^;) and a duplicated BS Shop. [Poki#3] //= 1.8 - Added Lighthalzen Refiners (Custom names again ^^;) [Poki#3] //= 1.8a - Fixed wrong indication thanks to NeoSaro [Lupus] //= 1.9 - Rewrote repairman, removed the Steel from repair cost [DracoRPG] //= 2.0 - Fixed missed equppment presence check. Thx2 Coltaro [Lupus] //= 2.0a - Added weight checks thanks to Neouni [Playtester] //= 2.0b - Fixed the names of Lighthalzen and Einbroch refiners thanks to Maud_Dib [Kargha] //= 2.1 - Removed Duplicates [Silent] //= 2.2 - Changed name from "Emvertacon" to "Emveretarcon". [Samuray22] // - Thanks to Barron-Monster. //= 2.2b - Changed name from "Pharacon" to "Phracon". [Samuray22] // - Thanks to Barron-Monster. //= 2.3 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf] //============================================================ //========================================================= // Christopher: Geffen Blacksmith //========================================================= geffen_in,110,172,2 script Christopher#1::Chrisbs 63,{ mes "[Christopher Guillenrow]"; mes "Welcome to Christopher's Workshop. Ye can find all yer forging equipment here. So what can I help ye with?"; M_Menu: next; menu "Purchase Anvil",M_0, "Purchase Forging Item",M_1, "Purchase Metal",M_2, "Purify Rough Ores",M_3, "Cancel",M_End; M_0: mes "[Christopher Guillenrow]"; mes "Higher quality Anvils gives ye a better chance ta make better weapons, ye know. But they cost more than yer typical ones."; next; menu "Anvil - 30000z.",sM_Anvil, "Oridecon Anvil - 120000z.",sM_OriAnvil, "Golden Anvil - 300000z.",sM_GolAnvil, "Better Anvil than others",sM_BetAnvil, "Cancel",M_Menu; sM_Anvil: if(Zeny < 30000) goto L_NoZeny; if(checkweight(986,1) == 0 ) goto L_OverWeight; set Zeny, Zeny - 30000; getitem 986,1; mes "[Christopher Guillenrow]"; mes "This is the cheapest one but it's very efficient."; next; goto L_Thanks; sM_OriAnvil: if(Zeny < 120000) goto L_NoZeny; if(checkweight(987,1) == 0 ) goto L_OverWeight; set Zeny, Zeny - 120000; getitem 987,1; mes "[Christopher Guillenrow]"; mes "Ah! Ye have a good eye for anvils. This here is the proper anvil for a Blacksmith."; next; goto L_Thanks; sM_GolAnvil: if(Zeny < 300000) goto L_NoZeny; if(checkweight(988,1) == 0 ) goto L_OverWeight; set Zeny, Zeny - 300000; mes "[Christopher Guillenrow]"; mes "This is the best anvil in my workshop! With this ye'll be the best Blasksmith in no time."; getitem 988,1; next; goto L_Thanks; sM_BetAnvil: mes "[Christopher Guillenrow]"; mes "I'm sorry but I don't have anything better than a Golden Anvil."; mes "Maybe 'Ringgel' the legendary Anvil maker would have one... but he be a hard fellow ta find."; close; M_1: mes "[Christopher Guillenrow]"; mes "A respectable Blacksmith uses fine tools. Ye will come ta know my tools as being the finest around!"; mes "Choose anything you want."; sM_Menu1: next; menu "Mini-Furnace - 150z.",sM_Furn, "Iron Hammer - 1000z.",sM_IrHam, "Golden Hammer - 3000z.",sM_GldHam, "Oridecon Hammer - 5000z.",sM_OriHam, "Cancel",M_Menu; sM_Furn: mes "[Christopher Guillenrow]"; mes "This is a prerequisite for Metal refining!!"; mes "So, how many do ye wish to buy? If you want to quit, please input the number '0'. However, you the maximum amount you can buy is 1000"; set @input, 0; input @input; next; if(@input < 1 ) goto sM_Menu1; if(@input > 1000 ) goto sM_Max; if(Zeny < 150 * @input) goto L_NoZeny; if(checkweight(612,@input) == 0 ) goto L_OverWeight; set Zeny, Zeny - (150 * @input); getitem 612, @input; goto L_Thanks; sM_IrHam: if(Zeny < 1000) goto L_NoZeny; if(checkweight(613,1) == 0 ) goto L_OverWeight; set Zeny, Zeny - 1000; getitem 613,1; goto L_Thanks; sM_GldHam: if(Zeny < 3000) goto L_NoZeny; if(checkweight(614,1) == 0 ) goto L_OverWeight; set Zeny, Zeny - 3000; getitem 614,1; goto L_Thanks; sM_OriHam: if(Zeny < 5000) goto L_NoZeny; if(checkweight(615,1) == 0 ) goto L_OverWeight; set Zeny, Zeny - 5000; getitem 615,1; goto L_Thanks; sM_Max: mes "[Christopher Guillenrow]"; mes "Sorry, you can't buy more than 1000 furnace at a time."; close; M_2: mes "[Christopher Guillenrow]"; mes "I have 2 kinds of metals for sale. Which do ye like?"; set @chris, 1; set @name$, "Christopher Guillenrow"; callfunc "phramain"; M_3: mes "[Christopher Guillenrow]"; mes "I can purify yer rough Oridecon and rough Elunium ores. I'll need 5 rough ores to make 1 pure one."; mes "Well... which one do ye want ta make?"; set @chris, 1; set @name$, "Christopher Guillenrow"; callfunc "orimain"; M_End: close; L_NoZeny: mes "[Christopher Guillenrow]"; mes "I don't think I can let ye have this at a lower price. I can't afford ta loose profits because of ye."; emotion 4; close; L_OverWeight: mes "[Christopher Guillenrow]"; mes "You don't seem to have enough strength to carry this."; close; L_Thanks: mes "[Christopher Guillenrow]"; mes "Thank you for shopping at my workshop. Feel free to come anytime whenever you need."; emotion 15; close; } ein_in01,38,29,6 duplicate(Chrisbs) Christopher#2 63 //===================================================================================== // Weapon/Armor Refiners //===================================================================================== prt_in,63,60,4 script Hollengrhen 85,{ set @name$,"Hollengrhen"; callfunc "refinemain"; end; } morocc_in,73,38,4 script Aragham 99,{ set @name$,"Aragham"; callfunc "refinemain"; end; } payon,144,173,4 script Antonio 88,{ set @name$,"Antonio"; callfunc "refinemain"; end; } alberta_in,28,58,4 script Fredrik 85,{ set @name$,"Fredrik"; callfunc "refinemain"; end; } yuno_in01,164,26,6 script Disturb 88,{ set @name$,"Disturb"; callfunc "refinemain"; end; } ein_in01,24,87,6 script Manthasman 826,{ set @name$,"Manthasman Pruhag"; callfunc "refinemain"; end; } lhz_in02,282,20,7 script Fulerr 869,{ set @name$,"Fulerr"; callfunc "refinemain"; end; } //============================================================ //= Main Refiner Function //============================================================ //= To allow auto safe refining/multiple refining set the //= @features variable to 1 //============================================================ function script refinemain { set @features,0; mes "[" + @name$ + "]"; mes "I am the Armsmith... I can refine any weapon or piece of armor you choose!"; 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... uck!!"; 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$,"Elunium"; set @material,985; set @price,2000; set @safe,4; if(@features == 1) goto L_refinefeatures; goto L_refinenormal; //Refine Level 1 Weapon REFINE1: if(getequipweaponlv(@part) > 1) goto REFINE2; set @matname$,"Phracon"; set @material,1010; set @price,50; set @safe,7; if(@features == 1) goto L_refinefeatures; goto L_refinenormal; //Refine Level 2 Weapon REFINE2: if(getequipweaponlv(@part) > 2) goto REFINE3; set @matname$,"Emveretarcon"; set @material,1011; set @price,200; set @safe,6; if(@features == 1) goto L_refinefeatures; goto L_refinenormal; //Refine Level 3 Weapon REFINE3: if(getequipweaponlv(@part) > 3) goto REFINE4; set @matname$,"Oridecon"; set @material,984; set @price,5000; set @safe,5; if(@features == 1) goto L_refinefeatures; goto L_refinenormal; //Refine Level 4 Weapon REFINE4: set @matname$,"Oridecon"; set @material,984; set @price,20000; set @safe,4; 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 "Hmm... Hold on! This piece of equipment has already been refined to its maximum safety level."; mes "I must warn you if it is refined ANYMORE, It could be DESTROYED and become USELESS!!"; next; mes "["+@name$+"]"; mes "Do you still wish you refine it? If so I will not be able to guarantee my work..."; next; menu "Yes",-,"No",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 "HAHA! It seems my skills haven't gotten rusty yet! Splendid... just splendid..."; emotion 21; close; Lfail: mes "[" + @name$ + "]"; mes "Clang! Clang! Clang!"; failedrefitem @part; next; mes "["+@name$+"]"; mes "Aaahhh!! Oh no...!!"; emotion 16; next; mes "["+@name$+"]"; mes "Eh..Ehem... I'm sorry but the refining process ^ff0000failed^000000."; next; mes "["+@name$+"]"; mes "I am deeply ashamed of what I've done... but I DID warn you earlier about the risks."; 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 "Good Choice."; mes "Ah... good choice. I'd feel awful if I'd destroyed another persons piece of equipment with my own hands."; 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; } //============================================================================== // Material Salesmen //============================================================================== prt_in,56,69,4 script Vurewell 86,{ set @name$,"Vurewell"; callfunc "phramain"; end; } payon,145,178,4 script Begnahd 88,{ set @name$,"Begnahd"; callfunc "phramain"; end; } morocc_in,65,37,4 script Sade 99,{ set @name$,"Sade"; callfunc "phramain"; end; } alberta_in,18,59,5 script Kahlamanlith 86,{ set @name$,"Kahlamanlith"; callfunc "phramain"; end; } yuno_in01,171,26,6 script Dillemat 88,{ set @name$,"Dillemat"; callfunc "phramain"; end; } ein_in01,15,87,7 script Tirehaus 86,{ set @name$,"Tirehaus"; callfunc "phramain"; end; } lhz_in02,278,24,3 script Krugg 86,{ set @name$,"Krugg"; callfunc "phramain"; end; } //============================================================ //= Material Salesmen Functions //============================================================ function script phramain { if(@chris == 1) goto M_Menu; mes "[" + @name$ + "]"; mes "Hello, Im selling metals I just mined."; mes "They are Phracon and Emveretarcon."; mes "Would you like to buy some?"; M_Menu: set @chris, 0; next; menu"Phracon - 200z",PHARA,"Emveretarcon - 1000z",EMVER; PHARA: set @itemid,1010; set @value,200; goto CONTINUE; EMVER: set @itemid,1011; set @value,1000; CONTINUE: mes "[" + @name$ + "]"; mes "How many would you like?"; next; input @ammount; if (@ammount <= 0) goto L_BELOW; if (@ammount > 999) goto L_ABOVE; if (zeny < @value * @ammount) goto L_NOZENY; if (checkweight(@itemid,@ammount) == 0) goto L_WEIGHT; set Zeny,Zeny-@value*@ammount; getitem @itemid,@ammount; mes "[" + @name$ + "]"; mes "Here you go."; close; L_NOZENY: mes "You do not have enough zeny!"; close; L_WEIGHT: mes "You can't hold that many of that item!"; close; L_BELOW: mes "You have to buy a POSITIVE amount of items!"; close; L_ABOVE: mes "You can't buy this much of this item!"; close; } //============================================================================== // Ori/Elu Refiners //============================================================================== prt_in,63,69,4 script Dietrich 84,{ set @name$,"Dietrich"; callfunc "orimain"; end; } payon,137,178,4 script Hakhim 88,{ set @name$,"Hakhim"; callfunc "orimain"; end; } morocc_in,72,32,4 script Abdul 99,{ set @name$,"Abdul"; callfunc "orimain"; end; } alberta_in,21,63,5 script Xenophon 84,{ set @name$,"Xenophon"; callfunc "orimain"; end; } yuno_in01,171,22,6 script Delayt 88,{ set @name$,"Delayt"; callfunc "orimain"; end; } ein_in01,18,82,6 script Matestein 84,{ set @name$,"Matestein"; callfunc "orimain"; end; } lhz_in02,281,24,5 script Fruel 84,{ set @name$,"Fruel"; callfunc "orimain"; end; } //============================================================ //= Ori/Elu Functions //============================================================ function script orimain { if(@chris == 1) goto M_Menu; mes "[" + @name$ + "]"; mes "If you bring Rough Oridecons and"; mes "Rough Eluniums to me,"; mes "I can refine them for you."; mes "However, you must bring 5 of each."; M_Menu: set @chris, 0; next; menu "Make Oridecon",M_Ori, "Make Elunium",M_Elu, "Ask about enchanted stones",M_Stones; M_Ori: if(countitem(756) < 5) goto L_NoOri; delitem 756,5; getitem 984,1; mes "[" + @name$ + "]"; mes "As promised, here's your oridecon."; mes "Come back again anytime."; close; L_NoOri: mes "[" + @name$ + "]"; mes "Huh? You're kidding, right? Didn't I say I can't make you an Oridecon unless you bring me 5 rough ones?"; close; M_Elu: if(countitem(757) < 5) goto L_NoElu; delitem 757,5; getitem 985,1; mes "[" + @name$ + "]"; mes "As promised, here's your elunium."; mes "Come back again anytime."; close; L_NoElu: mes "[" + @name$ + "]"; mes "Huh? You're kidding, right? Didn't I say I can't make you an Elunium unless you bring me 5 rough ones?"; close; M_Stones: mes "[" + @name$ + "]"; mes "Enchanted stones, huh..."; next; mes "[" + @name$ + "]"; mes "Well, in the 20 years that I've been a stone smith I've heard of them many times... though I've never actually seen them before."; next; mes "[" + @name$ + "]"; mes "I've been told that enchanted stones possess different elemental properties such as ^5533FFWater, Earth, Fire, and Wind^000000."; next; mes "[" + @name$ + "]"; mes "If someone combines an Enchanted Stone with a weapon during the refining process, that weapon will possess the same property as the stone."; next; mes "[" + @name$ + "]"; mes "Of course, that person needs to be skillful enough to work on it."; goto M_Menu; } //===================================================================================== // Equipment Repairmen //===================================================================================== prt_in,62,54,2 script Grendal 84,{ set @name$,"Grendal"; callfunc "repairmain"; end; } //Temp Spot, Not Sure Where To place payon,149,182,2 script Repairman#01 88,{ set @name$,"Repairman"; callfunc "repairmain"; end; } morocc_in,71,40,2 script Repairman#02 99,{ set @name$,"Repairman"; callfunc "repairmain"; end; } lhz_in02,284,14,3 script Repairman#03 86,{ set @name$,"Repairman"; callfunc "repairmain"; end; } //============================================================ //= Equipment Repair Function //============================================================ function script repairmain { set @repairprice,5000; mes "[" + @name$ + "]"; mes "I am the Repair Smith and I can repair any Arms you want."; mes "Tell me which Equipment you want to repair."; next; if(getbrokenid(1)==NULL) { mes "[" + @name$ + "]"; mes "Looks like you don't need anything repaired today..."; close; } set @choice,select(getitemname(getbrokenid(1)),getitemname(getbrokenid(2)), getitemname(getbrokenid(3)),getitemname(getbrokenid(4)),getitemname(getbrokenid(5)), getitemname(getbrokenid(6)),getitemname(getbrokenid(7)),getitemname(getbrokenid(8)), getitemname(getbrokenid(9)),getitemname(getbrokenid(10))); mes "[" + @name$ + "]"; mes "You're gonna repair " + getitemname(getbrokenid(@choice)) + "."; mes "To repair this, I need " + @repairprice + " Zeny."; mes "Continue?"; next; if(select("Yes","No") == 2) { mes "[" + @name$ + "]"; mes "Ok, but don't expect to be using that..."; close; } if (Zeny < @repairprice) { mes "[" + @name$ + "]"; mes "Is it all you got?"; mes "Unfortunately, I have kids to feed..."; close; } set Zeny,Zeny-@repairprice; repair(@choice); close; }