From 288490094a7fe9167747dc78d416940759a31197 Mon Sep 17 00:00:00 2001 From: FlavioJS Date: Tue, 5 Dec 2006 13:23:07 +0000 Subject: - Massive EOL normalization & 'svn:eol-style native' flag setting for all txt/conf/h/c files. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9410 54d463be-8e91-2dee-dedb-b68131a5f0ec --- npc/merchants/refine.txt | 1642 +++++++++++++++++++++++----------------------- 1 file changed, 821 insertions(+), 821 deletions(-) (limited to 'npc/merchants/refine.txt') diff --git a/npc/merchants/refine.txt b/npc/merchants/refine.txt index 1ea743dc3..bb15ccb4e 100644 --- a/npc/merchants/refine.txt +++ b/npc/merchants/refine.txt @@ -1,821 +1,821 @@ -//===== Freya Script ========================================= -//= Refining NPCs -//===== By: ================================================== -//= Syrus22 (1.1) dafide18 (1.4) Skotlex (1.5) -//===== Current Version: ===================================== -//= 2.1 -//===== Compatible With: ===================================== -//= Any Freya 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] -//============================================================ - - -//========================================================= -// Christopher: Geffen Blacksmith -//========================================================= -geffen_in.gat,110,172,2 script Christopher#1::Chris 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(Chris) Christopher#2 63 - -//===================================================================================== -// Weapon/Armor Refiners -//===================================================================================== -prt_in.gat,63,60,4 script Hollengrhen 85,{ - set @name$,"Hollengrhen"; - callfunc "refinemain"; - end; -} -morocc_in.gat,73,38,4 script Aragham 99,{ - set @name$,"Aragham"; - callfunc "refinemain"; - end; -} -payon.gat,144,173,4 script Antonio 88,{ - set @name$,"Antonio"; - callfunc "refinemain"; - end; -} -alberta_in.gat,28,58,4 script Fredrik 85,{ - set @name$,"Fredrik"; - callfunc "refinemain"; - end; -} -yuno_in01.gat,164,26,6 script Disturb 88,{ - set @name$,"Disturb"; - callfunc "refinemain"; - end; -} -ein_in01.gat,24,87,6 script Manthasman 826,{ - set @name$,"Manthasman Pruhag"; - callfunc "refinemain"; - end; -} -lhz_in02.gat,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.gat,56,69,4 script Vurewell 86,{ - set @name$,"Vurewell"; - callfunc "phramain"; - end; -} -payon.gat,145,178,4 script Begnahd 88,{ - set @name$,"Begnahd"; - callfunc "phramain"; - end; -} -morocc_in.gat,65,37,4 script Sade 99,{ - set @name$,"Sade"; - callfunc "phramain"; - end; -} -alberta_in.gat,18,59,5 script Kahlamanlith 86,{ - set @name$,"Kahlamanlith"; - callfunc "phramain"; - end; -} -yuno_in01.gat,171,26,6 script Dillemat 88,{ - set @name$,"Dillemat"; - callfunc "phramain"; - end; -} -ein_in01.gat,15,87,7 script Tirehaus 86,{ - set @name$,"Tirehaus"; - callfunc "phramain"; - end; -} -lhz_in02.gat,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 Pharacon and Emvertacon."; - mes "Would you like to buy some?"; - M_Menu: - set @chris, 0; - next; - menu"Pharacon - 200z",PHARA,"Emvertacon - 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 cant hold that many of that item"; - close; -L_BELOW: - mes "You have to buy a POSITIVE amount of items!"; - close; -L_ABOVE: - mes "You cant buy this much of this item!"; - close; -} - - - -//============================================================================== -// Ori/Elu Refiners -//============================================================================== -prt_in.gat,63,69,4 script Dietrich 84,{ - set @name$,"Dietrich"; - callfunc "orimain"; - end; -} -payon.gat,137,178,4 script Hakhim 88,{ - set @name$,"Hakhim"; - callfunc "orimain"; - end; -} -morocc_in.gat,72,32,4 script Abdul 99,{ - set @name$,"Abdul"; - callfunc "orimain"; - end; -} -alberta_in.gat,21,63,5 script Xenophon 84,{ - set @name$,"Xenophon"; - callfunc "orimain"; - end; -} -yuno_in01.gat,171,22,6 script Delayt 88,{ - set @name$,"Delayt"; - callfunc "orimain"; - end; -} -ein_in01.gat,18,82,6 script Matestein 84,{ - set @name$,"Matestein"; - callfunc "orimain"; - end; -} -lhz_in02.gat,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.gat,62,54,2 script Grendal 84,{ - set @name$,"Grendal"; - callfunc "repairmain"; - end; -} -//Temp Spot, Not Sure Where To place -payon.gat,149,182,2 script Repairman#01 88,{ - set @name$,"Repairman"; - callfunc "repairmain"; - end; -} -morocc_in.gat,71,40,2 script Repairman#02 99,{ - set @name$,"Repairman"; - callfunc "repairmain"; - end; -} -lhz_in02.gat,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; - -} +//===== Freya Script ========================================= +//= Refining NPCs +//===== By: ================================================== +//= Syrus22 (1.1) dafide18 (1.4) Skotlex (1.5) +//===== Current Version: ===================================== +//= 2.1 +//===== Compatible With: ===================================== +//= Any Freya 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] +//============================================================ + + +//========================================================= +// Christopher: Geffen Blacksmith +//========================================================= +geffen_in.gat,110,172,2 script Christopher#1::Chris 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(Chris) Christopher#2 63 + +//===================================================================================== +// Weapon/Armor Refiners +//===================================================================================== +prt_in.gat,63,60,4 script Hollengrhen 85,{ + set @name$,"Hollengrhen"; + callfunc "refinemain"; + end; +} +morocc_in.gat,73,38,4 script Aragham 99,{ + set @name$,"Aragham"; + callfunc "refinemain"; + end; +} +payon.gat,144,173,4 script Antonio 88,{ + set @name$,"Antonio"; + callfunc "refinemain"; + end; +} +alberta_in.gat,28,58,4 script Fredrik 85,{ + set @name$,"Fredrik"; + callfunc "refinemain"; + end; +} +yuno_in01.gat,164,26,6 script Disturb 88,{ + set @name$,"Disturb"; + callfunc "refinemain"; + end; +} +ein_in01.gat,24,87,6 script Manthasman 826,{ + set @name$,"Manthasman Pruhag"; + callfunc "refinemain"; + end; +} +lhz_in02.gat,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.gat,56,69,4 script Vurewell 86,{ + set @name$,"Vurewell"; + callfunc "phramain"; + end; +} +payon.gat,145,178,4 script Begnahd 88,{ + set @name$,"Begnahd"; + callfunc "phramain"; + end; +} +morocc_in.gat,65,37,4 script Sade 99,{ + set @name$,"Sade"; + callfunc "phramain"; + end; +} +alberta_in.gat,18,59,5 script Kahlamanlith 86,{ + set @name$,"Kahlamanlith"; + callfunc "phramain"; + end; +} +yuno_in01.gat,171,26,6 script Dillemat 88,{ + set @name$,"Dillemat"; + callfunc "phramain"; + end; +} +ein_in01.gat,15,87,7 script Tirehaus 86,{ + set @name$,"Tirehaus"; + callfunc "phramain"; + end; +} +lhz_in02.gat,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 Pharacon and Emvertacon."; + mes "Would you like to buy some?"; + M_Menu: + set @chris, 0; + next; + menu"Pharacon - 200z",PHARA,"Emvertacon - 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 cant hold that many of that item"; + close; +L_BELOW: + mes "You have to buy a POSITIVE amount of items!"; + close; +L_ABOVE: + mes "You cant buy this much of this item!"; + close; +} + + + +//============================================================================== +// Ori/Elu Refiners +//============================================================================== +prt_in.gat,63,69,4 script Dietrich 84,{ + set @name$,"Dietrich"; + callfunc "orimain"; + end; +} +payon.gat,137,178,4 script Hakhim 88,{ + set @name$,"Hakhim"; + callfunc "orimain"; + end; +} +morocc_in.gat,72,32,4 script Abdul 99,{ + set @name$,"Abdul"; + callfunc "orimain"; + end; +} +alberta_in.gat,21,63,5 script Xenophon 84,{ + set @name$,"Xenophon"; + callfunc "orimain"; + end; +} +yuno_in01.gat,171,22,6 script Delayt 88,{ + set @name$,"Delayt"; + callfunc "orimain"; + end; +} +ein_in01.gat,18,82,6 script Matestein 84,{ + set @name$,"Matestein"; + callfunc "orimain"; + end; +} +lhz_in02.gat,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.gat,62,54,2 script Grendal 84,{ + set @name$,"Grendal"; + callfunc "repairmain"; + end; +} +//Temp Spot, Not Sure Where To place +payon.gat,149,182,2 script Repairman#01 88,{ + set @name$,"Repairman"; + callfunc "repairmain"; + end; +} +morocc_in.gat,71,40,2 script Repairman#02 99,{ + set @name$,"Repairman"; + callfunc "repairmain"; + end; +} +lhz_in02.gat,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; + +} -- cgit v1.2.3-60-g2f50