SHOW:
|
|
- or go back to the newest paste.
1 | diff --git a/trunk_398 Limpa/config/EnchantSystem.properties b/trunk_398 Limpa/config/EnchantSystem.properties | |
2 | new file mode 100644 | |
3 | index 0000000..2bf801d | |
4 | --- /dev/null | |
5 | +++ b/trunk_398 Limpa/config/EnchantSystem.properties | |
6 | @@ -0,0 +1,100 @@ | |
7 | +#============================================================# | |
8 | +# ENCHANT SETTINGS # | |
9 | +#============================================================# | |
10 | +# ---------------------------------------------- | |
11 | +# Special Enchanting System - | |
12 | +# ---------------------------------------------- | |
13 | +# Chance enchanting presented as a series of pairs of numbers where the first | |
14 | +# Indicates the number of levels, and the second chance of successful enchanting. | |
15 | +# Also have the option of limiting the maximum level of echanting | |
16 | +# For weapons / armor / jewelry. | |
17 | +# If you have a maximum level of grinding 50 and you do not want | |
18 | +# Give all the chances for each level (from 1 to 50) then | |
19 | +# You can specify for example: | |
20 | +# NormalWeaponEnchantLevel = 1,50; 2,50; 3,50; 4,75; 5,50; | |
21 | +# Example: 5,92; = if you enchant weapon to +5 you have 92% to success. | |
22 | +# ---------------------------------------------- | |
23 | +# CHANCE FOR NORMAL SCROLLS - | |
24 | +# ---------------------------------------------- | |
25 | +# Weapon | |
26 | +NormalWeaponEnchantLevel = 1,100;2,100;3,100;4,100;5,100;6,52;7,52;8,52;9,52;10,52;11,52;12,52;13,52;14,52;15,52;16,52; | |
27 | +# Armor | |
28 | +NormalArmorEnchantLevel = 1,100;2,100;3,100;4,100;5,52;6,52;7,52;8,52;9,52;10,52;11,52;12,52;13,52;14,52;15,52;16,52; | |
29 | +# Jewel | |
30 | +NormalJewelryEnchantLevel = 1,100;2,100;3,100;4,100;5,52;6,52;7,52;8,52;9,52;10,52;11,52;12,52;13,52;14,52;15,52;16,52; | |
31 | + | |
32 | +# ---------------------------------------------- | |
33 | +# CHANCE FOR BLESSEDS SCROLLS - | |
34 | +# ---------------------------------------------- | |
35 | +# Weapon | |
36 | +BlessWeaponEnchantLevel = 1,100;2,100;3,100;4,100;5,52;6,52;7,52;8,52;9,52;10,52;11,52;12,52;13,52;14,52;15,52;16,52; | |
37 | +# Armor | |
38 | +BlessArmorEnchantLevel = 1,100;2,100;3,100;4,100;5,52;6,52;7,52;8,52;9,52;10,52;11,52;12,52;13,52;14,52;15,52;16,52; | |
39 | +# Jewel | |
40 | +BlessJewelryEnchantLevel = 1,100;2,100;3,100;4,100;5,52;6,52;7,52;8,52;9,52;10,52;11,52;12,52;13,52;14,52;15,52;16,52; | |
41 | + | |
42 | +# --------------------------------------------- | |
43 | +# CHANCE FOR CRYSTALS SCROLLS - | |
44 | +# --------------------------------------------- | |
45 | +# Weapon | |
46 | +CrystalWeaponEnchantLevel = 1,100;2,100;3,100;4,100;5,100;6,100;7,100;8,100;9,100;10,100;11,100;12,100;13,100;14,100;15,100;16,100; | |
47 | +# Armor | |
48 | +CrystalArmorEnchantLevel = 1,100;2,100;3,100;4,100;5,100;6,100;7,100;8,100;9,100;10,100;11,100;12,100;13,100;14,100;15,100;16,100; | |
49 | +# Jewel | |
50 | +CrystalJewelryEnchantLevel = 1,100;2,100;3,100;4,100;5,100;6,100;7,100;8,100;9,100;10,100;11,100;12,100;13,100;14,100;15,100;16,100; | |
51 | + | |
52 | +# --------------------------------------------- | |
53 | +# CHANCE FOR DONATOR SCROLLS - | |
54 | +# --------------------------------------------- | |
55 | +# Weapon | |
56 | +DonatorWeaponEnchantLevel = 1,100;2,100;3,100;4,100;5,100;6,100;7,100;8,100;9,100;10,100;11,100;12,100;13,100;14,100;15,100;16,100;17,100;18,100;19,100;20,100;21,80;22,60;23,40;24,20;25,10; | |
57 | +# Armor | |
58 | +DonatorArmorEnchantLevel = 1,100;2,100;3,100;4,100;5,100;6,100;7,100;8,100;9,100;10,100;11,100;12,100;13,100;14,100;15,100;16,100;17,100;18,100;19,100;20,100;21,80;22,60;23,40;24,20;25,10; | |
59 | +# Jewel | |
60 | +DonatorJewelryEnchantLevel = 1,100;2,100;3,100;4,100;5,100;6,100;7,100;8,100;9,100;10,100;11,100;12,100;13,100;14,100;15,100;16,100;17,100;18,100;19,100;20,100;21,80;22,60;23,40;24,20;25,10; | |
61 | + | |
62 | +# On / off enchant hero weapons | |
63 | +EnableEnchantHeroWeapons = False | |
64 | + | |
65 | +# Scroll em um so slot | |
66 | +ScrollStackable = True | |
67 | + | |
68 | +# Safe enchant | |
69 | +EnchantSafeMax = 4 | |
70 | +EnchantSafeMaxFull = 4 | |
71 | + | |
72 | +# Max enchant Settings by scrolls. | |
73 | +EnchantWeaponMax=16 | |
74 | +EnchantArmorMax=16 | |
75 | +EnchantJewelryMax=16 | |
76 | + | |
77 | +# Blessed Limit | |
78 | +BlessedEnchantWeaponMax = 16 | |
79 | +BlessedEnchantArmorMax = 16 | |
80 | +BlessedEnchantJewelryMax = 16 | |
81 | + | |
82 | +# Enchant after break with blessed scroll. | |
83 | +BreakEnchant = 4 | |
84 | + | |
85 | +# Crystal Limits | |
86 | +CrystalEnchantMin = 4 | |
87 | +CrystalEnchantWeaponMax = 16 | |
88 | +CrystalEnchantArmorMax = 16 | |
89 | +CrystalEnchantJewelryMax = 16 | |
90 | + | |
91 | +# Donator Enchant Limits | |
92 | +DonatorEnchantMin = 4 | |
93 | +DonatorEnchantWeaponMax = 20 | |
94 | +DonatorEnchantArmorMax = 20 | |
95 | +DonatorEnchantJewelryMax = 20 | |
96 | +DonatorBreakEnchant = 20 | |
97 | + | |
98 | +# Se true quando enchant falhar, ira perder o enchant atual e reduzira 1 enchant no equipament | |
99 | +# se false o enchant falha, mas nao reduzira enchant no equipament, permanecera o mesmo enchant | |
100 | +DonatorDecreaseEnchant = True | |
101 | + | |
102 | +# Id donator scroll weapon | |
103 | +IdEnchantDonatorWeapon = 9506 | |
104 | + | |
105 | +# Id donator scroll armor | |
106 | +IdEnchantDonatorArmor = 9507 | |
107 | + | |
108 | +#Debug, mostrar erros no console caso tenha. | |
109 | +#Debug = False | |
110 | diff --git a/trunk_398 Limpa/config/players.properties b/trunk_398 Limpa/config/players.properties | |
111 | index 79b2515..bb953d5 100644 | |
112 | --- a/trunk_398 Limpa/config/players.properties | |
113 | +++ b/trunk_398 Limpa/config/players.properties | |
114 | @@ -78,18 +78,6 @@ | |
115 | EnchantChanceNonMagicWeapon = 0.7 | |
116 | EnchantChanceNonMagicWeapon15Plus = 0.35 | |
117 | ||
118 | -# % chance of success to enchant an armor part (both jewelry or armor) | |
119 | -EnchantChanceArmor = 0.66 | |
120 | - | |
121 | -# Enchant limit [default = 0] | |
122 | -EnchantMaxWeapon = 0 | |
123 | -EnchantMaxArmor = 0 | |
124 | - | |
125 | -# if EnchantSafeMax is set to for ex '8' the item will be safly enchanted to '8' regardless of enchant chance(default = 3 for EnchantSafeMax and default = 4 for EnchantSafeMaxFull) | |
126 | -# EnchantSafeMaxFull is for full body armor (upper and lower), value should be > 0. | |
127 | -EnchantSafeMax = 3 | |
128 | -EnchantSafeMaxFull = 4 | |
129 | - | |
130 | #============================================================= | |
131 | # Augmentations | |
132 | #============================================================= | |
133 | diff --git a/trunk_398 Limpa/java/net/sf/l2j/Config.java b/trunk_398 Limpa/java/net/sf/l2j/Config.java | |
134 | index a2139f4..f844cc0 100644 | |
135 | --- a/trunk_398 Limpa/java/net/sf/l2j/Config.java | |
136 | +++ b/trunk_398 Limpa/java/net/sf/l2j/Config.java | |
137 | @@ -35,7 +35,7 @@ | |
138 | public static final String PLAYERS_FILE = "./config/players.properties"; | |
139 | public static final String SERVER_FILE = "./config/server.properties"; | |
140 | public static final String SIEGE_FILE = "./config/siege.properties"; | |
141 | - | |
142 | + public static final String ENCHANTCONFIG = "./config/EnchantSystem.properties"; | |
143 | // -------------------------------------------------- | |
144 | // Clans settings | |
145 | // -------------------------------------------------- | |
146 | @@ -367,6 +367,40 @@ | |
147 | public static int ENCHANT_MAX_ARMOR; | |
148 | public static int ENCHANT_SAFE_MAX; | |
149 | public static int ENCHANT_SAFE_MAX_FULL; | |
150 | + public static int ENCHANT_WEAPON_MAX; | |
151 | + public static int ENCHANT_ARMOR_MAX; | |
152 | + public static int ENCHANT_JEWELRY_MAX; | |
153 | + public static int BLESSED_ENCHANT_WEAPON_MAX; | |
154 | + public static int BLESSED_ENCHANT_ARMOR_MAX; | |
155 | + public static int BLESSED_ENCHANT_JEWELRY_MAX; | |
156 | + public static int BREAK_ENCHANT; | |
157 | + public static int CRYSTAL_ENCHANT_MIN; | |
158 | + public static int CRYSTAL_ENCHANT_WEAPON_MAX; | |
159 | + public static int CRYSTAL_ENCHANT_ARMOR_MAX; | |
160 | + public static int CRYSTAL_ENCHANT_JEWELRY_MAX; | |
161 | + public static int DONATOR_ENCHANT_MIN; | |
162 | + public static int DONATOR_ENCHANT_WEAPON_MAX; | |
163 | + public static int DONATOR_ENCHANT_ARMOR_MAX; | |
164 | + public static int DONATOR_ENCHANT_JEWELRY_MAX; | |
165 | + public static boolean DONATOR_DECREASE_ENCHANT; | |
166 | + public static int GOLD_WEAPON; | |
167 | + public static int GOLD_ARMOR; | |
168 | + public static boolean SCROLL_STACKABLE; | |
169 | + public static boolean ENCHANT_HERO_WEAPON; | |
170 | + public static HashMap<Integer, Integer> NORMAL_WEAPON_ENCHANT_LEVEL = new HashMap<>(); | |
171 | + public static HashMap<Integer, Integer> BLESS_WEAPON_ENCHANT_LEVEL = new HashMap<>(); | |
172 | + public static HashMap<Integer, Integer> CRYSTAL_WEAPON_ENCHANT_LEVEL = new HashMap<>(); | |
173 | + public static HashMap<Integer, Integer> DONATOR_WEAPON_ENCHANT_LEVEL = new HashMap<>(); | |
174 | + public static HashMap<Integer, Integer> NORMAL_ARMOR_ENCHANT_LEVEL = new HashMap<>(); | |
175 | + public static HashMap<Integer, Integer> BLESS_ARMOR_ENCHANT_LEVEL = new HashMap<>(); | |
176 | + public static HashMap<Integer, Integer> CRYSTAL_ARMOR_ENCHANT_LEVEL = new HashMap<>(); | |
177 | + public static HashMap<Integer, Integer> DONATOR_ARMOR_ENCHANT_LEVEL = new HashMap<>(); | |
178 | + public static HashMap<Integer, Integer> NORMAL_JEWELRY_ENCHANT_LEVEL = new HashMap<>(); | |
179 | + public static HashMap<Integer, Integer> BLESS_JEWELRY_ENCHANT_LEVEL = new HashMap<>(); | |
180 | + public static HashMap<Integer, Integer> CRYSTAL_JEWELRY_ENCHANT_LEVEL = new HashMap<>(); | |
181 | + public static HashMap<Integer, Integer> DONATOR_JEWELRY_ENCHANT_LEVEL = new HashMap<>(); | |
182 | + public static boolean DEBUG; | |
183 | + | |
184 | ||
185 | /** Augmentations */ | |
186 | public static int AUGMENTATION_NG_SKILL_CHANCE; | |
187 | @@ -989,11 +1023,6 @@ | |
188 | ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS = players.getProperty("EnchantChanceMagicWeapon15Plus", 0.2); | |
189 | ENCHANT_CHANCE_WEAPON_NONMAGIC = players.getProperty("EnchantChanceNonMagicWeapon", 0.7); | |
190 | ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS = players.getProperty("EnchantChanceNonMagicWeapon15Plus", 0.35); | |
191 | - ENCHANT_CHANCE_ARMOR = players.getProperty("EnchantChanceArmor", 0.66); | |
192 | - ENCHANT_MAX_WEAPON = players.getProperty("EnchantMaxWeapon", 0); | |
193 | - ENCHANT_MAX_ARMOR = players.getProperty("EnchantMaxArmor", 0); | |
194 | - ENCHANT_SAFE_MAX = players.getProperty("EnchantSafeMax", 3); | |
195 | - ENCHANT_SAFE_MAX_FULL = players.getProperty("EnchantSafeMaxFull", 4); | |
196 | ||
197 | AUGMENTATION_NG_SKILL_CHANCE = players.getProperty("AugmentationNGSkillChance", 15); | |
198 | AUGMENTATION_NG_GLOW_CHANCE = players.getProperty("AugmentationNGGlowChance", 0); | |
199 | @@ -1078,7 +1107,371 @@ | |
200 | MAX_BUFFS_AMOUNT = players.getProperty("MaxBuffsAmount", 20); | |
201 | STORE_SKILL_COOLTIME = players.getProperty("StoreSkillCooltime", true); | |
202 | } | |
203 | - | |
204 | + /** | |
205 | + * config enchant novo. | |
206 | + */ | |
207 | + private static final void loadEnchantSystemConfig() | |
208 | + { | |
209 | + final ExProperties enchant = initProperties(ENCHANTCONFIG); | |
210 | + DEBUG = enchant.getProperty("Debug", false); | |
211 | + String[] propertySplit = enchant.getProperty("NormalWeaponEnchantLevel", "").split(";"); | |
212 | + for (String readData : propertySplit) | |
213 | + { | |
214 | + String[] writeData = readData.split(","); | |
215 | + if (writeData.length != 2) | |
216 | + { | |
217 | + LOGGER.info("invalid config property"); | |
218 | + } | |
219 | + else | |
220 | + { | |
221 | + try | |
222 | + { | |
223 | + NORMAL_WEAPON_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
224 | + } | |
225 | + catch (NumberFormatException nfe) | |
226 | + { | |
227 | + if (DEBUG) | |
228 | + { | |
229 | + nfe.printStackTrace(); | |
230 | + } | |
231 | + if (!readData.equals("")) | |
232 | + { | |
233 | + LOGGER.info("invalid config property"); | |
234 | + } | |
235 | + } | |
236 | + } | |
237 | + } | |
238 | + propertySplit = enchant.getProperty("BlessWeaponEnchantLevel", "").split(";"); | |
239 | + for (String readData : propertySplit) | |
240 | + { | |
241 | + String[] writeData = readData.split(","); | |
242 | + if (writeData.length != 2) | |
243 | + { | |
244 | + LOGGER.info("invalid config property"); | |
245 | + } | |
246 | + else | |
247 | + { | |
248 | + try | |
249 | + { | |
250 | + BLESS_WEAPON_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
251 | + } | |
252 | + catch (NumberFormatException nfe) | |
253 | + { | |
254 | + if (DEBUG) | |
255 | + { | |
256 | + nfe.printStackTrace(); | |
257 | + } | |
258 | + if (!readData.equals("")) | |
259 | + { | |
260 | + LOGGER.info("invalid config property"); | |
261 | + } | |
262 | + } | |
263 | + } | |
264 | + } | |
265 | + propertySplit = enchant.getProperty("CrystalWeaponEnchantLevel", "").split(";"); | |
266 | + for (String readData : propertySplit) | |
267 | + { | |
268 | + String[] writeData = readData.split(","); | |
269 | + if (writeData.length != 2) | |
270 | + { | |
271 | + LOGGER.info("invalid config property"); | |
272 | + } | |
273 | + else | |
274 | + { | |
275 | + try | |
276 | + { | |
277 | + CRYSTAL_WEAPON_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
278 | + } | |
279 | + catch (NumberFormatException nfe) | |
280 | + { | |
281 | + if (DEBUG) | |
282 | + { | |
283 | + nfe.printStackTrace(); | |
284 | + } | |
285 | + if (!readData.equals("")) | |
286 | + { | |
287 | + LOGGER.info("invalid config property"); | |
288 | + } | |
289 | + } | |
290 | + } | |
291 | + } | |
292 | + propertySplit = enchant.getProperty("DonatorWeaponEnchantLevel", "").split(";"); | |
293 | + for (String readData : propertySplit) | |
294 | + { | |
295 | + String[] writeData = readData.split(","); | |
296 | + if (writeData.length != 2) | |
297 | + { | |
298 | + System.out.println("invalid config property"); | |
299 | + } | |
300 | + else | |
301 | + { | |
302 | + try | |
303 | + { | |
304 | + DONATOR_WEAPON_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
305 | + } | |
306 | + catch (NumberFormatException nfe) | |
307 | + { | |
308 | + if (DEBUG) | |
309 | + { | |
310 | + nfe.printStackTrace(); | |
311 | + } | |
312 | + if (!readData.equals("")) | |
313 | + { | |
314 | + System.out.println("invalid config property"); | |
315 | + } | |
316 | + } | |
317 | + } | |
318 | + } | |
319 | + propertySplit = enchant.getProperty("NormalArmorEnchantLevel", "").split(";"); | |
320 | + for (String readData : propertySplit) | |
321 | + { | |
322 | + String[] writeData = readData.split(","); | |
323 | + if (writeData.length != 2) | |
324 | + { | |
325 | + LOGGER.info("invalid config property"); | |
326 | + } | |
327 | + else | |
328 | + { | |
329 | + try | |
330 | + { | |
331 | + NORMAL_ARMOR_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
332 | + } | |
333 | + catch (NumberFormatException nfe) | |
334 | + { | |
335 | + if (DEBUG) | |
336 | + { | |
337 | + nfe.printStackTrace(); | |
338 | + } | |
339 | + if (!readData.equals("")) | |
340 | + { | |
341 | + LOGGER.info("invalid config property"); | |
342 | + } | |
343 | + } | |
344 | + } | |
345 | + } | |
346 | + propertySplit = enchant.getProperty("BlessArmorEnchantLevel", "").split(";"); | |
347 | + for (String readData : propertySplit) | |
348 | + { | |
349 | + String[] writeData = readData.split(","); | |
350 | + if (writeData.length != 2) | |
351 | + { | |
352 | + LOGGER.info("invalid config property"); | |
353 | + } | |
354 | + else | |
355 | + { | |
356 | + try | |
357 | + { | |
358 | + BLESS_ARMOR_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
359 | + } | |
360 | + catch (NumberFormatException nfe) | |
361 | + { | |
362 | + if (DEBUG) | |
363 | + { | |
364 | + nfe.printStackTrace(); | |
365 | + } | |
366 | + if (!readData.equals("")) | |
367 | + { | |
368 | + LOGGER.info("invalid config property"); | |
369 | + } | |
370 | + } | |
371 | + } | |
372 | + } | |
373 | + propertySplit = enchant.getProperty("CrystalArmorEnchantLevel", "").split(";"); | |
374 | + for (String readData : propertySplit) | |
375 | + { | |
376 | + String[] writeData = readData.split(","); | |
377 | + if (writeData.length != 2) | |
378 | + { | |
379 | + LOGGER.info("invalid config property"); | |
380 | + } | |
381 | + else | |
382 | + { | |
383 | + try | |
384 | + { | |
385 | + CRYSTAL_ARMOR_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
386 | + } | |
387 | + catch (NumberFormatException nfe) | |
388 | + { | |
389 | + if (DEBUG) | |
390 | + { | |
391 | + nfe.printStackTrace(); | |
392 | + } | |
393 | + if (!readData.equals("")) | |
394 | + { | |
395 | + LOGGER.info("invalid config property"); | |
396 | + } | |
397 | + } | |
398 | + } | |
399 | + } | |
400 | + propertySplit = enchant.getProperty("DonatorArmorEnchantLevel", "").split(";"); | |
401 | + for (String readData : propertySplit) | |
402 | + { | |
403 | + String[] writeData = readData.split(","); | |
404 | + if (writeData.length != 2) | |
405 | + { | |
406 | + System.out.println("invalid config property"); | |
407 | + } | |
408 | + else | |
409 | + { | |
410 | + try | |
411 | + { | |
412 | + DONATOR_ARMOR_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
413 | + } | |
414 | + catch (NumberFormatException nfe) | |
415 | + { | |
416 | + if (DEBUG) | |
417 | + { | |
418 | + nfe.printStackTrace(); | |
419 | + } | |
420 | + if (!readData.equals("")) | |
421 | + { | |
422 | + System.out.println("invalid config property"); | |
423 | + } | |
424 | + } | |
425 | + } | |
426 | + } | |
427 | + propertySplit = enchant.getProperty("NormalJewelryEnchantLevel", "").split(";"); | |
428 | + for (String readData : propertySplit) | |
429 | + { | |
430 | + String[] writeData = readData.split(","); | |
431 | + if (writeData.length != 2) | |
432 | + { | |
433 | + LOGGER.info("invalid config property"); | |
434 | + } | |
435 | + else | |
436 | + { | |
437 | + try | |
438 | + { | |
439 | + NORMAL_JEWELRY_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
440 | + } | |
441 | + catch (NumberFormatException nfe) | |
442 | + { | |
443 | + if (DEBUG) | |
444 | + { | |
445 | + nfe.printStackTrace(); | |
446 | + } | |
447 | + if (!readData.equals("")) | |
448 | + { | |
449 | + LOGGER.info("invalid config property"); | |
450 | + } | |
451 | + } | |
452 | + } | |
453 | + } | |
454 | + propertySplit = enchant.getProperty("BlessJewelryEnchantLevel", "").split(";"); | |
455 | + for (String readData : propertySplit) | |
456 | + { | |
457 | + String[] writeData = readData.split(","); | |
458 | + if (writeData.length != 2) | |
459 | + { | |
460 | + LOGGER.info("invalid config property"); | |
461 | + } | |
462 | + else | |
463 | + { | |
464 | + try | |
465 | + { | |
466 | + BLESS_JEWELRY_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
467 | + } | |
468 | + catch (NumberFormatException nfe) | |
469 | + { | |
470 | + if (DEBUG) | |
471 | + { | |
472 | + nfe.printStackTrace(); | |
473 | + } | |
474 | + if (!readData.equals("")) | |
475 | + { | |
476 | + LOGGER.info("invalid config property"); | |
477 | + } | |
478 | + } | |
479 | + } | |
480 | + } | |
481 | + propertySplit = enchant.getProperty("CrystalJewelryEnchantLevel", "").split(";"); | |
482 | + for (String readData : propertySplit) | |
483 | + { | |
484 | + String[] writeData = readData.split(","); | |
485 | + if (writeData.length != 2) | |
486 | + { | |
487 | + LOGGER.info("invalid config property"); | |
488 | + } | |
489 | + else | |
490 | + { | |
491 | + try | |
492 | + { | |
493 | + CRYSTAL_JEWELRY_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
494 | + } | |
495 | + catch (NumberFormatException nfe) | |
496 | + { | |
497 | + if (DEBUG) | |
498 | + { | |
499 | + nfe.printStackTrace(); | |
500 | + } | |
501 | + if (!readData.equals("")) | |
502 | + { | |
503 | + LOGGER.info("invalid config property"); | |
504 | + } | |
505 | + } | |
506 | + } | |
507 | + } | |
508 | + propertySplit = enchant.getProperty("DonatorJewelryEnchantLevel", "").split(";"); | |
509 | + for (String readData : propertySplit) | |
510 | + { | |
511 | + String[] writeData = readData.split(","); | |
512 | + if (writeData.length != 2) | |
513 | + { | |
514 | + System.out.println("invalid config property"); | |
515 | + } | |
516 | + else | |
517 | + { | |
518 | + try | |
519 | + { | |
520 | + DONATOR_JEWELRY_ENCHANT_LEVEL.put(Integer.valueOf(Integer.parseInt(writeData[0])), Integer.valueOf(Integer.parseInt(writeData[1]))); | |
521 | + } | |
522 | + catch (NumberFormatException nfe) | |
523 | + { | |
524 | + if (DEBUG) | |
525 | + { | |
526 | + nfe.printStackTrace(); | |
527 | + } | |
528 | + if (!readData.equals("")) | |
529 | + { | |
530 | + System.out.println("invalid config property"); | |
531 | + } | |
532 | + } | |
533 | + } | |
534 | + } | |
535 | + ENCHANT_HERO_WEAPON = Boolean.parseBoolean(enchant.getProperty("EnableEnchantHeroWeapons", "False")); | |
536 | + | |
537 | + GOLD_WEAPON = Integer.parseInt(enchant.getProperty("IdEnchantDonatorWeapon", "10010")); | |
538 | + | |
539 | + GOLD_ARMOR = Integer.parseInt(enchant.getProperty("IdEnchantDonatorArmor", "10011")); | |
540 | + | |
541 | + ENCHANT_SAFE_MAX = Integer.parseInt(enchant.getProperty("EnchantSafeMax", "3")); | |
542 | + | |
543 | + ENCHANT_SAFE_MAX_FULL = Integer.parseInt(enchant.getProperty("EnchantSafeMaxFull", "4")); | |
544 | + | |
545 | + SCROLL_STACKABLE = Boolean.parseBoolean(enchant.getProperty("ScrollStackable", "False")); | |
546 | + | |
547 | + ENCHANT_WEAPON_MAX = Integer.parseInt(enchant.getProperty("EnchantWeaponMax", "25")); | |
548 | + ENCHANT_ARMOR_MAX = Integer.parseInt(enchant.getProperty("EnchantArmorMax", "25")); | |
549 | + ENCHANT_JEWELRY_MAX = Integer.parseInt(enchant.getProperty("EnchantJewelryMax", "25")); | |
550 | + | |
551 | + BLESSED_ENCHANT_WEAPON_MAX = Integer.parseInt(enchant.getProperty("BlessedEnchantWeaponMax", "25")); | |
552 | + BLESSED_ENCHANT_ARMOR_MAX = Integer.parseInt(enchant.getProperty("BlessedEnchantArmorMax", "25")); | |
553 | + BLESSED_ENCHANT_JEWELRY_MAX = Integer.parseInt(enchant.getProperty("BlessedEnchantJewelryMax", "25")); | |
554 | + | |
555 | + BREAK_ENCHANT = Integer.valueOf(enchant.getProperty("BreakEnchant", "0")).intValue(); | |
556 | + | |
557 | + CRYSTAL_ENCHANT_MIN = Integer.parseInt(enchant.getProperty("CrystalEnchantMin", "20")); | |
558 | + CRYSTAL_ENCHANT_WEAPON_MAX = Integer.parseInt(enchant.getProperty("CrystalEnchantWeaponMax", "25")); | |
559 | + CRYSTAL_ENCHANT_ARMOR_MAX = Integer.parseInt(enchant.getProperty("CrystalEnchantArmorMax", "25")); | |
560 | + CRYSTAL_ENCHANT_JEWELRY_MAX = Integer.parseInt(enchant.getProperty("CrystalEnchantJewelryMax", "25")); | |
561 | + | |
562 | + DONATOR_ENCHANT_MIN = Integer.parseInt(enchant.getProperty("DonatorEnchantMin", "20")); | |
563 | + DONATOR_ENCHANT_WEAPON_MAX = Integer.parseInt(enchant.getProperty("DonatorEnchantWeaponMax", "25")); | |
564 | + DONATOR_ENCHANT_ARMOR_MAX = Integer.parseInt(enchant.getProperty("DonatorEnchantArmorMax", "25")); | |
565 | + DONATOR_ENCHANT_JEWELRY_MAX = Integer.parseInt(enchant.getProperty("DonatorEnchantJewelryMax", "25")); | |
566 | + DONATOR_DECREASE_ENCHANT = Boolean.valueOf(enchant.getProperty("DonatorDecreaseEnchant", "false")).booleanValue(); | |
567 | + | |
568 | + } | |
569 | /** | |
570 | * Loads siege settings. | |
571 | */ | |
572 | @@ -1293,6 +1686,9 @@ | |
573 | // siege settings | |
574 | loadSieges(); | |
575 | ||
576 | + // enchant settings new | |
577 | + loadEnchantSystemConfig(); | |
578 | + | |
579 | // server settings | |
580 | loadServer(); | |
581 | } | |
582 | diff --git a/trunk_398 Limpa/java/net/sf/l2j/gameserver/model/item/instance/BaseExtender.java b/trunk_398 Limpa/java/net/sf/l2j/gameserver/model/item/instance/BaseExtender.java | |
583 | new file mode 100644 | |
584 | index 0000000..9ac6d05 | |
585 | --- /dev/null | |
586 | +++ b/trunk_398 Limpa/java/net/sf/l2j/gameserver/model/item/instance/BaseExtender.java | |
587 | @@ -0,0 +1,103 @@ | |
588 | +package net.sf.l2j.gameserver.model.item.instance; | |
589 | + | |
590 | +import net.sf.l2j.gameserver.model.WorldObject; | |
591 | + | |
592 | +public class BaseExtender | |
593 | +{ | |
594 | + protected WorldObject _owner; | |
595 | + | |
596 | + public static enum EventType | |
597 | + { | |
598 | + LOAD("load"), | |
599 | + STORE("store"), | |
600 | + CAST("cast"), | |
601 | + ATTACK("attack"), | |
602 | + CRAFT("craft"), | |
603 | + ENCHANT("enchant"), | |
604 | + SPAWN("spawn"), | |
605 | + DELETE("delete"), | |
606 | + SETOWNER("setwoner"), | |
607 | + DROP("drop"), | |
608 | + DIE("die"), | |
609 | + REVIVE("revive"), | |
610 | + SETINTENTION("setintention"); | |
611 | + | |
612 | + public final String name; | |
613 | + | |
614 | + private EventType(String name) | |
615 | + { | |
616 | + this.name = name; | |
617 | + } | |
618 | + } | |
619 | + | |
620 | + public static boolean canCreateFor(WorldObject object) | |
621 | + { | |
622 | + return true; | |
623 | + } | |
624 | + | |
625 | + private BaseExtender _next = null; | |
626 | + | |
627 | + public BaseExtender(WorldObject owner) | |
628 | + { | |
629 | + _owner = owner; | |
630 | + } | |
631 | + | |
632 | + public WorldObject getOwner() | |
633 | + { | |
634 | + return _owner; | |
635 | + } | |
636 | + | |
637 | + public Object onEvent(String event, Object... params) | |
638 | + { | |
639 | + if (_next == null) | |
640 | + { | |
641 | + return null; | |
642 | + } | |
643 | + return _next.onEvent(event, params); | |
644 | + } | |
645 | + | |
646 | + public BaseExtender getExtender(String simpleClassName) | |
647 | + { | |
648 | + if (getClass().getSimpleName().compareTo(simpleClassName) == 0) | |
649 | + { | |
650 | + return this; | |
651 | + } | |
652 | + if (_next != null) | |
653 | + { | |
654 | + return _next.getExtender(simpleClassName); | |
655 | + } | |
656 | + return null; | |
657 | + } | |
658 | + | |
659 | + public void removeExtender(BaseExtender ext) | |
660 | + { | |
661 | + if (_next != null) | |
662 | + { | |
663 | + if (_next == ext) | |
664 | + { | |
665 | + _next = _next._next; | |
666 | + } | |
667 | + else | |
668 | + { | |
669 | + _next.removeExtender(ext); | |
670 | + } | |
671 | + } | |
672 | + } | |
673 | + | |
674 | + public BaseExtender getNextExtender() | |
675 | + { | |
676 | + return _next; | |
677 | + } | |
678 | + | |
679 | + public void addExtender(BaseExtender newExtender) | |
680 | + { | |
681 | + if (_next == null) | |
682 | + { | |
683 | + _next = newExtender; | |
684 | + } | |
685 | + else | |
686 | + { | |
687 | + _next.addExtender(newExtender); | |
688 | + } | |
689 | + } | |
690 | +} | |
691 | diff --git a/trunk_398 Limpa/java/net/sf/l2j/gameserver/model/item/instance/ItemInstance.java b/trunk_398 Limpa/java/net/sf/l2j/gameserver/model/item/instance/ItemInstance.java | |
692 | index 4fe230e..7a9d730 100644 | |
693 | --- a/trunk_398 Limpa/java/net/sf/l2j/gameserver/model/item/instance/ItemInstance.java | |
694 | +++ b/trunk_398 Limpa/java/net/sf/l2j/gameserver/model/item/instance/ItemInstance.java | |
695 | @@ -1270,7 +1270,16 @@ | |
696 | { | |
697 | _shotsMask = 0; | |
698 | } | |
699 | + private final BaseExtender _extender = null; | |
700 | ||
701 | + public Object fireEvent(String event, Object... params) | |
702 | + { | |
703 | + if (_extender == null) | |
704 | + { | |
705 | + return null; | |
706 | + } | |
707 | + return _extender.onEvent(event, params); | |
708 | + } | |
709 | @Override | |
710 | public int compareTo(ItemInstance item) | |
711 | { | |
712 | @@ -1280,4 +1289,13 @@ | |
713 | ||
714 | return Integer.compare(item.getObjectId(), getObjectId()); | |
715 | } | |
716 | + | |
717 | + public int getEquipSlot() | |
718 | + { | |
719 | + if ((Config.DEBUG) && (_loc != ItemLocation.PAPERDOLL) && (_loc != ItemLocation.PET_EQUIP) && (_loc != ItemLocation.FREIGHT)) | |
720 | + { | |
721 | + throw new AssertionError(); | |
722 | + } | |
723 | + return _locData; | |
724 | + } | |
725 | } | |
726 | \ No newline at end of file | |
727 | diff --git a/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/clientpackets/RequestEnchantItem.java b/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/clientpackets/RequestEnchantItem.java | |
728 | index 50bda20..b094654 100644 | |
729 | --- a/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/clientpackets/RequestEnchantItem.java | |
730 | +++ b/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/clientpackets/RequestEnchantItem.java | |
731 | @@ -2,27 +2,91 @@ | |
732 | +package net.sf.l2j.gameserver.network.clientpackets; | |
733 | + | |
734 | +import net.sf.l2j.commons.random.Rnd; | |
735 | + | |
736 | +import net.sf.l2j.Config; | |
737 | +import net.sf.l2j.gameserver.enums.StatusType; | |
738 | +import net.sf.l2j.gameserver.enums.items.ItemLocation; | |
739 | +import net.sf.l2j.gameserver.model.World; | |
740 | +import net.sf.l2j.gameserver.model.actor.Player; | |
741 | +import net.sf.l2j.gameserver.model.item.instance.ItemInstance; | |
742 | +import net.sf.l2j.gameserver.model.olympiad.OlympiadManager; | |
743 | +import net.sf.l2j.gameserver.network.SystemMessageId; | |
744 | +import net.sf.l2j.gameserver.network.serverpackets.EnchantResult; | |
745 | +import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate; | |
746 | +import net.sf.l2j.gameserver.network.serverpackets.ItemList; | |
747 | +import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate; | |
748 | +import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; | |
749 | + | |
750 | +public final class RequestEnchantItem extends L2GameClientPacket | |
751 | +{ | |
752 | + private static final int[] DONATOR_WEAPON_SCROLL = | |
753 | + { | |
754 | + Config.GOLD_WEAPON | |
755 | + }; | |
756 | + private static final int[] DONATOR_ARMOR_SCROLL = | |
757 | + { | |
758 | + Config.GOLD_ARMOR | |
759 | + }; | |
760 | + private static final int[] CRYSTAL_SCROLLS = | |
761 | + { | |
762 | + 731, | |
763 | + 732, | |
764 | + 949, | |
765 | + 950, | |
766 | + 953, | |
767 | + 954, | |
768 | + 957, | |
769 | + 958, | |
770 | + 961, | |
771 | + 962 | |
772 | + }; | |
773 | + private static final int[] NORMAL_WEAPON_SCROLLS = | |
774 | + { | |
775 | + 729, | |
776 | + 947, | |
777 | + 951, | |
778 | + 955, | |
779 | + 959 | |
780 | + }; | |
781 | + private static final int[] BLESSED_WEAPON_SCROLLS = | |
782 | + { | |
783 | + 6569, | |
784 | + 6571, | |
785 | + 6573, | |
786 | + 6575, | |
787 | + 6577 | |
788 | + }; | |
789 | + private static final int[] CRYSTAL_WEAPON_SCROLLS = | |
790 | + { | |
791 | + 731, | |
792 | + 949, | |
793 | + 953, | |
794 | + 957, | |
795 | + 961 | |
796 | + }; | |
797 | + private static final int[] NORMAL_ARMOR_SCROLLS = | |
798 | + { | |
799 | + 730, | |
800 | + 948, | |
801 | + 952, | |
802 | + 956, | |
803 | + 960 | |
804 | + }; | |
805 | + private static final int[] BLESSED_ARMOR_SCROLLS = | |
806 | + { | |
807 | + 6570, | |
808 | + 6572, | |
809 | + 6574, | |
810 | + 6576, | |
811 | + 6578 | |
812 | + }; | |
813 | + private static final int[] CRYSTAL_ARMOR_SCROLLS = | |
814 | + { | |
815 | + 732, | |
816 | + 950, | |
817 | + 954, | |
818 | + 958, | |
819 | + 962 | |
820 | + }; | |
821 | + private int _objectId; | |
822 | + | |
823 | + @Override | |
824 | + protected void readImpl() | |
825 | + { | |
826 | + _objectId = readD(); | |
827 | + } | |
828 | + @Override | |
829 | + protected void runImpl() | |
830 | + { | |
831 | + Player activeChar = getClient().getPlayer(); | |
832 | + if ((activeChar == null) || (_objectId == 0)) | |
833 | + { | |
834 | + return; | |
835 | + } | |
836 | + if (activeChar.getActiveTradeList() != null) | |
837 | + { | |
838 | + activeChar.cancelActiveTrade(); | |
839 | + activeChar.sendMessage("Your trade canceled"); | |
840 | + return; | |
841 | + } | |
842 | + if (activeChar.isProcessingTransaction()) | |
843 | + { | |
844 | + activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION); | |
845 | + activeChar.setActiveEnchantItem(null); | |
846 | + return; | |
847 | + } | |
848 | + if (!activeChar.isOnline()) | |
849 | + { | |
850 | + activeChar.setActiveEnchantItem(null); | |
851 | + return; | |
852 | + } | |
853 | + if ((activeChar.isInOlympiadMode()) || (OlympiadManager.getInstance().isRegistered(activeChar))) | |
854 | + { | |
855 | + activeChar.sendMessage("[Olympiad]: Voce nao pode fazer isso!!"); | |
856 | + return; | |
857 | + } | |
858 | + if (!activeChar.isOnline()) | |
859 | + { | |
860 | + activeChar.setActiveEnchantItem(null); | |
861 | + return; | |
862 | + } | |
863 | + ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId); | |
864 | + ItemInstance scroll = activeChar.getActiveEnchantItem(); | |
865 | + activeChar.setActiveEnchantItem(null); | |
866 | + if ((item == null) || (scroll == null)) | |
867 | + { | |
868 | + activeChar.setActiveEnchantItem(null); | |
869 | + return; | |
870 | + } | |
871 | + if ((!Config.ENCHANT_HERO_WEAPON) && (item.getItemId() >= 6611) && (item.getItemId() <= 6621)) | |
872 | + { | |
873 | + activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION); | |
874 | + activeChar.setActiveEnchantItem(null); | |
875 | + return; | |
876 | + } | |
877 | + int itemType2 = item.getItem().getType2(); | |
878 | + boolean enchantItem = false; | |
879 | + boolean blessedScroll = false; | |
880 | + boolean crystalScroll = false; | |
881 | + boolean donatorScroll = false; | |
882 | + int crystalId = 0; | |
883 | + switch (item.getItem().getCrystalType()) | |
884 | + { | |
885 | + case A: | |
886 | + crystalId = 1461; | |
887 | + if ((scroll.getItemId() == Config.GOLD_WEAPON) && (itemType2 == 0)) | |
888 | + { | |
889 | + enchantItem = true; | |
890 | + } | |
891 | + else if ((scroll.getItemId() == Config.GOLD_ARMOR) && ((itemType2 == 1) || (itemType2 == 2))) | |
892 | + { | |
893 | + enchantItem = true; | |
894 | + } | |
895 | + switch (scroll.getItemId()) | |
896 | + { | |
897 | + case 729: | |
898 | + case 731: | |
899 | + case 6569: | |
900 | + if (itemType2 == 0) | |
901 | + { | |
902 | + enchantItem = true; | |
903 | + } | |
904 | + break; | |
905 | + case 730: | |
906 | + case 732: | |
907 | + case 6570: | |
908 | + if ((itemType2 == 1) || (itemType2 == 2)) | |
909 | + { | |
910 | + enchantItem = true; | |
911 | + } | |
912 | + break; | |
913 | + } | |
914 | + break; | |
915 | + case B: | |
916 | + crystalId = 1460; | |
917 | + if ((scroll.getItemId() == Config.GOLD_WEAPON) && (itemType2 == 0)) | |
918 | + { | |
919 | + enchantItem = true; | |
920 | + } | |
921 | + else if ((scroll.getItemId() == Config.GOLD_ARMOR) && ((itemType2 == 1) || (itemType2 == 2))) | |
922 | + { | |
923 | + enchantItem = true; | |
924 | + } | |
925 | + switch (scroll.getItemId()) | |
926 | + { | |
927 | + case 947: | |
928 | + case 949: | |
929 | + case 6571: | |
930 | + if (itemType2 == 0) | |
931 | + { | |
932 | + enchantItem = true; | |
933 | + } | |
934 | + break; | |
935 | + case 948: | |
936 | + case 950: | |
937 | + case 6572: | |
938 | + if ((itemType2 == 1) || (itemType2 == 2)) | |
939 | + { | |
940 | + enchantItem = true; | |
941 | + } | |
942 | + break; | |
943 | + } | |
944 | + break; | |
945 | + case C: | |
946 | + crystalId = 1459; | |
947 | + if ((scroll.getItemId() == Config.GOLD_WEAPON) && (itemType2 == 0)) | |
948 | + { | |
949 | + enchantItem = true; | |
950 | + } | |
951 | + else if ((scroll.getItemId() == Config.GOLD_ARMOR) && ((itemType2 == 1) || (itemType2 == 2))) | |
952 | + { | |
953 | + enchantItem = true; | |
954 | + } | |
955 | + switch (scroll.getItemId()) | |
956 | + { | |
957 | + case 951: | |
958 | + case 953: | |
959 | + case 6573: | |
960 | + if (itemType2 == 0) | |
961 | + { | |
962 | + enchantItem = true; | |
963 | + } | |
964 | + break; | |
965 | + case 952: | |
966 | + case 954: | |
967 | + case 6574: | |
968 | + if ((itemType2 == 1) || (itemType2 == 2)) | |
969 | + { | |
970 | + enchantItem = true; | |
971 | + } | |
972 | + break; | |
973 | + } | |
974 | + break; | |
975 | + case D: | |
976 | + crystalId = 1458; | |
977 | + if ((scroll.getItemId() == Config.GOLD_WEAPON) && (itemType2 == 0)) | |
978 | + { | |
979 | + enchantItem = true; | |
980 | + } | |
981 | + else if ((scroll.getItemId() == Config.GOLD_ARMOR) && ((itemType2 == 1) || (itemType2 == 2))) | |
982 | + { | |
983 | + enchantItem = true; | |
984 | + } | |
985 | + switch (scroll.getItemId()) | |
986 | + { | |
987 | + case 955: | |
988 | + case 957: | |
989 | + case 6575: | |
990 | + if (itemType2 == 0) | |
991 | + { | |
992 | + enchantItem = true; | |
993 | + } | |
994 | + break; | |
995 | + case 956: | |
996 | + case 958: | |
997 | + case 6576: | |
998 | + if ((itemType2 == 1) || (itemType2 == 2)) | |
999 | + { | |
1000 | + enchantItem = true; | |
1001 | + } | |
1002 | + break; | |
1003 | + } | |
1004 | + break; | |
1005 | + case S: | |
1006 | + crystalId = 1462; | |
1007 | + if ((scroll.getItemId() == Config.GOLD_WEAPON) && (itemType2 == 0)) | |
1008 | + { | |
1009 | + enchantItem = true; | |
1010 | + } | |
1011 | + else if ((scroll.getItemId() == Config.GOLD_ARMOR) && ((itemType2 == 1) || (itemType2 == 2))) | |
1012 | + { | |
1013 | + enchantItem = true; | |
1014 | + } | |
1015 | + switch (scroll.getItemId()) | |
1016 | + { | |
1017 | + case 959: | |
1018 | + case 961: | |
1019 | + case 6577: | |
1020 | + if (itemType2 == 0) | |
1021 | + { | |
1022 | + enchantItem = true; | |
1023 | + } | |
1024 | + break; | |
1025 | + case 960: | |
1026 | + case 962: | |
1027 | + case 6578: | |
1028 | + if ((itemType2 == 1) || (itemType2 == 2)) | |
1029 | + { | |
1030 | + enchantItem = true; | |
1031 | + } | |
1032 | + break; | |
1033 | + } | |
1034 | + break; | |
1035 | + } | |
1036 | + if (!enchantItem) | |
1037 | + { | |
1038 | + activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION); | |
1039 | + return; | |
1040 | + } | |
1041 | + if ((scroll.getItemId() >= 6569) && (scroll.getItemId() <= 6578)) | |
1042 | + { | |
1043 | + blessedScroll = true; | |
1044 | + } | |
1045 | + else if ((scroll.getItemId() == Config.GOLD_WEAPON) || (scroll.getItemId() == Config.GOLD_ARMOR)) | |
1046 | + { | |
1047 | + donatorScroll = true; | |
1048 | + } | |
1049 | + else | |
1050 | + { | |
1051 | + for (int crystalscroll : CRYSTAL_SCROLLS) | |
1052 | + { | |
1053 | + if (scroll.getItemId() == crystalscroll) | |
1054 | + { | |
1055 | + crystalScroll = true; | |
1056 | + break; | |
1057 | + } | |
1058 | + } | |
1059 | + } | |
1060 | + int chance = 0; | |
1061 | + int maxEnchantLevel = 0; | |
1062 | + int minEnchantLevel = 0; | |
1063 | + int nextEnchantLevel = item.getEnchantLevel() + 1; | |
1064 | + if (item.getItem().getType2() == 0) | |
1065 | + { | |
1066 | + if (blessedScroll) | |
1067 | + { | |
1068 | + for (int blessedweaponscroll : BLESSED_WEAPON_SCROLLS) | |
1069 | + { | |
1070 | + if (scroll.getItemId() == blessedweaponscroll) | |
1071 | + { | |
1072 | + if (item.getEnchantLevel() >= Config.BLESS_WEAPON_ENCHANT_LEVEL.size()) | |
1073 | + { | |
1074 | + chance = Config.BLESS_WEAPON_ENCHANT_LEVEL.get(Integer.valueOf(Config.BLESS_WEAPON_ENCHANT_LEVEL.size())).intValue(); | |
1075 | + } | |
1076 | + else | |
1077 | + { | |
1078 | + chance = Config.BLESS_WEAPON_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1079 | + } | |
1080 | + maxEnchantLevel = Config.BLESSED_ENCHANT_WEAPON_MAX; | |
1081 | + break; | |
1082 | + } | |
1083 | + } | |
1084 | + } | |
1085 | + else if (crystalScroll) | |
1086 | + { | |
1087 | + for (int crystalweaponscroll : CRYSTAL_WEAPON_SCROLLS) | |
1088 | + { | |
1089 | + if (scroll.getItemId() == crystalweaponscroll) | |
1090 | + { | |
1091 | + if (item.getEnchantLevel() >= Config.CRYSTAL_WEAPON_ENCHANT_LEVEL.size()) | |
1092 | + { | |
1093 | + chance = Config.CRYSTAL_WEAPON_ENCHANT_LEVEL.get(Integer.valueOf(Config.CRYSTAL_WEAPON_ENCHANT_LEVEL.size())).intValue(); | |
1094 | + } | |
1095 | + else | |
1096 | + { | |
1097 | + chance = Config.CRYSTAL_WEAPON_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1098 | + } | |
1099 | + minEnchantLevel = Config.CRYSTAL_ENCHANT_MIN; | |
1100 | + maxEnchantLevel = Config.CRYSTAL_ENCHANT_WEAPON_MAX; | |
1101 | + break; | |
1102 | + } | |
1103 | + } | |
1104 | + } | |
1105 | + else if (donatorScroll) | |
1106 | + { | |
1107 | + for (int donateweaponscroll : DONATOR_WEAPON_SCROLL) | |
1108 | + { | |
1109 | + if (scroll.getItemId() == donateweaponscroll) | |
1110 | + { | |
1111 | + if (item.getEnchantLevel() >= Config.DONATOR_WEAPON_ENCHANT_LEVEL.size()) | |
1112 | + { | |
1113 | + chance = Config.DONATOR_WEAPON_ENCHANT_LEVEL.get(Integer.valueOf(Config.DONATOR_WEAPON_ENCHANT_LEVEL.size())).intValue(); | |
1114 | + } | |
1115 | + else | |
1116 | + { | |
1117 | + chance = Config.DONATOR_WEAPON_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1118 | + } | |
1119 | + minEnchantLevel = Config.DONATOR_ENCHANT_MIN; | |
1120 | + maxEnchantLevel = Config.DONATOR_ENCHANT_WEAPON_MAX; | |
1121 | + break; | |
1122 | + } | |
1123 | + } | |
1124 | + } | |
1125 | + else | |
1126 | + { | |
1127 | + for (int normalweaponscroll : NORMAL_WEAPON_SCROLLS) | |
1128 | + { | |
1129 | + if (scroll.getItemId() == normalweaponscroll) | |
1130 | + { | |
1131 | + if (item.getEnchantLevel() >= Config.NORMAL_WEAPON_ENCHANT_LEVEL.size()) | |
1132 | + { | |
1133 | + chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(Integer.valueOf(Config.NORMAL_WEAPON_ENCHANT_LEVEL.size())).intValue(); | |
1134 | + } | |
1135 | + else | |
1136 | + { | |
1137 | + chance = Config.NORMAL_WEAPON_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1138 | + } | |
1139 | + maxEnchantLevel = Config.ENCHANT_WEAPON_MAX; | |
1140 | + break; | |
1141 | + } | |
1142 | + } | |
1143 | + } | |
1144 | + } | |
1145 | + else if (item.getItem().getType2() == 1) | |
1146 | + { | |
1147 | + if (blessedScroll) | |
1148 | + { | |
1149 | + for (int blessedarmorscroll : BLESSED_ARMOR_SCROLLS) | |
1150 | + { | |
1151 | + if (scroll.getItemId() == blessedarmorscroll) | |
1152 | + { | |
1153 | + if (item.getEnchantLevel() >= Config.BLESS_ARMOR_ENCHANT_LEVEL.size()) | |
1154 | + { | |
1155 | + chance = Config.BLESS_ARMOR_ENCHANT_LEVEL.get(Integer.valueOf(Config.BLESS_ARMOR_ENCHANT_LEVEL.size())).intValue(); | |
1156 | + } | |
1157 | + else | |
1158 | + { | |
1159 | + chance = Config.BLESS_ARMOR_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1160 | + } | |
1161 | + maxEnchantLevel = Config.BLESSED_ENCHANT_ARMOR_MAX; | |
1162 | + break; | |
1163 | + } | |
1164 | + } | |
1165 | + } | |
1166 | + else if (crystalScroll) | |
1167 | + { | |
1168 | + for (int crystalarmorscroll : CRYSTAL_ARMOR_SCROLLS) | |
1169 | + { | |
1170 | + if (scroll.getItemId() == crystalarmorscroll) | |
1171 | + { | |
1172 | + if (item.getEnchantLevel() >= Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.size()) | |
1173 | + { | |
1174 | + chance = Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.get(Integer.valueOf(Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.size())).intValue(); | |
1175 | + } | |
1176 | + else | |
1177 | + { | |
1178 | + chance = Config.CRYSTAL_ARMOR_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1179 | + } | |
1180 | + minEnchantLevel = Config.CRYSTAL_ENCHANT_MIN; | |
1181 | + maxEnchantLevel = Config.CRYSTAL_ENCHANT_ARMOR_MAX; | |
1182 | + break; | |
1183 | + } | |
1184 | + } | |
1185 | + } | |
1186 | + else if (donatorScroll) | |
1187 | + { | |
1188 | + for (int donatorarmorscroll : DONATOR_ARMOR_SCROLL) | |
1189 | + { | |
1190 | + if (scroll.getItemId() == donatorarmorscroll) | |
1191 | + { | |
1192 | + if (item.getEnchantLevel() >= Config.DONATOR_ARMOR_ENCHANT_LEVEL.size()) | |
1193 | + { | |
1194 | + chance = Config.DONATOR_ARMOR_ENCHANT_LEVEL.get(Integer.valueOf(Config.DONATOR_ARMOR_ENCHANT_LEVEL.size())).intValue(); | |
1195 | + } | |
1196 | + else | |
1197 | + { | |
1198 | + chance = Config.DONATOR_ARMOR_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1199 | + } | |
1200 | + minEnchantLevel = Config.DONATOR_ENCHANT_MIN; | |
1201 | + maxEnchantLevel = Config.DONATOR_ENCHANT_ARMOR_MAX; | |
1202 | + break; | |
1203 | + } | |
1204 | + } | |
1205 | + } | |
1206 | + else | |
1207 | + { | |
1208 | + for (int normalarmorscroll : NORMAL_ARMOR_SCROLLS) | |
1209 | + { | |
1210 | + if (scroll.getItemId() == normalarmorscroll) | |
1211 | + { | |
1212 | + if (item.getEnchantLevel() >= Config.NORMAL_ARMOR_ENCHANT_LEVEL.size()) | |
1213 | + { | |
1214 | + chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(Integer.valueOf(Config.NORMAL_ARMOR_ENCHANT_LEVEL.size())).intValue(); | |
1215 | + } | |
1216 | + else | |
1217 | + { | |
1218 | + chance = Config.NORMAL_ARMOR_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1219 | + } | |
1220 | + maxEnchantLevel = Config.ENCHANT_ARMOR_MAX; | |
1221 | + break; | |
1222 | + } | |
1223 | + } | |
1224 | + } | |
1225 | + } | |
1226 | + else if (item.getItem().getType2() == 2) | |
1227 | + { | |
1228 | + if (blessedScroll) | |
1229 | + { | |
1230 | + for (int blessedjewelscroll : BLESSED_ARMOR_SCROLLS) | |
1231 | + { | |
1232 | + if (scroll.getItemId() == blessedjewelscroll) | |
1233 | + { | |
1234 | + if (item.getEnchantLevel() >= Config.BLESS_JEWELRY_ENCHANT_LEVEL.size()) | |
1235 | + { | |
1236 | + chance = Config.BLESS_JEWELRY_ENCHANT_LEVEL.get(Integer.valueOf(Config.BLESS_JEWELRY_ENCHANT_LEVEL.size())).intValue(); | |
1237 | + } | |
1238 | + else | |
1239 | + { | |
1240 | + chance = Config.BLESS_JEWELRY_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1241 | + } | |
1242 | + maxEnchantLevel = Config.BLESSED_ENCHANT_JEWELRY_MAX; | |
1243 | + break; | |
1244 | + } | |
1245 | + } | |
1246 | + } | |
1247 | + else if (crystalScroll) | |
1248 | + { | |
1249 | + for (int crystaljewelscroll : CRYSTAL_ARMOR_SCROLLS) | |
1250 | + { | |
1251 | + if (scroll.getItemId() == crystaljewelscroll) | |
1252 | + { | |
1253 | + if (item.getEnchantLevel() >= Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.size()) | |
1254 | + { | |
1255 | + chance = Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.get(Integer.valueOf(Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.size())).intValue(); | |
1256 | + } | |
1257 | + else | |
1258 | + { | |
1259 | + chance = Config.CRYSTAL_JEWELRY_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1260 | + } | |
1261 | + minEnchantLevel = Config.CRYSTAL_ENCHANT_MIN; | |
1262 | + maxEnchantLevel = Config.CRYSTAL_ENCHANT_JEWELRY_MAX; | |
1263 | + | |
1264 | + break; | |
1265 | + } | |
1266 | + } | |
1267 | + } | |
1268 | + else if (donatorScroll) | |
1269 | + { | |
1270 | + for (int donatorjewelscroll : DONATOR_ARMOR_SCROLL) | |
1271 | + { | |
1272 | + if (scroll.getItemId() == donatorjewelscroll) | |
1273 | + { | |
1274 | + if (item.getEnchantLevel() >= Config.DONATOR_JEWELRY_ENCHANT_LEVEL.size()) | |
1275 | + { | |
1276 | + chance = Config.DONATOR_JEWELRY_ENCHANT_LEVEL.get(Integer.valueOf(Config.DONATOR_JEWELRY_ENCHANT_LEVEL.size())).intValue(); | |
1277 | + } | |
1278 | + else | |
1279 | + { | |
1280 | + chance = Config.DONATOR_JEWELRY_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1281 | + } | |
1282 | + minEnchantLevel = Config.DONATOR_ENCHANT_MIN; | |
1283 | + maxEnchantLevel = Config.DONATOR_ENCHANT_JEWELRY_MAX; | |
1284 | + break; | |
1285 | + } | |
1286 | + } | |
1287 | + } | |
1288 | + else | |
1289 | + { | |
1290 | + for (int normaljewelscroll : NORMAL_ARMOR_SCROLLS) | |
1291 | + { | |
1292 | + if (scroll.getItemId() == normaljewelscroll) | |
1293 | + { | |
1294 | + if (item.getEnchantLevel() >= Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size()) | |
1295 | + { | |
1296 | + chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(Integer.valueOf(Config.NORMAL_JEWELRY_ENCHANT_LEVEL.size())).intValue(); | |
1297 | + } | |
1298 | + else | |
1299 | + { | |
1300 | + chance = Config.NORMAL_JEWELRY_ENCHANT_LEVEL.get(Integer.valueOf(item.getEnchantLevel() + 1)).intValue(); | |
1301 | + } | |
1302 | + maxEnchantLevel = Config.ENCHANT_JEWELRY_MAX; | |
1303 | + break; | |
1304 | + } | |
1305 | + } | |
1306 | + } | |
1307 | + } | |
1308 | + if (((maxEnchantLevel != 0) && (item.getEnchantLevel() >= maxEnchantLevel)) || (item.getEnchantLevel() < minEnchantLevel) || (item.getEnchantLevel() >= nextEnchantLevel)) | |
1309 | + { | |
1310 | + activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION); | |
1311 | + return; | |
1312 | + } | |
1313 | + if (Config.SCROLL_STACKABLE) | |
1314 | + { | |
1315 | + scroll = activeChar.getInventory().destroyItem("Enchant", scroll.getObjectId(), 1, activeChar, item); | |
1316 | + } | |
1317 | + else | |
1318 | + { | |
1319 | + scroll = activeChar.getInventory().destroyItem("Enchant", scroll, activeChar, item); | |
1320 | + } | |
1321 | + if (scroll == null) | |
1322 | + { | |
1323 | + activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS); | |
1324 | + return; | |
1325 | + } | |
1326 | + if ((item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX) || ((item.getItem().getBodyPart() == 32768) && (item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX_FULL))) | |
1327 | + { | |
1328 | + chance = 100; | |
1329 | + } | |
1330 | + int rndValue = Rnd.get(100); | |
1331 | + | |
1332 | + Object aChance = item.fireEvent("calcEnchantChance", new Object[chance]); | |
1333 | + if (aChance != null) | |
1334 | + { | |
1335 | + chance = ((Integer) aChance).intValue(); | |
1336 | + } | |
1337 | + synchronized (item) | |
1338 | + { | |
1339 | + if (rndValue < chance) | |
1340 | + { | |
1341 | + if (item.getOwnerId() != activeChar.getObjectId()) | |
1342 | + { | |
1343 | + activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION); | |
1344 | + return; | |
1345 | + } | |
1346 | + if ((item.getLocation() != ItemLocation.INVENTORY) && (item.getLocation() != ItemLocation.PAPERDOLL)) | |
1347 | + { | |
1348 | + activeChar.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION); | |
1349 | + return; | |
1350 | + } | |
1351 | + if (item.getEnchantLevel() == 0) | |
1352 | + { | |
1353 | + SystemMessage sm = new SystemMessage(SystemMessageId.S1_SUCCESSFULLY_ENCHANTED); | |
1354 | + sm.addItemName(item.getItemId()); | |
1355 | + activeChar.sendPacket(sm); | |
1356 | + } | |
1357 | + else | |
1358 | + { | |
1359 | + SystemMessage sm = new SystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED); | |
1360 | + sm.addNumber(item.getEnchantLevel()); | |
1361 | + sm.addItemName(item.getItemId()); | |
1362 | + activeChar.sendPacket(sm); | |
1363 | + | |
1364 | + } | |
1365 | + item.setEnchantLevel(item.getEnchantLevel() + 1); | |
1366 | + item.updateDatabase(); | |
1367 | + } | |
1368 | + else | |
1369 | + { | |
1370 | + if (crystalScroll) | |
1371 | + { | |
1372 | + SystemMessage sm = SystemMessage.sendString("Failed in Crystal Enchant. The enchant value of the item become " + Config.CRYSTAL_ENCHANT_MIN); | |
1373 | + activeChar.sendPacket(sm); | |
1374 | + } | |
1375 | + else if (blessedScroll) | |
1376 | + { | |
1377 | + SystemMessage sm = new SystemMessage(SystemMessageId.BLESSED_ENCHANT_FAILED); | |
1378 | + activeChar.sendPacket(sm); | |
1379 | + } | |
1380 | + else if (donatorScroll) | |
1381 | + { | |
1382 | + if (Config.DONATOR_DECREASE_ENCHANT) | |
1383 | + { | |
1384 | + if (item.getEnchantLevel() <= Config.DONATOR_ENCHANT_MIN) | |
1385 | + { | |
1386 | + SystemMessage sm1 = SystemMessage.sendString("Failed Golden Enchant."); | |
1387 | + activeChar.sendPacket(sm1); | |
1388 | + } | |
1389 | + else | |
1390 | + { | |
1391 | + SystemMessage sm1 = SystemMessage.sendString("Failed Golden Enchant. His equipment had 1 reduced enchant."); | |
1392 | + activeChar.sendPacket(sm1); | |
1393 | + } | |
1394 | + } | |
1395 | + else | |
1396 | + { | |
1397 | + SystemMessage sm1 = SystemMessage.sendString("Failed Golden Enchant."); | |
1398 | + activeChar.sendPacket(sm1); | |
1399 | + } | |
1400 | + } | |
1401 | + else if (item.getEnchantLevel() > 0) | |
1402 | + { | |
1403 | + SystemMessage sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_S2_EVAPORATED); | |
1404 | + sm.addNumber(item.getEnchantLevel()); | |
1405 | + sm.addItemName(item.getItemId()); | |
1406 | + activeChar.sendPacket(sm); | |
1407 | + } | |
1408 | + else | |
1409 | + { | |
1410 | + SystemMessage sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_EVAPORATED); | |
1411 | + sm.addItemName(item.getItemId()); | |
1412 | + activeChar.sendPacket(sm); | |
1413 | + } | |
1414 | + if ((!blessedScroll) && (!crystalScroll) && (!donatorScroll)) | |
1415 | + { | |
1416 | + if (item.getEnchantLevel() > 0) | |
1417 | + { | |
1418 | + SystemMessage sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED); | |
1419 | + sm.addNumber(item.getEnchantLevel()); | |
1420 | + sm.addItemName(item.getItemId()); | |
1421 | + activeChar.sendPacket(sm); | |
1422 | + } | |
1423 | + else | |
1424 | + { | |
1425 | + SystemMessage sm = new SystemMessage(SystemMessageId.S1_DISARMED); | |
1426 | + sm.addItemName(item.getItemId()); | |
1427 | + activeChar.sendPacket(sm); | |
1428 | + } | |
1429 | + if (item.isEquipped()) | |
1430 | + { | |
1431 | + if (item.isAugmented()) | |
1432 | + { | |
1433 | + item.getAugmentation().removeBonus(activeChar); | |
1434 | + } | |
1435 | + ItemInstance[] unequiped = activeChar.getInventory().unequipItemInSlotAndRecord(item.getEquipSlot()); | |
1436 | + InventoryUpdate iu = new InventoryUpdate(); | |
1437 | + for (ItemInstance element : unequiped) | |
1438 | + { | |
1439 | + iu.addModifiedItem(element); | |
1440 | + } | |
1441 | + activeChar.sendPacket(iu); | |
1442 | + | |
1443 | + activeChar.broadcastUserInfo(); | |
1444 | + } | |
1445 | + int count = item.getCrystalCount() - (item.getItem().getCrystalCount() + 1) / 2; | |
1446 | + if (count < 1) | |
1447 | + { | |
1448 | + count = 1; | |
1449 | + } | |
1450 | + if (item.fireEvent("enchantFail", new Object[0]) != null) | |
1451 | + { | |
1452 | + return; | |
1453 | + } | |
1454 | + ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null); | |
1455 | + if (destroyItem == null) | |
1456 | + { | |
1457 | + return; | |
1458 | + } | |
1459 | + ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem); | |
1460 | + | |
1461 | + SystemMessage sm = new SystemMessage(SystemMessageId.EARNED_S2_S1_S); | |
1462 | + sm.addItemName(crystals.getItemId()); | |
1463 | + sm.addNumber(count); | |
1464 | + activeChar.sendPacket(sm); | |
1465 | + | |
1466 | + activeChar.sendPacket(new ItemList(activeChar, true)); | |
1467 | + | |
1468 | + StatusUpdate su = new StatusUpdate(activeChar); | |
1469 | + su.addAttribute(StatusType.CUR_LOAD, activeChar.getCurrentWeight()); | |
1470 | + activeChar.sendPacket(su); | |
1471 | + | |
1472 | + activeChar.broadcastUserInfo(); | |
1473 | + | |
1474 | + World world = World.getInstance(); | |
1475 | + world.removeObject(destroyItem); | |
1476 | + } | |
1477 | + else if (blessedScroll) | |
1478 | + { | |
1479 | + item.setEnchantLevel(Config.BREAK_ENCHANT); | |
1480 | + item.updateDatabase(); | |
1481 | + } | |
1482 | + else if (crystalScroll) | |
1483 | + { | |
1484 | + item.setEnchantLevel(Config.CRYSTAL_ENCHANT_MIN); | |
1485 | + item.updateDatabase(); | |
1486 | + } | |
1487 | + else if (donatorScroll) | |
1488 | + { | |
1489 | + if (Config.DONATOR_DECREASE_ENCHANT) | |
1490 | + { | |
1491 | + if (item.getEnchantLevel() <= Config.DONATOR_ENCHANT_MIN) | |
1492 | + { | |
1493 | + item.setEnchantLevel(item.getEnchantLevel()); | |
1494 | + } | |
1495 | + else | |
1496 | + { | |
1497 | + item.setEnchantLevel(item.getEnchantLevel() - 1); | |
1498 | + } | |
1499 | + } | |
1500 | + else | |
1501 | + { | |
1502 | + item.setEnchantLevel(item.getEnchantLevel()); | |
1503 | + } | |
1504 | + item.updateDatabase(); | |
1505 | + } | |
1506 | + } | |
1507 | + } | |
1508 | + | |
1509 | + StatusUpdate su = new StatusUpdate(activeChar); | |
1510 | + su.addAttribute(StatusType.CUR_LOAD, activeChar.getCurrentWeight()); | |
1511 | + activeChar.sendPacket(su); | |
1512 | + su = null; | |
1513 | + | |
1514 | + activeChar.sendPacket(new EnchantResult(item.getEnchantLevel())); | |
1515 | + activeChar.sendPacket(new ItemList(activeChar, false)); | |
1516 | + activeChar.broadcastUserInfo(); | |
1517 | + activeChar.setActiveEnchantItem(null); | |
1518 | + } | |
1519 | + | |
1520 | + @Override | |
1521 | + public String getType() | |
1522 | + { | |
1523 | + return "[C] 58 RequestEnchantItem"; | |
1524 | + } | |
1525 | +} | |
1526 | ||
1527 | diff --git a/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/serverpackets/EnchantResult.java b/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/serverpackets/EnchantResult.java | |
1528 | index 4a90ea6..32bc359 100644 | |
1529 | --- a/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/serverpackets/EnchantResult.java | |
1530 | +++ b/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/serverpackets/EnchantResult.java | |
1531 | @@ -10,7 +10,7 @@ | |
1532 | ||
1533 | private final int _result; | |
1534 | ||
1535 | - private EnchantResult(int result) | |
1536 | + public EnchantResult(int result) | |
1537 | { | |
1538 | _result = result; | |
1539 | } | |
1540 | diff --git a/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/serverpackets/SystemMessage.java b/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/serverpackets/SystemMessage.java | |
1541 | index f4ad4e9..a2cfb75 100644 | |
1542 | --- a/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/serverpackets/SystemMessage.java | |
1543 | +++ b/trunk_398 Limpa/java/net/sf/l2j/gameserver/network/serverpackets/SystemMessage.java | |
1544 | @@ -28,7 +28,7 @@ | |
1545 | private SMParam[] _params; | |
1546 | private int _paramIndex; | |
1547 | ||
1548 | - private SystemMessage(final SystemMessageId smId) | |
1549 | + public SystemMessage(final SystemMessageId smId) | |
1550 | { | |
1551 | final int paramCount = smId.getParamCount(); | |
1552 | _smId = smId; | |
1553 |