summaryrefslogtreecommitdiff
path: root/npc/merchants/advanced_refiner.txt
blob: 50b8d05c90ebc3cba74de2375d076d9094c65c1c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
//===== eAthena Script =======================================
//= Advanced Refiner
//===== By: ==================================================
//= L0ne_W0lf
//===== Current Version: =====================================
//= 1.3
//===== Compatible With: =====================================
//= Eathena SVN
//===== Description: =========================================
//= [Aegis Conversion]
//= Refiner that uses Enriched ores to increase upgrade success.
//= After a conversation with Doddler, it's been established that
//= the advanced refiner works similar the the "Bubble Gum" item.
//= The success percentage is not "increased" however, if it fails
//= You get a second try. This tries twice at the same time,
//= effectively giving you a re-roll on your attempt.
//= - Dialog is only partly official to iRO.
//= - Uses the iRO position for this NPC.
//===== Additional Comments: =================================
//= 1.0 First Version. [L0ne_W0lf]
//= 1.1 Fixed a weird carriage return. o_o [L0ne_W0lf]
//= 1.2 Optimizing refine method [Zephyrus]
//= 1.3 Typo fixes [Yommy]
//============================================================

payon,174,138,0	script	Suhnbi#cash	85,{
	mes "[Suhnbi]";
	mes "I am the Armsmith";
	mes "I can refine all kinds of weapons,";
	mes "armor and equipment, so let me";
	mes "know what you want to refine.";
	next;
	
	setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
	set .@menu$,"";
	for( set .@i,1; .@i <= 10; set .@i,.@i+1 )
	{
		if( getequipisequiped(.@i) )
			set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";

		set .@menu$, .@menu$ + ":";
	}
	set .@part,select(.@menu$);

	if( !getequipisequiped(.@part) )
	{
		mes "[Suhnbi]";
		switch(.@part)
		{
			case 1: mes "Do you want me to refine your skull?"; break;
			case 2: mes "I'll refine your torso with my own passionate body!"; break;
			case 3: mes "Sorry, there ain't any technology yet to put rockets on your left hand..."; break;
			case 4: mes "Sorry, there ain't any technology yet to put rockets on your right hand..."; break;
			case 5: mes "You're not even wearing a garment? Are you?"; break;
			case 6: mes "What do I look like, a makeover artist? I can't refine your bare feet!"; break;
			case 7: mes "Um... You're not wearing an Accessory."; break;
			case 8: mes "Accessory? You're not wearing one of those."; break;
			case 9: mes "I refine equipment. I don't give hair cuts."; break;
			case 10: mes "What am I, your personal hairstylist?. Go to the salon if you want work done on your precious hair."; break;
		}
		close;
	}
	

	if( !getequipisenableref(.@part) )
	{
		mes "[Suhnbi]";
		mes "I don't think I can refine this item at all.";
		close;
	}
	if( !getequipisidentify(.@part) )
	{
		mes "[Suhnbi]";
		mes "This has not been identified. So, it can't be refined...";
		close;
	}
	if( getequiprefinerycnt(.@part) >= 10 )
	{
		mes "[Suhnbi]";
		mes "This item cannot be refined because it has already reached its maximum level...";
		close;
	}

	// Make sure you have the neccessary items and Zeny to refine your items
	// Determines chance of failure and verifies that you want to continue.
	switch( getequipweaponlv(.@part) )
	{
		case 1: callsub S_RefineValidate,1,7620,50,.@part; break;
		case 2: callsub S_RefineValidate,2,7620,200,.@part; break;
		case 3: callsub S_RefineValidate,3,7620,5000,.@part; break;
		case 4: callsub S_RefineValidate,4,7620,20000,.@part; break;
		default: callsub S_RefineValidate,0,7619,2000,.@part; break;
	}

	if( getequippercentrefinery(.@part) > rand(100) || getequippercentrefinery(.@part) > rand(100) )
	{
		mes "[Suhnbi]";
		mes "Clink! Clank! Clunk!";
		SuccessRefItem .@part;
		next;
		Emotion e_no1;
		mes "[Suhnbi]";
		mes "Here you are! It's done.";
		mes "It's been a while since I've made such a fine weapon. You must be happy because it has become stronger!";
		close;
	}
	else
	{
		mes "[Suhnbi]";
		mes "Clink! Clank! Clunk!";
		FailedRefItem .@part;
		next;
		if (rand(5) == 1)
			Emotion e_cash;
		else 
			Emotion e_omg;
		mes "[Suhnbi]";
		mes "Cough!!!!";
		next;
		mes "[Suhnbi]";
		mes "Cough...Cough..";
		mes "What a shame...";
		mes "Your equipment broke during the refining process. I had told you earlier this might happen!";
		close;
	}

S_RefineValidate:
	mes "[Suhnbi]";
	if (getarg(0))
		mes "A level " + getarg(0) + " weapon...";
	mes "To refine this I need one ^ff9999" + getitemname(getarg(1)) + "^000000 and a service fee of " + getarg(2) + " Zeny.";
	mes "Do you wish to continue?";
	next;
	if( select("Yes:No") == 1 )
	{
		if( getequippercentrefinery(getarg(3)) < 100 )
		{
			mes "[Suhnbi]";
			mes "Wow!!";
			mes "This weapon, probably";
			mes "looks like it's been refined...";
			mes "many times...";
			mes "It may break if";
			mes "you refine it again.";
			next;
			mes "And if it breaks,";
			mes "you can't use it anymore!";
			mes "All the cards in it and the";
			mes "properties";
			mes "^ff0000will be lost^000000!!";
			mes "^ff0000 besides, the equipment will break!^000000";
			mes " ";
			mes "Are you sure you still want to continue?";
			next;
			if( select("Yes:No") == 2 )
			{
				mes "[Suhnbi]";
				mes "I completely agree...";
				mes "I might be a great refiner, but sometimes even I make mistakes.";
				close;
			}
		}
		if( countitem(getarg(1)) > 0 && Zeny > getarg(2) )
		{
			delitem getarg(1), 1;
			set Zeny, Zeny - getarg(2);
			return;
		}
		else
		{
			mes "[Suhnbi]";
			mes "You don't seem to have enough Zeny or " + getitemname(getarg(1)) + "...";
			mes "Go get some more. I'll be here all day if you need me.";
			close;
		}
	}
	else
	{
		mes "[Suhnbi]";
		mes "Yeah... There's no need to rush.";
		mes "Take your time.";
		close;
	}
}