summaryrefslogtreecommitdiff
path: root/npc/re/merchants/ticket_refiner.txt
blob: 72c1b58511ac82d0f73c943457f857868e5f4497 (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
//================= Hercules Script =======================================
//=       _   _                     _
//=      | | | |                   | |
//=      | |_| | ___ _ __ ___ _   _| | ___  ___
//=      |  _  |/ _ \ '__/ __| | | | |/ _ \/ __|
//=      | | | |  __/ | | (__| |_| | |  __/\__ \
//=      \_| |_/\___|_|  \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2012-2020 Hercules Dev Team
//= Copyright (C) Euphy
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program.  If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= Ticket Refiner
//================= Description ===========================================
//= Refiner that uses +5~9/+11 refine tickets to refine equipment with no
//= chance of failure.
//================= Additional Comments ===================================
//= NOTE: This NPC is currently disabled on official servers.
//================= Current Version =======================================
//= 1.0
//=========================================================================

prontera,184,177,6	script	Refine Master	4_M_REPAIR,{
	disable_items;
	if (countitem(Guarantee_Weapon_11Up) || countitem(Guarantee_Weapon_9Up) || countitem(Guarantee_Weapon_8Up) || countitem(Guarantee_Weapon_7Up) || countitem(Guarantee_Weapon_6Up) || countitem(Guarantee_Weapon_5Up))
		.@bWeaponUp = 1;
	if (countitem(Guarantee_Armor_11Up) || countitem(Guarantee_Armor_9Up) || countitem(Guarantee_Armor_8Up) || countitem(Guarantee_Armor_7Up) || countitem(Guarantee_Armor_6Up) || countitem(Guarantee_Armor_5Up))
		.@bArmorUp = 1;
	if (!.@bWeaponUp && !.@bArmorUp) {
		mes "[Refine Master]";
		mes "Hello!";
		mes "What's up?";
		mes "I'm a specialist";
		mes "for refining items,";
		mes "but I don't work anymore.";
		next;
		switch(select("I'll go on my way.", "Hmm... this makes me curious.")) {
		case 1:
			mes "[Refine Master]";
			mes "Take care, adventurer.";
			close;
		case 2:
			mes "[Refine Master]";
			mes "Actully, I sometimes provide refine services for adventurers with a ^006400Refine Ticket^000000...";
			mes "Bye bye~!";
			close;
		}
	}
	emotion e_gasp;
	mes "[Refine Master]";
	mes "Greetings!";
	mes "I can refine an item up to the ^006400same level as your ticket^000000.";
	mes "You don't have to worry! There's no chance of breaking your item.";
	next;
	if(select("I'll come back later.", "Refine item with ticket.") == 1) {
		mes "[Refine Master]";
		mes "Okay.";
		mes "You can come again later.";
		close;
	}
	mes "[Refine Master]";
	mes "Which equipment would you like to refine?";
	next;
	setarray .@position$[1],"Head upper","Armor","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head middle","Head lower";
	.@menu$ = "";
	for(.@i = 1; .@i<=10; ++.@i)
		.@menu$ += ((getequipisequiped(.@i))?getequipname(.@i):.@position$[.@i]+"- [Empty]")+":";
	.@part = select(.@menu$);
	if (!getequipisequiped(.@part)) {
		mes "[Refine Master]";
		mes "You have to equip the item you want to refine.";
		close;
	}
	if (!getequipisenableref(.@part)) {
		emotion e_otl;
		mes "[Refine Master]";
		mes "Oh, I'm sorry.";
		mes "This item is impossible to refine.";
		close;
	}
	switch(getequipweaponlv(.@part)) {
	default:
	case 0:
		setarray .@tickets[0],6457,6235,6234,6233,6232,6239;
		setarray .@levels[0],5,6,7,8,9,11;
		.@type$ = "Armor";
		.@check = .@bArmorUp;
		break;
	case 1:
	case 2:
	case 3:
	case 4:
		setarray .@tickets[0],6456,6231,6230,6229,6228,6238;
		setarray .@levels[0],5,6,7,8,9,11;
		.@type$ = "Weapon";
		.@check = .@bWeaponUp;
		break;
	}
	if (!.@check) {
		emotion e_dots;
		mes "[Refine Master]";
		mes "If you want to refine this ^006400"+.@type$+"^000000, please come along with ^006400"+.@type$+" Refine Ticket^000000.";
		mes "See you later!";
		close;
	}
	mes "[Refine Master]";
	mes "Please choose which ^006400"+.@type$+" Refine Ticket^000000 you want to use.";
	next;
	.@menu$ = "";
	for(.@i = 0; .@i<getarraysize(.@tickets); ++.@i)
		.@menu$ += getitemname(.@tickets[.@i])+":";
	.@select = select(.@menu$)-1;
	.@ticket_lv = .@levels[.@select];
	.@ticket_id = .@tickets[.@select];
	if (countitem(.@ticket_id) == 0) {
		emotion e_what;
		mes "[Refine Master]";
		mes getitemname(.@ticket_id)+" is not in your inventory. Did you put it in your storage?";
		mes "Please check again.";
		mes "See you later!";
		close;
	}
	if (getequiprefinerycnt(.@part) >= .@ticket_lv) {
		emotion e_swt2;
		mes "[Refine Master]";
		mes "^8B4513This item is already refined as much as your deed.^000000";
		mes "Please come along with an item refined less than your ticket.";
		close;
	}
	mes "[Refine Master]";
	mes "I'm going to refine ^006400"+getequipname(.@part)+"^8B4513 up to the +"+.@ticket_lv+" level^000000 with ^006400"+getitemname(.@ticket_id)+"^000000.";
	mes "May I proceed?";
	next;
	if(select("No.", "Yes.") == 1) {
		emotion e_dots;
		mes "[Refine Master]";
		mes "Oh, you changed your mind.";
		mes "Ok.";
		mes "You can come back later.";
		close;
	}
	mes "[Refine Master]";
	mes "Great.";
	mes "As you wish!";
	mes "I have my own special way to refine...";
	mes ".......ka boom!";
	specialeffect EF_SUI_EXPLOSION;
	if (countitem(.@ticket_id))
		delitem .@ticket_id,1;
	else {
		next;
		mes "Error!";
		mes "Please report this.";
		close;
	}
	for(.@i = getequiprefinerycnt(.@part); .@i<.@ticket_lv; ++.@i)
		successrefitem .@part;
	next;
	emotion e_ho;
	mes "[Refine Master]";
	mes "Alright, here it is~";
	mes "Well, ^0000FF"+strcharinfo(PC_NAME)+"^000000!";
	mes "Congratulations on your shining "+.@type$+".";
	mes "You look GREAT!";
	mes "Farewell~!";
	close;
}