
- needs testing - can't be fully fixed because of length limitation of names git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7200 54d463be-8e91-2dee-dedb-b68131a5f0ec
822 lines
25 KiB
Plaintext
822 lines
25 KiB
Plaintext
//===== 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;
|
|
|
|
}
|