Просмотр исходного кода

* Implemented Mora Enchants.
* Updated Episode 14.1 item database entries.
* Removed party size check for Malangdo Culverts, as there is none on official servers.
* Added THA map_msg translation - thanks, boneskung, for translating!
* Updated IDN map_msg translation. (credits: Cydh)
* Code by Lighta:
-- Updated configure, add enable-warn [yes/no] and remove wno-parentheses, wno-unused from default compilation
-- Cleanup small warnings
* Crash fix for bugreport:7688 (code by Akinari).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17342 54d463be-8e91-2dee-dedb-b68131a5f0ec

euphyy 12 лет назад
Родитель
Сommit
3a234d787a

+ 0 - 0
conf/msg_conf/import-tmpl/map_msg_tha_conf.txt


+ 1 - 1
conf/msg_conf/map_msg.conf

@@ -1505,7 +1505,7 @@
 1475: ---- My Channels ----
 1476: You have not joined any channels.
 
-//Reload packet database
+// @reloadpacketdb
 1477: Packet database has been reloaded.
 
 //Custom translations

+ 35 - 32
conf/msg_conf/map_msg_idn.conf

@@ -33,7 +33,7 @@
 12: Job telah diubah.
 13: Kamu mati.
 14: Karakter telah dibunuh.
-15: Player telah warp (pesan telah dikirim ke pemain juga).
+15: Pemain telah warp (pesan telah dikirim ke pemain juga).
 16: Kamu telah dihidupkan!
 17: HP dan SP telah dipulihkan.
 18: Item telah dibuat.
@@ -73,8 +73,8 @@
 52: Opsi ini tidak dapat digunakan dalam mode PK.
 53: '%s' status:
 54: Tidak ada pemain yang ditemukan di map '%s'.
-55: 1 player ditemukan di map '%s'.
-56: %d player ditemukan di map '%s'.
+55: 1 pemain ditemukan di map '%s'.
+56: %d pemain ditemukan di map '%s'.
 57: Save point karakter telah diubah.
 58: Opsi pada karakter telah diubah.
 59: Mode malam telah aktif.
@@ -99,7 +99,7 @@
 78: %s: %d
 79: Terdapat %d hal di atas.
 80: Harap berikan nama tampilan atau nama/id monster.
-81: Level GM kamu tidak diizinkan untuk untuk melakukan aksi ini pada player tertentu.
+81: Level GM kamu tidak diizinkan untuk untuk melakukan aksi ini pada pemain tertentu.
 82: Harap berikan nama atau nomor dari daftar yang disediakan:
 83: Monster 'Emperium' tidak dapat dipanggil.
 84: Semua status telah diubah!
@@ -203,7 +203,7 @@
 186: Tingkat kelaparan peliharaan sudah maksimal.
 187: Kamu bisa mengubah nama peliharaanmu.
 188: Kamu sudah mengubah nama peliharaanmu.
-189: Sekarang player ini bisa mengubah nama peliharaannya.
+189: Sekarang pemain ini bisa mengubah nama peliharaannya.
 190: Pemain ini sudah pernah mengubah nama peliharaannya.
 191: Maaf, pemain ini tidak mempunyai peliharaan.
 192: Job karakter tersebut tidak bisa diubah.
@@ -216,8 +216,8 @@
 199: Pemain ini sudah memiliki skill tersebut.
 200: Pemain ini sudah memiliki skill quest tersebut.
 201: Kamu belum memiliki skill quest ini.
-202: Player ini sudah menghapus skill.
-203: Player ini tidak mempunyai skill quest.
+202: Pemain ini sudah menghapus skill.
+203: Pemain ini tidak mempunyai skill quest.
 204: Kamu tidak membuka toko di sini.
 205: Mungkin maksudnya: 
 206: '%s' skill poin sudah direset.
@@ -229,9 +229,9 @@
 212: Tidak bisa menggunakan tunggangan saat berubah wujud.
 213: Job ini tidak bisa menggunakan Peco Peco.
 214: Kamu sudah melepaskan Peco Peco.
-215: Player ini tidak bisa menggunakan Peco Peco karena sedang berubah wujud.
-216: Player ini sudah menggunakan Peco Peco.
-217: Player ini tidak bisa menggunakan Peco Peco karena jobnya tidak mendukung.
+215: Pemain ini tidak bisa menggunakan Peco Peco karena sedang berubah wujud.
+216: Pemain ini sudah menggunakan Peco Peco.
+217: Pemain ini tidak bisa menggunakan Peco Peco karena jobnya tidak mendukung.
 218: Peco Peco dari pemain ini sudah dilepaskan.
 219: %d hari
 220: %d hari
@@ -305,8 +305,8 @@
 286: Pengaturan tidak jadi diubah.
 287: Kamu tidak bisa mengganti ketua party di map ini.
 288: Sekarang kamu tidak bisa dibunuh.
-289: Sekarang player ini bisa dibunuh.
-290: Player ini tidak bisa dibunuh.
+289: Sekarang pemain ini bisa dibunuh.
+290: Pemain ini tidak bisa dibunuh.
 291: Efek cuaca akan hilang saat warp/refresh.
 292: 'Kondisi pembunuh' diatur ulang.
 // Guild Castles Number
@@ -449,11 +449,11 @@
 463: Pengaturan bahasa telah dimuat ulang.
 464: ---- Bahasa yang tersedia:
 
-480: ----- Player yang ada di Map -----
-481: Player '%s' (sesi #%d) | Lokasi: %d,%d
-482: ----- NPC yang ada di Map -----
-483: ----- Ruang Chat yang ada di Map -----
-484: Chat: %s | Player: %s | Lokasi: %d %d
+480: ----- Pemain yang berada di Map -----
+481: Pemain '%s' (sesi #%d) | Lokasi: %d,%d
+482: ----- NPC yang berada di Map -----
+483: ----- Ruang Chat yang berada di Map -----
+484: Chat: %s | Pemain: %s | Lokasi: %d %d
 485:    User: %d/%d | Password: %s | Publik: %s
 486: Ya
 487: Tidak
@@ -484,22 +484,22 @@
 410: %d cash poin sudah dipakai. Total %d poin.
 411: %d kafra poin sudah dipakai. Total %d poin.
 
-507: Player ini sudah dihukum selama %d menit.
-508: Player ini tidak dapat dihukum (Hukuman dinonaktifkan).
+507: Pemain ini sudah dihukum selama %d menit.
+508: Pemain ini tidak dapat dihukum (Hukuman dinonaktifkan).
 //509 kosong
 
 // Sistem surat (e-mail)
 510: Kamu memiliki %d pesan baru (ada %d pesan yang belum dibaca)
 
 // Pesan yang berhubungan dengan deteksi Bot (Saat ini belum diimplementasikan)
-535: Kemungkinan BOT (99%%) atau client yang digunakan sudah dimodifikasi '%s' (akun: %d, char_id: %d). Player ini bisa melihat nama kamu saat kamu sedang tidak terlihat.
-536: Karakter '%s' (akun: %d) sedang mencoba menggunakan bot (Player ini sedang mencoba mendeteksi player umpan).
-537: Karakter '%s' (akun: %d) sedang mencoba menggunakan bot (Player ini sedang mencoba mendeteksi monster umpan).
+535: Kemungkinan BOT (99%%) atau client yang digunakan sudah dimodifikasi '%s' (akun: %d, char_id: %d). Pemain ini bisa melihat nama kamu saat kamu sedang tidak terlihat.
+536: Karakter '%s' (akun: %d) sedang mencoba menggunakan bot (Pemain ini sedang mencoba mendeteksi player umpan).
+537: Karakter '%s' (akun: %d) sedang mencoba menggunakan bot (Pemain ini sedang mencoba mendeteksi monster umpan).
 
 // Pesan tentang pelanggaran transaksi.
 538: Hack pada transaksi: Karakter '%s' (akun: %d) sedang mencoba mentransaksikan item lebih dari yang dia punya.
-539: Player ini memiliki %d jenis item (id: %d), dan sedang mencoba untuk mentransaksikan %d item.
-540: Player ini sudah diblok.
+539: Pemain ini memiliki %d jenis item (id: %d), dan sedang mencoba untuk mentransaksikan %d item.
+540: Pemain ini sudah diblok.
 
 // Pesan tentang item langka yang berhasil muncul/dicuri menggunakan Steal.
 541: '%s' mendapatkan %s's %s (Kemungkinan: %0.02f%%)
@@ -638,7 +638,7 @@
 663: Duel: Tidak dapat menggunakan item ini saat duel.
 664: Kamu tidak dapat menggunakan perintah ini ketika mati.
 665: TIdak daapt membuat ruang chat di area ini.
-666: Pet tidak diperbolehkan di Guild Wars.
+666: Peliharaan tidak diperbolehkan di Guild Wars.
 667: Kamu tidak mati.
 668: Posisi memomu saat ini adalah:
 669: Kamu menghancurkan senajta lawan.
@@ -690,10 +690,10 @@
 909: Harap masukkan nama map (Penggunaan: @warp/@rura/@mapmove <nama map> <x> <y>).
 
 // @where
-910: Harap masukkan nama player (Penggunaan: @where <nama karakter>).
+910: Harap masukkan nama pemain (Penggunaan: @where <nama karakter>).
 
 // @jumpto
-911: Harap masukkan nama player (Penggunaan: @jumpto/@warpto/@goto <nama karakter/ID>).
+911: Harap masukkan nama pemain (Penggunaan: @jumpto/@warpto/@goto <nama karakter/ID>).
 
 // @who
 912: (CID:%d/AID:%d) 
@@ -846,7 +846,7 @@
 
 // @recallall / @guildrecall / @partyrecall
 1032: Kamu tidak diperbolehkan untuk memindahkan orang lain dari map ini.
-1033: Karena kamu tidak diperbolehkan untuk memindahkan orang dari beberapa map tertentu, %d player tidak bisa dipindahkan.
+1033: Karena kamu tidak diperbolehkan untuk memindahkan orang dari beberapa map tertentu, %d pemain tidak bisa dipindahkan.
 
 // @guildrecall
 1034: Harap masukkan nama guild/ID. (Penggunaan: @guildrecall <nama guild/ID>).
@@ -971,7 +971,7 @@
 // @jailfor
 1136: Waktu yang digunakan salah.
 1137: Kamu sekarang 
-1138: Player ini sekarang 
+1138: Pemain ini sekarang 
 
 // @jailtime
 1139: Kamu tidak sedang dipenjara.
@@ -1343,8 +1343,8 @@
 1345: kepala bagian tengah, 
 1346: kepala bagian bawah/tengah, 
 1347: kepala bagian bawah/tengah/atas, 
-1348:  -> (telur pet, id pet: %u, sudah diberi nama)
-1349:  -> (telur pet, id pet: %u, belum diberi nama)
+1348:  -> (telur peliharaan, id peliharaan: %u, sudah diberi nama)
+1349:  -> (telur peliharaan, id peliharaan: %u, belum diberi nama)
 1350:  -> (item dibuat, id pembuat: %u, %d star crumb, elemen %d)
 1351:  -> (memproduksi item, id pembuat: %u)
 1352:  -> (kartu: 
@@ -1402,7 +1402,7 @@
 
 // Pesan-pesan perintah umum
 1388: Charcommand gagal (penggunaan: %c<perintah> <nama karakter> <parameter>).
-1389: %s gagal. Player tidak ditemukan.
+1389: %s gagal. Pemain tidak ditemukan.
 
 // @cart
 1390: Gerobak tidak diketahui (penggunaan: %s <0-%d>).
@@ -1503,5 +1503,8 @@
 1475: ---- Channel yang diikuti ----
 1476: Kamu tidak bergabung ke channel manapun saat ini.
 
+// @reloadpacketdb
+1477: Database paket telah dimuat ulang.
+
 //Bila ada terjemahan lain
 //import: conf/msg_conf/import/map_msg_idn_conf.txt

+ 1512 - 0
conf/msg_conf/map_msg_tha.conf

@@ -0,0 +1,1512 @@
+// rAthena map_msg_tha.conf
+// Message Configuration
+// For translation, just change msg here (second line), no need to modify source code,
+// or alternatively, use conf/msg_conf/import/map_msg_tha_conf.txt
+// Format:
+// // English message
+// msg_number: translated message
+
+//   0-410: reserved for GM commands
+// 500-900 reserved for others
+// 900-1300: @atcommand
+
+// To disable a string (%s) field, make it's max length 0:
+// eg:
+// 270: *%s %s* (@me format)
+// 270: *%.0s%s* (remove the character's name from it)
+
+// Messages of GM commands
+// -----------------------
+
+0: เคลื่อนย้ายเรียบร้อย.
+1: ไม่พบแผนที่ดังกล่าว.
+2: พิกัดผิดพลาด, ทำการสุ่มพิกัดให้.
+3: ไม่พบตัวละครดังกล่าว.
+4: กระโดดไปยัง %s
+5: กระโดดไปยังพิกัด %d %d
+6: จุดเซฟของคุณได้ถูกบันทึกเรียบร้อย.
+7: เคลื่อนที่ไปยังจุดเซฟ.
+8: เปลี่ยนความเร็วในการเคลื่อนที่เรียบร้อย.
+9: เปลี่ยน Options เรียบร้อยแล้ว.
+10: ล่องหน: ปิด
+11: ล่องหน: เปิด
+12: เปลี่ยนอาชีพของคุณเรียบร้อย.
+13: คุณตาย.
+14: ตัวละครถูกสังหารแล้ว.
+15: วาปผู้เล่นเรียบร้อยแล้ว (ข้อความนี้ได้ส่งถึงผู้เล่นด้วย).
+16: คุณได้ฟื้นขึ้นมาแล้ว!
+17: ฟื้นฟู HP, SP เรียบร้อย.
+18: สร้าง Item เรียบร้อย.
+19: ไม่พบ Item ID หรือ ชื่อ Item.
+20: Item ในตัวละครทั้งหมดถูกลบออกเรียบร้อย.
+21: Base level เพิ่มขึ้น.
+22: Base level ลดลง.
+23: Job level ไม่สามารถเพิ่มไปได้มากกว่านี้แล้ว.
+24: Job level เพิ่มขึ้น.
+25: Job level ลดลง.
+26: Help commands:
+27: คำสั่ง help ไม่สามารถใช้ได้.
+28: ไม่พบผู้เล่น.
+29: พบผู้เล่น 1 คน.
+30: พบผู้เล่น %d คน.
+31: PvP: ปิด.
+32: PvP: เปิด.
+33: GvG: ปิด.
+34: GvG: เปิด.
+35: คุณไม่สามารถใช้คำสั่งนี้ด้วย class นี้ได้.
+36: การเปลี่ยนแปลงรูปร่างเรียบร้อย.
+37: ระบุจำนวนไม่ถูกต้องตามที่กำหนด.
+38: ไม่พบ หมายเลขสถานที่ หรือ ชื่อสถานที่.
+39: เรียก monsters เรียบร้อยแล้ว!
+40: ไม่พบ monster ID หรือ ชื่อ monster.
+41: ไม่สามารถลดจำนวนได้มากกว่านี้.
+42: Stat เปลี่ยนแปลงเรียบร้อย.
+43: คุณไม่ได้อยู่ใน Guild.
+44: คุณไม่ใช่ หัวหน้า Guild.
+45: เปลี่ยน Guild level ล้มเหลว.
+46: %s ถูกเรียกมาเรียยร้อยแล้ว!
+47: Base level ไม่สามารถเพิ่มไปได้มากกว่านี้แล้ว.
+48: อาชีพตัวละคร เปลี่ยนแปลงเรียบร้อย.
+49: job ID ผิดพลาด.
+50: คุณได้รับพลัง GM เรียบร้อยแล้ว.
+51: ชุบชีวิตตัวละครเรียบร้อย.
+52: Option นี้ไม่สามารถใช้ได้ในโหมด PK.
+53: สถานะของ '%s':
+54: ไม่พบผู้เล่นในแผนที่ '%s'.
+55: พบผู้เล่น 1 คนในแผนที่ '%s'.
+56: พบผู้เล่น %d คนในแผนที่ '%s'.
+57: ตัวละคร เปลี่ยน บันทึกจุดเซฟใหม่ เรียบร้อย.
+58: ตัวละคร เปลี่ยน Option ใหม่ เรียบร้อย.
+59: โหมดเวลากลางคืน ทำงานเรียบร้อย.
+61: ข้อความอันศักดิ์สิทธิ์ ได้พิพากษาแล้ว.
+60: โหมดเวลากลางวัน ทำงานเรียบร้อย.
+62: ได้ตัดสินคำพิพากษาแก่มวลมนุษย์.
+63: ได้รับความเมตตา.
+64: ได้แสดงความเมตตาแก่มวลมนุษย์.
+65: ตัวละคร Base level เพิ่มขึ้น.
+66: ตัวละคร Base level ลดลง.
+67: ตัวละคร Job level ไม่สามารถเพิ่มไปได้มากกว่านี้แล้ว.
+68: ตัวละคร Job level เพิ่มขึ้น.
+69: ตัวละคร Job level ลดลง.
+70: คุณได้เรียนรู้ Skill เรียบร้อยแล้ว.
+71: คุณได้ลืม Skill เรียบร้อยแล้ว.
+72: War of Emperium ได้เริ่มต้นขึ้น.
+73: War of Emperium กำลังทำงานอยู่ในขณะนี้.
+74: War of Emperium ได้จบลง.
+75: War of Emperium ไม่ได้ทำงานอยู่ในขณะนี้.
+76: ทุก Skill ได้ถูกเพิ่มบนตัวละครคุณเรียบร้อยแล้ว.
+77: ผลลัพธ์การค้นหาโดยอ้างอิงจาก '%s' (ชื่อ: รหัส):
+78: %s: %d
+79: ผลลัพธ์ %d ข้างต้น.
+80: กรุณาระบุชื่อ Monster หรือ รหัส Monster.
+81: ระดับ GM ของคุณ ไม่ได้รับอนุญาตให้คุณสามารถดำเนินการกับตัวละครที่ระบุได้.
+82: โปรดระบุชื่อหรือหมายเลขสถานที่ในรายการที่ให้ไว้:
+83: ไม่สามารถเรียก Monster 'Emperium' ได้.
+84: Stat ทั้งหมด เปลี่ยนแปลงเรียบร้อย!
+85: ระบุเวลาในการ ban ไม่ถูกต้อง.
+86: ขออภัย, ชื่อตัวละครต้องยาวอย่างน้อย 4 ตัวอักษร.
+87: ขออภัย, ชื่อตัวละครไม่สามารถยาวเกิน 23 ตัวอักษร.
+88: กำลังส่งคำขอไปยัง login server...
+89: โหมดเวลากลางคืน ถูกเปิดไว้อยู่แล้ว.
+90: โหมดเวลากลางวัน ถูกเปิดไว้อยู่แล้ว.
+91: ตัวละคร Base level ไม่สามารถเพิ่มไปได้มากกว่านี้แล้ว.
+92: ตัวละครทั้งหมดถูกเรียกมาเรียบร้อยแล้ว!
+93: ตัวละครที่ออนไลน์ทั้งหมดในก guild %s ได้ถูกเรียกมายังตำแหน่งของคุณเรียบร้อยแล้ว.
+94: ชื่อ/ID ไม่ถูกต้อง หรือ ไม่มีใครภายใน guild ที่ระบุ กำลังออนไลน์อยู่.
+95: ตัวละครที่ออนไลน์ทั้งหมดใน party %s ได้ถูกเรียกมายังตำแหน่งของคุณเรียบร้อยแล้ว.
+94: ชื่อ/ID ไม่ถูกต้อง หรือ ไม่มีใครภายใน party ที่ระบุ กำลังออนไลน์อยู่.
+97: ฐานข้อมูล Item ได้ทำการโหลดใหม่เรียบร้อย.
+98: ฐานข้อมูล Monster ได้ทำการโหลดใหม่เรียบร้อย.
+99: ฐานข้อมูล Skill ได้ทำการโหลดใหม่เรียบร้อย.
+100: Scripts ได้ทำการโหลดใหม่เรียบร้อย.
+101: Login-server ได้ถามว่าจะโหลดบัญชี GM และระดับของพวกเขา.
+102: คุณได้ขี่ Peco Peco เรียบร้อย.
+103: ไม่สอดแนม guild %s อีกต่อไป.
+104: กำลังสอดแนม guild %s.
+105: ไม่สอดแนม party %s อีกต่อไป.
+106: กำลังสอดแนม party %s.
+107: Item ทั้งหมดได้ถูกซ่อมเรียบร้อย.
+108: ไม่พบ item ที่ต้องซ่อม.
+109: ผู้เล่นได้ถูกสังหารเรียบร้อย!
+110: NPC ได้ถูกเปิด.
+111: ไม่พบ NPC ดังกล่าว.
+112: NPC ได้ถูกปิด.
+113: Item จำนวน %d ea ได้ถูกลบออกโดย GM.
+114: Item จำนวน %d ea ได้ถูกลบออกจากตัวละครดังกล่าว.
+115: Item จำนวน %d ea ได้ถูกลบออก. ซึ่งผู้เล่นดังกล่าวมีเพียง %d ea จากจำนวนที่ต้องการลบ %d ea.
+116: ตัวละครดังกล่าวไม่มี Item ที่ระบุ.
+117: คุณได้ถูกขังคุกโดย GM.
+118: ผู้เล่นถูกวาปไปยังคุกเรียบร้อย.
+119: ผู้เล่นดังกล่าวไม่ได้ถูกขังคุก.
+120: GM ได้ปล่อยตัวท่านออกจากคุก.
+121: ผู้เล่นได้รับการปล่อยตัวจากคุกเรียบร้อย.
+122: ปลอมตัว เรียบร้อย.
+123: ชื่อ/ID Monster/NPC ที่ระบุไม่ถูกต้อง.
+124: ยกเลิกการปลอมตัว เรียบร้อย.
+125: คุณไม่ได้ปลอมตัวอยู่.
+//Clone Messages
+126: ไม่สามารถที่จะ clone ตัวละครที่มีระดับ GM สูงกว่าตัวละครคุณได้.
+127: คุณได้สร้าง slave clone ถึงจำนวนสูงสุดแล้ว.
+128: Evil clone ได้กำเนิดเรียบร้อย.
+129: ไม่สามารถที่จะกำเนิด evil clone ได้.
+130: Clone ได้กำเนิดเรียบร้อย.
+131: ไม่สามารถที่จะกำเนิด spawn clone ได้.
+132: Slave clone ได้กำเนิดเรียบร้อย.
+133: ไม่สามารถที่จะกำเนิด spawn slave clone ได้.
+//Messages 134-139 are no longer used, available for future reuse (preferrable for more variations of @clone)
+140: ตัวละครดังกล่าว ปลอมตัว เรียบร้อย.
+141: ตัวละครดังกล่าว ยกเลิกการปลอมตัว เรียบร้อย.
+142: ตัวละครดังกล่าว ไม่ได้ปลอมตัวอยู่.
+143: คำสั่งได้ถูกปิดการใช้งานบนแผนที่นี้.
+144: e-mail ไม่ถูกต้อง. ถูกคุณได้ใช้ e-mail ค่าตั้งต้นแล้ว, ให้พิมพ์ a@a.com.
+145: e-mail ใหม่ไม่ถูกต้อง. โปรดระบุ e-mail จริง.
+146: e-mail ใหม่ต้องเป็น e-mail จริง.
+147: e-mail ใหม่ต้องแตกต่างจาก e-mail เดิม.
+148: ข้อมูลกำลังส่งไปยัง login-server ผ่าน char-server.
+149: ไม่สามารถเพิ่มจำนวนได้มากกว่านี้.
+150: ไม่พบ GM.
+151: พบ GM 1 คน.
+152: พบ GM %d คน.
+153: %s เป็นคำสั่งที่ไม่รู้จัก.
+154: %s ล้มเหลว.
+155: คุณไม่สามารถเปลี่ยนอาชีพได้.
+156: HP, SP เปลี่ยนแปลง.
+157: ฟื้นฟู HP, SP ไปเรียบร้อยแล้ว.
+158: Base level ไม่สามารถลดได้น้อยกว่านี้แล้ว.
+159: Job level ไม่สามารถลดได้น้อยกว่านี้แล้ว.
+160: PvP ได้ปิดไว้อยู่แล้ว.
+161: PvP ได้เปิดไว้อยู่แล้ว.
+162: GvG ได้ปิดไว้อยู่แล้ว.
+163: GvG ได้เปิดไว้อยู่แล้ว.
+164: จุดบันทึกที่ #%d ไม่มีอยู่.
+165: Monster ทั้งหมดถูกกำจัดเรียบร้อย!
+166: ไม่มี Item ที่ได้รับการอัพเกรต.
+167: มี 1 Item ที่ได้รับการอัพเกรต.
+168: มี %d Item ที่ได้รับการอัพเกรต.
+169: Item (%d: '%s') นี้ไม่ใช่อุปกรณ์สวมใส่.
+170: ไม่พบ Item ชิ้นนี้ในฐานข้อมูล.
+171: %d - ว่าง
+//172: You replace previous memo position %d - %s (%d,%d).
+//173: Note: you don't have the 'Warp' skill level to use it.
+174: แต้ม Stat เปลี่ยนแปลงเรียบร้อย.
+175: แต้ม Skill เปลี่ยนแปลงเรียบร้อย.
+176: จำนวนเงิน เปลี่ยนแปลงเรียบร้อย.
+177: คุณไม่สามารถลด Stat ลงไปได้มากกว่านี้.
+178: คุณไม่สามารถเพิ่ม Stat ขึ้นไปได้มากกว่านี้.
+179: เปลี่ยนแปลง Guild level เรียบร้อย.
+180: ไม่พบ ชื่อ หรือ ID ของ Monster หรือ ไข่สัตว์เลี้ยง ดังกล่าว.
+181: คุณมีสัตว์เลี้ยงอยู่แล้ว.
+182: ระดับความสนิทสนมสัตว์เลี้ยงเปลี่ยนแปลง.
+183: ระดับความสนิทสนมสัตว์เลี้ยงเต็มแล้ว.
+184: ขออภัย, แต่คุณไม่มีสัตว์เลี้ยง.
+185: ระดับความหิวของสัตว์เลี้ยงเปลี่ยนแปลง.
+186: ระดับความหิวของสัตว์เลี้ยงเต็มแล้ว.
+187: คุณสามารถเปลี่ยนชื่อสัตว์เลี้ยงของคุณได้แล้ว.
+188: คุณสามารถเปลี่ยนชื่อสัตว์เลี้ยงของคุณได้อยู่แล้ว.
+189: ตัวละครดังกล่าวสามารถเปลี่ยนชื่อสัตว์เลี้ยงได้แล้ว.
+190: ตัวละครดังกล่าวสามารถเปลี่ยนชือสัตว์เลี้ยงได้อยู่แล้ว.
+191: ขออภัย, แต่ตัวละครดังกล่าวไม่มีสัตว์เลี้ยง.
+192: ไม่สามารถเปลี่ยนอาชีพที่ระบุได้.
+193: ตัวละครดังกล่าว Base level ไม่สามารถลดได้น้อยกว่านี้แล้ว.
+194: ตัวละครดังกล่าว Job level ไม่สามารถลดได้น้อยกว่านี้แล้ว.
+195: ผู้เล่นทั้งหมดถูกเตะ!
+196: คุณได้เรียนรู้ quest skill นี้ไปเรียบร้อยแล้ว.
+197: ไม่พบ หมายเลข skill ดังกล่าว หรือ หมายเลข ดังกล่าวไม่ใช่ quest skill.
+198: ไม่พบ หมายเลข skill ดังกล่าว.
+199: ตัวละครดังกล่าวได้เรียนรู้ skill นี้ไปเรียบร้อยแล้ว.
+200: ตัวละครดังกล่าวได้เรียนรู้ quest skill นี้ไปเรียบร้อยแล้ว.
+201: คุณไม่มี quest skill ดังกล่าว.
+202: ตัวละครดังกล่าวได้ลืม Skill เรียบร้อยแล้ว.
+203: ตัวละครดังกล่าวไม่มี quest skill ดังกล่าว.
+204: คุณไม่สามารถเปิดร้านขายของได้บนพื้นที่นี้.
+205: Maybe you meant:
+206: '%s' ได้ตั้งค่า skill ใหม่.
+207: '%s' ได้ตั้งค่า stats ใหม่.
+208: '%s' ได้ตั้งค่า skill และ stat ใหม่.
+209: ตัวละครดังกล่าว แต้ม Skill เปลี่ยนแปลงเรียบร้อย.
+210: ตัวละครดังกล่าว แต้ม Stat เปลี่ยนแปลงเรียบร้อย.
+211: ตัวละครดังกล่าว จำนวนเงิน เปลี่ยนแปลงเรียบร้อย.
+212: ไม่สามารถขึ้นขี่สัตว์ขณะปลอมตัวได้.
+213: คุณไม่สามารถขึ้นขี่ Peco Peco ด้วยอาชีพที่คุณเป็นอยู่.
+214: คุณได้ปล่อย Peco Peco ไปเรียบร้อย.
+215: ตัวละครดังกล่าวไม่สามารถขึ้นขี่สัตว์ขณะปลอมตัวได้.
+216: ตัวละครดังกล่าวได้ขี่ Peco Peco เรียบร้อย.
+217: ตัวละครดังกล่าวไม่สามารถขึ้นขี่ Peco Peco ด้วยอาชีพที่เป็นอยู่.
+218: ตัวละครดังกล่าวได้ปล่อย Peco Peco ไปเรียบร้อย.
+219: %d วัน
+220: %d วัน
+221: %s %d ชั่วโมง
+222: %s %d ชั่วโมง
+223: %s %d นาที
+224: %s %d นาที
+225: %s และ %d วินาที
+226: %s และ %d วินาที
+227: การปรับเปลี่ยน Party ได้ถูกปิดการใช้งานบนแผนที่นี้.
+228: การปรับเปลี่ยน Guild ได้ถูกปิดการใช้งานบนแผนที่นี้.
+229: การเปลี่ยน effect ของคุณเรียบร้อย.
+230: เวลาเซิร์ฟเวอร์ (เวลาปกติ): %A, %B %d %Y %X.
+231: เวลาเกม: เกมอยู่ในช่วงเวลากลางวันถาวร.
+232: เวลาเกม: เกมอยู่ในช่วงเวลากลางคืนถาวร.
+233: เวลาเกม: เกมอยู่ในช่วงเวลากลางคืนไปอีก %s.
+234: เวลาเกม: หลังจากนี้, เกมจะเป็นช่วงเวลากลางวันถาวร.
+235: เวลาเกม: เกมอยู่ในช่วงเวลากลางวันไปอีก %s.
+236: เวลาเกม: หลังจากนี้, เกมจะเป็นช่วงเวลากลางคืนถาวร.
+237: เวลาเกม: หลังจากนี้, เกมจะเป็นช่วงเวลากลางคืนอีก %s.
+238: เวลาเกม: โดยหนึ่งวันจะใช้เวลาทั้งหมด %s.
+239: เวลาเกม: หลังจากนี้, เกมจะเป็นช่วงเวลากลางวันอีก %s.
+240: %d monster(s) summoned!
+241: คุณสามารถโจมตี หรือ ฆ่าใครก็ได้อย่างอิสระ.
+242: คุณสามารถถูกโจมตี หรือ ใครฆ่าก็ได้.
+243: Skill ได้ถูกปิดการใช้งานบนแผนที่นี้.
+244: Skill ได้เปิดให้ใช้งานบนแผนที่นี้.
+245: เวลาตั้งแต่เปิดเซิร์ฟเวอร์: %ld วัน, %ld ชั่วโมง, %ld นาที, %ld วินาที.
+246: ระดับ GM ของคุณ ไม่ได้รับอนุญาตให้คุณสามารถดำเนินการกระทำนี้ได้.
+247: คุณไม่ได้รับอนุญาตให้วาปไปยังแผนที่นี้ได้. 
+248: คุณไม่ได้รับอนุญาตให้วาปจากแผนที่ที่คุณอยู่ได้.
+249: คุณไม่ได้รับอนุญาตให้วาปไปยังจุดเซฟของคุณได้.
+250: คุณได้เปิด ช่องเก็บของ ไว้อยู่แล้ว. กรุณาปิดก่อน.
+251: คุณได้เปิด ช่องเก็บของ Guild ไว้อยู่แล้ว. กรุณาปิดก่อน.
+252: คุณยังไม่มี guild สังกัด.
+//253: คุณไม่ได้รับอนุญาตให้บันทึกบนแผนที่นี้ได้.
+254: การตั้งค่า คำสั่ง GM ได้ทำการโหลดใหม่เรียบร้อย.
+255: การตั้งค่า Battle ได้ทำการโหลดใหม่เรียบร้อย
+256: ฐานข้อมูล Status ได้ทำการโหลดใหม่เรียบร้อย
+257: ฐานข้อมูล Player ได้ทำการโหลดใหม่เรียบร้อย
+258: Sent packet 0x%x (%d)
+259: Invalid packet
+260: Item ดังกล่าวไม่สามารถแลกเปลี่ยนได้.
+261: Script ไม่สามารถโหลดได้.
+262: Script โหลดเรียบร้อย.
+263: Item ดังกล่าวไม่สามารถโยนลงพื้นได้.
+264: Item ดังกล่าวไม่สามารถเก็บลงช่องเก็บของได้.
+265: %s ได้ซื้อ item ของคุณ.
+266: มีบาง Item ของคุณไม่สามารถนำมาตั้งร้านขายของได้ กรุณานำออกจากรายการตั้งร้าน.
+267: '%s' designated maps reset.
+268: ข้อความประจำวัน ได้ถูกโหลดใหม่เรียบร้อยแล้ว.
+269: แสดงผลการค้นหา %d อันดับแรกจากทั้งหมด %d ที่พบ
+//@me output format
+270: * :%s %s: *
+271: คุณไม่สามารถโยน item ลงพื้นในแผนที่นี้ได้.
+272: คุณไม่สามารถแลกเปลี่ยนในแผนที่นี้ได้.
+273: Commands ที่สามารถใช้งานได้:
+274: พบ %d คำสั่ง.
+275: ไม่พบคำสั่ง.
+276: คุณไม่สามารถตั้งร้านขายของในแผนที่นี้ได้.
+277: วิธีใช้: @request <คำร้อง หรือ ข้อความ ที่จะส่งให้ GM ที่กำลังออนไลน์อยู่>.
+278: (@request): %s
+279: @request ถูกส่งแล้ว.
+280: Invalid name.
+281: คุณไม่สามารถตั้งห้อง chat ในแผนที่นี้ได้.
+//Party-related
+282: คุณต้องเป็นหัวหน้า Party ก่อนใช้คำสั่งนี้.
+283: ตัวละครดังกล่าวต้องกำลังออนไลน์อยู่และเป็นสมาชิกภายใน party คุณ.
+284: หัวหน้า party ได้ถูกโอนเรียบร้อยแล้ว.
+285: คุณได้เป็นหัวหน้า party.
+286: ไม่มีการเปลี่ยนแปลงการตั้งค่า party ใดๆ.
+287: คุณไม่สามารถเปลี่ยนหัวหน้า party ในแผนที่นี้ได้.
+//Missing stuff for @killer related commands.
+288: คุณไม่ตกเป็นเป้าหมายการโจมตีอย่างอิสระแล้ว.
+289: ผู้เล่นดังกล่าวได้เป็นเป้าหมายการโจมตีอย่างอิสระแล้ว.
+290: ผู้เล่นดังกล่าวไม่ต้องเป็นเป้าหมายการโจมตีอย่างอิสระแล้ว.
+291: สภาพอากาศทั้งหมดถูกยกเลิก ลบด้วยการ warp/refresh
+292: การฆ่าอย่างอิสระได้ถูกยกเลิก.
+// Guild Castles Number
+// --------------------
+//299: ?? Castles
+300: None Taken
+301: One Castle
+302: Two Castles
+303: Three Castles
+304: Four Castles
+305: Five Castles
+306: Six Castles
+307: Seven Castles
+308: Eight Castles
+309: Nine Castles
+310: Ten Castles
+311: Eleven Castles
+312: Twelve Castles
+313: Thirteen Castles
+314: Fourteen Castles
+315: Fifteen Castles
+316: Sixteen Castles
+317: Seventeen Castles
+318: Eighteen Castles
+319: Nineteen Castles
+320: Twenty Castles
+321: Twenty-One Castles
+322: Twenty-Two Castles
+323: Twenty-Three Castles
+324: Twenty-Four Castles
+325: Twenty-Five Castles
+326: Twenty-Six Castles
+327: Twenty-Seven Castles
+328: Twenty-Eight Castles
+329: Twenty-Nine Castles
+330: Thirty Castles
+331: Thirty-One Castles
+332: Thirty-Two Castles
+333: Thirty-Three Castles
+// 334: Thirty-Four Castles
+334: Total Domination
+
+
+// Templates for @who output
+343: ชื่อ: %s
+344: (%s)
+345: | Party: '%s'
+346: | Guild: '%s'
+//You may ommit the last %s, then you won't see players job name
+347: | Lv:%d/%d | Job: %s
+//You may ommit 2 last %d, then you won't see players coords, just map name
+348: | ตำแหน่ง: %s %d %d
+
+// @duel (part 1)
+350: Duel: คุณไม่สามารถใช้ @invite. คุณไม่ได้เป็นคู่ต่อสู้.
+351: Duel: จำนวนผู้เล่นได้ถึงขีดจำกัดที่รับได้แล้ว.
+352: Duel: ไม่พบตัวละครดังกล่าว.
+353: Duel: ตัวละครดังกล่าวได้อยู่ในการดวลเรียบร้อยแล้ว.
+354: Duel: คำเชิญได้ถูกส่งไปเรียบร้อยแล้ว.
+355: Duel: คุณไม่สามารถใช้ @duel ต้องทำการ @reject ก่อน.
+356: Duel: คุณสามารถเข้าการดวลได้ %d นาทีต่อหนึ่งครั้ง.
+357: Duel: ค่าไม่ถูกต้อง.
+358: Duel: คุณไม่สามารถใช้ @leave. คุณไม่ได้เป็นคู่ต่อสู้.
+359: Duel: คุณได้ออกจากการดวล.
+360: Duel: คุณไม่สามารถใช้ @accept โดยไม่มีคำเชิญท้าดวล.
+361: Duel: คำเชิญดวลได้รับการยอมรับ.
+362: Duel: คุณไม่สามารถใช้ @reject โดยไม่มีคำเชิญท้าดวล.
+363: Duel: คำเชิญดวลได้รับการปฏิเสธ.
+364: Duel: คุณไม่สามารถเชิญท้าดวลกับ %s ได้เพราะ ตัวละครนั้นไม่ได้อยู่ในแผนที่เดียวกัน.
+365: Duel: ไม่สามารถใช้ %s ในการดวลได้.
+// @duel (part 2)
+370:  -- Duels: %d/%d, สมาชิก: %d/%d, สูงสุด: %d --
+371:  -- Duels: %d/%d, สมาชิก: %d/%d --
+372:  -- Duel ได้ถูกสร้างขึ้น (ใช้ @invite/@leave) --
+373:  -- ตัวละคร %s ได้เชิญ %s ท้าดวล --
+374: Blue -- ตัวละคร %s เชิญคุณท้าดวล PVP (ใช้ @accept/@reject) --
+375:  <- ตัวละคร %s ได้ออกจากการดวล --
+376:  -> ตัวละคร %s ได้ยอมรับคำท้าดวล --
+377:  -- ตัวละคร %s ได้ปฏิเสธคำท้าดวล --
+//etc
+378: Eleanor กำลังอยู่ในโหมด %s .
+379: การใช้ Item ล้มเหลว. [%s] กำลังติด Cooldown. รออีก %.1f นาที.
+380: การใช้ Item ล้มเหลว. [%s] กำลังติด Cooldown. รออีก %d วินาที.
+381: การใช้ Skill ล้มเหลว. [%s] ต้องการ %dx %s.
+382: คุณอยู่ใกล้กับ stone หรือ emperium เกินกว่าที่จะใช้ skill ได้.
+//383-389 free
+//NoAsk
+390: Autorejecting ถูกเปิดใช้งาน.
+391: Autorejecting ปิดการใช้งาน.
+392: คำขอของคุณได้ถูกปฏิเสธจากการใช้งาน autoreject.
+393: Autorejected การแลกเปลี่ยน จาก %s.
+394: Autorejected การชวนเข้า party จาก %s.
+395: Autorejected การชวนเข้า guild จาก %s.
+396: Autorejected การขอเป็น พัธมิตร จาก %s.
+397: Autorejected การขอเป็น ศัตรู จาก %s.
+398: Autorejected การขอเป็น เพื่อน จาก %s.
+400: วิธีใช้: @jailfor <เวลา> <ชื่อตัวละคร>
+401: คุณได้ ติดคุกอีก %d ปี, %d เดือน, %d วัน, %d ชั่วโมง และ %d นาที
+402: %s ติดคุกอีก %d ปี, %d เดือน, %d วัน, %d ชั่วโมง และ %d นาที
+// WoE SE (@agitstart2)
+403: War of Emperium SE ได้เริ่มต้นขึ้น.
+404: War of Emperium SE กำลังทำงานอยู่ในขณะนี้.
+405: War of Emperium SE ได้จบลง.
+406: War of Emperium SE ไม่ได้ทำงานอยู่ในขณะนี้.
+//407 free
+//chrif related
+408: ต้องตัดการเชื่อมต่อในการดำเนินการขอแปลงเพศ ...
+409: คุณได้แปลงเพศเรียบร้อย (ต้องตัดการเชื่อมต่อจากเซิร์ฟเวอร์)...
+//410-411 used by cash shop
+412: บัญชีของคุณ 'ไม่ได้ลงทะเบียน'.
+413: บัญชีของคุณ 'รหัสผ่านไม่ถูกต้อง'...
+414: บัญชีของคุณได้หมดอายุแล้ว.
+415: บัญชีของคุณถูกปฏิเสธจากเซิร์ฟเวอร์.
+416: บัญชีของคุณถูกบล็อกโดยทีมงาน GM.
+417: ไฟล์ EXE เกมของคุณไม่ได้เป็นรุ่นล่าสุด.
+418: บัญชีของคุณได้ถูกห้ามไม่ให้ log in.
+419: Server is jammed due to over populated.
+420: บัญชีของคุณไม่ได้รับอนุญาต..
+421: บัญชีของคุณถูกลบเรียบร้อย.
+423: บัญชีของคุณถูกระงับการใช้งานจนถึง 
+424: Login-server ได้รับคำสั่งที่จะ %s ผู้เล่น '%.*s'.
+425: ไม่พบผู้เล่น '%.*s'.
+426: ระดับ GM ของคุณ ไม่ได้รับอนุญาตให้คุณ %s ผู้เล่น '%.*s' ได้.
+427: Login-server กำลังออฟไลน์. ไม่สามารถที่จะ %s ผู้เล่น '%.*s' ได้.
+428: block
+429: ban
+430: unblock
+431: unban
+432: เปลี่ยนเพศ
+
+// Homunculus messages
+450: คุณมี Homunculus อยู่แล้ว.
+
+// Return pet to egg message
+451: คุณไม่สามารถเก็บสัตว์เลี้ยงได้เพราะช่องเก็บของในตัวละครเต็ม.
+
+// Message System
+460: โปรดเลือกภาษาที่ต้องการ (วิธีใช้: @langtype <ภาษา>).
+461: ภาษาได้ตั้งค่าเป็น ภาษา %s.
+462: ภาษาที่เลือกไม่ได้เปิดให้ใช้งานในขณะนี้.
+463: การตั้งค่าข้อความได้ถูกโหลดใหม่เรียบร้อย.
+464: ---- ภาษาที่สามารถใช้งานได้มีดังนี้:
+
+480: ----- ผู้เล่นในแผนที่ -----
+481: Player '%s' (session #%d) | พิกัด: %d,%d
+482: ----- NPCs ในแผนที่ -----
+483: ----- Chats ในแผนที่ -----
+484: Chat: %s | Player: %s | พิกัด: %d %d
+485:    Users: %d/%d | Password: %s | Public: %s
+486: Yes
+487: No
+488: โปรดระบุจำนวนอย่างน้อยหนึ่งรายการ (วิธีใช้: @mapinfo <0-3> <map>).
+489: NPC %d: %s::%s | ทิศ: %s | Sprite: %d | พิกัด: %d %d
+490: NPC %d: %s | ทิศ: %s | Sprite: %d | พิกัด: %d %d
+491: North
+492: North West
+493: West
+494: South West
+495: South
+496: South East
+497: East
+498: North East
+499: Unknown
+
+// Messages of others (not for GM commands)
+// ----------------------------------------
+//500 free
+501: Your account time limit is: %d-%m-%Y %H:%M:%S.
+502: เวลากลางวัน ทำงาน
+503: เวลากลางคืน ทำงาน
+
+// Cash point change messages
+504: ใช้แต้ม kafra ไป %d แต้ม และ cash ไป %d แต้ม. เหลือ แต้ม kafra อีก %d และ cash อีก %d แต้ม.
+505: ได้รับ cash %d แต้ม. มีทั้งหมด %d แต้ม.
+506: ได้รับแต้ม kafra %d แต้ม. มีทั้งหมด %d แต้ม.
+410: ลบ cash %d แต้ม. มีทั้งหมด %d แต้ม.
+411: ลบแต้ม kafra %d แต้ม. มีทั้งหมด %d แต้ม.
+
+// Trade Spoof Messages
+507: ผู้เล่นนี้ได้ถูกห้ามแลกเปลี่ยนเป็นเวลา %d นาที.
+508: ผู้เล่นนี้ไม่ได้ถูกห้ามแลกเปลี่ยน (การห้ามแลกเปลี่ยนถูกปิดการใช้งาน).
+//509 free
+
+// mail system
+//----------------------
+510: คุณมี %d email ใหม่ (%d ยังไม่ได้อ่าน)
+
+// Bot detect messages (currently unused)
+535: มีความเป็นไปได้ที่กำลังใช้ BOT (โอกาส 99%%) หรือทำการแก้ไข Client โดย '%s' (account: %d, char_id: %d). ผู้เล่นได้พยายามที่จะถามชื่อของคุณในขณะที่คุณหายตัวอยู่.
+536: ตัวละคร '%s' (account: %d) พยายามที่จะใช้ bot (มันพยายามที่จะตรวจพบผู้เล่นปลอม).
+537: ตัวละคร '%s' (account: %d) พยายามที่จะใช้ bot (มันพยายามที่จะตรวจพบ monster ปลอม).
+// Trade Spoof Messages
+538: Hack on trade: ตัวละคร '%s' (account: %d) พยายามที่จะแลกเปลี่ยน item จำนวนมากกว่าที่มีอยู่.
+539: ผู้เล่นมี item จำนวน %d (id: %d), และพยายามจะแลกเปลี่ยนในจำนวน %d.
+540: ผู้เล่นนี้ถูกห้ามแลกเปลี่ยน.
+// Rare Items Drop/Steal announce
+541: '%s' เก็บ %s's %s (โอกาส: %0.02f%%)
+//541: %.0s%.0sSomeone got %s
+542: '%s' ขโมย %s's %s (โอกาส: %0.02f%%)
+//542: %.0s%.0sSomeone stole %s
+// 543~548 are not used (previously @away messages)
+// @Autotrade
+549: คุณควรจะมีร้านค้าก่อนเปิดใช้ @autotrade.
+
+//550 -> 650: Job Names
+550: Novice
+551: Swordsman
+552: Magician
+553: Archer
+554: Acolyte
+555: Merchant
+556: Thief
+557: Knight
+558: Priest
+559: Wizard
+560: Blacksmith
+561: Hunter
+562: Assassin
+563: Crusader
+564: Monk
+565: Sage
+566: Rogue
+567: Alchemist
+568: Bard
+569: Dancer
+570: Wedding
+571: Super Novice
+572: Gunslinger
+573: Ninja
+574: Christmas
+575: High Novice
+576: High Swordsman
+577: High Magician
+578: High Archer
+579: High Acolyte
+580: High Merchant
+581: High Thief
+582: Lord Knight
+583: High Priest
+584: High Wizard
+585: Whitesmith
+//585: Mastersmith //IRO name
+586: Sniper
+587: Assassin Cross
+588: Paladin
+589: Champion
+590: Professor
+//590: Scholar //IRO name
+591: Stalker
+592: Creator
+//592: Biochemist //IRO Name
+593: Clown
+//593: Minstrel //IRO Name
+594: Gypsy
+595: Baby Novice
+596: Baby Swordsman
+597: Baby Magician
+598: Baby Archer
+599: Baby Acolyte
+600: Baby Merchant
+601: Baby Thief
+602: Baby Knight
+603: Baby Priest
+604: Baby Wizard
+605: Baby Blacksmith
+606: Baby Hunter
+607: Baby Assassin
+608: Baby Crusader
+609: Baby Monk
+610: Baby Sage
+611: Baby Rogue
+612: Baby Alchemist
+613: Baby Bard
+614: Baby Dancer
+615: Super Baby
+616: Taekwon
+617: Star Gladiator
+618: Soul Linker
+//619 free
+//620 free
+621: Summer
+622: Gangsi
+623: Death Knight
+624: Dark Collector
+625: Rune Knight
+626: Warlock
+627: Ranger
+628: Arch Bishop
+629: Mechanic
+630: Guillotine Cross
+631: Royal Guard
+632: Sorcerer
+633: Minstrel
+//633: Maestro //IRO Name
+634: Wanderer
+635: Sura
+636: Genetic
+//636: Geneticist //IRO Name
+637: Shadow Chaser
+638: Baby Rune Knight
+639: Baby Warlock
+640: Baby Ranger
+641: Baby Arch Bishop
+642: Baby Mechanic
+643: Baby Guillotine Cross
+644: Baby Royal Guard
+645: Baby Sorcerer
+646: Baby Minstrel
+647: Baby Wanderer
+648: Baby Sura
+649: Baby Genetic
+650: Baby Shadow Chaser
+651: Expanded Super Novice
+652: Expanded Super Baby
+653: Kagerou
+654: Oboro
+655: Unknown Job
+
+// MvP Tomb
+// Added here so it can be easily translated
+656: หลุมศพ
+657: [ ^EE0000%s^000000 ]
+658: ได้พบความตาย
+659: บันทึกเวลาตาย : ^EE0000%s^000000
+660: ถูกสังหารโดย
+661: [^EE0000%s^000000]
+
+// Etc messages from source
+662: คุณต้องอยู่ห่างจาก NPC อย่างน้อย %d ช่อง.
+663: Duel: ไม่สามารถใช้ item นี้ในการดวลได้.
+664: คุณไม่สามารถใช้คำสั่งนี้ขณะตายได้.
+665: คุณไม่สามารถตั้งห้อง chat ในพื้นที่นี้ได้.
+666: สัตว์เลี้ยงไม่ได้ถูกรับอนุญาตให้นำเข้าในพื้นที่ Guild Wars.
+667: คุณไม่ได้ตาย.
+668: ตำแหน่งที่คุณได้บันทึกไว้มีดังนี้:
+669: คุณได้ทำลายอาวุธของเป้าหมาย.
+670: คุณไม่สามารถออกจาก Guild ได้ในขณะอยู่ใน battleground.
+671: เพื่อนที่มีอยู่แล้ว.
+672: ไม่พบชื่อในรายการ.
+673: ไม่สามารถกระทำการได้ในขณะนี้, โปรดลองใหม่อีกครั้งในภายหลัง.
+674: เพื่อนได้ถูกลบเรียบร้อย
+675: ไม่สามารถส่ง mail เร็วเกินไป!!
+676: ไม่สามารถสร้างพันธมิตรในระหว่าง Guild Wars ได้!
+677: ไม่สามารถถอดถอนพันธมิตรในระหว่าง Guild Wars ได้!
+678: คุณได้ออกจากตำแหน่งหัวหน้า Guild.
+679: คุณได้เป็นหัวหน้า Guild!
+680: คุณได้รับการรักษา!
+//681-899 free
+
+681: Rune Knight T
+682: Warlock T
+683: Ranger T
+684: Arch Bishop T
+685: Mechanic T
+686: Guillotine Cross T
+687: Royal Guard T
+688: Sorcerer T
+689: Minstrel T
+690: Wanderer T
+691: Sura T
+692: Genetic T
+693: Shadow Chaser T
+694: Hanbok
+
+
+//------------------------------------
+// More atcommands message
+//------------------------------------
+
+// @send
+900: วิธีใช้:
+901:	@send len <packet hex number>
+902: 	@send <packet hex number> {<value>}*
+903: 	Value: <type=B(default),W,L><number> or S<length>"<string>"
+904: Packet 0x%x length: %d
+905: Unknown packet: 0x%x
+906: Not a string:
+907: Not a hexadecimal digit:
+908: Unknown type of value in:
+
+// @rura
+909: โปรดเลือกแผนที่ (วิธีใช้: @warp/@rura/@mapmove <ชื่อแผนที่> <x> <y>).
+
+// @where
+910: โปรดระบุชื่อตัวละคร (วิธีใช้: @where <ชื่อตัวละคร>).
+
+// @jumpto
+911: โปรดระบุชื่อตัวละคร (วิธีใช้: @jumpto/@warpto/@goto <ชื่อ/ID ตัวละคร>).
+
+// @who
+912: (CID:%d/AID:%d)
+
+// @whogm
+913: ชื่อ: %s (GM)
+914: ชื่อ: %s (GM:%d) | พิกัด: %s %d %d
+915:       BLvl: %d | อาชีพ: %s (Lvl: %d)
+916:       ปาร์ตี้: '%s' | กิลด์: '%s'
+917: ไม่มี
+
+// @speed
+918: โปรดใส่ความเร็วที่ต้องการ (วิธีใช้: @speed <%d-%d>).
+
+// @storage
+919: เปิด ช่องเก็บของ เรียบร้อย.
+
+// @guildstorage
+920: เปิด ช่องเก็บของ Guild เรียบร้อย.
+
+// @option
+921: โปรดระบุอย่างน้อยหนึ่ง option.
+
+// @jobchange
+922: โปรดระบุID อาชีพ.
+923: ไม่สามารถเปลี่ยนอาชีพนี้ได้ด้วยคำสั่ง.
+//924-979 free (future jobs?)
+
+// @kami
+980: โปรดใส่ข้อความ (วิธีใช้: @kami <ข้อความ>).
+981: โปรดเลือกสี และใส่ข้อความ (วิธีใช้: @kamic <สี> <ข้อความ>).
+982: สีไม่ถูกต้อง.
+
+// @item
+983: โปรดระบุชื่อ/ID item (วิธีใช้: @item <ชื่อ/ID item> <จำนวน>).
+
+// @item2
+984: โปรดใส่ค่าทั้งหมด (วิธีใช้: @item2 <ชื่อ/ID item> <จำนวน>
+985:   <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>).
+
+// @baselevelup
+986: โปรดระบุ level ที่ต้องการ (วิธีใช้: @lvup/@blevel/@baselvlup <number of levels>).
+
+// @joblevelup
+987: โปรดระบุ level ที่ต้องการ (วิธีใช้: @joblvup/@jlevel/@joblvlup <number of levels>).
+
+// @help
+988: ไม่พบความช่วยเหลือสำหรับคำสั่ง %c%s.
+989: ความช่วยเหลือสำหรับคำสั่ง %c%s:
+990: คำสั่งที่มีผลเดียวกัน:
+
+// @model
+991: โปรดระบุอย่างน้อยหนึ่งค่า (วิธีใช้: @model <ทรงผม: %d-%d> <สีผม: %d-%d> <สีเสื้อ: %d-%d>).
+
+// @dye
+992: โปรดระบุสีเสื้อ (วิธีใช้: @dye/@ccolor <สีเสื้อ: %d-%d>).
+
+// @hairstyle
+993: โปรดระบุทรงผม (วิธีใช้: @hairstyle/@hstyle <ทรงผม: %d-%d>).
+
+// @haircolor
+994: โปรดระบุสีผม (วิธีใช้: @haircolor/@hcolor <สีผม: %d-%d>).
+
+// @go
+995: คุณไม่สามารถใช้คำสั่ง @go บนแผนที่นี้ได้.
+
+// @refine
+996: โปรดระบุตำแหน่งและจำนวน (วิธีใช้: @refine <ตำแหน่ง> <+/- จำนวน>).
+997: %d: Lower Headgear
+998: %d: Right Hand
+999: %d: Garment
+1000: %d: Left Accessory
+1001: %d: Body Armor
+1002: %d: Left Hand
+1003: %d: Shoes
+1004: %d: Right Accessory
+1005: %d: Top Headgear
+1006: %d: Mid Headgear
+
+// @produce
+1007: โปรดระบุชื่อ/ID item เป็นอย่างน้อย (วิธีใช้: @produce <equip name/ID> <element> <# of very's>).
+
+// @memo
+1008: โปรดระบุตำแหน่งที่จะบันทึก (วิธีใช้: @memo <memo_position:%d-%d>).
+
+// @displaystatus
+1009: โปรดระบุประเภทสถานะและการแสดงค่า (วิธีใช้: @displaystatus <status type> <flag> <tick> {<val1> {<val2> {<val3>}}}).
+
+// @stpoint
+1010: โปรดระบุจำนวน (วิธีใช้: @stpoint <จำนวนแต้ม>).
+
+// @skpoint
+1011: โปรดระบุจำนวน (วิธีใช้: @skpoint <จำนวนแต้ม>).
+
+// @zeny
+1012: โปรดระบุจำนวนเงิน (วิธีใช้: @zeny <จำนวนเงิน>).
+
+// @param
+1013: โปรดระบุค่่าที่ต้องการ (วิธีใช้: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
+
+// @guildlevelup
+1014: โปรดระบุ level ที่ต้องการ (วิธีใช้: @guildlvup/@guildlvlup <# of levels>).
+
+// @makeeg
+1015: โปรดระบุชื่อ/ID ของ monster/ไข่ (วิธีใช้: @makeegg <pet>).
+
+// @petfriendly
+1016: โปรดระบุค่าที่ต้องการ (วิธีใช้: @petfriendly <0-1000>).
+
+// @pethungry
+1017: โปรดระบุค่าที่ต้องการ (วิธีใช้: @pethungry <0-100>).
+
+// @recall
+1018: โปรดระบุชื่อตัวละคร (วิธีใช้: @recall <ชื่อ/ID ตัวละคร>).
+1019: คุณไม่ได้รับอนุญาตให้วาปไปหาใครบนแผนที่นี้ได้.
+
+// @recall
+1020: คุณไม่ได้รับอนุญาตให้วาปไปหาตัวละครที่อยู่บนแผนที่ที่เขาอยู่ได้.
+
+// @charblock
+1021: โปรดระบุชื่อตัวละคร (วิธีใช้: @charblock/@block <ชื่อตัวละคร>).
+
+// @charban
+1022: โปรดระบุเวลาและชื่อตัวละครที่ต้องการ ban (วิธีใช้: @charban/@ban/@banish/@charbanish <เวลา> <ชื่อตัวละคร>).
+1023: คุณยังไม่ได้รับอนุญาตให้ลดระยะเวลาในการ ban.
+
+// @charunblock
+1024: โปรดระบุชื่อตัวละคร (วิธีใช้: @charunblock <ชื่อตัวละคร>).
+
+// @charunban
+1025: โปรดระบุชื่อตัวละคร (วิธีใช้: @charunban <ชื่อตัวละคร>).
+
+// @kick
+1026: โปรดระบุชื่อตัวละคร (วิธีใช้: @kick <ชื่อ/ID ตัวละคร>).
+
+// @questskill / @lostskill
+1027: โปรดระบุหมายเลข quest skill.
+
+// @spiritball
+1028: โปรดระบุจำนวน (วิธีใช้: @spiritball <number: 0-%d>).
+
+// @party
+1029: โปรดระบุชื่อ party (วิธีใช้: @party <ชื่อ party>).
+
+// @guild
+1030: โปรดระบุชื่อ guild (วิธีใช้: @guild <ชื่อ guild>).
+
+// @idsearch
+1031: โปรดระบุส่วนหนึ่งของชื่อ item (วิธีใช้: @idsearch <part_of_item_name>).
+
+// @recallall / @guildrecall / @partyrecall
+1032: คุณไม่ได้รับอนุญาตให้ใครก็ตามวาปมาหาคุณในแผนที่นี้ได้.
+1033: เพราะคุณไม่ได้รับอนุญาตให้เรียกจากบางแผนที่, จึงมีผู้เล่น %d คนไม่ถูกเรียกมา.
+
+// @guildrecall
+1034: โปรดระบุชื่อ/ID guild (วิธีใช้: @guildrecall <ชื่อ/ID guild>).
+
+// @partyrecall
+1035: โปรดระบุชื่อ/ID party (วิธีใช้: @partyrecall <ชื่อ/ID party>).
+
+// @reloadatcommand
+1036: เกิดข้อผิดพลาดในการผ่านไฟล์ groups.conf, การโหลดใหม่ล้มเหลว.
+1037: เกิดข้อผิดพลาดในการผ่านไฟล์ atcommand_athena.conf, การโหลดใหม่ล้มเหลว.
+
+// @mapinfo
+1038: โปรดระบุเลขอย่างหน่อยหนึ่งค่าจากรายการ (วิธีใช้: @mapinfo <0-3> <map>).
+1039: ------ รายละเอียดแผนที่ ------
+1040: แผนที่: %s | ผู้เล่น: %d | NPCs: %d | Chats: %d | Vendings: %d
+1041: ------ Map Flags ------
+1042: Town Map
+1043: Autotrade Enabled
+1044: Autotrade Disabled
+1045: Battlegrounds ON (type %d)
+1046: PvP Flags:
+1047: Pvp ON |
+1048: NoGuild |
+1049: NoParty |
+1050: NightmareDrop |
+1051: NoCalcRank |
+1052: GvG Flags:
+1053: GvG ON |
+1054: GvG Dungeon |
+1055: GvG Castle |
+1056: NoParty |
+1057: Teleport Flags:
+1058: NoTeleport |
+1059: Monster NoTeleport |
+1060: NoWarp |
+1061: NoWarpTo |
+1062: NoReturn |
+1063: NoGo |
+1064: NoMemo |
+1065: No Exp Penalty: %s | No Zeny Penalty: %s
+1066: On
+1067: Off
+1068: No Save (Return to last Save Point)
+1069: No Save, Save Point: %s,Random
+1070: No Save, Save Point: %s,%d,%d
+1071: Weather Flags:
+1072: Snow |
+1073: Fog |
+1074: Sakura |
+1075: Clouds |
+1076: Clouds2 |
+1077: Fireworks |
+1078: Leaves |
+//1079: Rain |
+1080: Displays Night |
+1081: Other Flags:
+1082: NoBranch |
+1083: NoTrade |
+1084: NoVending |
+1085: NoDrop |
+1086: NoSkill |
+1087: NoIcewall |
+1088: AllowKS |
+1089: Reset |
+1090: Other Flags:
+1091: NoCommand |
+1092: NoBaseEXP |
+1093: NoJobEXP |
+1094: NoMobLoot |
+1095: NoMVPLoot |
+1096: PartyLock |
+1097: GuildLock |
+1098: Loadevent |
+1099: Src4instance |
+1100: Chmautojoin |
+1101: nousecart |
+1102: noitemconsumption |
+1103: nosumstarmiracle |
+1104: nomineeffect |
+1105: nolockon |
+1106: Restricted (zone %d)
+
+// @mount
+1119: คุณได้ขี่ Dragon เรียบร้อย.
+1120: คุณได้ปล่อย Dragon ไปเรียบร้อย.
+1121: คุณได้ขี่ Warg เรียบร้อย.
+1122: คุณได้ปล่อย Warg ไปเรียบร้อย.
+1123: คุณได้ขี่ Mado Gear เรียบร้อย.
+1124: คุณได้ลงจาก Mado Gear เรียบร้อย.
+
+// @guildspy
+1125: Map-Server ไม่รองรับการใช้คำสั่ง spy.
+1126: โปรดระบุชื่อ/ID guild (วิธีใช้: @guildspy <ชื่อ/ID guild>).
+
+// @partyspy
+1127: โปรดระบุชื่อ/ID party (วิธีใช้: @partyspy <ชื่อ/ID party>).
+
+// @nuke
+1128: โปรดระบุชื่อตัวละคร (วิธีใช้: @nuke <ชื่อตัวละคร>).
+
+// @tonpc
+1129: โปรดระบุชื่อ NPC (วิธีใช้: @tonpc <ชื่อ NPC>).
+
+// @enablenpc
+1130: โปรดระบุชื่อ NPC (วิธีใช้: @enablenpc <ชื่อ NPC>).
+
+// @hidenpc
+1131: โปรดระบุชื่อ NPC (วิธีใช้: @hidenpc <ชื่อ NPC>).
+
+// @loadnpc
+1132: โปรดระบุชื่อ ไฟล์ script (วิธีใช้: @loadnpc <file name>).
+
+// @npcoff
+1133: โปรดระบุชื่อ NPC (วิธีใช้: @npcoff <ชื่อ NPC>).
+
+// @jail
+1134: โปรดระบุชื่อตัวละคร (วิธีใช้: @jail <ชื่อตัวละคร>).
+
+// @unjail
+1135: โปรดระบุชื่อตัวละคร (วิธีใช้: @unjail/@discharge <ชื่อตัวละคร>).
+
+// @jailfor
+1136: เวลาไม่ถูกต้อง สำหรับการใช้คำสั่ง jail.
+1137: คุณได้
+1138: ผู้เล่นนี้ได้
+
+// @jailtime
+1139: คุณไม่ได้ถูกขังคุก.
+1140: คุณถูกขังคุกตลอดชีวิต.
+1141: คุณถูกขังคุกโดยไม่ทราบเวลาที่แน่นอน.
+1142: คุณยังเหลือเวลา
+
+// @disguise
+1143: โปรดระบุชื่อ/ID Monster/NPC (วิธีใช้: @disguise <name/ID>).
+1144: ตัวละครดังกล่าวไม่สามารถปลอมตัวได้ในขณะขี่สัตว์.
+
+// @disguiseall
+1145: โปรดระบุชื่อ/ID Monster/NPC (วิธีใช้: @disguiseall <name/ID>).
+
+// @disguiseguild
+1146: โปรดระบุชื่อ/ID Monster/NPC และ ชื่อ/ID guild (วิธีใช้: @disguiseguild <ชื่อ/ID mob>, <ชื่อ/ID guild>).
+
+// @undisguiseguild
+1147: โปรดระบุชื่อ/ID guild (วิธีใช้: @undisguiseguild <ชื่อ/ID guild>).
+
+// @exp
+1148: Base Level: %d (%.3f%%) | Job Level: %d (%.3f%%)
+
+// @broadcast
+1149: โปรดใส่ข้อความ (วิธีใช้: @broadcast <ข้อความ>).
+
+// @localbroadcast
+1150: โปรดใส่ข้อความ (วิธีใช้: @localbroadcast <ข้อความ>).
+
+// @email
+1151: โปรดระบุ 2 emails (วิธีใช้: @email <actual@email> <new@email>).
+
+// @effect
+1152: โปรดระบุหมายเลข effect (วิธีใช้: @effect <effect number>).
+
+// @npcmove
+1153: วิธีใช้: @npcmove <X> <Y> <ชื่อ NPC>
+1154: NPC ไม่ได้อยู่บนแผนที่นี้.
+1155: NPC เคลื่อนย้ายเรียบร้อย.
+
+// @addwarp
+1156: วิธีใช้: @addwarp <mapname> <X> <Y> <npc name>
+1157: ไม่รู้จักแผนที่ '%s'.
+1158: NPC จุดวาป '%s' ได้ถูกสร้างขึ้น.
+
+// @follow
+1159: โหมดติดตาม ปิด.
+1160: โหมดติดตาม เปิด.
+
+// @storeall
+1161: ในขระนี้คุณไม่สามารถเปิดช่องเก็บของได้.
+1162: Item ทั้งหมดถูกเก็บเรียบร้อย.
+
+// @skillid
+1163: โปรดระบุชื่อ skill ที่ต้องการค้นหา (วิธีใช้: @skillid <skill name>).
+1164: skill %d: %s (%s)
+
+// @useskill
+1165: วิธีใช้: @useskill <skill ID> <skill level> <target>
+
+// @displayskill
+1166: วิธีใช้: @displayskill <skill ID> {<skill level>}
+
+// @skilltree
+1167: วิธีใช้: @skilltree <skill ID> <target>
+1168: ผู้เล่นดังกล่าวกำลังใช้ %s skill tree (%d basic points).
+1169: ผู้เลนดังกล่าวไม่สามารถใช้ skill ดังกล่าวได้.
+1170: ผู้เล่นดังกล่าวต้องการ skill level %d ของ %s.
+1171: ผู้เล่นดังกล่าวตรงตามความต้องการทั้งหมดในการอัพ skill.
+
+// @marry
+1172: วิธีใช้: @marry <ชื่อตัวละคร>
+1173: พวกคุณได้แต่งงานกัเรียบร้อย... โชคดี.
+1174: ทั้งสองไม่สามารถแต่งงานกันได้เพราะใครคนใดคนหนึ่งมี bay หรือ แต่งงานไปแล้ว.
+
+// @divorce
+1175: '%s' ยังไม่ได้แต่งงาน.
+1176: '%s' และคู่ของเขา/เธอ ได้หย่ากันเรียบร้อย.
+
+// @changelook
+1177: วิธีใช้: @changelook {<ตำแหน่ง>} <view id>
+1178: ตำแหน่ง: 1-Top 2-Middle 3-Bottom 4-Weapon 5-Shield 6-Shoes 7-Robe
+
+// @autotrade
+1179: Autotrade ไม่ได้รับอนุญาตบนแผนที่นี้.
+1180: คุณไม่สามารถใช้ autotrade ระหว่างที่กำลังตายได้.
+
+// @changegm
+1181: คุณต้องเป็นหัวหน้า Guild ก่อนใช้คำสั่งนี้..
+1182: คุณไม่สามารถเปลี่ยนหัวหน้า Guild บนแผนที่นี้ได้.
+1183: วิธีใช้: @changegm <guild_member_name>
+1184: ตัวละครดังกล่าวต้องกำลังออนไลน์อยู่และเป็นสมาชิกภายใน guild คุณ.
+
+// @changeleader
+1185: วิธีใช้: @changeleader <party_member_name>
+
+// @partyoption
+1186: วิธีใช้: @partyoption <pickup share: yes/no> <item distribution: yes/no>
+
+// @autoloot
+1187: Autoloot เปิดการใช้งานกับ item ที่มันอัตราการตกที่ %0.02f%% และต่ำกว่า.
+1188: Autoloot ปิดการใช้งาน.
+
+// @autolootitem
+1189: ไม่พบ Item ดังกล่าว.
+1190: คุณได้บันทึก item นี้ลงในรายการไปเรียบร้อยแล้ว.
+1191: รายการ autolootitem ของคุณเต็มแล้ว. ลบ item บางรายการออกก่อนด้วย @autolootid -<ชื่อ/ID item>.
+1192: บันทึก item : '%s'/'%s' {%d} ลงรายการ autolootitem ของคุณ.
+1193: คุณไม่ได้บันทึก item นี้ลงในรายการอยู่แล้ว.
+1194: ลบ item : '%s'/'%s' {%d} จากรายการ autolootitem ของคุณ.
+1195: คุณสามารถบันทึกได้ %d item ในการรายการ autolootitem.
+1196: ในการเพิ่มรายการ, ใช้ "@alootid +<ชื่อ/ID item>". ในการลบรายการ, ใช้ "@alootid -<ชื่อ/ID item>".
+1197: "@alootid reset" ในการล้างรายการ autolootitem ของคุณ.
+1198: รายการ autolootitem ของคุณ ว่างเปล่า.
+1199: รายการ autolootitem ของคุณมี item ดังนี้:
+1200: รายการ autolootitem ของคุณได้ถูกล้างเรียบร้อย.
+
+// @rain
+//1201: ฝนหยุดตกแล้ว.
+//1202: ฝนกำลังเริ่มตก.
+
+// @snow
+1203: หิมะหยุดตกแล้ว.
+1204: หิมะกำลังเริ่มตก.
+
+// @sakura
+1205: ซากุระหยุดร่วงแล้ว.
+1206: ซากุระกำลังเริ่มร่วง.
+
+// @clouds
+1207: เมฆ ได้หายไป
+1208: เมฆ ได้ปรากฏ.
+
+// @clouds2
+1209: เมฆอื่นๆ ได้หายไป
+1210: เมฆอื่นๆ ได้ปรากฏ.
+
+// @fog
+1211: หมอก ได้หายไป.
+1212: หมอก ได้ปรากฏ.
+
+// @leaves
+1213: ใบไม้หยุดร่วงแล้ว.
+1214: ใบไม้กำลังเริ่มร่วง.
+
+// @fireworks
+1215: ดอกไม้ไฟสิ้นสุด.
+1216: ดอกไม้ไฟกำลังเปิดตัว.
+
+// @sound
+1217: โปรดระบุชื่อไฟล์เสียง (วิธีใช้: @sound <filename>).
+
+// @mobsearch
+1218: โปรดระบุชื่อ Monster (วิธีใช้: @mobsearch <ชื่อ monster>).
+1219: mob ID %s ไม่ถูกต้อง!
+1220: Mob Search... %s %s
+
+// @cleanmap
+1221: Item ที่ตกอยู่ได้ถูกทำความสะอาดออกไปหมดแล้ว.
+
+// @npctalk
+1222: โปรดระบุค่าให้ถูกต้อง (วิธีใช้: @npctalk <npc name>, <ข้อความ>).
+1223: โปรดระบุค่าให้ถูกต้อง (วิธีใช้: @npctalkc <สี> <npc name>, <ข้อความ>).
+
+// @pettalk
+1224: โปรดใส่ข้อความ (วิธีใช้: @pettalk <ข้อความ>).
+
+// @summon
+1225: โปรดระบุชื่อ Monster (วิธีใช้: @summon <ชื่อ monster> {duration}).
+
+// @adjgroup
+1226: วิธีใช้: @adjgroup <group_id>
+1227: ไม่พบกลุ่มที่ระบุ.
+1228: เปลี่ยน Group สำเร็จเรียบร้อบ.
+1229: เปลี่ยน Group ของคุณเรียบร้อยแล้ว.
+
+// @trade
+1230: โปรดระบุชื่อตัวละคร (วิธีใช้: @trade <ชื่อตัวละคร>).
+
+// @setbattleflag
+1231: วิธีใช้: @setbattleflag <flag> <value>
+1232: ไม่รู้จัก battle_config ดังกล่าว.
+1233: การตั้ง battle_config เรียบร้อย.
+
+// @unmute
+1234: โปรดระบุชื่อตัวละคร (วิธีใช้: @unmute <ชื่อตัวละคร>).
+1235: ผู้เล่นดังกล่าวไม่ได้ถูกใบ้อยู่.
+1236: ผู้เล่นดังกล่าวถูกปลดใบ้.
+
+// @mute
+1237: วิธีใช้: @mute <เวลา> <ชื่อตัวละคร>
+
+// @identify
+1238: ไม่พบ item ที่จะตรวจสอบ.
+
+// @mobinfo
+1239: โปรดระบุชื่อ/ID Monster (วิธีใช้: @mobinfo <ชื่อ/ID mob>).
+1240: MVP Monster: '%s'/'%s'/'%s' (%d)
+1241: Monster: '%s'/'%s'/'%s' (%d)
+1242:  Lv:%d  HP:%d  Base EXP:%u  Job EXP:%u  HIT:%d  FLEE:%d
+1243:  DEF:%d  MDEF:%d  STR:%d  AGI:%d  VIT:%d  INT:%d  DEX:%d  LUK:%d
+1244:  ATK:%d~%d  Range:%d~%d~%d  Size:%s  Race: %s  Element: %s (Lv:%d)
+1245:  Drops:
+1246: Monster นี้ไม่มีของตก.
+1247:  MVP Bonus EXP:%u
+1248:  MVP Items:
+1249: Monster นี้ไม่มีของรางวัล MVP.
+
+// @showmobs
+1250: ไม่พบ Monster ID %s!
+1251: ไม่สามารถแสดงตำแหน่ง บอส ได้!
+1252: กำลังค้นหา Monster... %s ในแผนที่ %s
+
+// @homlevel
+1253: โปรดระบุ level ที่ต้องการ (วิธีใช้: @homlevel <number of levels>).
+
+// @homlevel / @homevolve / @homfriendly / @homhungry / @homtalk / @hominfo / @homstats
+1254: คุณยังไม่มี homunculus.
+
+// @homevolve
+1255: Homunculus ของคุณไม่สามารถวิวัฒนาการได้.
+
+// @makehomun
+1256: โปรดระบุ ID Homunculus (วิธีใช้: @makehomun <homunculus id>).
+1257: Homunculus ID ผิดพลาด.
+
+// @homfriendly
+1258: โปรดระบุระดับความสนิทสนม (วิธีใช้: @homfriendly <friendly value [0-1000]>).
+
+// @homhungry
+1259: โปรดระบุระดับความหิว (วิธีใช้: @homhungry <hunger value [0-100]>).
+
+// @homtalk
+1260: โปรดใส่ข้อความ (วิธีใช้: @homtalk <ข้อความ>).
+
+// @hominfo
+1261: Homunculus stats:
+1262: HP: %d/%d - SP: %d/%d
+1263: ATK: %d - MATK: %d~%d
+1264: Hungry: %d - Intimacy: %u
+1265: Stats: Str %d / Agi %d / Vit %d / Int %d / Dex %d / Luk %d
+
+// @homstats
+1266: Homunculus growth stats (Lv %d %s):
+1267: Max HP: %d (%d~%d)
+1268: Max SP: %d (%d~%d)
+1269: Str: %d (%d~%d)
+1270: Agi: %d (%d~%d)
+1271: Vit: %d (%d~%d)
+1272: Int: %d (%d~%d)
+1273: Dex: %d (%d~%d)
+1274: Luk: %d (%d~%d)
+
+// @homshuffle
+1275: Homunculus stats เปลี่ยนแปลง.
+
+// @iteminfo
+1276: โปรดระบุชื่อ/ID item (วิธีใช้: @ii/@iteminfo <ชื่อ/ID item>).
+1277: Item: '%s'/'%s'[%d] (%d) Type: %s | Extra Effect: %s
+1278: None
+1279: With script
+1280: NPC Buy:%dz, Sell:%dz | Weight: %.1f
+1281:  - หาได้จากร้านค้าเท่านั้น.
+1282:  - โอกาสตกสูงสุดที่: %02.02f%%
+1283:  - ไม่มี Monster ใดตก item นี้.
+
+// @whodrops
+1284: โปรดระบุชื่อ/ID item (วิธีใช้: @whodrops <ชื่อ/ID item>).
+1285: Item: '%s'[%d]
+1286:  - Item นี้ไม่มีตกจาก monster.
+1287:  - Monster ทั่วไปที่มีโอกาสตกสูงสุด (แสดงเพียง %d รายการ):
+
+// @whereis
+1288: โปรดระบุชื่อ/ID Monster (วิธีใช้: @whereis <monster_name_or_monster_ID>).
+1289: %s เกิดที่:
+1290: Monster นี้ไม่ได้เกิดตามปกติ.
+
+// @adopt
+1291: วิธีใช้: @adopt <father>,<mother>,<child>
+1292: Adopting: --%s--%s--%s--\n
+1293: ไม่พบผู้เล่น %s ออนไลน์อยู่.
+1294: คุณได้เป็นครอบครัวเดียวกันแล้ว... ขอให้พวกคุณโชคดี.
+
+// @version
+1295: rAthena Version SVN r%s
+1296: ไม่สามารถตรวจสอบ SVN Version ได้.
+
+// @mutearea
+1297: โปรดระบุเวลาเป็นนาที (วิธีใช้: @mutearea/@stfu <time in minutes>).
+
+// @rates
+1298: อัตราค่าประสบการณ์ (EXP): Base %.2fx / Job %.2fx
+1299: อัตราการตกของปกติ: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx
+1300: อัตราการตกของ Boss: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx
+1301: อัตราการตกของอื่นๆ: MvP %.2fx / Card-Based %.2fx / Treasure %.2fx
+
+// @me
+1302: โปรดใส่ข้อความ (วิธีใช้: @me <ข้อความ>).
+
+// @size / @sizeall / @sizeguild
+1303: การเปลี่ยนขนาดตัวละเรียบร้อย.
+
+// @sizeguild
+1304: โปรดระบุชื่อ/ID guild (วิธีใช้: @sizeguild <size> <ชื่อ/ID guild>).
+
+// @monsterignore
+1305: ตอนนี้คุณไม่ตกเป็นเป้าหมายการโจมตีของ monster.
+1306: กลับคือสู่สถานะปกติ.
+
+// @fakename
+1307: กลับเป็นชื่อจริง.
+1308: คุณต้องใส่ชื่อ.
+1309: ชื่อปลอมต้องมีอย่างน้อย 2 ตัวอักษร.
+1310: เปิดการใช้งาน ชื่อปลอม.
+
+// @mapflag
+1311: Mapflags ที่กำลังทำงานในแผนที่นี้:
+1312: วิธีใช้: "@mapflag monster_noteleport 1" (0=Off | 1=On)
+1313: พิมพ์ "@mapflag available" เพื่อแสดงรายการ mapflag ที่กำลังทำงานอยู่.
+1314: ชื่อ mapflag ไม่ถูกต้อง.
+1315: Mapflags ที่สามารถเลือกใช้งานได้:
+
+// @showexp
+1316: ค่าประสบการณ์ที่ได้รับจะไม่ถูกแสดง.
+1317: ค่าประสบการณ์ที่ได้รับจะถูกแสดง.
+
+// @showzeny
+1318: เงินที่ได้รับจะไม่ถูกแสดง.
+1319: เงินที่ได้รับจะถูกแสดง.
+
+// @showdelay
+1320: ทักษะล้มเหลวจาก delay skill จะไม่ถูกแสดง.
+1321: ทักษะล้มเหลวจาก delay skill จะถูกแสดง.
+
+// @cash
+1322: โปรดระบุจำนวน.
+
+// @clone
+1323: คุณต้องใส่ชื่อ/ID ตัวละคร.
+
+// @feelreset
+1324: Reset 'Feeling' maps.
+
+// @noks
+1325: [ K.S Protection Inactive ]
+1326: [ K.S Protection Active - Option: Party ]
+1327: [ K.S Protection Active - Option: Self ]
+1328: [ K.S Protection Active - Option: Guild ]
+1329: วิธีใช้: @noks <self|party|guild>
+
+// @allowks
+1330: [ Map K.S Protection Active ]
+1331: [ Map K.S Protection Inactive ]
+
+// @itemlist
+1332: ------ %s items list of '%s' ------
+1333:  | equipped:
+1334: garment,
+1335: left accessory,
+1336: body/armor,
+1337: right hand,
+1338: left hand,
+1339: both hands,
+1340: feet,
+1341: right accessory,
+1342: lower head,
+1343: top head,
+1344: lower/top head,
+1345: mid head,
+1346: lower/mid head,
+1347: lower/mid/top head,
+1348:  -> (pet egg, pet id: %u, named)
+1349:  -> (pet egg, pet id: %u, unnamed)
+1350:  -> (crafted item, creator id: %u, star crumbs %d, element %d)
+1351:  -> (produced item, creator id: %u)
+1352:  -> (card(s):
+1353: ไม่พบ item ใน %s ตัวละครดังกล่าว.
+1354: พบ %d item(s) ใน %d %s ช่อง.
+
+// @delitem
+1355: โปรดระบุชื่อ/ID item, จำนวน, และชื่อตัวละคร (วิธีใช้: #delitem <player> <item_name_or_ID> <จำนวน>).
+
+// @font
+1356: เปลี่ยนคืน font ปกติ.
+1357: ใช้ @font <1-9> ในการเปลี่ยน font ข้อความของคุณ.
+1358: ใช้ 0 หรือ ไม่ระบุค่า ในการเปลี่ยนคืน font ปกติ.
+1359: ระบุ Font ผิดพลาด. โปรดใช้ค่า 0 ถึง 9.
+1360: เปลี่ยน Font เรียบร้อย.
+1361: คุณได้ใช้ font นี้อยู่ในขณะนี้.
+
+// @mount2
+1362: NOTICE: ถ้าคุณพบข้อผิดพลาดแสดงว่าไฟล์ LUA ของคุณเก่าเกินไป.
+1363: คุณขึ้นขี่เรียบร้อย.
+1364: คุณลงเรียบร้อย.
+
+// @accinfo
+1365: วิธีใช้: @accinfo/@accountinfo <account_id/char name>
+1366: คุณอาจจะกำลังค้นหาจากบางส่วนของชื่อโดยการใช้ '%' ในการค้นหา, เช่น. "@accinfo %Mario%" จะแสดงตัวละครทั้งหมดที่มี "Mario" ในองค์ประกอบของชื่อ.
+
+// @set
+1367: วิธีใช้: @set <variable name> <value>
+1368: วิธีใช้: ex. "@set PoringCharVar 50"
+1369: วิธีใช้: ex. "@set PoringCharVarSTR$ Super Duper String"
+1370: วิธีใช้: ex. "@set PoringCharVarSTR$" จะแสดงผลลัพธ์เป็นค่า, Super Duper String.
+1371: ตัวแปร NPC ไม่สามารถตั้งค่าได้ด้วย @set ได้.
+1372: ตัวแปร Instance ไม่สามารถตั้งค่าได้ด้วย @set ได้.
+1373: %s มีค่า: %d
+1374: %s มีค่า: %s
+1375: %s ไม่มีค่าใดๆ.
+1376: %s ประเภทข้อมูลไม่ได้รับการสนับสนุน: %u
+
+// @reloadquestdb
+1377: ฐานข้อมูล Quest ได้ทำการโหลดใหม่เรียบร้อย.
+
+// @addperm
+1378: วิธีใช้: %s <permission_name>
+1379: -- Permission List
+1380: '%s' is not a known permission.
+1381: ผู้ใช้งาน '%s' ได้รับอนุญาตสิทธิ์ '%s' อยู่แล้ว.
+1382: ผู้ใช้งาน '%s' ไม่ได้รับอนุญาตสิทธิ์ '%s' แล้ว.
+1383: -- User '%s' Permissions
+1384: ผู้ใช้งาน '%s' มีการปรับเปลี่ยนสิทธิ์เรียบร้อยแล้ว. ซึ่งเป็นการเปลี่ยนแปลงชั่วคราว.
+
+// @unloadnpcfile
+1385: วิธีใช้: @unloadnpcfile <file name>
+1386: File ถอดออกเรียบร้อย. โปรดทราบว่า mapflag และ monster ที่ถูกเรียกออกมาแล้วไม่ได้ถูกลบไปด้วย.
+1387: ไม่พบ File ดังกล่าว.
+
+// General command messages
+1388: Charcommand ล้มเหลว (วิธีใช้: %c<command> <ชื่อตัวละคร> <parameters>).
+1389: %s ล้มเหลว. ไม่พบตัวละครดังกล่าว.
+
+// @cart
+1390: ไม่รู้จักรถเข็นดังกล่าว (วิธีใช้: %s <0-%d>).
+1391: คุณไม่มีรถเข็นที่จะลบออก.
+1392: ติดตั้งรถเข็นเรียบร้อย.
+
+// atcommand.c::is_atcommand
+1393: คุณไม่สามารถใช้คำสั่งได้ในขณะตายอยุ่.
+
+// @clearstorage
+1394: ช่องเก็บของของคุณได้ถูกล้างเรียบร้อย.
+1395: ช่องเก้บของ guild ของคุณได้ถูกล้างเรียบร้อย.
+
+// @clearcart
+1396: คุณไม่มีรถเข็นที่จะให้ล้าง.
+1397: รถเข็นของคุณได้ถูกล้างเรียบร้อย.
+
+// @skillid (extension)
+1398: -- แสดง %d รายชื่อแรกที่มีอยู่ในส่วนหนึ่งของชื่อ:
+
+// @channel
+1399: ไม่รู้จัก channel (วิธีใช้: %s <#channel_name>).
+1400: ไม่รู้จัก channel '%s' (วิธีใช้: %s <#channel_name>).
+1401: Channel '%s' ได้ถูกเข้ารหัสไว้ (วิธีใช้: %s <#channel_name> <password>).
+1402: คุณไม่ได้อยู่ใน channel นี้ (ใช้ '@join <#channel_name>').
+1403: คุณอยู่ใน channel '%s' แล้ว.
+1404: %s ล้มเหลว.
+1405: ชื่อ Channel ต้องขึ้นต้นด้วย '#'.
+1406: ชื่อ Channel ต้องมีจำนวนตัวอักษารระหว่าง 3 ถึง %d ตัวอักษร.
+1407: ชื่อ Channel '%s' ไม่สามารถใช้งานได้.
+1408: รหัสผ่าน Channel ไม่สามารถใส่ช่องว่างได้.
+1409: - #%s (%d users)
+1410: ---- Channel สาธารณะ ----
+1411: ไม่รู้จักสี '%s'.
+1412: คุณไม่ใช่เจ้าของ channel '%s'.
+1413: channel '%s' ได้เปลี่ยนสีใหม่เป็น '%s'.
+1414: ---- options ที่สามารถใช้งานได้:
+1415: * %s create <#channel_name> <channel_password>
+1416: -- สร้าง channel ใหม่.
+1417: * %s list
+1418: -- รายชื่อ channel สาธารณะทั้งหมด.
+1419: * %s list colors
+1420: -- รายชื่อสีที่อนุญาตให้ใช้สำหรับการตั้ง channel เองทั้งหมด.
+1421: * %s setcolor <#channel_name> <color_name>
+1422: -- เปลี่ยนสีข้อความ channel (สำหรับเจ้าของ channel เท่านั้น).
+1423: * %s leave <#channel_name>
+1424: -- ออกจาก channel.
+1425: คุณไม่ได้อยู่ใน channel '%s'.
+1426: คุณได้ออกจาก channel '%s'.
+1427: * %s bindto <#channel_name>
+1428: -- ผูกการสนทนาปกติของคุณไปยัง channel ที่เลือก, ข้อความที่พิมพ์ปกติจะถูกส่งเข้า channel นั้น.
+1429: * %s unbind
+1430: -- ยกเลิกการผู้การสนทนาปกติกับ channel.
+1431: ตอนนี้สนทนาปกติของคุณได้ผูกกับ channel '%s'.
+1432: ตอนนี้สนทนาปกติของคุณได้ยกเลิกการผูกกับ channel ใดๆ.
+1433: ตอนนี้สนทนาปกติของคุณได้ยกเลิกการผูกกับ channel '#%s'.
+1434: คุณอยู่ใน channel '%s' อยู่แล้ว.
+1435: คุณได้อยู่ใน channel '#%s' ของ '%s' แล้ว.
+1436: รหัสผ่าน Channel ได้ไม่เกิน %d ตัวอักษร.
+1437: ผู้เล่น '%s' ได้ถูกห้ามจาก channel '%s' แล้ว.
+1438: คุณได้ห้ามจาก channel '%s' แล้ว.
+1439: Channel '%s' ไม่มีผู้เล่นที่ถูกห้าม.
+1440: ผู้เล่น '%s' ไม่ได้ถูกห้ามจาก channel นี้.
+1441: ผู้เล่น '%s' ได้ถูกยกเลิกการห้ามจาก channel '%s' แล้ว.
+1442: ยกเลิกการห้ามผู้เล่นทั้งหมดจาก channel '%s' .
+1443: ---- '#%s' Ban List:
+1444: ---- สีที่สามารถใช้งานได้ ----
+1445: - %s
+1446: คุณต้องใส่ option.
+1447: ไม่รู้จัก channel option '%s'.
+1448: Channel '%s' ได้ถูกลบ.
+1449: Option '%s' ได้เปิดอยู่แล้ว (use '@channel setopt %s 0' to disable).
+1450: Option '%s' ได้เปิดสำหรับ channel '#%s'.
+1451: ค่า '%d' สำหรับ option '%s' ไม่สามารถใช้ได้ (limit 0-10).
+1452: Option '%s' ได้เปิดสำหรับ channel'#%s' เป็นเวลา %d วินาที.
+1453: Option '%s' ได้ปิดสำหรับ channel '#%s'.
+1454: Color set to '%s'.
+1455: คุณคุยเร็วเกินไป!
+1456: * %s ban <#channel_name> <player>
+1457: -- ห้ามผู้เล่นที่เลือกจาก channel.
+1458: * %s banlist <#channel_name>
+1459: -- รายชื่อผู้เล่นที่ถูกห้มจาก channel ที่ระบุ.
+1460: * %s unban <#channel_name> <player>
+1461: -- ยกเลิกการห้ามผู้เล่นที่เลือกจาก channel.
+1462: * %s setopt <#channel_name> <option> <value>
+1463: -- ตั้งค่า option สำหรับ channel ที่ระบุ.
+1464: การห้ามผู้เล่น '%s' ล้มเหลว.
+1465: ผู้เล่น '%s' ได้ถูกห้ามจาก channel นี้อยู่แล้ว.
+1466: ใส่จำนวนวินาที (0-10) สำหรับ option '%s'.
+1467: * %s unbanall <#channel_name>
+1468: -- ยกเลิกการห้ามผู้เล่นทั้งหมดจาก channel ที่ระบุ.
+1469: * %s delete <#channel_name>
+1470: -- ลบ channel ที่ระบุ.
+1471: * %s list mine
+1472: -- รายชื่อ channel ที่คุณอยู่ทั้งหมด.
+1473: * %s join <#channel_name> <channel_password>
+1474: -- เข้า channel ที่ระบุ.
+1475: ---- Channels ที่ฉันอยู่ ----
+1476: คุณไม่ได้อยู่ใน channels ใดเลย.
+
+// @reloadpacketdb
+1477: ฐานข้อมูล Packet ได้ถูกโหลดใหม่เรียบร้อย.
+
+//Custom translations
+//import: conf/msg_conf/import/map_msg_tha_conf.txt

+ 145 - 107
configure

@@ -1,12 +1,10 @@
 #! /bin/sh
-# From configure.in Revision: 17159 .
+# From configure.in Revision: 17181 .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68.
+# Generated by GNU Autoconf 2.69.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -135,6 +133,31 @@ export LANGUAGE
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
@@ -168,7 +191,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
 else
   exitcode=1; echo positional parameters were not saved.
 fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -213,21 +237,25 @@ IFS=$as_save_IFS
 
 
       if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-	# neutralization value for shells without unset; and this also
-	# works around shells that cannot unset nonexistent variables.
-	# Preserve -v and -x to the replacement shell.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	case $- in # ((((
-	  *v*x* | *x*v* ) as_opts=-vx ;;
-	  *v* ) as_opts=-v ;;
-	  *x* ) as_opts=-x ;;
-	  * ) as_opts= ;;
-	esac
-	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
 fi
 
     if test x$as_have_required = xno; then :
@@ -329,6 +357,14 @@ $as_echo X"$as_dir" |
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -450,6 +486,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   chmod +x "$as_me.lineno" ||
     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -484,16 +524,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -505,28 +545,8 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -669,6 +689,7 @@ enable_option_checking
 enable_manager
 enable_packetver
 enable_debug
+enable_warn
 enable_buildbot
 enable_rdtsc
 enable_profiler
@@ -1145,8 +1166,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1305,6 +1324,8 @@ Optional Features:
                           src/map/clif.h)
   --enable-debug[=ARG]    Compiles extra debug code. (disabled by default)
                           (available options: yes, no, gdb)
+  --enable-warn[=ARG]     Compiles with warnings. (disabled by default)
+                          (available options: yes, no)
   --enable-buildbot[=ARG] (available options: yes, no)
   --enable-rdtsc          Uses rdtsc as timing source (disabled by default)
                           Enable it when you've timing issues. (For example:
@@ -1415,9 +1436,9 @@ test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
 configure
-generated by GNU Autoconf 2.68
+generated by GNU Autoconf 2.69
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1690,7 +1711,7 @@ $as_echo "$ac_try_echo"; } >&5
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
 	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
+	 test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -1780,7 +1801,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -2163,7 +2184,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2203,7 +2224,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2256,7 +2277,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2297,7 +2318,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -2355,7 +2376,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2399,7 +2420,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2845,8 +2866,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3086,7 +3106,7 @@ do
     for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+      as_fn_executable_p "$ac_path_GREP" || continue
 # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
@@ -3152,7 +3172,7 @@ do
     for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+      as_fn_executable_p "$ac_path_EGREP" || continue
 # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
@@ -3359,8 +3379,8 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#	  define __EXTENSIONS__ 1
-	  $ac_includes_default
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
 int
 main ()
 {
@@ -3449,6 +3469,25 @@ else
 fi
 
 
+#
+# warn
+#
+# Check whether --enable-warn was given.
+if test "${enable_warn+set}" = set; then :
+  enableval=$enable_warn;
+		enable_warn="$enableval"
+		case $enableval in
+			"no");;
+			"yes");;
+			*) as_fn_error $? "invalid argument --enable-warn=$enableval... stopping" "$LINENO" 5;;
+		esac
+
+else
+  enable_warn="no"
+
+fi
+
+
 #
 # Buildbot
 #
@@ -3729,7 +3768,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3769,7 +3808,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3822,7 +3861,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3863,7 +3902,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -3921,7 +3960,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3965,7 +4004,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4161,8 +4200,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -4402,7 +4440,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5119,16 +5157,28 @@ fi
 case $enable_debug in
 	"no")
 		# default value
-		CFLAGS="$CFLAGS -Wno-unused -Wno-parentheses $PROD_WARN"
+		CFLAGS="$CFLAGS"
 		;;
 	"yes")
-		CFLAGS="$CFLAGS -g -DDEBUG -Wconversion"
+		CFLAGS="$CFLAGS -g -DDEBUG"
 		;;
 	"gdb")
 		CFLAGS="$CFLAGS -ggdb -DDEBUG"
 		;;
 esac
 
+#
+# Warnings
+#
+case $enable_warn in
+	"no") #default
+		CFLAGS="$CFLAGS $PROD_WARN"
+		;;
+	"yes")
+		CFLAGS="$CFLAGS"
+		;;
+esac
+
 #
 # Buildbot
 #
@@ -5768,7 +5818,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_MYSQL_CONFIG_HOME="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6518,16 +6568,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -6587,28 +6637,16 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -6630,7 +6668,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # values after options handling.
 ac_log="
 This file was extended by $as_me, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -6683,10 +6721,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
 config.status
-configured by $0, generated by GNU Autoconf 2.68,
+configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -6763,7 +6801,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'

+ 37 - 2
configure.in

@@ -76,6 +76,29 @@ AC_ARG_ENABLE(
 	[enable_debug="no"]
 )
 
+#
+# warn
+#
+AC_ARG_ENABLE(
+	[warn],
+	AC_HELP_STRING(
+		[--enable-warn@<:@=ARG@:>@],
+		[
+			Compiles with warnings. (disabled by default)
+			(available options: yes, no)
+		]
+	),
+	[
+		enable_warn="$enableval"
+		case $enableval in
+			"no");;
+			"yes");;
+			*) AC_MSG_ERROR([[invalid argument --enable-warn=$enableval... stopping]]);;
+		esac
+	],
+	[enable_warn="no"]
+)
+
 #
 # Buildbot
 #
@@ -605,16 +628,28 @@ fi
 case $enable_debug in
 	"no")
 		# default value
-		CFLAGS="$CFLAGS -Wno-unused -Wno-parentheses $PROD_WARN"
+		CFLAGS="$CFLAGS"
 		;;
 	"yes")
-		CFLAGS="$CFLAGS -g -DDEBUG -Wconversion"
+		CFLAGS="$CFLAGS -g -DDEBUG"
 		;;
 	"gdb")
 		CFLAGS="$CFLAGS -ggdb -DDEBUG"
 		;;
 esac
 
+#
+# Warnings
+#
+case $enable_warn in
+	"no") #default
+		CFLAGS="$CFLAGS $PROD_WARN"
+		;;
+	"yes")
+		CFLAGS="$CFLAGS"
+		;;
+esac		
+
 #
 # Buildbot
 #

+ 4 - 4
db/pre-re/item_db.txt

@@ -3401,13 +3401,13 @@
 6380,Mora_Coin,Mora Coin,3,20,,0,,,,,,,,,,,,,{},{},{}
 6381,Field_Shovel,Field Shovel,3,20,,10,,,,,,,,,,,,,{},{},{}
 6382,Urn,Urn,3,20,,10,,,,,,,,,,,,,{},{},{}
-6383,Clue_Of_Lope,Ropewa Clues,3,20,,10,,,,,,,,,,,,,{},{},{}
-6384,Ring_Of_Lope,Ring Of Lope,3,0,,0,,,,,,,,,,,,,{},{},{}
+6383,Clue_Of_Lope,Lope's Clue,3,20,,10,,,,,,,,,,,,,{},{},{}
+6384,Ring_Of_Lope,Lope's Ring,3,0,,0,,,,,,,,,,,,,{},{},{}
 6385,Research_Tool_Bag,Research Tool Bag,3,0,,0,,,,,,,,,,,,,{},{},{}
-6386,Bathtub_R_Sample,Bathtub R Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
+6386,Bathtub_R_Sample,Bath Water Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
 6387,Teeth_Sample,Teeth Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
 6388,Scale_Sample,Scale Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
-6389,Puddle_R_Sample,Pool Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
+6389,Puddle_R_Sample,Sample Of Puddle Research,3,20,,0,,,,,,,,,,,,,{},{},{}
 6390,Small_Pocket,Small Pocket,3,20,,0,,,,,,,,,,,,,{},{},{}
 6391,Splendid_Supply_Kit,Splendid Supply Kit,3,20,,2000,,,,,,,,,,,,,{},{},{}
 6392,Bradium_Box,Bradium Box,3,20,,10,,,,,,,,,,,,,{},{},{}

+ 42 - 42
db/re/item_db.txt

@@ -944,10 +944,10 @@
 1654,Mental_Stick,Mental Stick,4,20,,500,40:170,,1,1,0x00818315,7,2,2,3,102,1,10,{ if(getrefine()>5) { bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",(getrefine()-5)*2; bonus bMaxHPRate,-(getrefine()-5)*2; } bonus2 bSkillVariableCast,"SO_PSYCHIC_WAVE",-3000; bonus2 bSkillUseSP,"SO_PSYCHIC_WAVE",-60; },{},{ itemheal 0,-100; }
 //1655,
 //1656,
-1657,Mercy_Staff1,Mercy Staff I,4,20,,500,30:160,,1,2,0x00000100,7,2,2,3,100,1,10,{ bonus bInt,2; bonus bAtkEle,Ele_Holy; bonus bHealPower,10; },{},{}
+1657,Wand_Of_Affection,Wand Of Affection,4,20,,500,30:160,,1,2,0x00000100,7,2,2,3,100,1,10,{ bonus bInt,2; bonus bAtkEle,Ele_Holy; bonus bHealPower,10; },{},{}
 1658,P_Staff3,Eden Staff III,4,0,,0,60:170,,1,0,0x00818314,7,2,2,3,60,0,10,{ bonus bInt,4; },{},{}
 1659,Light_of_Recovery,Light of Recovery,4,56000,,400,30:160,,1,1,0x00000100,7,2,2,4,110,1,10,{ bonus bAtkEle,Ele_Holy; bonus bUnbreakableWeapon,0; bonus bHealPower,(getrefine()*3/2); bonus bUseSPrate,(getrefine()*3); },{},{}
-1660,Mercy_Staff2,Mercy Staff II,4,20,,500,30:180,,1,1,0x00000100,7,2,2,3,130,1,10,{ bonus bAtkEle,Ele_Holy; bonus bInt,4; bonus bHealPower,20; },{},{}
+1660,Wand_Of_Affection2,Empowered Wand Of Affection,4,20,,500,30:180,,1,1,0x00000100,7,2,2,3,130,1,10,{ bonus bAtkEle,Ele_Holy; bonus bInt,4; bonus bHealPower,20; },{},{}
 1661,Mental_Destroyer,Mental Destroyer,4,20,,1400,100:50,,1,0,0x00000200,7,2,2,4,95,1,10,{ bonus bInt,10; bonus bMdef,20; bonus bUnbreakableWeapon,0; bonus2 bSPVanishRate,10000,5; if(getrefine()>5) { bonus2 bSPVanishRate,10000,5; } },{},{}
 // Bows
 1701,Bow,Bow,4,1000,,500,15,,5,3,0x000A0848,7,2,34,1,4,1,11,{},{},{}
@@ -1137,14 +1137,14 @@
 2004,Kronos,Kronos,4,20,,1000,30:240,,1,0,0x00010204,2,2,34,4,50,1,23,{ bonus bInt,3+(getrefine()/2); bonus bMaxHP,300+(50*getrefine()/2); autobonus "{ bonus bMatkRate,12; bonus buseSPRate,20; }",1,5000,BF_MAGIC,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
 2005,Dea_Staff,Dea Staff,4,20,,1000,30:220,,1,1,0x00008110,2,2,34,3,50,1,23,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{ }",20,1000,"AL_HEAL","{ specialeffect2 EF_MAGICALATTHIT; heal 0,200; }"; },{},{}
 2006,G_Staff_Of_Light,Staff Of Light,4,20,,1900,80:150,,1,0,0x00810204,7,2,34,4,60,1,23,{ bonus bAtkEle,Ele_Holy; bonus bInt,6; },{},{}
-2007,Golden_Rod_Staff1,Golden Rod Staff I,4,20,,900,30:230,,1,2,0x00000200,7,2,34,4,100,1,23,{ bonus bAtkEle,Ele_Wind; bonus bInt,3; bonus2 bSkillAtk,"WZ_JUPITEL",12; },{},{}
-2008,Aqua_Staff1,Aqua Staff I,4,20,,900,30:230,,1,2,0x00000200,7,2,34,4,100,1,23,{ bonus bAtkEle,Ele_Water; bonus bInt,3; bonus2 bSkillAtk,"MG_COLDBOLT",12; bonus2 bSkillAtk,"MG_FROSTDIVER",12; },{},{}
-2009,Crimson_Staff1,Crimson Staff I,4,20,,900,30:230,,1,2,0x00000200,7,2,34,4,100,1,23,{ bonus bAtkEle,Ele_Fire; bonus bInt,3; bonus2 bSkillAtk,"MG_FIREBOLT",10; bonus2 bSkillAtk,"MG_FIREBALL",10; },{},{}
-2010,Forest_Staff1,Forest Staff I,4,20,,900,30:230,,1,2,0x00000200,7,2,34,4,100,1,23,{ bonus bAtkEle,Ele_Earth; bonus bInt,3; bonus2 bSkillAtk,"WZ_EARTHSPIKE",10; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",10; },{},{}
-2011,Golden_Rod_Staff2,Golden Rod Staff II,4,20,,900,30:270,,1,1,0x00000200,7,2,34,4,130,1,10,{ bonus bAtkEle,Ele_Wind; bonus bInt,5; bonus2 bSkillAtk,"WZ_JUPITEL",30; },{},{}
-2012,Aqua_Staff2,Aqua Staff II,4,20,,900,30:270,,1,1,0x00000200,7,2,34,4,130,1,10,{ bonus bAtkEle,Ele_Water; bonus bInt,5; bonus2 bSkillAtk,"MG_COLDBOLT",30; bonus2 bSkillAtk,"MG_FROSTDIVER",30; },{},{}
-2013,Crimson_Staff2,Crimson Staff II,4,20,,900,30:270,,1,1,0x00000200,7,2,34,4,130,1,10,{ bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus2 bSkillAtk,"MG_FIREBOLT",30; bonus2 bSkillAtk,"MG_FIREBALL",30; },{},{}
-2014,Forest_Staff2,Forest Staff II,4,20,,900,30:270,,1,1,0x00000200,7,2,34,4,130,1,10,{ bonus bAtkEle,Ele_Earth; bonus bInt,5; bonus2 bSkillAtk,"WZ_EARTHSPIKE",30; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",30; },{},{}
+2007,Golden_Rod_Staff,Golden Rod Staff,4,20,,900,30:230,,1,2,0x00000200,7,2,34,4,100,1,23,{ bonus bAtkEle,Ele_Wind; bonus bInt,3; bonus2 bSkillAtk,"WZ_JUPITEL",12; },{},{}
+2008,Aqua_Staff,Aqua Staff,4,20,,900,30:230,,1,2,0x00000200,7,2,34,4,100,1,23,{ bonus bAtkEle,Ele_Water; bonus bInt,3; bonus2 bSkillAtk,"MG_COLDBOLT",12; bonus2 bSkillAtk,"MG_FROSTDIVER",12; },{},{}
+2009,Crimson_Staff,Crimson Staff,4,20,,900,30:230,,1,2,0x00000200,7,2,34,4,100,1,23,{ bonus bAtkEle,Ele_Fire; bonus bInt,3; bonus2 bSkillAtk,"MG_FIREBOLT",10; bonus2 bSkillAtk,"MG_FIREBALL",10; },{},{}
+2010,Forest_Staff,Forest Staff,4,20,,900,30:230,,1,2,0x00000200,7,2,34,4,100,1,23,{ bonus bAtkEle,Ele_Earth; bonus bInt,3; bonus2 bSkillAtk,"WZ_EARTHSPIKE",10; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",10; },{},{}
+2011,Golden_Rod_Staff2,Empowered Golden Rod Staff,4,20,,900,30:270,,1,1,0x00000200,7,2,34,4,130,1,10,{ bonus bAtkEle,Ele_Wind; bonus bInt,5; bonus2 bSkillAtk,"WZ_JUPITEL",30; },{},{}
+2012,Aqua_Staff2,Empowered Aqua Staff,4,20,,900,30:270,,1,1,0x00000200,7,2,34,4,130,1,10,{ bonus bAtkEle,Ele_Water; bonus bInt,5; bonus2 bSkillAtk,"MG_COLDBOLT",30; bonus2 bSkillAtk,"MG_FROSTDIVER",30; },{},{}
+2013,Crimson_Staff2,Empowered Crimson Staff,4,20,,900,30:270,,1,1,0x00000200,7,2,34,4,130,1,10,{ bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus2 bSkillAtk,"MG_FIREBOLT",30; bonus2 bSkillAtk,"MG_FIREBALL",30; },{},{}
+2014,Forest_Staff2,Empowered Forest Staff,4,20,,900,30:270,,1,1,0x00000200,7,2,34,4,130,1,10,{ bonus bAtkEle,Ele_Earth; bonus bInt,5; bonus2 bSkillAtk,"WZ_EARTHSPIKE",30; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",30; },{},{}
 2015,Upg_Staff,Upg Staff,4,20,,1000,50:70,,1,1,0x00818314,7,2,34,3,1,1,10,{ bonus bMatk,(getrefine()*10); bonus bHealPower,getrefine(); if(BaseJob==Job_Wizard) bonus bMatk,30; else if(BaseJob==Job_Sage) bonus bMatk,20; if(BaseLevel>70) bonus bMatk,(((BaseLevel-70)/10)*10); },{},{}
 2016,Velum_Arc_Wand,Vellum Arc Wand,4,20,,800,110:220,,1,0,0x00818314,7,2,34,4,95,1,10,{ bonus bUnbreakableWeapon,0; bonus2 bMagicAddRace,RC_DemiHuman,25; bonus bIgnoreMdefRate,25; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,15; } if(getrefine()>8) { bonus bVariableCastrate,-20; } },{},{}
 // Shields
@@ -1498,14 +1498,14 @@
 2468,Aqua_Shoes,Aqua Shoes,5,20,,500,,12,,1,0x00000200,7,2,64,,100,1,0,{ bonus bMdef,2; bonus bMaxHP,500; bonus2 bSubEle,Ele_Water,15; },{},{}
 2469,Crimson_Shoes,Crismons Shoes,5,20,,500,,12,,1,0x00000200,7,2,64,,100,1,0,{ bonus bMdef,2; bonus bMaxHP,500; bonus2 bSubEle,Ele_Fire,15; },{},{}
 2470,Forest_Shoes,Forest Shoes,5,20,,500,,12,,1,0x00000200,7,2,64,,100,1,0,{ bonus bMdef,2; bonus bMaxHP,500; bonus2 bSubEle,Ele_Earth,15; },{},{}
-2471,Mercy_Shoes,Mercy Shoes,5,20,,300,,12,,0,0x00000100,7,2,64,,100,1,0,{ bonus bMaxHP,500; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Formless,-10; bonus2 bSubRace,RC_Undead,-10; bonus2 bSubRace,RC_Brute,-10; bonus2 bSubRace,RC_Plant,-10; bonus2 bSubRace,RC_Insect,-10; bonus2 bSubRace,RC_Fish,-10; bonus2 bSubRace,RC_Demon,-10; bonus2 bSubRace,RC_Angel,-10; bonus2 bSubRace,RC_Dragon,-10; },{},{}
-2472,Judgement_Shoes,Judgement Shoes,5,20,,300,,12,,0,0x00000100,7,2,64,,100,1,0,{ bonus bMaxSP,150; bonus2 bSkillAtk,"AB_JUDEX",30; },{},{}
+2471,Shoes_Of_Affection,Shoes Of Affection,5,20,,300,,12,,0,0x00000100,7,2,64,,100,1,0,{ bonus bMaxHP,500; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Formless,-10; bonus2 bSubRace,RC_Undead,-10; bonus2 bSubRace,RC_Brute,-10; bonus2 bSubRace,RC_Plant,-10; bonus2 bSubRace,RC_Insect,-10; bonus2 bSubRace,RC_Fish,-10; bonus2 bSubRace,RC_Demon,-10; bonus2 bSubRace,RC_Angel,-10; bonus2 bSubRace,RC_Dragon,-10; },{},{}
+2472,Shoes_Of_Judgement,Shoes Of Judgement,5,20,,300,,12,,0,0x00000100,7,2,64,,100,1,0,{ bonus bMaxSP,150; bonus2 bSkillAtk,"AB_JUDEX",30; },{},{}
 2473,Para_Team_Boots4,Eden Team Boots IV,5,0,,0,,20,,0,0xFFFFFFFF,7,2,64,,60,0,0,{ bonus bAgi,1; bonus bVit,1; bonus bHPrecovRate,28; bonus bSPrecovRate,12; },{},{}
 //2474,
-2475,Ur_Greave,Urj Greaves,5,20,,900,,32,,1,0x00000080,8,2,64,,100,1,0,{ bonus bMaxSP,40; if(getequiprefinerycnt(EQI_SHOES)>7) bonus bMaxHPRate,getequiprefinerycnt(EQI_SHOES)-7; },{},{}
-2476,Peuz_Greave,Pertz Greaves,5,20,,900,,32,,1,0x00000080,8,2,64,,100,1,0,{ bonus bMaxSP,40; bonus bAgi,-7+(getequiprefinerycnt(EQI_SHOES)>8)?8:getequiprefinerycnt(EQI_SHOES); },{},{}
-2477,Sabah_Shoes,Sabath Shoes,5,20,,400,,18,,1,0x00001000,7,2,64,,100,1,0,{ bonus bMaxSP,30; bonus bLuk,3; },{},{}
-2478,Nab_Shoes,Nabeu's Shoes,5,20,,400,,18,,1,0x00001000,7,2,64,,100,1,0,{ bonus bFlee,3; bonus bInt,2; },{},{}
+2475,Ur_Greave,Ur's Greaves,5,20,,900,,32,,1,0x00000080,8,2,64,,100,1,0,{ bonus bMaxSP,40; if(getequiprefinerycnt(EQI_SHOES)>7) bonus bMaxHPRate,getequiprefinerycnt(EQI_SHOES)-7; },{},{}
+2476,Peuz_Greave,Peuz's Greaves,5,20,,900,,32,,1,0x00000080,8,2,64,,100,1,0,{ bonus bMaxSP,40; bonus bAgi,-7+(getequiprefinerycnt(EQI_SHOES)>8)?8:getequiprefinerycnt(EQI_SHOES); },{},{}
+2477,Sabah_Shoes,Sapha Shoes,5,20,,400,,18,,1,0x00001000,7,2,64,,100,1,0,{ bonus bMaxSP,30; bonus bLuk,3; },{},{}
+2478,Nab_Shoes,Nab Shoes,5,20,,400,,18,,1,0x00001000,7,2,64,,100,1,0,{ bonus bFlee,3; bonus bInt,2; },{},{}
 2479,White_Wing_Boots,White Wing Boots,5,20,,400,,18,,1,0x00000800,7,2,64,,100,1,0,{ bonus bAgi,2; },{},{}
 2480,Black_Wing_Boots,Black Wing Boots,5,20,,400,,18,,1,0x00000800,8,2,64,,100,1,0,{ bonus bInt,2; bonus bMaxSPRate,5; },{},{}
 //2481,
@@ -1590,16 +1590,16 @@
 2566,Half_Asprika,Half Asprika,5,20,,0,,20,,0,0xFFFFFFFF,7,2,4,,47,0,0,{ bonus bMdef,2; bonus3 bSubEle,Ele_Neutral,15,BF_SHORT; bonus3 bSubEle,Ele_Water,15,BF_SHORT; bonus3 bSubEle,Ele_Earth,15,BF_SHORT; bonus3 bSubEle,Ele_Fire,15,BF_SHORT; bonus3 bSubEle,Ele_Wind,15,BF_SHORT; bonus3 bSubEle,Ele_Poison,15,BF_SHORT; bonus3 bSubEle,Ele_Holy,15,BF_SHORT; bonus3 bSubEle,Ele_Dark,15,BF_SHORT; bonus3 bSubEle,Ele_Ghost,15,BF_SHORT; bonus3 bSubEle,Ele_Undead,15,BF_SHORT; bonus bFlee,15; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,0; },{},{}
 //2567,
 2568,Muffler_Of_Roki,Loki's Muffler,5,20,,400,,10,,0,0xFFFFFFFF,7,2,4,,100,0,0,{ bonus bAgi,1; bonus2 bSkillAtk,"GC_CROSSIMPACT",5; },{},{}
-2569,Mercy_Shawl,Mercy Shawl,5,20,,400,,12,,0,0x00000100,7,2,4,,100,1,0,{ bonus bFlee2,5; bonus3 bAutoSpellWhenHit,"AB_RENOVATIO",1,10; },{},{}
-2570,Judgement_Shawl,Judgement Shawl,5,20,,400,,12,,0,0x00000100,7,2,4,,100,1,0,{ bonus bFlee,5; bonus3 bAutoSpellWhenHit,"AB_ORATIO",getskilllv("AB_ORATIO")?getskilllv("AB_ORATIO"):2,10; },{},{}
+2569,Shawl_Of_Affection,Shawl Of Affection,5,20,,400,,12,,0,0x00000100,7,2,4,,100,1,0,{ bonus bFlee2,5; bonus3 bAutoSpellWhenHit,"AB_RENOVATIO",1,10; },{},{}
+2570,Shawl_Of_Judgement,Shawl Of Judgement,5,20,,400,,12,,0,0x00000100,7,2,4,,100,1,0,{ bonus bFlee,5; bonus3 bAutoSpellWhenHit,"AB_ORATIO",getskilllv("AB_ORATIO")?getskilllv("AB_ORATIO"):2,10; },{},{}
 2571,Para_Team_Manteau2,Eden Team Manteau II,5,0,,0,,18,,0,0xFFFFFFFF,7,2,4,,60,0,0,{ bonus bFlee,12; bonus2 bSubEle,Ele_Neutral,10; },{},{}
 //2572,
 2573,Archangel_Wing,Archangel Wings,5,0,,200,,18,,1,0xFFFFFFFF,7,2,4,,0,1,1,{},{},{}
-2574,Ur_Manteau,Urj Manteau,5,20,,600,,20,,0,0x00000080,8,2,4,,100,1,0,{ bonus bMaxHPRate,2; bonus2 bSubEle,Ele_Neutral,10; },{},{}
-2575,Peuz_Manteau,Pertz Manteau,5,20,,600,,16,,0,0x00000080,8,2,4,,100,1,0,{ bonus bFlee,10; bonus bCritical,10; },{},{}
+2574,Ur_Manteau,Ur's Manteau,5,20,,600,,20,,0,0x00000080,8,2,4,,100,1,0,{ bonus bMaxHPRate,2; bonus2 bSubEle,Ele_Neutral,10; },{},{}
+2575,Peuz_Manteau,Peuz's Manteau,5,20,,600,,16,,0,0x00000080,8,2,4,,100,1,0,{ bonus bFlee,10; bonus bCritical,10; },{},{}
 2576,Bravery_Bag,Adventurer's Backpack,5,0,,200,,20,,1,0xFFFFFFFF,7,2,4,,0,1,2,{ skill "BS_GREED",1; if(getrefine()>6) { if(readparam(bStr)>=90){ bonus bBaseAtk,20; } if(readparam(bInt)>=90){ bonus bMatk,30; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,10; } if(readparam(bAgi)>=90){ bonus bAspdRate,8; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,10; } } if(getrefine()>8) { if(readparam(bStr)>=90){ bonus bBaseAtk,10; } if(readparam(bInt)>=90){ bonus bMatk,20; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,5; } if(readparam(bAgi)>=90){ bonus bAspd,1; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,5; } } },{},{}
-2577,Sabah_Hood,Sabath Hood,5,20,,100,,13,,0,0x00001000,7,2,4,,100,1,0,{ bonus bFlee,12; bonus bCritical,getrefine(); },{},{}
-2578,Nab_Hood,Nabeu's Hood,5,20,,100,,13,,0,0x00001000,7,2,4,,100,1,0,{ bonus bFlee,getrefine()*2; bonus bBaseAtk,getrefine()*2; },{},{}
+2577,Sabah_Hood,Sapha Hood,5,20,,100,,13,,0,0x00001000,7,2,4,,100,1,0,{ bonus bFlee,12; bonus bCritical,getrefine(); },{},{}
+2578,Nab_Hood,Nab Hood,5,20,,100,,13,,0,0x00001000,7,2,4,,100,1,0,{ bonus bFlee,getrefine()*2; bonus bBaseAtk,getrefine()*2; },{},{}
 //2579,
 2580,White_Wing_Manteau,White Wing Manteau,5,20,,200,,15,,0,0x00000800,7,2,4,,100,1,0,{ bonus bAgi,2; bonus bFlee,10; autobonus2 "{ bonus bFlee,20; }",10,7000,BF_LONG,"{ specialeffect2 EF_WIND; }"; },{},{}
 2581,Black_Wing_Manteau,Black Wing Manteau,5,20,,200,,15,,0,0x00000800,8,2,4,,100,1,0,{ bonus bInt,2; if(getequiprefinerycnt(EQI_GARMENT)>6) bonus bFlee2,getequiprefinerycnt(EQI_GARMENT)-6; },{},{}
@@ -1871,24 +1871,24 @@
 2855,Whike_Black_Tail,Whike Black Tail,5,20,,100,,0,,0,0xFFFFFFFF,7,2,136,,45,0,0,{ bonus bCritical,70; bonus bAspdRate,3; },{},{}
 2856,Half_Megin,Half Megingjard,5,20,,0,,1,,0,0xFFFFFFFF,7,2,136,,47,0,0,{ bonus bMdef,3; bonus bStr,20; },{},{}
 2857,Half_Brysing,Half Brisingamen,5,20,,0,,1,,0,0xFFFFFFFF,7,2,136,,47,0,0,{ bonus bStr,3; bonus bInt,5; bonus bVit,3; bonus bDex,3; bonus bAgi,3; bonus bLuk,5; bonus bMdef,2; },{},{}
-2858,Pendant_Of_Guardian,Guardian Pendant,5,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,70,0,0,{ skill "ALL_GUARDIAN_RECALL",1; },{},{}
+2858,Pendant_Of_Guardian,Pendant Of Guardian,5,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,70,0,0,{ skill "ALL_GUARDIAN_RECALL",1; },{},{}
 2859,Golden_Rod_Orb,Golden Rod Orb,5,20,,200,,2,,0,0x00000200,7,2,136,,100,0,0,{ bonus bMdef,2; bonus bInt,1; bonus2 bSubEle,Ele_Wind,15; bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",3,30; },{},{}
 2860,Aqua_Orb,Aqua Orb,5,20,,200,,2,,0,0x00000200,7,2,136,,100,0,0,{ bonus bMdef,2; bonus bInt,1; bonus2 bSubEle,Ele_Water,15; bonus3 bAutoSpellWhenHit,"WZ_FROSTNOVA",3,30; },{},{}
 2861,Crimson_Orb,Crismon Orb,5,20,,200,,2,,0,0x00000200,7,2,136,,100,0,0,{ bonus bMdef,2; bonus bInt,1; bonus2 bSubEle,Ele_Fire,15; bonus3 bAutoSpellWhenHit,"WZ_SIGHTRASHER",3,30; },{},{}
 2862,Forest_Orb,Forest Orb,5,20,,200,,2,,0,0x00000200,7,2,136,,100,0,0,{ bonus bMdef,2; bonus bInt,1; bonus2 bSubEle,Ele_Earth,15; bonus3 bAutoSpellWhenHit,"WZ_QUAGMIRE",3,30; },{},{}
 2863,Ring_Of_Valkyrie,Ring Of Valkyrie,5,0,,0,,2,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Boss,5; bonus2 bExpAddRace,RC_NonBoss,5; },{},{}
-2864,Light_Of_Cure,Liht Of Cure,5,20,,0,,0,,0,0x00000100,7,2,136,,110,0,0,{ bonus bVit,2; bonus bHealPower,2; },{},{}
+2864,Light_Of_Cure,Light Of Cure,5,20,,0,,0,,0,0x00000100,7,2,136,,110,0,0,{ bonus bVit,2; bonus bHealPower,2; },{},{}
 2865,Seal_Of_Cathedral,Seal Of Cathedral,5,20,,0,,0,,0,0x00000100,7,2,136,,110,0,0,{ bonus bInt,2; bonus bHealPower,2; },{},{}
 2866,Ring_Of_Archbishop,Ring Of Archbishop,5,20,,0,,0,,0,0x00000100,7,2,136,,110,0,0,{ bonus bDex,2; bonus bHealPower,2; },{},{}
 //
 2872,G_Honor_Certificate,G Honor Certificate,5,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{},{},{}
 2873,Cat_Hand_Glove,Cat Hand Glove,5,20,,100,,5,,1,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus bAgi,1; bonus bVit,1; bonus bDex,1; bonus bLuk,1; },{},{}
 //
-2883,Ur_Seal,Urj Seal,5,20,,200,,4,,1,0x00000080,8,2,136,,100,0,0,{ bonus bMaxHPrate,2; bonus2 bSkillUseSP,"LK_SPIRALPIERCE",5; bonus2 bSkillUseSP,"RK_HUNDREDSPEAR",5; },{},{}
-2884,Peuz_Seal,Pertz Seal,5,20,,200,,3,,1,0x00000080,8,2,136,,100,0,0,{ bonus bBaseAtk,20; bonus bMaxSP,20; },{},{}
+2883,Ur_Seal,Ur's Seal,5,20,,200,,4,,1,0x00000080,8,2,136,,100,0,0,{ bonus bMaxHPrate,2; bonus2 bSkillUseSP,"LK_SPIRALPIERCE",5; bonus2 bSkillUseSP,"RK_HUNDREDSPEAR",5; },{},{}
+2884,Peuz_Seal,Peuz's Seal,5,20,,200,,3,,1,0x00000080,8,2,136,,100,0,0,{ bonus bBaseAtk,20; bonus bMaxSP,20; },{},{}
 //2885,
-2886,Sabah_Ring,Sabath Seal,5,20,,100,,0,,0,0x00001000,7,2,136,,100,0,0,{ bonus bCritical,3; },{},{}
-2887,Nab_Ring,Nabeu's Seal,5,20,,100,,0,,0,0x00001000,7,2,136,,100,0,0,{ bonus bBaseAtk,10; bonus bMatk,20; },{},{}
+2886,Sabah_Ring,Sapha Ring,5,20,,100,,0,,0,0x00001000,7,2,136,,100,0,0,{ bonus bCritical,3; },{},{}
+2887,Nab_Ring,Nab Ring,5,20,,100,,0,,0,0x00001000,7,2,136,,100,0,0,{ bonus bBaseAtk,10; bonus bMatk,20; },{},{}
 //2888,
 //2889,
 2890,White_Wing_Brooch,White Wing Brooch,5,20,,100,,0,,0,0x00000800,7,2,136,,100,0,0,{ bonus bDex,2; bonus bLongAtkRate,3; },{},{}
@@ -3857,13 +3857,13 @@
 6380,Mora_Coin,Mora Coin,3,20,,0,,,,,,,,,,,,,{},{},{}
 6381,Field_Shovel,Field Shovel,3,20,,10,,,,,,,,,,,,,{},{},{}
 6382,Urn,Urn,3,20,,10,,,,,,,,,,,,,{},{},{}
-6383,Clue_Of_Lope,Ropewa Clues,3,20,,10,,,,,,,,,,,,,{},{},{}
-6384,Ring_Of_Lope,Ring Of Lope,3,0,,0,,,,,,,,,,,,,{},{},{}
+6383,Clue_Of_Lope,Lope's Clue,3,20,,10,,,,,,,,,,,,,{},{},{}
+6384,Ring_Of_Lope,Lope's Ring,3,0,,0,,,,,,,,,,,,,{},{},{}
 6385,Research_Tool_Bag,Research Tool Bag,3,0,,0,,,,,,,,,,,,,{},{},{}
-6386,Bathtub_R_Sample,Bathtub R Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
+6386,Bathtub_R_Sample,Bath Water Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
 6387,Teeth_Sample,Teeth Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
 6388,Scale_Sample,Scale Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
-6389,Puddle_R_Sample,Pool Sample,3,20,,0,,,,,,,,,,,,,{},{},{}
+6389,Puddle_R_Sample,Sample Of Puddle Research,3,20,,0,,,,,,,,,,,,,{},{},{}
 6390,Small_Pocket,Small Pocket,3,20,,0,,,,,,,,,,,,,{},{},{}
 6391,Splendid_Supply_Kit,Splendid Supply Kit,3,20,,2000,,,,,,,,,,,,,{},{},{}
 6392,Bradium_Box,Bradium Box,3,20,,10,,,,,,,,,,,,,{},{},{}
@@ -7173,21 +7173,21 @@
 15026,Aqua_Robe,Aqua Robe,5,20,,500,,40,,0,0x00000200,7,2,16,,100,1,0,{ bonus bDefEle,Ele_Water; bonus bMdef,10; bonus bInt,1; if(readparam(bInt)>=120){ bonus bInt,1; } },{},{}
 15027,Crimson_Robe,Crimson Robe,5,20,,500,,40,,0,0x00000200,7,2,16,,100,1,0,{ bonus bDefEle,Ele_Fire; bonus bMdef,10; bonus bInt,1; if(readparam(bInt)>=120){ bonus bInt,1; } },{},{}
 15028,Forest_Robe,Forest Robe,5,20,,500,,40,,0,0x00000200,7,2,16,,100,1,0,{ bonus bDefEle,Ele_Earth; bonus bMdef,10; bonus bInt,1; if(readparam(bInt)>=120){ bonus bInt,1; } },{},{}
-15029,Mercy_Robe,Mercy Robe,5,20,,300,,22,,0,0x00000100,2,2,16,,100,1,0,{ bonus bDefEle,Ele_Holy; bonus bMdef,10; bonus bInt,1; },{},{}
-15030,Judgement_Robe,Judgement Robe,5,20,,300,,22,,0,0x00000100,2,2,16,,100,1,0,{ bonus bDefEle,Ele_Dark; bonus bMdef,10; bonus bStr,2; bonus bInt,1; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bSubRace,RC_Formless,-10; bonus2 bSubRace,RC_Brute,-10; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Plant,-10; bonus2 bSubRace,RC_Insect,-10; bonus2 bSubRace,RC_Fish,-10; bonus2 bSubRace,RC_Angel,-10; bonus2 bSubRace,RC_Dragon,-10; },{},{}
+15029,Robe_Of_Affection,Robe Of Affection,5,20,,300,,22,,0,0x00000100,2,2,16,,100,1,0,{ bonus bDefEle,Ele_Holy; bonus bMdef,10; bonus bInt,1; },{},{}
+15030,Robe_Of_Judgement,Robe Of Judgement,5,20,,300,,22,,0,0x00000100,2,2,16,,100,1,0,{ bonus bDefEle,Ele_Dark; bonus bMdef,10; bonus bStr,2; bonus bInt,1; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bSubRace,RC_Formless,-10; bonus2 bSubRace,RC_Brute,-10; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Plant,-10; bonus2 bSubRace,RC_Insect,-10; bonus2 bSubRace,RC_Fish,-10; bonus2 bSubRace,RC_Angel,-10; bonus2 bSubRace,RC_Dragon,-10; },{},{}
 15031,Paradise_Uniform4,Paradise Uniform IV,5,0,,0,,58,,0,0xFFFFFFFF,7,2,16,,60,0,0,{ bonus bMdef,5; bonus bMaxHP,500; bonus bMaxSP,50; bonus bStr,1; bonus bInt,1; bonus bDex,1; },{},{}
 15032,Tidon,Tidon,5,20,,500,,2,,1,0xFFFFFFFE,7,2,16,,1,1,0,{ bonus bMdef,10; bonus2 bResEff,Eff_Stun,1500; bonus2 bResEff,Eff_Freeze,1500; bonus2 bSubRace,RC_NonBoss,5; bonus2 bSubRace,RC_Boss,5; },{},{}
 //15033,
 //15034,
 //15035,
-15036,Ur_Plate,Urj Plate,5,20,,3000,,110,,0,0x00000080,8,2,16,,100,1,0,{ bonus bMdef,10; bonus bMaxHPRate,getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5; },{},{}
-15037,Peuz_Plate,Pertz Plate,5,20,,3000,,110,,0,0x00000080,8,2,16,,100,1,0,{ bonus bMdef,10; bonus bBaseAtk,20; bonus bFlee,17; },{},{}
-15038,Sabah_Cloth,Sabath's Cloth,5,20,,100,,45,,1,0x00001000,7,2,16,,100,1,0,{ bonus bLuk,3; bonus3 bAutoSpell,"ASC_METEORASSAULT",getskilllv("ASC_METEORASSAULT"),10; },{},{}
-15039,Nab_Cloth,Nabeu's Cloth,5,20,,100,,45,,1,0x00001000,7,2,16,,100,1,0,{ bonus bStr,2; bonus bInt,2; },{},{}
+15036,Ur_Plate,Ur's Plate,5,20,,3000,,110,,0,0x00000080,8,2,16,,100,1,0,{ bonus bMdef,10; bonus bMaxHPRate,getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5; },{},{}
+15037,Peuz_Plate,Peuz's Plate,5,20,,3000,,110,,0,0x00000080,8,2,16,,100,1,0,{ bonus bMdef,10; bonus bBaseAtk,20; bonus bFlee,17; },{},{}
+15038,Sabah_Cloth,Sapha's Cloth,5,20,,100,,45,,1,0x00001000,7,2,16,,100,1,0,{ bonus bLuk,3; bonus3 bAutoSpell,"ASC_METEORASSAULT",getskilllv("ASC_METEORASSAULT"),10; },{},{}
+15039,Nab_Cloth,Nab's Cloth,5,20,,100,,45,,1,0x00001000,7,2,16,,100,1,0,{ bonus bStr,2; bonus bInt,2; },{},{}
 //15040,
 //15041,
-15042,White_Wing_Suit,White Wing Suit,5,20,,100,,45,,1,0x00000800,7,2,16,,100,1,0,{ bonus bLongAtkRate,getrefine()*2; bonus bFlee,getrefine(); },{},{}
-15043,Black_Wing_Suit,Black Wing Suit,5,20,,100,,45,,1,0x00000800,8,2,16,,100,1,0,{ bonus bInt,2; bonus bBaseAtk,getequiprefinerycnt(EQI_ARMOR)*3; },{},{}
+15042,White_Wing_Suits,White Wing Suits,5,20,,100,,45,,1,0x00000800,7,2,16,,100,1,0,{ bonus bLongAtkRate,getrefine()*2; bonus bFlee,getrefine(); },{},{}
+15043,Black_Wing_Suits,Black Wing Suits,5,20,,100,,45,,1,0x00000800,8,2,16,,100,1,0,{ bonus bInt,2; bonus bBaseAtk,getequiprefinerycnt(EQI_ARMOR)*3; },{},{}
 15044,Green_Surgical_Gown,Green Surgical Gown,5,56000,,660,,66,,1,0x00040000,7,2,16,,100,1,0,{ bonus bDex,1; bonus bMaxSP,30; },{},{}
 //15045,
 15046,Siege_Plate,Siege Plate,5,0,,3300,,85,,1,0x006444A2,7,2,16,,95,1,0,{ bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bHealpower2,12; bonus bAddItemHealRate,12; } if(getrefine()>8) { bonus bMaxHPRate,25; } },{},{}
@@ -7215,12 +7215,12 @@
 16010,Red_Ether_Bag,Red Ether Bag,4,20,,0,15:100,,1,1,0x0004C5B2,7,2,2,3,102,1,8,{ if(getrefine()>=6){ bonus2 bSkillAtk,"GN_CRAZYWEED",20+((getrefine()-5)*2); bonus2 bSkillAtk,"GN_DEMONIC_FIRE",20+((getrefine()-5)*2); } else { bonus2 bSkillAtk,"GN_CRAZYWEED",20; bonus2 bSkillAtk,"GN_DEMONIC_FIRE",20; } },{},{}
 //16011,
 //16012,
-16013,Judgement_Mace1,Judgement Mace I,4,20,,1200,140:180,,1,2,0x00000100,2,2,2,3,100,1,8,{ bonus bStr,1; bonus bInt,1; autobonus "{ bonus2 bAddRace,RC_Demon,20; }",10,7000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_BLOODDRAIN; }"; },{},{}
+16013,Mace_Of_Judgement,Mace Of Judgement,4,20,,1200,140:180,,1,2,0x00000100,2,2,2,3,100,1,8,{ bonus bStr,1; bonus bInt,1; autobonus "{ bonus2 bAddRace,RC_Demon,20; }",10,7000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_BLOODDRAIN; }"; },{},{}
 16014,P_Mace3,Eden Mace III,4,0,,0,172,,1,0,0x0004C5B3,7,2,2,3,60,0,8,{},{},{}
 16015,Cat_Club,Cat Club,4,20,,700,88,,1,3,0x0004C5B3,7,2,2,1,1,1,8,{ bonus2 bAddRace,RC_Brute,15; },{},{}
 16016,Tuna,Tuna,4,0,,0,180,,1,0,0x0004C5B3,7,2,2,1,50,0,8,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Stun,100; bonus3 bAutoSpell,"SM_BASH",5+5*(getskilllv("SM_BASH")==10),10; if(BaseLevel>99) { bonus bBaseAtk,20; } },{},{}
 16017,Bloody_Cross,Bloody Cross,4,20,,1500,170,,1,0,0x00008110,7,2,2,4,100,1,8,{ bonus bAtkEle,Ele_Dark; bonus3 bAutoSpell,"WL_HELLINFERNO",1,10+(getrefine()*5); },{},{}
-16018,Judgement_Mace2,Judgement Mace II,4,20,,1200,170:180,,1,1,0x00000100,2,2,2,3,130,1,8,{ bonus bStr,2; bonus bInt,2; autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_BLOODDRAIN; }"; },{},{}
+16018,Mace_Of_Judgement2,Empowered Mace Of Judgement,4,20,,1200,170:180,,1,1,0x00000100,2,2,2,3,130,1,8,{ bonus bStr,2; bonus bInt,2; autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_BLOODDRAIN; }"; },{},{}
 16019,Upg_Mace,Upg Mace,4,20,,800,80,,1,1,0x0004C5B3,7,2,2,3,1,1,8,{ bonus bBaseAtk,(getrefine()*10); bonus bHealPower,getrefine(); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5); },{},{}
 16020,Velum_Stunner,Vellum Stunner,4,20,,1500,170,,1,0,0x0004C5B3,7,2,2,4,95,1,8,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Stun,1000+getrefine(); bonus bAspdRate,getrefine(); },{},{}
 16021,Velum_Flail,Vellum Flail,4,20,,1500,170,,1,0,0x0004C5B3,7,2,2,4,95,1,8,{ bonus bUnbreakableWeapon,0; bonus3 bAutoSpell,"NPC_CRITICALWOUND",5,10; bonus bHit,getrefine(); bonus bCritical,getrefine(); },{},{}

+ 3 - 7
doc/atcommands.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 20130515
+//= 20130601
 //===== Description: =========================================
 //= List of available atcommands and their functions.
 //============================================================
@@ -578,14 +578,10 @@ Opens the auction window.
 ---------------------------------------
 
 @identify
-
-Opens the Identification window if any unappraised items are in your inventory.
-
----------------------------------------
-
 @identifyall
 
-Automatically identifies all unidentified items in your inventory.
+Opens the Identification window if any unappraised items are in your inventory.
+@identifyall will automaticallyidentify all unappraised items in your inventory.
 
 ---------------------------------------
 

+ 0 - 11
doc/script_commands.txt

@@ -3612,17 +3612,6 @@ This function will return 1 if the card specified by its item ID number is
 inserted into any equipment they have in their inventory, currently equipped or 
 not.
 
----------------------------------------
-
-*getequipisidentify(<equipment slot>)
-
-This function will return 1 if an item in the specified equipment slot is 
-identified and 0 if it isn't. Since you can't even equip unidentified equipment, 
-there's a question of whether it can actually end up there, and it will normally 
-return 1 all the time if there is an item in this equipment slot.
-Which is kinda pointless.
-For a list of equipment slots see 'getequipid'.
-
 ---------------------------------------
 //
 3,1.- End of item-related commands

+ 3 - 2
npc/re/instances/MalangdoCulvert.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Euphy
 //===== Current Version: ===================================== 
-//= 1.0
+//= 1.0a
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -14,6 +14,7 @@
 //===== Additional Comments: ================================= 
 //= 1.0 First version. [Euphy]
 //=     Letters "n" and "h" in NPC names indicate difficulty.
+//= 1.0a There is no minimum party size on official servers.
 //============================================================ 
 
 // Quest NPCs
@@ -381,7 +382,7 @@ mal_in01,160,34,4	script	Missing, the Cleaner	545,{
 	}
 	set .@party_id,getcharid(1);
 	set .@md_name$,"Culvert";
-	if (!instance_check_party(.@party_id,2)) {
+	if (!.@party_id) {
 		mes "^0000ffYou have to organize a party of";
 		mes "more than 1 member or be a member";
 		mes "of the party and come back.^000000";

+ 6 - 0
npc/re/instances/OctopusCave.txt

@@ -13,6 +13,8 @@
 //= 1.0 First version. [Euphy]
 //============================================================ 
 
+// Instance Creation
+//============================================================
 mal_dun01,151,235,5	script	Starfish	551,{
 
 	set .@party_id,getcharid(1);
@@ -180,6 +182,8 @@ mal_dun01,153,237,5	script	Weird Entrance	844,{
 	}
 }
 
+// Instance Scripts
+//============================================================
 1@cash,199,99,0	script	oct_enter	139,4,4,{
 	end;
 OnInstanceInit:
@@ -705,6 +709,8 @@ OnTouch:
 // This is never enabled in the official script.
 //1@cash,200,161,0	duplicate(oct_exit_1)	oct_exit_3	45,2,2
 
+// Warp Portals
+//============================================================
 1@cash,193,82,0	warp	oct_door1	2,2,1@cash,151,48
 1@cash,154,53,0	warp	oct_door2	2,2,1@cash,197,87
 1@cash,187,99,0	warp	oct_door3	2,2,1@cash,148,128

+ 2356 - 0
npc/re/merchants/enchan_mora.txt

@@ -0,0 +1,2356 @@
+//===== rAthena Script ======================================= 
+//= Mora Enchants
+//===== By: ================================================== 
+//= Euphy
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: ========================================= 
+//= [Official Conversion]
+//= Adds enchantments to various items in exchange for
+//= Mora coins.
+//===== Additional Comments: ================================= 
+//= 1.0 First Version. [Euphy]
+//============================================================ 
+
+// Arch Bishop Enchants :: coin_arc
+//============================================================
+mora,88,89,5	script	Keeper of Secrets#pa082	495,{
+	if (checkweight(1201,1) == 0) {
+		mes "You have too many kinds of things with you to do that. Throw out some of them and try again.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much weight to do that. Reduce the weight and try again.";
+		close;
+	}
+	disable_items;
+	if (countitem(6380) < 10) {
+		mes "[Artifice]";
+		mes "Relics for Archbishops are meant for defense and support!";
+		next;
+		mes "[Artifice]";
+		mes "Like the other Guardians, they may trade coins for their relics, so collect Mora Coins!";
+		next;
+		mes "[Artifice]";
+		mes "If you collect more than 10 coins then come to me to trade!";
+		close;
+	}
+	mes "[Artifice]";
+	mes "By the light! You look like you are ready to gain access to our relics.";
+	next;
+	mes "[Artifice]";
+	mes "Ring, Shoes, Shawl, Robe, Shield, or Weapon.";
+	mes "Select one of the six kinds of relics to receive.";
+	next;
+	mes "[Artifice]";
+	mes "I'll randomly give you one of 2 types of the equipment, depending upon the weather and my mood.";
+	next;
+	mes "[Artifice]";
+	mes "All I need is 10 Mora Coins of yours to grant you a relic!";
+	next;
+	switch(select("I don't think I'm ready.:I'm ready to exchange my Mora Coins.:Exchange my Ring.")) {
+	case 1:
+		mes "[Artifice]";
+		mes "See you next time!";
+		close;
+	case 2:
+		mes "[Artifice]";
+		// What does this even mean? (custom dialogue below)
+		//mes "You influence what part are you?";
+		mes "What kind of relic do you want?";
+		next;
+		switch(select("I'm not ready.:Ring:Shoes:Shawl:Robe:Shield:Weapon")) {
+		case 1:
+			mes "[Artifice]";
+			mes "Go with the light.";
+			close;
+		case 2:
+			if (countitem(2864) || countitem(2865) || countitem(2866)) {
+				mes "[Artifice]";
+				mes "You are already allowed access to our relics by your possession of a Ring!";
+				close;
+			}
+			if (Class == Job_Arch_Bishop || Class == Job_Arch_Bishop_T || Class == Job_Baby_Bishop) {
+				setarray .@items[0],2864,2865,2866; //Light_Of_Cure,Seal_Of_Cathedral,Ring_Of_Archbishop
+				break;
+			} else {
+				mes "[Artifice]";
+				mes "We prefer to only deal with Arch-Bishops.";
+				close;
+			}
+		case 3:
+			setarray .@items[0],2471,2472; //Shoes_Of_Affection,Shoes_Of_Judgement
+			break;
+		case 4:
+			setarray .@items[0],2569,2570; //Shawl_Of_Affection,Shawl_Of_Judgement
+			break;
+		case 5:
+			setarray .@items[0],15029,15030; //Robe_Of_Affection,Robe_Of_Judgement
+			break;
+		case 6:
+			setarray .@items[0],2156; //Bible_Of_Promise1
+			break;
+		case 7:
+			setarray .@items[0],1657,16013; //Wand_Of_Affection,Mace_Of_Judgement
+			break;
+		}
+		set .@item, .@items[rand(getarraysize(.@items))];
+		delitem 6380,10; //Mora_Coin
+		getitem .@item,1;
+		mes "[Artifice]";
+		mes "You have obtained ^aa00aa"+getitemname(.@item)+"^000000. May the Blessing of the Light be with you.";
+		close;
+	case 3:
+		if (Class == Job_Arch_Bishop || Class == Job_Arch_Bishop_T || Class == Job_Baby_Bishop) {
+			mes "[Artifice]";
+			mes "We exchange rings into coins for those who cannot control the ring.";
+			next;
+			mes "[Artifice]";
+			mes "It seems that you have power to control the ring so I cannot exchange it into coins.";
+			close;
+		}
+		     if (countitem(2864)) set .@item,2864; //Light_Of_Cure
+		else if (countitem(2865)) set .@item,2865; //Seal_Of_Cathedral
+		else if (countitem(2866)) set .@item,2866; //Ring_Of_Archbishop
+		else {
+			mes "[Artifice]";
+			mes "Did you change something?";
+			close;
+		}
+		mes "[Artifice]";
+		mes "You have a "+getitemname(.@item)+". Do you really want to trade it for 10 Mora Coins?";
+		next;
+		switch(select("I'm not ready:Exchange my "+getitemname(.@item))) {
+		case 1:
+			mes "[Artifice]";
+			mes "If you change your mind, please stop by again.";
+			close;
+		case 2:
+			delitem .@item,1;
+			getitem 6380,10; //Mora_Coin
+			mes "[Artifice]";
+			mes "I think that was an even trade.";
+			close;
+		}
+	}
+}
+
+mora,96,74,5	script	Master of Relics#pa0829	495,{
+	if (checkweight(1201,1) == 0) {
+		mes "You have too many kinds of things with you to do that. Throw out some of them and try again.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much weight to do that. Reduce the weight and try again.";
+		close;
+	}
+	disable_items;
+	mes "[Relice]";
+	mes "I enhance Relics that holy Arch-Bishops use, it will take 2 Mora Coins and the relic to allow me to attempt to enhance it.";
+	next;
+	switch(select("More details please.:Please Enhance my Relic.")) {
+	case 1:
+		mes "[Relice]";
+		mes "Let me briefly explain, for 2 Mora Coins and the relic I can give you a single Enchantment on that relic.";
+		next;
+		mes "[Relice]";
+		mes "Even though this relic was already enchanted, we will re-enchant it without checking its status.";
+		next;
+		mes "[Relice]";
+		mes "So it you have already enchanted relic, please put it some place safe and come back.";
+		next;
+		mes "[Relice]";
+		mes "Ah, one more thing! It is possible I can fail though and if that happens the relic is lost forever.";
+		close;
+	case 2:
+		mes "[Relice]";
+		mes "Ok, you can get a new Relic from Artifice if it fails.";
+		next;
+		mes "[Relice]";
+		mes "If you have a ritual for luck, you should use it now!";
+		next;
+		set .@select, select("Wait a minute!:Light of Cure:Seal of Cathedral:Ring of Archbishop:Shoes of Affection:Shoes of Judgement:Shawl of Affection:Shawl of Judgement:Robe of Affection:Robe of Judgement:Bible of Promise 1st Vol:Wand of Affection:Mace of Judgement");
+		switch(.@select) {
+		case 1:
+			mes "[Relice]";
+			mes "Certainly. Go with the Light.";
+			close;
+		case 2:
+		case 3:
+		case 4:
+			setarray .@items[0],2864,2865,2866; //Light_Of_Cure,Seal_Of_Cathedral,Ring_Of_Archbishop
+			setarray .@special[0],4803,4804,4805; //Highness_Heal_3sec,Coluceo_Heal30,Heal_Amount2
+			set .@item, .@items[.@select-2];
+			set .@sp, .@special[.@select-2];
+			set .@enchant_type,1;
+			break;
+		case 5:
+		case 6:
+		case 7:
+		case 8:
+		case 9:
+		case 10:
+		case 11:
+			setarray .@items[0],2471,2472,2569,2570,15029,15030,2156; //Shoes_Of_Affection,Shoes_Of_Judgement,Shawl_Of_Affection,Shawl_Of_Judgement,Robe_Of_Affection,Robe_Of_Judgement,Bible_Of_Promise1
+			set .@item, .@items[.@select-5];
+			set .@enchant_type,2;
+			break;
+		case 12:
+			set .@item,1657; //Wand_Of_Affection
+			set .@enchant_type,3;
+			break;
+		case 13:
+			set .@item,16013; //Mace_Of_Judgement
+			set .@enchant_type,4;
+			break;
+		}
+		if (countitem(6380) < 2 || countitem(.@item) == 0) {
+			mes "[Relice]";
+			mes "For 2 Mora Coins I can strengthen the relic you have in many ways!";
+			close;
+		}
+		specialeffect2 EF_REPAIRWEAPON;
+		delitem 6380,2; //Mora_Coin
+		delitem .@item,1;
+		switch(.@enchant_type) {
+		case 1:
+			set .@i, rand(1,1487);
+			     if (.@i <= 16) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
+			else if (.@i <= 32) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
+			else if (.@i <= 48) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
+			else if (.@i <= 64) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
+			else if (.@i <= 80) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
+			else if (.@i <= 96) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
+			else if (.@i <= 112) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
+			else if (.@i <= 128) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
+			else if (.@i <= 144) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
+			else if (.@i <= 160) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
+			else if (.@i <= 176) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
+			else if (.@i <= 192) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
+			else if (.@i <= 208) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
+			else if (.@i <= 224) setarray .@enchants[2],4740,4799; //Vitality1 HP500
+			else if (.@i <= 240) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
+			else if (.@i <= 256) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
+			else if (.@i <= 272) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
+			else if (.@i <= 288) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
+			else if (.@i <= 304) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
+			else if (.@i <= 320) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
+			else if (.@i <= 336) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
+			else if (.@i <= 352) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
+			else if (.@i <= 368) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
+			else if (.@i <= 384) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
+			else if (.@i <= 400) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
+			else if (.@i <= 416) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
+			else if (.@i <= 432) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
+			else if (.@i <= 448) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
+			else if (.@i <= 464) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
+			else if (.@i <= 480) setarray .@enchants[2],4740,4799; //Vitality1 HP500
+			else if (.@i <= 496) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
+			else if (.@i <= 512) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
+			else if (.@i <= 528) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
+			else if (.@i <= 544) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
+			else if (.@i <= 560) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
+			else if (.@i <= 576) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
+			else if (.@i <= 592) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
+			else if (.@i <= 608) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
+			else if (.@i <= 624) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
+			else if (.@i <= 640) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
+			else if (.@i <= 656) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
+			else if (.@i <= 672) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
+			else if (.@i <= 688) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
+			else if (.@i <= 704) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
+			else if (.@i <= 720) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
+			else if (.@i <= 736) setarray .@enchants[2],4740,4799; //Vitality1 HP500
+			else if (.@i <= 752) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
+			else if (.@i <= 768) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
+			else if (.@i <= 784) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
+			else if (.@i <= 800) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
+			else if (.@i <= 816) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
+			else if (.@i <= 832) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
+			else if (.@i <= 848) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
+			else if (.@i <= 864) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
+			else if (.@i <= 880) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
+			else if (.@i <= 896) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
+			else if (.@i <= 912) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
+			else if (.@i <= 928) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
+			else if (.@i <= 944) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
+			else if (.@i <= 960) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
+			else if (.@i <= 976) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
+			else if (.@i <= 992) setarray .@enchants[2],4740,4799; //Vitality1 HP500
+			else if (.@i <= 1008) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
+			else if (.@i <= 1024) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
+			else if (.@i <= 1040) setarray .@enchants[2],.@sp,.@sp; //[sp] [sp]
+			else if (.@i <= 1487) {
+				mes "[Relice]";
+				mes "Sometimes things just don't work out the way you want. I hope next time things go better for you. Until then, good bye.";
+				close;
+			}
+			break;
+		case 2:
+			set .@i, rand(1,1487);
+			     if (.@i <= 16) setarray .@enchants[1],4710,4711,4764; //Inteligence1 Inteligence2 Critical5
+			else if (.@i <= 32) setarray .@enchants[1],4710,4711,4799; //Inteligence1 Inteligence2 HP500
+			else if (.@i <= 48) setarray .@enchants[1],4710,4711,4766; //Inteligence1 Inteligence2 Atk2
+			else if (.@i <= 64) setarray .@enchants[1],4710,4711,4788; //Inteligence1 Inteligence2 Mdef6
+			else if (.@i <= 80) setarray .@enchants[1],4710,4720,4764; //Inteligence1 Dexterity1 Critical5
+			else if (.@i <= 96) setarray .@enchants[1],4710,4720,4799; //Inteligence1 Dexterity1 HP500
+			else if (.@i <= 112) setarray .@enchants[1],4710,4720,4766; //Inteligence1 Dexterity1 Atk2
+			else if (.@i <= 128) setarray .@enchants[1],4710,4720,4788; //Inteligence1 Dexterity1 Mdef6
+			else if (.@i <= 144) setarray .@enchants[1],4710,4721,4764; //Inteligence1 Dexterity2 Critical5
+			else if (.@i <= 160) setarray .@enchants[1],4710,4721,4799; //Inteligence1 Dexterity2 HP500
+			else if (.@i <= 176) setarray .@enchants[1],4710,4721,4766; //Inteligence1 Dexterity2 Atk2
+			else if (.@i <= 192) setarray .@enchants[1],4710,4721,4788; //Inteligence1 Dexterity2 Mdef6
+			else if (.@i <= 208) setarray .@enchants[1],4710,4740,4764; //Inteligence1 Vitality1 Critical5
+			else if (.@i <= 224) setarray .@enchants[1],4710,4740,4799; //Inteligence1 Vitality1 HP500
+			else if (.@i <= 240) setarray .@enchants[1],4710,4740,4766; //Inteligence1 Vitality1 Atk2
+			else if (.@i <= 256) setarray .@enchants[1],4710,4740,4788; //Inteligence1 Vitality1 Mdef6
+			else if (.@i <= 272) setarray .@enchants[1],4711,4711,4764; //Inteligence2 Inteligence2 Critical5
+			else if (.@i <= 288) setarray .@enchants[1],4711,4711,4799; //Inteligence2 Inteligence2 HP500
+			else if (.@i <= 304) setarray .@enchants[1],4711,4711,4766; //Inteligence2 Inteligence2 Atk2
+			else if (.@i <= 320) setarray .@enchants[1],4711,4711,4788; //Inteligence2 Inteligence2 Mdef6
+			else if (.@i <= 336) setarray .@enchants[1],4711,4720,4764; //Inteligence2 Dexterity1 Critical5
+			else if (.@i <= 352) setarray .@enchants[1],4711,4720,4799; //Inteligence2 Dexterity1 HP500
+			else if (.@i <= 368) setarray .@enchants[1],4711,4720,4766; //Inteligence2 Dexterity1 Atk2
+			else if (.@i <= 384) setarray .@enchants[1],4711,4720,4788; //Inteligence2 Dexterity1 Mdef6
+			else if (.@i <= 400) setarray .@enchants[1],4711,4721,4764; //Inteligence2 Dexterity2 Critical5
+			else if (.@i <= 416) setarray .@enchants[1],4711,4721,4799; //Inteligence2 Dexterity2 HP500
+			else if (.@i <= 432) setarray .@enchants[1],4711,4721,4766; //Inteligence2 Dexterity2 Atk2
+			else if (.@i <= 448) setarray .@enchants[1],4711,4721,4788; //Inteligence2 Dexterity2 Mdef6
+			else if (.@i <= 464) setarray .@enchants[1],4711,4740,4764; //Inteligence2 Vitality1 Critical5
+			else if (.@i <= 480) setarray .@enchants[1],4711,4740,4799; //Inteligence2 Vitality1 HP500
+			else if (.@i <= 496) setarray .@enchants[1],4711,4740,4766; //Inteligence2 Vitality1 Atk2
+			else if (.@i <= 512) setarray .@enchants[1],4711,4740,4788; //Inteligence2 Vitality1 Mdef6
+			else if (.@i <= 528) setarray .@enchants[1],4720,4711,4764; //Dexterity1 Inteligence2 Critical5
+			else if (.@i <= 544) setarray .@enchants[1],4720,4711,4799; //Dexterity1 Inteligence2 HP500
+			else if (.@i <= 560) setarray .@enchants[1],4720,4711,4766; //Dexterity1 Inteligence2 Atk2
+			else if (.@i <= 576) setarray .@enchants[1],4720,4711,4788; //Dexterity1 Inteligence2 Mdef6
+			else if (.@i <= 592) setarray .@enchants[1],4720,4720,4764; //Dexterity1 Dexterity1 Critical5
+			else if (.@i <= 608) setarray .@enchants[1],4720,4720,4799; //Dexterity1 Dexterity1 HP500
+			else if (.@i <= 624) setarray .@enchants[1],4720,4720,4766; //Dexterity1 Dexterity1 Atk2
+			else if (.@i <= 640) setarray .@enchants[1],4720,4720,4788; //Dexterity1 Dexterity1 Mdef6
+			else if (.@i <= 656) setarray .@enchants[1],4720,4721,4764; //Dexterity1 Dexterity2 Critical5
+			else if (.@i <= 672) setarray .@enchants[1],4720,4721,4799; //Dexterity1 Dexterity2 HP500
+			else if (.@i <= 688) setarray .@enchants[1],4720,4721,4766; //Dexterity1 Dexterity2 Atk2
+			else if (.@i <= 704) setarray .@enchants[1],4720,4721,4788; //Dexterity1 Dexterity2 Mdef6
+			else if (.@i <= 720) setarray .@enchants[1],4720,4740,4764; //Dexterity1 Vitality1 Critical5
+			else if (.@i <= 736) setarray .@enchants[1],4720,4740,4799; //Dexterity1 Vitality1 HP500
+			else if (.@i <= 752) setarray .@enchants[1],4720,4740,4766; //Dexterity1 Vitality1 Atk2
+			else if (.@i <= 768) setarray .@enchants[1],4720,4740,4788; //Dexterity1 Vitality1 Mdef6
+			else if (.@i <= 784) setarray .@enchants[1],4721,4711,4764; //Dexterity2 Inteligence2 Critical5
+			else if (.@i <= 800) setarray .@enchants[1],4721,4711,4799; //Dexterity2 Inteligence2 HP500
+			else if (.@i <= 816) setarray .@enchants[1],4721,4711,4766; //Dexterity2 Inteligence2 Atk2
+			else if (.@i <= 832) setarray .@enchants[1],4721,4711,4788; //Dexterity2 Inteligence2 Mdef6
+			else if (.@i <= 848) setarray .@enchants[1],4721,4720,4764; //Dexterity2 Dexterity1 Critical5
+			else if (.@i <= 864) setarray .@enchants[1],4721,4720,4799; //Dexterity2 Dexterity1 HP500
+			else if (.@i <= 880) setarray .@enchants[1],4721,4720,4766; //Dexterity2 Dexterity1 Atk2
+			else if (.@i <= 896) setarray .@enchants[1],4721,4720,4788; //Dexterity2 Dexterity1 Mdef6
+			else if (.@i <= 912) setarray .@enchants[1],4721,4721,4764; //Dexterity2 Dexterity2 Critical5
+			else if (.@i <= 928) setarray .@enchants[1],4721,4721,4799; //Dexterity2 Dexterity2 HP500
+			else if (.@i <= 944) setarray .@enchants[1],4721,4721,4766; //Dexterity2 Dexterity2 Atk2
+			else if (.@i <= 960) setarray .@enchants[1],4721,4721,4788; //Dexterity2 Dexterity2 Mdef6
+			else if (.@i <= 976) setarray .@enchants[1],4721,4740,4764; //Dexterity2 Vitality1 Critical5
+			else if (.@i <= 992) setarray .@enchants[1],4721,4740,4799; //Dexterity2 Vitality1 HP500
+			else if (.@i <= 1008) setarray .@enchants[1],4721,4740,4766; //Dexterity2 Vitality1 Atk2
+			else if (.@i <= 1024) setarray .@enchants[1],4721,4740,4788; //Dexterity2 Vitality1 Mdef6
+			else if (.@i <= 1026) setarray .@enchants[1],4761,4761,4761; //Matk2 Matk2 Matk2
+			else if (.@i <= 1028) setarray .@enchants[1],4712,4713,4713; //Inteligence3 Inteligence4 Inteligence4
+			else if (.@i <= 1030) setarray .@enchants[1],4712,4761,4761; //Inteligence3 Matk2 Matk2
+			else if (.@i <= 1032) setarray .@enchants[1],4712,4713,4761; //Inteligence3 Inteligence4 Matk2
+			else if (.@i <= 1034) setarray .@enchants[1],4722,4723,4723; //Dexterity3 Dexterity4 Dexterity4
+			else if (.@i <= 1036) setarray .@enchants[1],4722,4703,4703; //Dexterity3 Strength4 Strength4
+			else if (.@i <= 1038) setarray .@enchants[1],4722,4767,4767; //Dexterity3 Atk3 Atk3
+			else if (.@i <= 1040) setarray .@enchants[1],4767,4767,4767; //Atk3 Atk3 Atk3
+			else if (.@i <= 1487) {
+				mes "[Relice]";
+				mes "Sometimes things just don't work out the way you want. I hope next time things go better for you. Until then, good bye.";
+				close;
+			}
+			break;
+		case 3:
+			set .@i, rand(1,2852);
+			     if (.@i <= 31) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
+			else if (.@i <= 62) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
+			else if (.@i <= 93) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+			else if (.@i <= 124) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
+			else if (.@i <= 155) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
+			else if (.@i <= 186) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
+			else if (.@i <= 217) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
+			else if (.@i <= 248) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
+			else if (.@i <= 279) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
+			else if (.@i <= 310) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
+			else if (.@i <= 341) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
+			else if (.@i <= 372) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
+			else if (.@i <= 403) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
+			else if (.@i <= 434) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
+			else if (.@i <= 465) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+			else if (.@i <= 496) setarray .@enchants[2],4801,4760; //SP100 Matk1
+			else if (.@i <= 527) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
+			else if (.@i <= 558) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
+			else if (.@i <= 589) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+			else if (.@i <= 620) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
+			else if (.@i <= 651) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
+			else if (.@i <= 682) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
+			else if (.@i <= 713) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
+			else if (.@i <= 744) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
+			else if (.@i <= 775) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
+			else if (.@i <= 806) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
+			else if (.@i <= 837) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
+			else if (.@i <= 868) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
+			else if (.@i <= 899) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
+			else if (.@i <= 930) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
+			else if (.@i <= 961) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+			else if (.@i <= 992) setarray .@enchants[2],4801,4760; //SP100 Matk1
+			else if (.@i <= 1023) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
+			else if (.@i <= 1054) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
+			else if (.@i <= 1085) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+			else if (.@i <= 1116) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
+			else if (.@i <= 1147) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
+			else if (.@i <= 1178) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
+			else if (.@i <= 1209) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
+			else if (.@i <= 1240) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
+			else if (.@i <= 1271) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
+			else if (.@i <= 1302) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
+			else if (.@i <= 1333) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
+			else if (.@i <= 1364) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
+			else if (.@i <= 1395) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
+			else if (.@i <= 1426) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
+			else if (.@i <= 1457) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+			else if (.@i <= 1488) setarray .@enchants[2],4801,4760; //SP100 Matk1
+			else if (.@i <= 1519) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
+			else if (.@i <= 1550) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
+			else if (.@i <= 1581) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+			else if (.@i <= 1612) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
+			else if (.@i <= 1643) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
+			else if (.@i <= 1674) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
+			else if (.@i <= 1705) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
+			else if (.@i <= 1736) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
+			else if (.@i <= 1767) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
+			else if (.@i <= 1798) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
+			else if (.@i <= 1829) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
+			else if (.@i <= 1860) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
+			else if (.@i <= 1891) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
+			else if (.@i <= 1922) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
+			else if (.@i <= 1953) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+			else if (.@i <= 1984) setarray .@enchants[2],4801,4760; //SP100 Matk1
+			else if (.@i <= 1986) setarray .@enchants[2],4761,4761; //Matk2 Matk2
+			else if (.@i <= 1988) setarray .@enchants[2],4761,4723; //Matk2 Dexterity4
+			else if (.@i <= 1990) setarray .@enchants[2],4761,4714; //Matk2 Inteligence5
+			else if (.@i <= 1992) setarray .@enchants[2],4714,4714; //Inteligence5 Inteligence5
+			else if (.@i <= 1994) setarray .@enchants[2],4714,4723; //Inteligence5 Dexterity4
+			else if (.@i <= 1996) setarray .@enchants[2],4723,4723; //Dexterity4 Dexterity4
+			else if (.@i <= 2852) {
+				mes "[Relice]";
+				mes "Sometimes things just don't work out the way you want. I hope next time things go better for you. Until then, good bye.";
+				close;
+			}
+			break;
+		case 4:
+			set .@i, rand(1,2852);
+			     if (.@i <= 31) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
+			else if (.@i <= 62) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
+			else if (.@i <= 93) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+			else if (.@i <= 124) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
+			else if (.@i <= 155) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
+			else if (.@i <= 186) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
+			else if (.@i <= 217) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
+			else if (.@i <= 248) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
+			else if (.@i <= 279) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
+			else if (.@i <= 310) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
+			else if (.@i <= 341) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
+			else if (.@i <= 372) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
+			else if (.@i <= 403) setarray .@enchants[2],4701,4700; //Strength2 Strength1
+			else if (.@i <= 434) setarray .@enchants[2],4701,4701; //Strength2 Strength2
+			else if (.@i <= 465) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
+			else if (.@i <= 496) setarray .@enchants[2],4701,4767; //Strength2 Atk3
+			else if (.@i <= 527) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
+			else if (.@i <= 558) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
+			else if (.@i <= 589) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+			else if (.@i <= 620) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
+			else if (.@i <= 651) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
+			else if (.@i <= 682) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
+			else if (.@i <= 713) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
+			else if (.@i <= 744) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
+			else if (.@i <= 775) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
+			else if (.@i <= 806) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
+			else if (.@i <= 837) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
+			else if (.@i <= 868) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
+			else if (.@i <= 899) setarray .@enchants[2],4701,4700; //Strength2 Strength1
+			else if (.@i <= 930) setarray .@enchants[2],4701,4701; //Strength2 Strength2
+			else if (.@i <= 961) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
+			else if (.@i <= 992) setarray .@enchants[2],4701,4767; //Strength2 Atk3
+			else if (.@i <= 1023) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
+			else if (.@i <= 1054) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
+			else if (.@i <= 1085) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+			else if (.@i <= 1116) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
+			else if (.@i <= 1147) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
+			else if (.@i <= 1178) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
+			else if (.@i <= 1209) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
+			else if (.@i <= 1240) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
+			else if (.@i <= 1271) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
+			else if (.@i <= 1302) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
+			else if (.@i <= 1333) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
+			else if (.@i <= 1364) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
+			else if (.@i <= 1395) setarray .@enchants[2],4701,4700; //Strength2 Strength1
+			else if (.@i <= 1426) setarray .@enchants[2],4701,4701; //Strength2 Strength2
+			else if (.@i <= 1457) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
+			else if (.@i <= 1488) setarray .@enchants[2],4701,4767; //Strength2 Atk3
+			else if (.@i <= 1519) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
+			else if (.@i <= 1550) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
+			else if (.@i <= 1581) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+			else if (.@i <= 1612) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
+			else if (.@i <= 1643) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
+			else if (.@i <= 1674) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
+			else if (.@i <= 1705) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
+			else if (.@i <= 1736) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
+			else if (.@i <= 1767) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
+			else if (.@i <= 1798) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
+			else if (.@i <= 1829) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
+			else if (.@i <= 1860) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
+			else if (.@i <= 1891) setarray .@enchants[2],4701,4700; //Strength2 Strength1
+			else if (.@i <= 1922) setarray .@enchants[2],4701,4701; //Strength2 Strength2
+			else if (.@i <= 1953) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
+			else if (.@i <= 1984) setarray .@enchants[2],4701,4767; //Strength2 Atk3
+			else if (.@i <= 1986) setarray .@enchants[2],4767,4767; //Atk3 Atk3
+			else if (.@i <= 1988) setarray .@enchants[2],4767,4723; //Atk3 Dexterity4
+			else if (.@i <= 1990) setarray .@enchants[2],4767,4704; //Atk3 Strength5
+			else if (.@i <= 1992) setarray .@enchants[2],4704,4704; //Strength5 Strength5
+			else if (.@i <= 1994) setarray .@enchants[2],4704,4723; //Strength5 Dexterity4
+			else if (.@i <= 1996) setarray .@enchants[2],4723,4723; //Dexterity4 Dexterity4
+			else if (.@i <= 2852) {
+				mes "[Relice]";
+				mes "Sometimes things just don't work out the way you want. I hope next time things go better for you. Until then, good bye.";
+				close;
+			}
+			break;
+		}
+		getitem2 .@item,1,1,0,0,0,.@enchants[1],.@enchants[2],.@enchants[3];
+		mes "[Relice]";
+		mes "The strengthening went well, lucky you!";
+		close;
+	}
+}
+
+// Warlock Enchants :: coin_warrock
+//============================================================
+mora,104,76,4	script	Guardian of Artifacts#p	495,{
+	if (checkweight(1201,1) == 0) {
+		mes "You have too many kinds of things with you to do that. Throw out some of them and try again.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much weight to do that. Reduce the weight and try again.";
+		close;
+	}
+	if (countitem(6380) < 10) {
+		mes "[Guardian of Artifacts]";
+		mes "My job is to guard the Warlock's ancient artifacts.";
+		next;
+		mes "[Guardian of Artifacts]";
+		mes "Well, it's not a big deal actually. I give out artifacts to those who deserve them for the price of a few Mora Coins.";
+		next;
+		mes "[Guardian of Artifacts]";
+		mes "You can trade with me when you have 10 or more Coins. See you later.";
+		close;
+	}
+	mes "[Guardian of Artifacts]";
+	mes "Wow~ I see you're ready for the Warlock's Ancient Artifacts.";
+	next;
+	mes "[Guardian of Artifacts]";
+	mes "You can choose from four types of items:";
+	mes "staffs, orbs, shoes, and robes.";
+	next;
+	mes "[Guardian of Artifacts]";
+	mes "There are four options available for each type, but the item available will change day to day, depending on my mood.";
+	next;
+	mes "[Guardian of Artifacts]";
+	mes "Do you want to buy an artifact with your Mora Coins?";
+	next;
+	if(select("Maybe later... I have things to do.:Yes, I do.") == 1) {
+		mes "[Guardian of Artifacts]";
+		mes "Okay, see you later then.";
+		close;
+	}
+	mes "[Guardian of Artifacts]";
+	mes "What type of item do you want to buy?";
+	next;
+	switch(select("Quit:Shoes:Orbs:Robes:Staves")) {
+	case 1:
+		mes "[Guardian of Artifacts]";
+		mes "Okay, see you later then.";
+		close;
+ 	case 2:
+		setarray .@items[0],2467,2468,2469,2470; //Golden_Rod_Shoes,Aqua_Shoes,Crimson_Shoes,Forest_Shoes
+		set .@plural,1;
+		break;
+	case 3:
+		setarray .@items[0],2859,2860,2861,2862; //Golden_Rod_Orb,Aqua_Orb,Crimson_Orb,Forest_Orb
+		break;
+	case 4:
+		setarray .@items[0],15025,15026,15027,15028; //Golden_Rod_Robe,Aqua_Robe,Crimson_Robe,Forest_Robe
+		break;
+	case 5:
+		setarray .@items[0],2007,2008,2009,2010; //Golden_Rod_Staff,Aqua_Staff,Crimson_Staff,Forest_Staff
+		break;
+	}
+	if (countitem(6380) < 10) {
+		mes "[Guardian of Artifacts]";
+		mes "Would you please come back when you have enough Coins?";
+		close;
+	}
+	set .@item, .@items[rand(getarraysize(.@items))];
+	delitem 6380,10; //Mora_Coin
+	getitem .@item,1;
+	mes "[Guardian of Artifacts]";
+	mes "I have ^aa00aa"+getitemname(.@item)+"^000000 available today. I hope "+((.@plural)?"they":"it")+" will come in handy...";
+	close;
+}
+
+mora,99,93,5	script	Artifact Crafter#pa0829	495,{
+	if (checkweight(1201,1) == 0) {
+		mes "You have too many kinds of things with you to do that. Throw out some of them and try again.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much weight to do that. Reduce the weight and try again.";
+		close;
+	}
+	disable_items;
+	mes "[Artifact Crafter]";
+	mes "My job is to imbue artifacts with new power. If you have enough Coins, you can have one of the following items reinforced.";
+	next;
+	if(select("Tell me more.:I want to have my item reinforced.") == 1) {
+		mes "[Artifact Crafter]";
+		mes "Let me explain. One reinforcement costs you two Coins.";
+		next;
+		set .@info_only,1;
+	}
+	mes "[Artifact Crafter]";
+	mes "And, I'll work on the item whether it's been already reinforced or not.";
+	next;
+	mes "[Artifact Crafter]";
+	mes "So if you have an artifact reinforced to your liking, put it in a safe place and come back.";
+	next;
+	mes "[Artifact Crafter]";
+	mes "And another thing, the artifact will be destroyed if the reinforcement fails. Please keep that in mind.";
+	if (.@info_only)
+		close;
+	next;
+	set .@select, select("Maybe next time.:Golden Rod Staff:Aqua Staff:Crimson Staff:Forest Staff:Golden Rod Shoes:Aqua Shoes:Crimson Shoes:Forest Shoes:Golden Rod Orb:Aqua Orb:Crimson Orb:Forest Orb:Golden Rod Robe:Aqua Robe:Crimson Robe:Forest Robe");
+	switch(.@select) {
+	case 1:
+		mes "[Artifact Crafter]";
+		mes "As you wish.";
+		close;
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+		setarray .@items[0],2007,2008,2009,2010; //Golden_Rod_Staff,Aqua_Staff,Crimson_Staff,Forest_Staff
+		set .@enchant_type,1;
+		break;
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+		setarray .@items[0],2467,2468,2469,2470; //Golden_Rod_Shoes,Aqua_Shoes,Crimson_Shoes,Forest_Shoes
+		set .@enchant_type,2;
+		break;
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+		setarray .@items[0],2859,2860,2861,2862; //Golden_Rod_Orb,Aqua_Orb,Crimson_Orb,Forest_Orb
+		set .@enchant_type,2;
+		break;
+	case 14:
+	case 15:
+	case 16:
+	case 17:
+		setarray .@items[0],15025,15026,15027,15028; //Golden_Rod_Robe,Aqua_Robe,Crimson_Robe,Forest_Robe
+		set .@enchant_type,2;
+		break;
+	}
+	set .@item, .@items[(.@select-2)%4];
+	if (countitem(6380) == 0 || countitem(.@item) == 0) {
+		mes "[Artifact Crafter]";
+		mes "You have to have 2 Mora Coins and an item to be reinforced before I can do my work.";
+		close;
+	}
+	specialeffect2 EF_REPAIRWEAPON;
+	delitem 6380,2; //Mora_Coin
+	delitem .@item,1;
+	switch(.@enchant_type) {
+	case 1:
+		set .@i, rand(1,2847);
+		     if (.@i <= 31) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
+		else if (.@i <= 62) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
+		else if (.@i <= 93) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
+		else if (.@i <= 124) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+		else if (.@i <= 155) setarray .@enchants[2],4796,4786; //HP200 Mdef2
+		else if (.@i <= 186) setarray .@enchants[2],4796,4760; //HP200 Matk1
+		else if (.@i <= 217) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
+		else if (.@i <= 248) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
+		else if (.@i <= 279) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
+		else if (.@i <= 310) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
+		else if (.@i <= 341) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
+		else if (.@i <= 372) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
+		else if (.@i <= 403) setarray .@enchants[2],4801,4786; //SP100 Mdef2
+		else if (.@i <= 434) setarray .@enchants[2],4801,4760; //SP100 Matk1
+		else if (.@i <= 465) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
+		else if (.@i <= 496) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+		else if (.@i <= 527) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
+		else if (.@i <= 558) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
+		else if (.@i <= 589) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
+		else if (.@i <= 620) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+		else if (.@i <= 651) setarray .@enchants[2],4796,4786; //HP200 Mdef2
+		else if (.@i <= 682) setarray .@enchants[2],4796,4760; //HP200 Matk1
+		else if (.@i <= 713) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
+		else if (.@i <= 744) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
+		else if (.@i <= 775) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
+		else if (.@i <= 806) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
+		else if (.@i <= 837) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
+		else if (.@i <= 868) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
+		else if (.@i <= 899) setarray .@enchants[2],4801,4786; //SP100 Mdef2
+		else if (.@i <= 930) setarray .@enchants[2],4801,4760; //SP100 Matk1
+		else if (.@i <= 961) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
+		else if (.@i <= 992) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+		else if (.@i <= 1023) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
+		else if (.@i <= 1054) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
+		else if (.@i <= 1085) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
+		else if (.@i <= 1116) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+		else if (.@i <= 1147) setarray .@enchants[2],4796,4786; //HP200 Mdef2
+		else if (.@i <= 1178) setarray .@enchants[2],4796,4760; //HP200 Matk1
+		else if (.@i <= 1209) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
+		else if (.@i <= 1240) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
+		else if (.@i <= 1271) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
+		else if (.@i <= 1302) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
+		else if (.@i <= 1333) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
+		else if (.@i <= 1364) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
+		else if (.@i <= 1395) setarray .@enchants[2],4801,4786; //SP100 Mdef2
+		else if (.@i <= 1426) setarray .@enchants[2],4801,4760; //SP100 Matk1
+		else if (.@i <= 1457) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
+		else if (.@i <= 1488) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+		else if (.@i <= 1519) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
+		else if (.@i <= 1550) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
+		else if (.@i <= 1581) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
+		else if (.@i <= 1612) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
+		else if (.@i <= 1643) setarray .@enchants[2],4796,4786; //HP200 Mdef2
+		else if (.@i <= 1674) setarray .@enchants[2],4796,4760; //HP200 Matk1
+		else if (.@i <= 1705) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
+		else if (.@i <= 1736) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
+		else if (.@i <= 1767) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
+		else if (.@i <= 1798) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
+		else if (.@i <= 1829) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
+		else if (.@i <= 1860) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
+		else if (.@i <= 1891) setarray .@enchants[2],4801,4786; //SP100 Mdef2
+		else if (.@i <= 1922) setarray .@enchants[2],4801,4760; //SP100 Matk1
+		else if (.@i <= 1953) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
+		else if (.@i <= 1984) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+		else if (.@i <= 1986) setarray .@enchants[2],4713,4761; //Inteligence4 Matk2
+		else if (.@i <= 1988) setarray .@enchants[2],4713,4713; //Inteligence4 Inteligence4
+		else if (.@i <= 1990) setarray .@enchants[2],4761,4761; //Matk2 Matk2
+		else if (.@i <= 1992) setarray .@enchants[2],4761,4713; //Matk2 Inteligence4
+		else if (.@i <= 2847) {
+			mes "[Artifact Crafter]";
+			mes "Oh no... it broke... Well, it happens. Better luck next time.";
+			close;
+		}
+		break;
+	case 2:
+		set .@i, rand(1,2858);
+		     if (.@i <= 31) setarray .@enchants[1],4710,4720,4786; //Inteligence1 Dexterity1 Mdef2
+		else if (.@i <= 62) setarray .@enchants[1],4710,4720,4760; //Inteligence1 Dexterity1 Matk1
+		else if (.@i <= 93) setarray .@enchants[1],4710,4720,4711; //Inteligence1 Dexterity1 Inteligence2
+		else if (.@i <= 124) setarray .@enchants[1],4710,4720,4721; //Inteligence1 Dexterity1 Dexterity2
+		else if (.@i <= 155) setarray .@enchants[1],4710,4796,4786; //Inteligence1 HP200 Mdef2
+		else if (.@i <= 186) setarray .@enchants[1],4710,4796,4760; //Inteligence1 HP200 Matk1
+		else if (.@i <= 217) setarray .@enchants[1],4710,4796,4711; //Inteligence1 HP200 Inteligence2
+		else if (.@i <= 248) setarray .@enchants[1],4710,4796,4721; //Inteligence1 HP200 Dexterity2
+		else if (.@i <= 279) setarray .@enchants[1],4710,4710,4786; //Inteligence1 Inteligence1 Mdef2
+		else if (.@i <= 310) setarray .@enchants[1],4710,4710,4760; //Inteligence1 Inteligence1 Matk1
+		else if (.@i <= 341) setarray .@enchants[1],4710,4710,4711; //Inteligence1 Inteligence1 Inteligence2
+		else if (.@i <= 372) setarray .@enchants[1],4710,4710,4721; //Inteligence1 Inteligence1 Dexterity2
+		else if (.@i <= 403) setarray .@enchants[1],4710,4801,4786; //Inteligence1 SP100 Mdef2
+		else if (.@i <= 434) setarray .@enchants[1],4710,4801,4760; //Inteligence1 SP100 Matk1
+		else if (.@i <= 465) setarray .@enchants[1],4710,4801,4711; //Inteligence1 SP100 Inteligence2
+		else if (.@i <= 496) setarray .@enchants[1],4710,4801,4721; //Inteligence1 SP100 Dexterity2
+		else if (.@i <= 527) setarray .@enchants[1],4711,4720,4786; //Inteligence2 Dexterity1 Mdef2
+		else if (.@i <= 558) setarray .@enchants[1],4711,4720,4760; //Inteligence2 Dexterity1 Matk1
+		else if (.@i <= 589) setarray .@enchants[1],4711,4720,4711; //Inteligence2 Dexterity1 Inteligence2
+		else if (.@i <= 620) setarray .@enchants[1],4711,4720,4721; //Inteligence2 Dexterity1 Dexterity2
+		else if (.@i <= 651) setarray .@enchants[1],4711,4796,4786; //Inteligence2 HP200 Mdef2
+		else if (.@i <= 682) setarray .@enchants[1],4711,4796,4760; //Inteligence2 HP200 Matk1
+		else if (.@i <= 713) setarray .@enchants[1],4711,4796,4711; //Inteligence2 HP200 Inteligence2
+		else if (.@i <= 744) setarray .@enchants[1],4711,4796,4721; //Inteligence2 HP200 Dexterity2
+		else if (.@i <= 775) setarray .@enchants[1],4711,4710,4786; //Inteligence2 Inteligence1 Mdef2
+		else if (.@i <= 806) setarray .@enchants[1],4711,4710,4760; //Inteligence2 Inteligence1 Matk1
+		else if (.@i <= 837) setarray .@enchants[1],4711,4710,4711; //Inteligence2 Inteligence1 Inteligence2
+		else if (.@i <= 868) setarray .@enchants[1],4711,4710,4721; //Inteligence2 Inteligence1 Dexterity2
+		else if (.@i <= 899) setarray .@enchants[1],4711,4801,4786; //Inteligence2 SP100 Mdef2
+		else if (.@i <= 930) setarray .@enchants[1],4711,4801,4760; //Inteligence2 SP100 Matk1
+		else if (.@i <= 961) setarray .@enchants[1],4711,4801,4711; //Inteligence2 SP100 Inteligence2
+		else if (.@i <= 992) setarray .@enchants[1],4711,4801,4721; //Inteligence2 SP100 Dexterity2
+		else if (.@i <= 1023) setarray .@enchants[1],4720,4720,4786; //Dexterity1 Dexterity1 Mdef2
+		else if (.@i <= 1054) setarray .@enchants[1],4720,4720,4760; //Dexterity1 Dexterity1 Matk1
+		else if (.@i <= 1085) setarray .@enchants[1],4720,4720,4711; //Dexterity1 Dexterity1 Inteligence2
+		else if (.@i <= 1116) setarray .@enchants[1],4720,4720,4721; //Dexterity1 Dexterity1 Dexterity2
+		else if (.@i <= 1147) setarray .@enchants[1],4720,4796,4786; //Dexterity1 HP200 Mdef2
+		else if (.@i <= 1178) setarray .@enchants[1],4720,4796,4760; //Dexterity1 HP200 Matk1
+		else if (.@i <= 1209) setarray .@enchants[1],4720,4796,4711; //Dexterity1 HP200 Inteligence2
+		else if (.@i <= 1240) setarray .@enchants[1],4720,4796,4721; //Dexterity1 HP200 Dexterity2
+		else if (.@i <= 1271) setarray .@enchants[1],4720,4710,4786; //Dexterity1 Inteligence1 Mdef2
+		else if (.@i <= 1302) setarray .@enchants[1],4720,4710,4760; //Dexterity1 Inteligence1 Matk1
+		else if (.@i <= 1333) setarray .@enchants[1],4720,4710,4711; //Dexterity1 Inteligence1 Inteligence2
+		else if (.@i <= 1364) setarray .@enchants[1],4720,4710,4721; //Dexterity1 Inteligence1 Dexterity2
+		else if (.@i <= 1395) setarray .@enchants[1],4720,4801,4786; //Dexterity1 SP100 Mdef2
+		else if (.@i <= 1426) setarray .@enchants[1],4720,4801,4760; //Dexterity1 SP100 Matk1
+		else if (.@i <= 1457) setarray .@enchants[1],4720,4801,4711; //Dexterity1 SP100 Inteligence2
+		else if (.@i <= 1488) setarray .@enchants[1],4720,4801,4721; //Dexterity1 SP100 Dexterity2
+		else if (.@i <= 1519) setarray .@enchants[1],4721,4720,4786; //Dexterity2 Dexterity1 Mdef2
+		else if (.@i <= 1550) setarray .@enchants[1],4721,4720,4760; //Dexterity2 Dexterity1 Matk1
+		else if (.@i <= 1581) setarray .@enchants[1],4721,4720,4711; //Dexterity2 Dexterity1 Inteligence2
+		else if (.@i <= 1612) setarray .@enchants[1],4721,4720,4721; //Dexterity2 Dexterity1 Dexterity2
+		else if (.@i <= 1643) setarray .@enchants[1],4721,4796,4786; //Dexterity2 HP200 Mdef2
+		else if (.@i <= 1674) setarray .@enchants[1],4721,4796,4760; //Dexterity2 HP200 Matk1
+		else if (.@i <= 1705) setarray .@enchants[1],4721,4796,4711; //Dexterity2 HP200 Inteligence2
+		else if (.@i <= 1736) setarray .@enchants[1],4721,4796,4721; //Dexterity2 HP200 Dexterity2
+		else if (.@i <= 1767) setarray .@enchants[1],4721,4710,4786; //Dexterity2 Inteligence1 Mdef2
+		else if (.@i <= 1798) setarray .@enchants[1],4721,4710,4760; //Dexterity2 Inteligence1 Matk1
+		else if (.@i <= 1829) setarray .@enchants[1],4721,4710,4711; //Dexterity2 Inteligence1 Inteligence2
+		else if (.@i <= 1860) setarray .@enchants[1],4721,4710,4721; //Dexterity2 Inteligence1 Dexterity2
+		else if (.@i <= 1891) setarray .@enchants[1],4721,4801,4786; //Dexterity2 SP100 Mdef2
+		else if (.@i <= 1922) setarray .@enchants[1],4721,4801,4760; //Dexterity2 SP100 Matk1
+		else if (.@i <= 1953) setarray .@enchants[1],4721,4801,4711; //Dexterity2 SP100 Inteligence2
+		else if (.@i <= 1984) setarray .@enchants[1],4721,4801,4721; //Dexterity2 SP100 Dexterity2
+		else if (.@i <= 1986) setarray .@enchants[1],4712,4713,4761; //Inteligence3 Inteligence4 Matk2
+		else if (.@i <= 1988) setarray .@enchants[1],4712,4713,4713; //Inteligence3 Inteligence4 Inteligence4
+		else if (.@i <= 1990) setarray .@enchants[1],4712,4761,4761; //Inteligence3 Matk2 Matk2
+		else if (.@i <= 1992) setarray .@enchants[1],4712,4761,4713; //Inteligence3 Matk2 Inteligence4
+		else if (.@i <= 1994) setarray .@enchants[1],4722,4713,4761; //Dexterity3 Inteligence4 Matk2
+		else if (.@i <= 1996) setarray .@enchants[1],4722,4713,4713; //Dexterity3 Inteligence4 Inteligence4
+		else if (.@i <= 1998) setarray .@enchants[1],4722,4761,4761; //Dexterity3 Matk2 Matk2
+		else if (.@i <= 2000) setarray .@enchants[1],4722,4761,4713; //Dexterity3 Matk2 Inteligence4
+		else if (.@i <= 2858) {
+			mes "[Artifact Crafter]";
+			mes "Oh no... it broke... Well, it happens. Better luck next time.";
+			close;
+		}
+		break;
+	}
+	getitem2 .@item,1,1,0,0,0,.@enchants[1],.@enchants[2],.@enchants[3];
+	mes "[Artifact Crafter]";
+	mes "Looks like my effort was successful.";
+	close;
+}
+
+// Rune Knight, Guillotine Cross, & Ranger Enchants :: new_artifact
+//============================================================
+mora,152,97,5	script	Guardian of Power#pa082	515,{
+	if (checkweight(1201,1) == 0) {
+		mes "Reduce the amount of items that you have in your inventory before continuing.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much in your inventory.";
+		close;
+	}
+	if (countitem(6380) < 10) {
+		mes "[Guardian of Power]";
+		mes "I give Rune Knights, Guillotine Crosses, and Rangers ancient artifacts to help them carry out their missions.";
+		next;
+		mes "[Guardian of Power]";
+		mes "There are guardians that give Mora Village coins which you can use to exchange for these artifacts.";
+		next;
+		mes "[Guardian of Power]";
+		mes "If you collect 10 or more Mora coins, then I can trade them for the artifacts.";
+		close;
+	}
+	mes "[Guardian of Power]";
+	mes "I think that you're ready to receive the ancient artifacts.";
+	next;
+	mes "[Guardian of Power]";
+	mes "Based on what class you specify, there are various artifacts available.";
+	next;
+	mes "[Guardian of Power]";
+	mes "^ff0000Choose carefully because these artifacts aren't easy to come by^000000. So what class do you want it for?";
+	next;
+	setarray .@jobs$[0],"Rune Knight","Guillotine Cross","Ranger";
+	set .@job, select("Cancel:Rune Knight:Guillotine Cross:Ranger")-2;
+	if (.@job == -1) {
+		mes "[Guardian of Power]";
+		mes "Talk to me later then.";
+		close;
+	}
+	mes "[Guardian of Power]";
+	mes .@jobs$[.@job]+"~ which artifact do you want?";
+	next;
+	switch(.@job) {
+	case 0: // Rune Knight
+		setarray .@items[0],2475,2476,2574,2575;
+		set .@i, select("Cancel:Ur's Greaves (Shoes):Peuz Greaves (Shoes):Ur's Manteau (Garment):Peuz Manteau (Garment)")-2;
+		break;
+	case 1: // Guillotine Cross
+		setarray .@items[0],2477,2478,2577,2578;
+		set .@i, select("Cancel:Sapha Shoes (Shoes):Nab Shoes (Shoes):Sapha Hood (Garment):Nab Hood (Garment)")-2;
+		break;
+	case 2: // Ranger
+		setarray .@items[0],2479,2480,2580,2581;
+		set .@i, select("Cancel:White Wing Boots (Shoes):Black Wing Boots (Shoes):White Wing Manteau (Garment):Black Wing Manteau (Garment)")-2;
+		break;
+	}
+	if (.@i == -1) {
+		mes "[Guardian of Power]";
+		mes "Talk to me later then.";
+		close;
+	}
+	if (countitem(6380) < 10) {
+		mes "[Guardian of Power]";
+		mes "Didn't I tell you to bring the correct amount of Mora Coins?";
+		close;
+	}
+	delitem 6380,10; //Mora_Coin
+	getitem .@items[.@i],1;
+	mes "[Guardian of Power]";
+	mes "Thank you for the 10 Mora Coins. Here is your artifact for the "+.@jobs$[.@job]+" job. Come back whenever you get more Mora Coins.";
+	close;
+}
+
+mora,148,98,3	script	Artifact Researcher#new	521,{
+	if (checkweight(1201,1) == 0) {
+		mes "Reduce the amount of items that you have in your inventory before continuing.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much in your inventory.";
+		close;
+	}
+	disable_items;
+	mes "[Artifact Researcher]";
+	mes "Nice to meet you.";
+	mes "I'm here in Mora studying ancient relics and artifacts. The new discoveries of Adventurers has made this village very exciting for me.";
+	next;
+	switch(select("Tell me more...:Give abilities to artifacts.:Reset Enhanced abilities.")) {
+	case 1:
+		mes "[Artifact Researcher]";
+		mes "New artifacts have been found here in Mora village, haven't you heard the news?";
+		next;
+		mes "[Artifact Researcher]";
+		mes "If you come across any of these artifacts, there are hidden powers that can be extracted from them.";
+		next;
+		mes "[Artifact Researcher]";
+		mes "I'm going to continue my research for these artifacts. We researchers are taking Mora Coins as payment for our services...";
+		next;
+		mes "[Artifact Researcher]";
+		mes "I'm offering my services to give abilities to the artifacts for 100,000 zeny and 1 Mora Coin.";
+		next;
+		mes "[Artifact Researcher]";
+		mes "The best part of my service is that any enhancements that you have in these artifacts will not be harmed.";
+		close;
+	case 2:
+		set @mora_enchant_select,1;
+		break;
+	case 3:
+		set @mora_enchant_select,2;
+		break;
+	}
+	if (Zeny < 100000 || countitem(6380) == 0) {
+		mes "[Artifact Researcher]";
+		mes "I'm not giving these services out for free pal. 100,000 zeny or 1 Mora Coin. Is that too much to ask?";
+		close;
+	}
+	mes "[Artifact Researcher]";
+	mes "Ok, so are you ready? Before I start working on this, what kind of equipment did you want me to enhance?";
+	next;
+	set .@i, select("I'm not wearing the equipment:1. Weapon:2. Shoes:3. Garment:4. Armor:5. Accessory")-2;
+	if (.@i == -1) {
+		mes "[Artifact Researcher]";
+		mes "Make sure you're wearing the equipment first.";
+		close;
+	}
+	setarray .@parts[0], EQI_HAND_R, EQI_SHOES, EQI_GARMENT, EQI_ARMOR, EQI_ACC_L;
+	set .@part, .@parts[.@i];
+	if (!getequipisequiped(.@part)) {
+		mes "[Artifact Researcher]";
+		mes "Make sure you're wearing the equipment first.";
+		close;
+	}
+	set .@equip_id, getequipid(.@part);
+	set @mora_equip_part, .@part;
+
+	// @mora_equip_id = enc_type
+	//callsub L_Socket,<enchant type>,<bonus enchant type>,<4-x enchants possible>;
+	// Enchant types:
+	//   [1]ATK [2]CRIT [3]EVA [4]Healer [5]Spell 1 [6]Assist 1 [7]Assist 2 [8]STR [9]Range [10]Physical [11]Spell 2
+	switch(.@part) {
+	case 4: //EQI_HAND_R
+		switch(.@equip_id) {
+			case 1660: callsub L_Socket,4,5,1;  //Wand_Of_Affection2
+			case 2011: callsub L_Socket,5,11,1; //Golden_Rod_Staff2
+			case 2012: callsub L_Socket,5,11,1; //Aqua_Staff2
+			case 2013: callsub L_Socket,5,11,1; //Crimson_Staff2
+			case 2014: callsub L_Socket,5,11,1; //Forest_Staff2
+			case 16018: callsub L_Socket,1,5,1; //Mace_Of_Judgement2
+		}
+		break;
+	case 6: //EQI_SHOES
+		switch(.@equip_id) {
+			case 2475: callsub L_Socket,6,8,1;  //Ur_Greave
+			case 2476: callsub L_Socket,6,10,1; //Peuz_Greave
+			case 2477: callsub L_Socket,6,2,1;  //Sabah_Shoes
+			case 2478: callsub L_Socket,6,1,1;  //Nab_Shoes
+			case 2479: callsub L_Socket,6,2,1;  //White_Wing_Boots
+			case 2480: callsub L_Socket,6,1,1;  //Black_Wing_Boots
+		}
+		break;
+	case 5: //EQI_GARMENT
+		switch(.@equip_id) {
+			case 2574: callsub L_Socket,3,8,1; //Ur_Manteau
+			case 2575: callsub L_Socket,3,2,1; //Peuz_Manteau
+			case 2577: callsub L_Socket,3,2,1; //Sabah_Hood
+			case 2578: callsub L_Socket,3,2,1; //Nab_Hood
+			case 2580: callsub L_Socket,3,1,1; //White_Wing_Manteau
+			case 2581: callsub L_Socket,3,1,1; //Black_Wing_Manteau
+		}
+		break;
+	case 2: //EQI_ARMOR
+		switch(.@equip_id) {
+			case 15036: callsub L_Socket,8,1,1;  //Ur_Plate
+			case 15037: callsub L_Socket,10,2,1; //Peuz_Plate
+			case 15038: callsub L_Socket,2,10,1; //Sabah_Cloth
+			case 15039: callsub L_Socket,1,2,1;  //Nab_Cloth
+			case 15042: callsub L_Socket,2,9,1;  //White_Wing_Suits
+			case 15043: callsub L_Socket,1,9,1;  //Black_Wing_Suits
+		}
+		break;
+	case 7: //EQI_ACC_L
+		switch(.@equip_id) {
+			case 2883: callsub L_Socket,6,0,2; //Ur_Seal
+			case 2884: callsub L_Socket,6,0,2; //Peuz_Seal
+			case 2886: callsub L_Socket,6,0,2; //Sabah_Ring
+			case 2887: callsub L_Socket,6,0,2; //Nab_Ring
+			case 2890: callsub L_Socket,6,0,2; //White_Wing_Brooch
+			case 2891: callsub L_Socket,6,0,2; //Black_wing_Brooch
+		}
+		break;
+	}
+	mes "[Artifact Researcher]";
+	mes "^990099"+getequipname(.@part)+"^000000??";
+	mes "I really want to study this equipment...";
+	set @mora_equip_part,0;
+	close;
+
+L_Socket:
+	set .@select, @mora_enchant_select;
+	set .@enchant_type, getarg(0);
+	set .@part, @mora_equip_part;
+	set .@equip_id, getequipid(.@part);
+	set .@equip_name$, getitemname(.@equip_id);
+	set .@equip_refine, getequiprefinerycnt(.@part);
+	setarray .@equip_card[0], getequipcardid(.@part,0),getequipcardid(.@part,1),getequipcardid(.@part,2),getequipcardid(.@part,3);
+	set @mora_equip_part,0;
+	set @mora_enchant_select,0;
+
+	if (.@select == 1) {
+		// If refine is +9 or higher, unlock bonus enchant type.
+		if (.@equip_refine >= 9 && getarg(1) > 0) {
+			if (.@enchant_type < 1 || .@enchant_type > 11 || getarg(1) > 11) {
+				mes "[Artifact Researcher]";
+				mes "Mm-hmm something is wrong.";
+				close;
+			}
+			setarray .@enchant_type$[1],"ATK Type","Critical Type","Evasion Type","Healer Type","Spell Ability 1","Assist Ability 1","Assist Ability 2","Strength","Range Type","Physical Type","Spell Ability 2";
+			mes "[Artifact Researcher]";
+			mes "It's a considerable reinforcement to the equipment. In this case extended enhancements can be granted. Which stat do you want to enhance?";
+			next;
+			switch(select(.@enchant_type$[.@enchant_type],.@enchant_type$[getarg(1)])) {
+			case 1:
+				break;
+			case 2:
+				set .@enchant_type, getarg(1);
+				break;
+			}
+		}
+		if (.@equip_card[3] == 0 && getarg(2) < 4) {
+			set .@slot,4;
+			mes "[Artifact Researcher]";
+			mes "Attempting to strengthen the ability further. The previous enforcement won't be affected. Do you want to continue?";
+		} else if (.@equip_card[2] == 0 && getarg(2) < 3) {
+			set .@slot,3;
+			mes "[Artifact Researcher]";
+			mes "Attempting second enhancement. The previous enforcement won't be affected.";
+			next;
+			mes "[Artifact Researcher]";
+			mes "I may have a chance to fail now with this attempt. Do you wish to continue?";
+		} else if (.@equip_card[1] == 0 && getarg(2) < 2) {
+			set .@slot,2;
+			mes "[Artifact Researcher]";
+			mes "Let's start the third enhancement. I can give the best stats at this stage but remember, ^990000there is now a chance for the artifact to be destroyed and previous enhancements will be erased^000000. Continue?";
+		} else {
+			mes "[Artifact Researcher]";
+			mes "This artifact has been strengthened to the limit. Further enhancement is impossible at its current state.";
+			close;
+		}
+		next;
+		if(select("I'll come back later.:Please continue!") == 1) {
+			mes "[Artifact Researcher]";
+			mes "If you change your mind, please come back.";
+			close;
+		}
+		switch(.@enchant_type) {
+		case 1: //Attack
+			     if (.@slot == 4) set .@i, rand(1,525);
+			else if (.@slot == 3) set .@i, rand(301,655);
+			else if (.@slot == 2) set .@i, rand(451,750);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 101) set .@enchant,4700; //Strength1
+			else if (.@i < 201) set .@enchant,4811; //Fighting_Spirit1
+			else if (.@i < 301) set .@enchant,4819; //Atk1
+			else if (.@i < 351) set .@enchant,4701; //Strength2
+			else if (.@i < 401) set .@enchant,4810; //Fighting_Spirit2
+			else if (.@i < 451) set .@enchant,4766; //Atk2
+			else if (.@i < 476) set .@enchant,4702; //Strength3
+			else if (.@i < 501) set .@enchant,4809; //Fighting_Spirit3
+			else if (.@i < 526) set .@enchant,4767; //Atk3
+			else if (.@i < 626) set .@enchant,0;
+			else if (.@i < 641) set .@enchant,4703; //Strength4
+			else if (.@i < 656) set .@enchant,4808; //Fighting_Spirit4
+			else if (.@i < 661) set .@enchant,4704; //Strength5
+			else if (.@i < 666) set .@enchant,4820; //Fighting_Spirit5
+			else if (.@i < 668) set .@enchant,4705; //Strength6
+			else if (.@i < 670) set .@enchant,4821; //Fighting_Spirit6
+			else set .@enchant,9;
+			break;
+		case 2: //Critical
+			     if (.@slot == 4) set .@i, rand(1,470);
+			else if (.@slot == 3) set .@i, rand(201,610);
+			else if (.@slot == 2) set .@i, rand(381,750);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 101) set .@enchant,4750; //Luck1
+			else if (.@i < 201) set .@enchant,4700; //Strength1
+			else if (.@i < 261) set .@enchant,4751; //Luck2
+			else if (.@i < 321) set .@enchant,4701; //Strength2
+			else if (.@i < 351) set .@enchant,4752; //Luck3
+			else if (.@i < 381) set .@enchant,4702; //Strength3
+			else if (.@i < 411) set .@enchant,4764; //Critical5
+			else if (.@i < 441) set .@enchant,4818; //Sharp1
+			else if (.@i < 471) set .@enchant,4752; //Luck3
+			else if (.@i < 571) set .@enchant,0;
+			else if (.@i < 586) set .@enchant,4753; //Luck4
+			else if (.@i < 601) set .@enchant,4754; //Luck5
+			else if (.@i < 606) set .@enchant,4765; //Critical7
+			else if (.@i < 611) set .@enchant,4817; //Sharp2
+			else if (.@i < 616) set .@enchant,4703; //Strength4
+			else if (.@i < 618) set .@enchant,4816; //Sharp3
+			else set .@enchant,9;
+			break;
+		case 3: //Evasion
+			     if (.@slot == 4) set .@i, rand(1,525);
+			else if (.@slot == 3) set .@i, rand(301,670);
+			else if (.@slot == 2) set .@i, rand(451,800);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 101) set .@enchant,4859; //Evasion1
+			else if (.@i < 201) set .@enchant,4750; //Luck1
+			else if (.@i < 301) set .@enchant,4730; //Agility1
+			else if (.@i < 351) set .@enchant,4860; //Evasion3
+			else if (.@i < 401) set .@enchant,4751; //Luck2
+			else if (.@i < 451) set .@enchant,4731; //Agility2
+			else if (.@i < 476) set .@enchant,4731; //Agility2
+			else if (.@i < 501) set .@enchant,4752; //Luck3
+			else if (.@i < 526) set .@enchant,4732; //Agility3
+			else if (.@i < 626) set .@enchant,0;
+			else if (.@i < 641) set .@enchant,4762; //Evasion6
+			else if (.@i < 656) set .@enchant,4753; //Luck4
+			else if (.@i < 671) set .@enchant,4733; //Agility4
+			else if (.@i < 676) set .@enchant,4763; //Evasion12
+			else if (.@i < 681) set .@enchant,4754; //Luck5
+			else if (.@i < 683) set .@enchant,4734; //Agility5
+			else set .@enchant,9;
+			break;
+		case 4: //Healer
+			     if (.@slot == 4) set .@i, rand(1,375);
+			else if (.@slot == 3) set .@i, rand(201,535);
+			else if (.@slot == 2) set .@i, rand(301,650);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 101) set .@enchant,4710; //Inteligence1
+			else if (.@i < 201) set .@enchant,4720; //Dexterity1
+			else if (.@i < 251) set .@enchant,4711; //Inteligence2
+			else if (.@i < 301) set .@enchant,4721; //Dexterity2
+			else if (.@i < 326) set .@enchant,4805; //Heal_Amount2
+			else if (.@i < 351) set .@enchant,4712; //Inteligence3
+			else if (.@i < 376) set .@enchant,4722; //Dexterity3
+			else if (.@i < 476) set .@enchant,0;
+			else if (.@i < 491) set .@enchant,4760; //Matk1
+			else if (.@i < 506) set .@enchant,4850; //Heal_Amount3
+			else if (.@i < 521) set .@enchant,4713; //Inteligence4
+			else if (.@i < 536) set .@enchant,4723; //Dexterity4
+			else if (.@i < 541) set .@enchant,4761; //Matk2
+			else if (.@i < 546) set .@enchant,4851; //Heal_Amount4
+			else if (.@i < 548) set .@enchant,4806; //Matk3
+			else if (.@i < 550) set .@enchant,4852; //Heal_Amount5
+			else set .@enchant,9;
+			break;
+		case 5: //Spell 1
+			     if (.@slot == 4) set .@i, rand(1,600);
+			else if (.@slot == 3) set .@i, rand(401,760);
+			else if (.@slot == 2) set .@i, rand(401,766);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 101) set .@enchant,4710; //Inteligence1
+			else if (.@i < 201) set .@enchant,4720; //Dexterity1
+			else if (.@i < 301) set .@enchant,4795; //HP100
+			else if (.@i < 401) set .@enchant,4815; //Spell1
+			else if (.@i < 451) set .@enchant,4711; //Inteligence2
+			else if (.@i < 501) set .@enchant,4721; //Dexterity2
+			else if (.@i < 551) set .@enchant,4796; //HP200
+			else if (.@i < 601) set .@enchant,4814; //Spell2
+			else if (.@i < 701) set .@enchant,0;
+			else if (.@i < 716) set .@enchant,4712; //Inteligence3
+			else if (.@i < 731) set .@enchant,4722; //Dexterity3
+			else if (.@i < 746) set .@enchant,4797; //HP300
+			else if (.@i < 761) set .@enchant,4813; //Spell3
+			else if (.@i < 763) set .@enchant,4713; //Inteligence4
+			else if (.@i < 765) set .@enchant,4723; //Dexterity4
+			else if (.@i < 767) set .@enchant,4812; //Spell4
+			else set .@enchant,9;
+			break;
+		case 6: //Assist 1
+			     if (.@slot == 4) set .@i, rand(1,520);
+			else if (.@slot == 3) set .@i, rand(321,720);
+			else if (.@slot == 2) set .@i, rand(521,850);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 81)  set .@enchant,4792; //Def6
+			else if (.@i < 161) set .@enchant,4787; //Mdef4
+			else if (.@i < 241) set .@enchant,4801; //SP100
+			else if (.@i < 321) set .@enchant,4796; //HP200
+			else if (.@i < 371) set .@enchant,4700; //Strength1
+			else if (.@i < 421) set .@enchant,4720; //Dexterity1
+			else if (.@i < 471) set .@enchant,4730; //Agility1
+			else if (.@i < 521) set .@enchant,4740; //Vitality1
+			else if (.@i < 621) set .@enchant,0;
+			else if (.@i < 646) set .@enchant,4793; //Def9
+			else if (.@i < 671) set .@enchant,4788; //Mdef6
+			else if (.@i < 696) set .@enchant,4802; //SP150
+			else if (.@i < 721) set .@enchant,4797; //HP300
+			else if (.@i < 731) set .@enchant,4701; //Strength2
+			else if (.@i < 741) set .@enchant,4721; //Dexterity2
+			else if (.@i < 751) set .@enchant,4731; //Agility2
+			else set .@enchant,9;
+			break;
+		case 7: //Assist 2
+			     if (.@slot == 4) set .@i, rand(1,520);
+			else if (.@slot == 3) set .@i, rand(321,720);
+			else if (.@slot == 2) set .@i, rand(521,850);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 81)  set .@enchant,4792; //Def6
+			else if (.@i < 161) set .@enchant,4787; //Mdef4
+			else if (.@i < 241) set .@enchant,4801; //SP100
+			else if (.@i < 321) set .@enchant,4796; //HP200
+			else if (.@i < 371) set .@enchant,4710; //Inteligence1
+			else if (.@i < 421) set .@enchant,4720; //Dexterity1
+			else if (.@i < 471) set .@enchant,4730; //Agility1
+			else if (.@i < 521) set .@enchant,4740; //Vitality1
+			else if (.@i < 621) set .@enchant,0;
+			else if (.@i < 646) set .@enchant,4793; //Def9
+			else if (.@i < 671) set .@enchant,4788; //Mdef6
+			else if (.@i < 696) set .@enchant,4802; //SP150
+			else if (.@i < 721) set .@enchant,4797; //HP300
+			else if (.@i < 731) set .@enchant,4711; //Inteligence2
+			else if (.@i < 741) set .@enchant,4721; //Dexterity2
+			else if (.@i < 751) set .@enchant,4741; //Vitality2
+			else set .@enchant,9;
+			break;
+		case 8: //Strength
+			     if (.@slot == 4) set .@i, rand(1,525);
+			else if (.@slot == 3) set .@i, rand(301,685);
+			else if (.@slot == 2) set .@i, rand(451,800);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 101) set .@enchant,4740; //Vitality1
+			else if (.@i < 201) set .@enchant,4797; //HP300
+			else if (.@i < 301) set .@enchant,4791; //Def3
+			else if (.@i < 351) set .@enchant,4741; //Vitality2
+			else if (.@i < 401) set .@enchant,4798; //HP400
+			else if (.@i < 451) set .@enchant,4792; //Def6
+			else if (.@i < 476) set .@enchant,4742; //Vitality3
+			else if (.@i < 501) set .@enchant,4793; //Def9
+			else if (.@i < 526) set .@enchant,4799; //HP500
+			else if (.@i < 626) set .@enchant,0;
+			else if (.@i < 641) set .@enchant,4742; //Vitality3
+			else if (.@i < 656) set .@enchant,4743; //Vitality4
+			else if (.@i < 671) set .@enchant,4794; //Def12
+			//else if (.@i < 686) set .@enchant,01; // ??
+			else if (.@i < 688) set .@enchant,4744; //Vitality5
+			//else if (.@i < 690) set .@enchant,02; // ??
+			else set .@enchant,9;
+			break;
+		case 9: //Range
+			     if (.@slot == 4) set .@i, rand(1,470);
+			else if (.@slot == 3) set .@i, rand(201,610);
+			else if (.@slot == 2) set .@i, rand(321,750);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 101) set .@enchant,4750; //Luck1
+			else if (.@i < 201) set .@enchant,4720; //Dexterity1
+			else if (.@i < 261) set .@enchant,4751; //Luck2
+			else if (.@i < 321) set .@enchant,4721; //Dexterity2
+			else if (.@i < 351) set .@enchant,4752; //Luck3
+			else if (.@i < 381) set .@enchant,4722; //Dexterity3
+			else if (.@i < 411) set .@enchant,4764; //Critical5
+			else if (.@i < 441) set .@enchant,4832; //Expert_Archer1
+			else if (.@i < 471) set .@enchant,4753; //Luck4
+			else if (.@i < 571) set .@enchant,0;
+			else if (.@i < 586) set .@enchant,4723; //Dexterity4
+			else if (.@i < 601) set .@enchant,4833; //Expert_Archer2
+			else if (.@i < 606) set .@enchant,4765; //Critical7
+			else if (.@i < 611) set .@enchant,4834; //Expert_Archer3
+			else if (.@i < 616) set .@enchant,4724; //Dexterity5
+			else if (.@i < 618) set .@enchant,4835; //Expert_Archer4
+			else set .@enchant,9;
+			break;
+		case 10: //Physical
+			     if (.@slot == 4) set .@i, rand(1,600);
+			else if (.@slot == 3) set .@i, rand(401,800);
+			else if (.@slot == 2) set .@i, rand(601,930);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 101) set .@enchant,4791; //Def3
+			else if (.@i < 201) set .@enchant,4730; //Agility1
+			else if (.@i < 301) set .@enchant,4750; //Luck1
+			else if (.@i < 401) set .@enchant,4795; //HP100
+			else if (.@i < 451) set .@enchant,4792; //Def6
+			else if (.@i < 501) set .@enchant,4731; //Agility2
+			else if (.@i < 551) set .@enchant,4751; //Luck2
+			else if (.@i < 601) set .@enchant,4796; //HP200
+			else if (.@i < 701) set .@enchant,0;
+			else if (.@i < 726) set .@enchant,4793; //Def9
+			else if (.@i < 751) set .@enchant,4732; //Agility3
+			else if (.@i < 776) set .@enchant,4752; //Luck3
+			else if (.@i < 801) set .@enchant,4797; //HP300
+			else if (.@i < 816) set .@enchant,4733; //Agility4
+			else if (.@i < 831) set .@enchant,4753; //Luck4
+			else if (.@i < 833) set .@enchant,4807; //Atk_Speed1
+			else set .@enchant,9;
+			break;
+		case 11: //Spell 2
+			     if (.@slot == 4) set .@i, rand(1,600);
+			else if (.@slot == 3) set .@i, rand(401,760);
+			else if (.@slot == 2) set .@i, rand(401,766);
+			else {
+				mes "[Artifact Researcher]";
+				mes "An unknown error has occurred.";
+				close;
+			}
+			     if (.@i < 101) set .@enchant,4711; //Inteligence2
+			else if (.@i < 201) set .@enchant,4721; //Dexterity2
+			else if (.@i < 301) set .@enchant,4796; //HP200
+			else if (.@i < 401) set .@enchant,4814; //Spell2
+			else if (.@i < 451) set .@enchant,4712; //Inteligence3
+			else if (.@i < 501) set .@enchant,4722; //Dexterity3
+			else if (.@i < 551) set .@enchant,4760; //Matk1
+			else if (.@i < 601) set .@enchant,4813; //Spell3
+			else if (.@i < 701) set .@enchant,0;
+			else if (.@i < 716) set .@enchant,4713; //Inteligence4
+			else if (.@i < 731) set .@enchant,4723; //Dexterity4
+			else if (.@i < 746) set .@enchant,4761; //Matk2
+			else if (.@i < 761) set .@enchant,4812; //Spell4
+			else if (.@i < 763) set .@enchant,4714; //Inteligence5
+			else if (.@i < 765) set .@enchant,4724; //Dexterity5
+			else if (.@i < 767) set .@enchant,4806; //Matk3
+			else set .@enchant,9;
+			break;
+		default:
+			mes "[Artifact Researcher]";
+			mes "Well I guess I was wrong...";
+			close;
+		}
+		if (.@equip_card[3] == 0 && getarg(2) < 4) {
+			set .@equip_card[3],.@enchant;
+		} else if (.@equip_card[2] == 0 && getarg(2) < 3) {
+			set .@equip_card[2],.@enchant;
+			if (.@enchant == 0) {
+				set .@equip_card[3],0;
+			}
+		} else if (.@equip_card[1] == 0 && getarg(2) < 2) {
+			set .@equip_card[1],.@enchant;
+			if (.@enchant == 0) {
+				set .@equip_card[2],0;
+				set .@equip_card[3],0;
+			}
+		} else {
+			mes "[Artifact Researcher]";
+			mes "I think there was an enhancing limit to the artifacts.";
+			close;
+		}
+		if (Zeny < 100000 || countitem(6380) == 0) {
+			mes "[Artifact Researcher]";
+			mes "I'm not going to do the work unless you pay the fee.";
+			close;
+		}
+		delitem 6380,1; //Mora_Coin
+		set Zeny, Zeny-100000;
+		delequip .@part;
+		if (.@enchant == 9) {
+			specialeffect2 EF_SUI_EXPLOSION;
+			mes "[Artifact Researcher]";
+			mes "This!";
+ 			mes "I... I'm sorry but the equipment has been destroyed.";
+			close;
+		}
+		if (.@enchant == 0) {
+			specialeffect2 EF_SHIELDCHARGE;
+			mes "[Artifact Researcher]";
+			mes "Since the balance of power does not match, the given existing ability has been destroyed. It is unfortunate but please try again next time.";
+		} else {
+			specialeffect2 EF_REPAIRWEAPON;
+			mes "[Artifact Researcher]";
+			// Replacing original dialogue since it doesn't make sense.
+			//mes "The artifact ^990000"+.@slot+" will have the first enhancement retained.";
+			mes "I've successfully enhanced the artifact ^990000"+.@equip_name$+"^000000 at socket "+.@slot+".";
+		}
+
+//		GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
+		getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
+
+		close;
+	} else if (.@select == 2) {
+		if (Zeny < 100000 || countitem(6380) == 0) {
+			mes "[Artifact Researcher]";
+			mes "You've got to pay if you want the services.";
+			close;
+		}
+		specialeffect2 EF_REPAIRWEAPON;
+		mes "[Artifact Researcher]";
+		mes "The ability to enhance remains.";
+		delitem 6380,1; //Mora_Coin
+		set Zeny, Zeny-100000;
+		delequip .@part;
+
+//		GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
+		for(set .@i,0; .@i<4; set .@i,.@i+1) {
+			if (.@equip_card[.@i] >= 4700) // Armor Enchant System
+				set .@equip_card[.@i],0;
+		}
+		getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];
+
+		close;
+	}
+}
+
+// Arch Bishop & Warlock Empowering :: relic_change
+//============================================================
+mora,124,82,4	script	Artifact Collector#blan	522,{
+	if (checkweight(1201,1) == 0) {
+		mes "Reduce the amount of items that you have in your inventory before continuing.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much in your inventory.";
+		close;
+	}
+	disable_items;
+	emotion e_ho;
+	mes "Those Mora Artifacts look so perfect!";
+	mes "But I know you want them to be even better!";
+	next;
+	mes "[Artifact Collector]";
+	mes "Greetings Adventurer. We will be great friends in a moment after I tell you how to Empower your Artifacts!";
+	next;
+	switch(select("Let's do this!:Empower Artifacts?:Nope, not for me!")) {
+	case 1:
+		break;
+	case 2:
+		emotion e_ok;
+		mes "[Artifact Collector]";
+		mes "You seem like a pretty good judge of character.";
+		next;
+		mes "[Artifact Collector]";
+		mes "For over 200 years I've been working with Artifacts here in Mora. Toiling to get the perfect +9!";
+		next;
+		select("Gulp... +9?!");
+		emotion e_omg,1;
+		mes "[Artifact Collector]";
+		mes "My business is collecting the old relics and refining them to their essence!";
+		next;
+		emotion e_sob;
+		mes "[Artifact Collector]";
+		mes "Finding the perfect Artifact for me to experiment on is my life's work.";
+		mes "Plus seeing the wonder of our ancestor's legacy is also gratifying.";
+		next;
+		select("I can see how that could be fun.");
+		emotion e_pat;
+		mes "[Artifact Collector]";
+		mes "Thank you human.";
+		next;
+		mes "[Artifact Collector]";
+		mes "I've been doing this for over 200 years, and honestly the readily available supply is gone, and Artificer and Artifact Crafter won't trade me anymore...";
+		next;
+		emotion e_dots;
+		mes "[Artifact Collector]";
+		mes "But maybe the Humans that are starting to visit can bring in some new stock!";
+		next;
+		select("Humans... Stock?");
+		emotion e_what,1;
+		mes "[Artifact Collector]";
+		mes "Yes! If the humans can bring me new artifacts I can work on my ultimate achievement!";
+		next;
+		select("Ultimate Achievement?");
+		emotion e_what,1;
+		emotion e_ok;
+		mes "[Artifact Collector]";
+		mes "Patience, we'll get to that...";
+		next;
+		mes "[Artifact Collector]";
+		mes "I am a collector, by trade, but my greatest achievement is empowering some artifacts with greater power!";
+		mes "I have only perfected my ability on a few Artifact types so far.";
+		next;
+		mes "[Artifact Collector]";
+		mes "You might just be the human to help me complete my plan.";
+		next;
+		emotion e_otl;
+		mes "[Artifact Collector]";
+		mes "Oh how I love how fate works sometimes...";
+		next;
+		mes "[Artifact Collector]";
+		mes "+1, +2, +3, +4, +5, +6 those refinements are not strong enough to work on my craft.";
+		next;
+		emotion 57,0;
+		mes "[Artifact Collector]";
+		mes "But +7! +7 is rare and just barely strong enough to work in my crafting attempts.";
+		next;
+		select("I'm gonna be abused again...");
+		emotion e_hmm,1;
+		mes "[Artifact Collector]";
+		mes "Right you are! I know it is natural for you Humans to help a friend, even without the friend asking...";
+		next;
+		select("I'm not sure if...");
+		emotion e_what,1;
+		mes "[Artifact Collector]";
+		mes "Of course I'll accept your help!  Find me...";
+		next;
+		mes "- Golden Rod Staff -";
+		mes "- Aqua Staff -";
+		mes "- Crimson Staff -";
+		mes "- Forest Staff -";
+		mes "- Staff of Mercy -";
+		mes "- Mace of Judgement -";
+		next;
+		select("Anything else?");
+		emotion e_what,1;
+		mes "[Artifact Collector]";
+		mes "Well aside from the +7, there are very specific enchantments that need to be on the artifact that help catalyze the process.";
+		next;
+		mes "[Artifact Collector]";
+		mes "If either the +7 or the specific enchantment is missing I can't do it.";
+		next;
+		select("So the Refining will be preserved?");
+		emotion e_omg,1;
+		emotion e_an;
+		mes "[Artifact Collector]";
+		mes "No, but what you'll get back is so much better!";
+		next;
+		mes "[Artifact Collector]";
+		mes "By now you are wondering more about the artifacts I'm looking for?";
+		next;
+		emotion e_what;
+		mes "[Artifact Collector]";
+		mes "Go ahead and ask!";
+		next;
+		setarray .@artifacts[0],1657,16013,2007,2008,2009,2010;
+		setarray .@empowered[0],1660,16018,2011,2012,2013,2014;
+		while(1) {
+			set .@i, select("I don't think I'm interested:Staff of Mercy:Mace of Judgement:Golden Rod Staff:Aqua Staff:Crimson Staff:Forest Staff")-2;
+			if (.@i == -1) {
+				emotion e_what;
+				mes "[Artifact Collector]";
+				mes "Ok, well maybe someday you will be.";
+				close;
+			}
+			mes "[Artifact Collector]";
+			mes getitemname(.@artifacts[.@i])+" must of course be refined to +7 or higher for me to distill it to an enchantment.";
+			next;
+			switch(.@i) {
+			case 0:
+				setarray .@enchants[0],4761,4723,4714;
+				set .@str$, "MATK+2%, DEX+4, INT+5";
+				break;
+			case 1:
+				setarray .@enchants[0],4767,4723,4704;
+				set .@str$, "ATK+3%, DEX+4, STR+5";
+				break;
+			default:
+				setarray .@enchants[0],4761,4713;
+				set .@str$, "MATK+2%, INT+4";
+				break;
+			}
+			mes "[Artifact Collector]";
+			mes "It must also carry any of these enchantments: "+.@str$+" to be craftable by me.";
+			next;
+			select(getitemname(.@empowered[.@i])+" attributes?");
+			callsub L_ShowInfo, .@empowered[.@i];
+			mes "[Artifact Collector]";
+			mes "But please if you do get one, please let me work on it, I'm begging you.";
+			next;
+		}
+	case 3:
+		mes "[Artifact Collector]";
+		mes "Have yourself a great day. Bye~";
+		close;
+	}
+	emotion e_flash;
+	mes "[Artifact Collector]";
+	mes "Let me take a look at what you have brought me.";
+	next;
+	if (!getequipisequiped(EQI_HAND_R)) {
+		emotion e_an;
+		mes "[Artifact Collector]";
+		mes "I don't know what you are trying to do... I can't enhance what you don't have.";
+		close;
+	}
+	set .@equip_id, getequipid(EQI_HAND_R);
+	setarray .@equip_card[2], getequipcardid(EQI_HAND_R,2),getequipcardid(EQI_HAND_R,3);
+	switch(.@equip_id) {
+	case 2007: //Golden_Rod_Staff
+	case 2008: //Aqua_Staff
+	case 2009: //Crimson_Staff
+	case 2010: //Forest_Staff
+		if (.@equip_card[2] == 4761 || .@equip_card[3] == 4761 || //Matk2
+		    .@equip_card[2] == 4713 || .@equip_card[3] == 4713)   //Inteligence4
+			set .@empowered,.@equip_id+4; //Golden_Rod_Staff2,Aqua_Staff2,Crimson_Staff2,Forest_Staff2
+		break;
+	case 1657: //Wand_Of_Affection
+		if (.@equip_card[2] == 4761 || .@equip_card[3] == 4761 || //Matk2
+		    .@equip_card[2] == 4714 || .@equip_card[3] == 4714 || //Inteligence5
+		    .@equip_card[2] == 4723 || .@equip_card[3] == 4723)   //Dexterity4
+			set .@empowered,1660; //Wand_Of_Affection2
+		break;
+	case 16013: //Mace_Of_Judgement
+		if (.@equip_card[2] == 4723 || .@equip_card[3] == 4723 || //Dexterity4
+		    .@equip_card[2] == 4704 || .@equip_card[3] == 4704 || //Strength5
+		    .@equip_card[2] == 4767 || .@equip_card[3] == 4767)   //Atk3
+			set .@empowered,16018; //Mace_Of_Judgement2
+		break;
+	default:
+		emotion e_an;
+		mes "[Artifact Collector]";
+		mes "The weapon you have isn't one of the Artifacts I can work with.";
+		close;
+	}
+	if (getequiprefinerycnt(EQI_HAND_R) < 7) {
+		emotion e_an;
+		mes "[Artifact Collector]";
+		mes "I must insist that the refine level of the Artifact be at least +7!";
+		close;
+	}
+	if (!.@empowered) {
+		emotion e_an;
+		mes "[Artifact Collector]";
+		mes "These attributes just won't do for my research process, try re-randoming them.";
+		close;
+	}
+	emotion e_slur;
+	mes "[Artifact Collector]";
+	mes "I'm tingling with excitement!";
+	mes "You've brought me everything I need!!";
+	next;
+	emotion e_ok;
+	mes "[Artifact Collector]";
+	mes "If you are ready I am about to show you what I can do with your +"+getequiprefinerycnt(EQI_HAND_R)+" Artifact!";
+	next;
+	mes "[Artifact Collector]";
+	mes "I'm going to take your ^FF0000"+getequipname(EQI_HAND_R)+"^000000 and exchange it, are you ready?";
+	next;
+	switch(select("NOOO!:Yes, I'm ready!:What will it be after?")) {
+	case 1:
+		emotion e_an;
+		mes "[Artifact Collector]";
+		mes "You've got to be kidding... you got my hopes up...";
+		close;
+	case 2:
+		break;
+	case 3:
+		callsub L_ShowInfo, .@empowered;
+		mes "[Artifact Collector]";
+		mes "Surely you want to go on?";
+		next;
+		if(select("No, I don't.:Yes, do it!") == 1) {
+			emotion e_an;
+			mes "[Artifact Collector]";
+			mes "You've got to be kidding... you got my hopes up...";
+			close;
+		}
+		break;
+	}
+	emotion e_heh;
+	delequip EQI_HAND_R;
+	getitem .@empowered,1;
+	mes "[Artifact Collector]";
+	mes "It is perfectly done, you will be so happy! Good bye friend~";
+	close;
+
+L_ShowInfo:
+	mes "[Artifact Collector]";
+	mes getitemname(getarg(0));
+	switch(getarg(0)) {
+	case 1660: //Wand_Of_Affection2
+		mes "One handed Staff / Attack : 30";
+		mes "Weight : 50 / Any Sex";
+		mes "Archbishop only";
+		mes "Weapon Level : 4 / ^ff0000Required Level: 130^000000";
+		mes "MATK + 180, INT + 4.";
+		mes "Adds 20% Heal Bonus.";
+		mes "If worn with Robes, Shoes, and Robe of Mercy Increase Heal Bonus by an additional 45% and SP consumption of 'Heal' by 50.";
+		mes "When receives close physical attack, Lv.1 Silentium will be excuted at a certain rate.";
+		mes "Recuces 3 seconds of delay after excuting Clearance, Laudaramus, and Laudaagnus skills.";
+		break;
+	case 16018: //Mace_Of_Judgement2
+		mes "Mace / Attack : 170";
+		mes "Weight : 120 / Any Sex";
+		mes "Archbishop only";
+		mes "Weapon Level : 4 / ^ff0000Required Level: 130^000000";
+		mes "MATK + 180, STR + 2, INT + 2.";
+		mes "Physical and Magical Attacks have a chance to increase damage by 40% to Demon monsters for 7 seconds.";
+		mes "If worn with Judgement Golves, Shoes and Shawl, increase Damage against Undead by 30%.";
+		mes "Increase damage of Adoramus by 200%, and increase SP cost of Adoramus by 30.";
+		break;
+	case 2011: //Golden_Rod_Staff2
+		mes "Staff / Attack: 30";
+		mes "Weight : 90 / Any Sex";
+		mes "Warlock only";
+		mes "Weapon Level : 4 / ^ff0000Required Level : 130^000000";
+		mes "INT + 5, MATK + 270.";
+		mes "Increase Jupitel Thunder damage by 30%.";
+		mes "If worn with Golden Robe, Golden Shoes, and Golden Orb Increase Wind Magic damage by 60%.";
+		mes "Lower Earth Magic damage by 60% and resistance to Earth by 50%.";
+		break;
+	case 2012: //Aqua_Staff2
+		mes "Staff / Attack : 30";
+		mes "Weight : 90 / Any Sex";
+		mes "Warlock only";
+		mes "Weapon Level : 4 / ^ff0000Required Level: 130^000000";
+		mes "INT + 5, MATK + 270.";
+		mes "Increase Cold Bolt and Frost Diver damage by 30%.";
+		mes "If worn with Aqua Robe, Shoes, and Orb Increase Water Magic damage by 60%.";
+		mes "Lower Wind Magic damage by 60% and resistance to Wind by 50%.";
+		break;
+	case 2013: //Crimson_Staff2
+		mes "Staff / Attack : 30";
+		mes "Weight : 90 / Any Sex";
+		mes "Warlock only";
+		mes "Weapon Level : 4 / ^ff0000Required Level: 130^000000";
+		mes "INT + 5, MATK + 270.";
+		mes "Increase Fire Bolt and Fireball damage by 30%.";
+		mes "If worn with Crimson Robe, Shoes, and Orb Increase Fire Magic damage by 60%.";
+		mes "Lower Water Magic damage by 60% and resistance to Water by 50%.";
+		break;
+	case 2014: //Forest_Staff2
+		mes "Staff / Attack : 30";
+		mes "Weight : 90 / Any Sex";
+		mes "Warlock only";
+		mes "Weapon Level : 4 / ^ff0000Required Level: 130^000000";
+		mes "INT + 5, MATK + 270.";
+		mes "Increase Earth Spike and Heaven's Drive damage by 30%.";
+		mes "If worn with Forest Robe, Shoes, and Orb Increase Earth Magic damage by 60%.";
+		mes "Lower Fire Magic damage by 60% and resistance to Fire by 50%.";
+		break;
+	}
+	next;
+	return;
+}
+
+// Other Enchants :: sangjo
+//============================================================
+function	script	F_Mora_Enchant	{
+	specialeffect2 EF_REPAIRWEAPON;
+	progressbar "ffff00",3;
+	delitem 6380,5; //Mora_Coin
+	delitem getarg(0),1;
+	set .@i, rand(1,4568);
+	     if (.@i <= 11) setarray .@enchants[1],4766,4720,4700; //Atk2 Dexterity1 Strength1
+	else if (.@i <= 22) setarray .@enchants[1],4766,4720,4701; //Atk2 Dexterity1 Strength2
+	else if (.@i <= 33) setarray .@enchants[1],4766,4720,4730; //Atk2 Dexterity1 Agility1
+	else if (.@i <= 44) setarray .@enchants[1],4766,4720,4731; //Atk2 Dexterity1 Agility2
+	else if (.@i <= 55) setarray .@enchants[1],4766,4720,4740; //Atk2 Dexterity1 Vitality1
+	else if (.@i <= 66) setarray .@enchants[1],4766,4720,4741; //Atk2 Dexterity1 Vitality2
+	else if (.@i <= 77) setarray .@enchants[1],4766,4721,4700; //Atk2 Dexterity2 Strength1
+	else if (.@i <= 88) setarray .@enchants[1],4766,4721,4701; //Atk2 Dexterity2 Strength2
+	else if (.@i <= 99) setarray .@enchants[1],4766,4721,4730; //Atk2 Dexterity2 Agility1
+	else if (.@i <= 110) setarray .@enchants[1],4766,4721,4731; //Atk2 Dexterity2 Agility2
+	else if (.@i <= 121) setarray .@enchants[1],4766,4721,4740; //Atk2 Dexterity2 Vitality1
+	else if (.@i <= 132) setarray .@enchants[1],4766,4721,4741; //Atk2 Dexterity2 Vitality2
+	else if (.@i <= 143) setarray .@enchants[1],4766,4710,4700; //Atk2 Inteligence1 Strength1
+	else if (.@i <= 154) setarray .@enchants[1],4766,4710,4701; //Atk2 Inteligence1 Strength2
+	else if (.@i <= 165) setarray .@enchants[1],4766,4710,4730; //Atk2 Inteligence1 Agility1
+	else if (.@i <= 176) setarray .@enchants[1],4766,4710,4731; //Atk2 Inteligence1 Agility2
+	else if (.@i <= 187) setarray .@enchants[1],4766,4710,4740; //Atk2 Inteligence1 Vitality1
+	else if (.@i <= 198) setarray .@enchants[1],4766,4710,4741; //Atk2 Inteligence1 Vitality2
+	else if (.@i <= 209) setarray .@enchants[1],4766,4711,4700; //Atk2 Inteligence2 Strength1
+	else if (.@i <= 220) setarray .@enchants[1],4766,4711,4701; //Atk2 Inteligence2 Strength2
+	else if (.@i <= 231) setarray .@enchants[1],4766,4711,4730; //Atk2 Inteligence2 Agility1
+	else if (.@i <= 242) setarray .@enchants[1],4766,4711,4731; //Atk2 Inteligence2 Agility2
+	else if (.@i <= 253) setarray .@enchants[1],4766,4711,4740; //Atk2 Inteligence2 Vitality1
+	else if (.@i <= 264) setarray .@enchants[1],4766,4711,4741; //Atk2 Inteligence2 Vitality2
+	else if (.@i <= 275) setarray .@enchants[1],4766,4750,4700; //Atk2 Luck1 Strength1
+	else if (.@i <= 286) setarray .@enchants[1],4766,4750,4701; //Atk2 Luck1 Strength2
+	else if (.@i <= 297) setarray .@enchants[1],4766,4750,4730; //Atk2 Luck1 Agility1
+	else if (.@i <= 308) setarray .@enchants[1],4766,4750,4731; //Atk2 Luck1 Agility2
+	else if (.@i <= 319) setarray .@enchants[1],4766,4750,4740; //Atk2 Luck1 Vitality1
+	else if (.@i <= 330) setarray .@enchants[1],4766,4750,4741; //Atk2 Luck1 Vitality2
+	else if (.@i <= 341) setarray .@enchants[1],4766,4751,4700; //Atk2 Luck2 Strength1
+	else if (.@i <= 352) setarray .@enchants[1],4766,4751,4701; //Atk2 Luck2 Strength2
+	else if (.@i <= 363) setarray .@enchants[1],4766,4751,4730; //Atk2 Luck2 Agility1
+	else if (.@i <= 374) setarray .@enchants[1],4766,4751,4731; //Atk2 Luck2 Agility2
+	else if (.@i <= 385) setarray .@enchants[1],4766,4751,4740; //Atk2 Luck2 Vitality1
+	else if (.@i <= 396) setarray .@enchants[1],4766,4751,4741; //Atk2 Luck2 Vitality2
+	else if (.@i <= 407) setarray .@enchants[1],4767,4720,4700; //Atk3 Dexterity1 Strength1
+	else if (.@i <= 418) setarray .@enchants[1],4767,4720,4701; //Atk3 Dexterity1 Strength2
+	else if (.@i <= 429) setarray .@enchants[1],4767,4720,4730; //Atk3 Dexterity1 Agility1
+	else if (.@i <= 440) setarray .@enchants[1],4767,4720,4731; //Atk3 Dexterity1 Agility2
+	else if (.@i <= 451) setarray .@enchants[1],4767,4720,4740; //Atk3 Dexterity1 Vitality1
+	else if (.@i <= 462) setarray .@enchants[1],4767,4720,4741; //Atk3 Dexterity1 Vitality2
+	else if (.@i <= 473) setarray .@enchants[1],4767,4721,4700; //Atk3 Dexterity2 Strength1
+	else if (.@i <= 484) setarray .@enchants[1],4767,4721,4701; //Atk3 Dexterity2 Strength2
+	else if (.@i <= 495) setarray .@enchants[1],4767,4721,4730; //Atk3 Dexterity2 Agility1
+	else if (.@i <= 506) setarray .@enchants[1],4767,4721,4731; //Atk3 Dexterity2 Agility2
+	else if (.@i <= 517) setarray .@enchants[1],4767,4721,4740; //Atk3 Dexterity2 Vitality1
+	else if (.@i <= 528) setarray .@enchants[1],4767,4721,4741; //Atk3 Dexterity2 Vitality2
+	else if (.@i <= 539) setarray .@enchants[1],4767,4710,4700; //Atk3 Inteligence1 Strength1
+	else if (.@i <= 550) setarray .@enchants[1],4767,4710,4701; //Atk3 Inteligence1 Strength2
+	else if (.@i <= 561) setarray .@enchants[1],4767,4710,4730; //Atk3 Inteligence1 Agility1
+	else if (.@i <= 572) setarray .@enchants[1],4767,4710,4731; //Atk3 Inteligence1 Agility2
+	else if (.@i <= 583) setarray .@enchants[1],4767,4710,4740; //Atk3 Inteligence1 Vitality1
+	else if (.@i <= 594) setarray .@enchants[1],4767,4710,4741; //Atk3 Inteligence1 Vitality2
+	else if (.@i <= 605) setarray .@enchants[1],4767,4711,4700; //Atk3 Inteligence2 Strength1
+	else if (.@i <= 616) setarray .@enchants[1],4767,4711,4701; //Atk3 Inteligence2 Strength2
+	else if (.@i <= 627) setarray .@enchants[1],4767,4711,4730; //Atk3 Inteligence2 Agility1
+	else if (.@i <= 638) setarray .@enchants[1],4767,4711,4731; //Atk3 Inteligence2 Agility2
+	else if (.@i <= 649) setarray .@enchants[1],4767,4711,4740; //Atk3 Inteligence2 Vitality1
+	else if (.@i <= 660) setarray .@enchants[1],4767,4711,4741; //Atk3 Inteligence2 Vitality2
+	else if (.@i <= 671) setarray .@enchants[1],4767,4750,4700; //Atk3 Luck1 Strength1
+	else if (.@i <= 682) setarray .@enchants[1],4767,4750,4701; //Atk3 Luck1 Strength2
+	else if (.@i <= 693) setarray .@enchants[1],4767,4750,4730; //Atk3 Luck1 Agility1
+	else if (.@i <= 704) setarray .@enchants[1],4767,4750,4731; //Atk3 Luck1 Agility2
+	else if (.@i <= 715) setarray .@enchants[1],4767,4750,4740; //Atk3 Luck1 Vitality1
+	else if (.@i <= 726) setarray .@enchants[1],4767,4750,4741; //Atk3 Luck1 Vitality2
+	else if (.@i <= 737) setarray .@enchants[1],4767,4751,4700; //Atk3 Luck2 Strength1
+	else if (.@i <= 748) setarray .@enchants[1],4767,4751,4701; //Atk3 Luck2 Strength2
+	else if (.@i <= 759) setarray .@enchants[1],4767,4751,4730; //Atk3 Luck2 Agility1
+	else if (.@i <= 770) setarray .@enchants[1],4767,4751,4731; //Atk3 Luck2 Agility2
+	else if (.@i <= 781) setarray .@enchants[1],4767,4751,4740; //Atk3 Luck2 Vitality1
+	else if (.@i <= 792) setarray .@enchants[1],4767,4751,4741; //Atk3 Luck2 Vitality2
+	else if (.@i <= 803) setarray .@enchants[1],4764,4720,4700; //Critical5 Dexterity1 Strength1
+	else if (.@i <= 814) setarray .@enchants[1],4764,4720,4701; //Critical5 Dexterity1 Strength2
+	else if (.@i <= 825) setarray .@enchants[1],4764,4720,4730; //Critical5 Dexterity1 Agility1
+	else if (.@i <= 836) setarray .@enchants[1],4764,4720,4731; //Critical5 Dexterity1 Agility2
+	else if (.@i <= 847) setarray .@enchants[1],4764,4720,4740; //Critical5 Dexterity1 Vitality1
+	else if (.@i <= 858) setarray .@enchants[1],4764,4720,4741; //Critical5 Dexterity1 Vitality2
+	else if (.@i <= 869) setarray .@enchants[1],4764,4721,4700; //Critical5 Dexterity2 Strength1
+	else if (.@i <= 880) setarray .@enchants[1],4764,4721,4701; //Critical5 Dexterity2 Strength2
+	else if (.@i <= 891) setarray .@enchants[1],4764,4721,4730; //Critical5 Dexterity2 Agility1
+	else if (.@i <= 902) setarray .@enchants[1],4764,4721,4731; //Critical5 Dexterity2 Agility2
+	else if (.@i <= 913) setarray .@enchants[1],4764,4721,4740; //Critical5 Dexterity2 Vitality1
+	else if (.@i <= 924) setarray .@enchants[1],4764,4721,4741; //Critical5 Dexterity2 Vitality2
+	else if (.@i <= 935) setarray .@enchants[1],4764,4710,4700; //Critical5 Inteligence1 Strength1
+	else if (.@i <= 946) setarray .@enchants[1],4764,4710,4701; //Critical5 Inteligence1 Strength2
+	else if (.@i <= 957) setarray .@enchants[1],4764,4710,4730; //Critical5 Inteligence1 Agility1
+	else if (.@i <= 968) setarray .@enchants[1],4764,4710,4731; //Critical5 Inteligence1 Agility2
+	else if (.@i <= 979) setarray .@enchants[1],4764,4710,4740; //Critical5 Inteligence1 Vitality1
+	else if (.@i <= 990) setarray .@enchants[1],4764,4710,4741; //Critical5 Inteligence1 Vitality2
+	else if (.@i <= 1001) setarray .@enchants[1],4764,4711,4700; //Critical5 Inteligence2 Strength1
+	else if (.@i <= 1012) setarray .@enchants[1],4764,4711,4701; //Critical5 Inteligence2 Strength2
+	else if (.@i <= 1023) setarray .@enchants[1],4764,4711,4730; //Critical5 Inteligence2 Agility1
+	else if (.@i <= 1034) setarray .@enchants[1],4764,4711,4731; //Critical5 Inteligence2 Agility2
+	else if (.@i <= 1045) setarray .@enchants[1],4764,4711,4740; //Critical5 Inteligence2 Vitality1
+	else if (.@i <= 1056) setarray .@enchants[1],4764,4711,4741; //Critical5 Inteligence2 Vitality2
+	else if (.@i <= 1067) setarray .@enchants[1],4764,4750,4700; //Critical5 Luck1 Strength1
+	else if (.@i <= 1078) setarray .@enchants[1],4764,4750,4701; //Critical5 Luck1 Strength2
+	else if (.@i <= 1089) setarray .@enchants[1],4764,4750,4730; //Critical5 Luck1 Agility1
+	else if (.@i <= 1100) setarray .@enchants[1],4764,4750,4731; //Critical5 Luck1 Agility2
+	else if (.@i <= 1111) setarray .@enchants[1],4764,4750,4740; //Critical5 Luck1 Vitality1
+	else if (.@i <= 1122) setarray .@enchants[1],4764,4750,4741; //Critical5 Luck1 Vitality2
+	else if (.@i <= 1133) setarray .@enchants[1],4764,4751,4700; //Critical5 Luck2 Strength1
+	else if (.@i <= 1144) setarray .@enchants[1],4764,4751,4701; //Critical5 Luck2 Strength2
+	else if (.@i <= 1155) setarray .@enchants[1],4764,4751,4730; //Critical5 Luck2 Agility1
+	else if (.@i <= 1166) setarray .@enchants[1],4764,4751,4731; //Critical5 Luck2 Agility2
+	else if (.@i <= 1177) setarray .@enchants[1],4764,4751,4740; //Critical5 Luck2 Vitality1
+	else if (.@i <= 1188) setarray .@enchants[1],4764,4751,4741; //Critical5 Luck2 Vitality2
+	else if (.@i <= 1199) setarray .@enchants[1],4765,4720,4700; //Critical7 Dexterity1 Strength1
+	else if (.@i <= 1210) setarray .@enchants[1],4765,4720,4701; //Critical7 Dexterity1 Strength2
+	else if (.@i <= 1221) setarray .@enchants[1],4765,4720,4730; //Critical7 Dexterity1 Agility1
+	else if (.@i <= 1232) setarray .@enchants[1],4765,4720,4731; //Critical7 Dexterity1 Agility2
+	else if (.@i <= 1243) setarray .@enchants[1],4765,4720,4740; //Critical7 Dexterity1 Vitality1
+	else if (.@i <= 1254) setarray .@enchants[1],4765,4720,4741; //Critical7 Dexterity1 Vitality2
+	else if (.@i <= 1265) setarray .@enchants[1],4765,4721,4700; //Critical7 Dexterity2 Strength1
+	else if (.@i <= 1276) setarray .@enchants[1],4765,4721,4701; //Critical7 Dexterity2 Strength2
+	else if (.@i <= 1287) setarray .@enchants[1],4765,4721,4730; //Critical7 Dexterity2 Agility1
+	else if (.@i <= 1298) setarray .@enchants[1],4765,4721,4731; //Critical7 Dexterity2 Agility2
+	else if (.@i <= 1309) setarray .@enchants[1],4765,4721,4740; //Critical7 Dexterity2 Vitality1
+	else if (.@i <= 1320) setarray .@enchants[1],4765,4721,4741; //Critical7 Dexterity2 Vitality2
+	else if (.@i <= 1331) setarray .@enchants[1],4765,4710,4700; //Critical7 Inteligence1 Strength1
+	else if (.@i <= 1342) setarray .@enchants[1],4765,4710,4701; //Critical7 Inteligence1 Strength2
+	else if (.@i <= 1353) setarray .@enchants[1],4765,4710,4730; //Critical7 Inteligence1 Agility1
+	else if (.@i <= 1364) setarray .@enchants[1],4765,4710,4731; //Critical7 Inteligence1 Agility2
+	else if (.@i <= 1375) setarray .@enchants[1],4765,4710,4740; //Critical7 Inteligence1 Vitality1
+	else if (.@i <= 1386) setarray .@enchants[1],4765,4710,4741; //Critical7 Inteligence1 Vitality2
+	else if (.@i <= 1397) setarray .@enchants[1],4765,4711,4700; //Critical7 Inteligence2 Strength1
+	else if (.@i <= 1408) setarray .@enchants[1],4765,4711,4701; //Critical7 Inteligence2 Strength2
+	else if (.@i <= 1419) setarray .@enchants[1],4765,4711,4730; //Critical7 Inteligence2 Agility1
+	else if (.@i <= 1430) setarray .@enchants[1],4765,4711,4731; //Critical7 Inteligence2 Agility2
+	else if (.@i <= 1441) setarray .@enchants[1],4765,4711,4740; //Critical7 Inteligence2 Vitality1
+	else if (.@i <= 1452) setarray .@enchants[1],4765,4711,4741; //Critical7 Inteligence2 Vitality2
+	else if (.@i <= 1463) setarray .@enchants[1],4765,4750,4700; //Critical7 Luck1 Strength1
+	else if (.@i <= 1474) setarray .@enchants[1],4765,4750,4701; //Critical7 Luck1 Strength2
+	else if (.@i <= 1485) setarray .@enchants[1],4765,4750,4730; //Critical7 Luck1 Agility1
+	else if (.@i <= 1496) setarray .@enchants[1],4765,4750,4731; //Critical7 Luck1 Agility2
+	else if (.@i <= 1507) setarray .@enchants[1],4765,4750,4740; //Critical7 Luck1 Vitality1
+	else if (.@i <= 1518) setarray .@enchants[1],4765,4750,4741; //Critical7 Luck1 Vitality2
+	else if (.@i <= 1529) setarray .@enchants[1],4765,4751,4700; //Critical7 Luck2 Strength1
+	else if (.@i <= 1540) setarray .@enchants[1],4765,4751,4701; //Critical7 Luck2 Strength2
+	else if (.@i <= 1551) setarray .@enchants[1],4765,4751,4730; //Critical7 Luck2 Agility1
+	else if (.@i <= 1562) setarray .@enchants[1],4765,4751,4731; //Critical7 Luck2 Agility2
+	else if (.@i <= 1573) setarray .@enchants[1],4765,4751,4740; //Critical7 Luck2 Vitality1
+	else if (.@i <= 1584) setarray .@enchants[1],4765,4751,4741; //Critical7 Luck2 Vitality2
+	else if (.@i <= 1595) setarray .@enchants[1],4762,4720,4700; //Evasion6 Dexterity1 Strength1
+	else if (.@i <= 1606) setarray .@enchants[1],4762,4720,4701; //Evasion6 Dexterity1 Strength2
+	else if (.@i <= 1617) setarray .@enchants[1],4762,4720,4730; //Evasion6 Dexterity1 Agility1
+	else if (.@i <= 1628) setarray .@enchants[1],4762,4720,4731; //Evasion6 Dexterity1 Agility2
+	else if (.@i <= 1639) setarray .@enchants[1],4762,4720,4740; //Evasion6 Dexterity1 Vitality1
+	else if (.@i <= 1650) setarray .@enchants[1],4762,4720,4741; //Evasion6 Dexterity1 Vitality2
+	else if (.@i <= 1661) setarray .@enchants[1],4762,4721,4700; //Evasion6 Dexterity2 Strength1
+	else if (.@i <= 1672) setarray .@enchants[1],4762,4721,4701; //Evasion6 Dexterity2 Strength2
+	else if (.@i <= 1683) setarray .@enchants[1],4762,4721,4730; //Evasion6 Dexterity2 Agility1
+	else if (.@i <= 1694) setarray .@enchants[1],4762,4721,4731; //Evasion6 Dexterity2 Agility2
+	else if (.@i <= 1705) setarray .@enchants[1],4762,4721,4740; //Evasion6 Dexterity2 Vitality1
+	else if (.@i <= 1716) setarray .@enchants[1],4762,4721,4741; //Evasion6 Dexterity2 Vitality2
+	else if (.@i <= 1727) setarray .@enchants[1],4762,4710,4700; //Evasion6 Inteligence1 Strength1
+	else if (.@i <= 1738) setarray .@enchants[1],4762,4710,4701; //Evasion6 Inteligence1 Strength2
+	else if (.@i <= 1749) setarray .@enchants[1],4762,4710,4730; //Evasion6 Inteligence1 Agility1
+	else if (.@i <= 1760) setarray .@enchants[1],4762,4710,4731; //Evasion6 Inteligence1 Agility2
+	else if (.@i <= 1771) setarray .@enchants[1],4762,4710,4740; //Evasion6 Inteligence1 Vitality1
+	else if (.@i <= 1782) setarray .@enchants[1],4762,4710,4741; //Evasion6 Inteligence1 Vitality2
+	else if (.@i <= 1793) setarray .@enchants[1],4762,4711,4700; //Evasion6 Inteligence2 Strength1
+	else if (.@i <= 1804) setarray .@enchants[1],4762,4711,4701; //Evasion6 Inteligence2 Strength2
+	else if (.@i <= 1815) setarray .@enchants[1],4762,4711,4730; //Evasion6 Inteligence2 Agility1
+	else if (.@i <= 1826) setarray .@enchants[1],4762,4711,4731; //Evasion6 Inteligence2 Agility2
+	else if (.@i <= 1837) setarray .@enchants[1],4762,4711,4740; //Evasion6 Inteligence2 Vitality1
+	else if (.@i <= 1848) setarray .@enchants[1],4762,4711,4741; //Evasion6 Inteligence2 Vitality2
+	else if (.@i <= 1859) setarray .@enchants[1],4762,4750,4700; //Evasion6 Luck1 Strength1
+	else if (.@i <= 1870) setarray .@enchants[1],4762,4750,4701; //Evasion6 Luck1 Strength2
+	else if (.@i <= 1881) setarray .@enchants[1],4762,4750,4730; //Evasion6 Luck1 Agility1
+	else if (.@i <= 1892) setarray .@enchants[1],4762,4750,4731; //Evasion6 Luck1 Agility2
+	else if (.@i <= 1903) setarray .@enchants[1],4762,4750,4740; //Evasion6 Luck1 Vitality1
+	else if (.@i <= 1914) setarray .@enchants[1],4762,4750,4741; //Evasion6 Luck1 Vitality2
+	else if (.@i <= 1925) setarray .@enchants[1],4762,4751,4700; //Evasion6 Luck2 Strength1
+	else if (.@i <= 1936) setarray .@enchants[1],4762,4751,4701; //Evasion6 Luck2 Strength2
+	else if (.@i <= 1947) setarray .@enchants[1],4762,4751,4730; //Evasion6 Luck2 Agility1
+	else if (.@i <= 1958) setarray .@enchants[1],4762,4751,4731; //Evasion6 Luck2 Agility2
+	else if (.@i <= 1969) setarray .@enchants[1],4762,4751,4740; //Evasion6 Luck2 Vitality1
+	else if (.@i <= 1980) setarray .@enchants[1],4762,4751,4741; //Evasion6 Luck2 Vitality2
+	else if (.@i <= 1991) setarray .@enchants[1],4763,4720,4700; //Evasion12 Dexterity1 Strength1
+	else if (.@i <= 2002) setarray .@enchants[1],4763,4720,4701; //Evasion12 Dexterity1 Strength2
+	else if (.@i <= 2013) setarray .@enchants[1],4763,4720,4730; //Evasion12 Dexterity1 Agility1
+	else if (.@i <= 2024) setarray .@enchants[1],4763,4720,4731; //Evasion12 Dexterity1 Agility2
+	else if (.@i <= 2035) setarray .@enchants[1],4763,4720,4740; //Evasion12 Dexterity1 Vitality1
+	else if (.@i <= 2046) setarray .@enchants[1],4763,4720,4741; //Evasion12 Dexterity1 Vitality2
+	else if (.@i <= 2057) setarray .@enchants[1],4763,4721,4700; //Evasion12 Dexterity2 Strength1
+	else if (.@i <= 2068) setarray .@enchants[1],4763,4721,4701; //Evasion12 Dexterity2 Strength2
+	else if (.@i <= 2079) setarray .@enchants[1],4763,4721,4730; //Evasion12 Dexterity2 Agility1
+	else if (.@i <= 2090) setarray .@enchants[1],4763,4721,4731; //Evasion12 Dexterity2 Agility2
+	else if (.@i <= 2101) setarray .@enchants[1],4763,4721,4740; //Evasion12 Dexterity2 Vitality1
+	else if (.@i <= 2112) setarray .@enchants[1],4763,4721,4741; //Evasion12 Dexterity2 Vitality2
+	else if (.@i <= 2123) setarray .@enchants[1],4763,4710,4700; //Evasion12 Inteligence1 Strength1
+	else if (.@i <= 2134) setarray .@enchants[1],4763,4710,4701; //Evasion12 Inteligence1 Strength2
+	else if (.@i <= 2145) setarray .@enchants[1],4763,4710,4730; //Evasion12 Inteligence1 Agility1
+	else if (.@i <= 2156) setarray .@enchants[1],4763,4710,4731; //Evasion12 Inteligence1 Agility2
+	else if (.@i <= 2167) setarray .@enchants[1],4763,4710,4740; //Evasion12 Inteligence1 Vitality1
+	else if (.@i <= 2178) setarray .@enchants[1],4763,4710,4741; //Evasion12 Inteligence1 Vitality2
+	else if (.@i <= 2189) setarray .@enchants[1],4763,4711,4700; //Evasion12 Inteligence2 Strength1
+	else if (.@i <= 2200) setarray .@enchants[1],4763,4711,4701; //Evasion12 Inteligence2 Strength2
+	else if (.@i <= 2211) setarray .@enchants[1],4763,4711,4730; //Evasion12 Inteligence2 Agility1
+	else if (.@i <= 2222) setarray .@enchants[1],4763,4711,4731; //Evasion12 Inteligence2 Agility2
+	else if (.@i <= 2233) setarray .@enchants[1],4763,4711,4740; //Evasion12 Inteligence2 Vitality1
+	else if (.@i <= 2244) setarray .@enchants[1],4763,4711,4741; //Evasion12 Inteligence2 Vitality2
+	else if (.@i <= 2255) setarray .@enchants[1],4763,4750,4700; //Evasion12 Luck1 Strength1
+	else if (.@i <= 2266) setarray .@enchants[1],4763,4750,4701; //Evasion12 Luck1 Strength2
+	else if (.@i <= 2277) setarray .@enchants[1],4763,4750,4730; //Evasion12 Luck1 Agility1
+	else if (.@i <= 2288) setarray .@enchants[1],4763,4750,4731; //Evasion12 Luck1 Agility2
+	else if (.@i <= 2299) setarray .@enchants[1],4763,4750,4740; //Evasion12 Luck1 Vitality1
+	else if (.@i <= 2310) setarray .@enchants[1],4763,4750,4741; //Evasion12 Luck1 Vitality2
+	else if (.@i <= 2321) setarray .@enchants[1],4763,4751,4700; //Evasion12 Luck2 Strength1
+	else if (.@i <= 2332) setarray .@enchants[1],4763,4751,4701; //Evasion12 Luck2 Strength2
+	else if (.@i <= 2343) setarray .@enchants[1],4763,4751,4730; //Evasion12 Luck2 Agility1
+	else if (.@i <= 2354) setarray .@enchants[1],4763,4751,4731; //Evasion12 Luck2 Agility2
+	else if (.@i <= 2365) setarray .@enchants[1],4763,4751,4740; //Evasion12 Luck2 Vitality1
+	else if (.@i <= 2376) setarray .@enchants[1],4763,4751,4741; //Evasion12 Luck2 Vitality2
+	else if (.@i <= 2387) setarray .@enchants[1],4760,4720,4700; //Matk1 Dexterity1 Strength1
+	else if (.@i <= 2398) setarray .@enchants[1],4760,4720,4701; //Matk1 Dexterity1 Strength2
+	else if (.@i <= 2409) setarray .@enchants[1],4760,4720,4730; //Matk1 Dexterity1 Agility1
+	else if (.@i <= 2420) setarray .@enchants[1],4760,4720,4731; //Matk1 Dexterity1 Agility2
+	else if (.@i <= 2431) setarray .@enchants[1],4760,4720,4740; //Matk1 Dexterity1 Vitality1
+	else if (.@i <= 2442) setarray .@enchants[1],4760,4720,4741; //Matk1 Dexterity1 Vitality2
+	else if (.@i <= 2453) setarray .@enchants[1],4760,4721,4700; //Matk1 Dexterity2 Strength1
+	else if (.@i <= 2464) setarray .@enchants[1],4760,4721,4701; //Matk1 Dexterity2 Strength2
+	else if (.@i <= 2475) setarray .@enchants[1],4760,4721,4730; //Matk1 Dexterity2 Agility1
+	else if (.@i <= 2486) setarray .@enchants[1],4760,4721,4731; //Matk1 Dexterity2 Agility2
+	else if (.@i <= 2497) setarray .@enchants[1],4760,4721,4740; //Matk1 Dexterity2 Vitality1
+	else if (.@i <= 2508) setarray .@enchants[1],4760,4721,4741; //Matk1 Dexterity2 Vitality2
+	else if (.@i <= 2519) setarray .@enchants[1],4760,4710,4700; //Matk1 Inteligence1 Strength1
+	else if (.@i <= 2530) setarray .@enchants[1],4760,4710,4701; //Matk1 Inteligence1 Strength2
+	else if (.@i <= 2541) setarray .@enchants[1],4760,4710,4730; //Matk1 Inteligence1 Agility1
+	else if (.@i <= 2552) setarray .@enchants[1],4760,4710,4731; //Matk1 Inteligence1 Agility2
+	else if (.@i <= 2563) setarray .@enchants[1],4760,4710,4740; //Matk1 Inteligence1 Vitality1
+	else if (.@i <= 2574) setarray .@enchants[1],4760,4710,4741; //Matk1 Inteligence1 Vitality2
+	else if (.@i <= 2585) setarray .@enchants[1],4760,4711,4700; //Matk1 Inteligence2 Strength1
+	else if (.@i <= 2596) setarray .@enchants[1],4760,4711,4701; //Matk1 Inteligence2 Strength2
+	else if (.@i <= 2607) setarray .@enchants[1],4760,4711,4730; //Matk1 Inteligence2 Agility1
+	else if (.@i <= 2618) setarray .@enchants[1],4760,4711,4731; //Matk1 Inteligence2 Agility2
+	else if (.@i <= 2629) setarray .@enchants[1],4760,4711,4740; //Matk1 Inteligence2 Vitality1
+	else if (.@i <= 2640) setarray .@enchants[1],4760,4711,4741; //Matk1 Inteligence2 Vitality2
+	else if (.@i <= 2651) setarray .@enchants[1],4760,4750,4700; //Matk1 Luck1 Strength1
+	else if (.@i <= 2662) setarray .@enchants[1],4760,4750,4701; //Matk1 Luck1 Strength2
+	else if (.@i <= 2673) setarray .@enchants[1],4760,4750,4730; //Matk1 Luck1 Agility1
+	else if (.@i <= 2684) setarray .@enchants[1],4760,4750,4731; //Matk1 Luck1 Agility2
+	else if (.@i <= 2695) setarray .@enchants[1],4760,4750,4740; //Matk1 Luck1 Vitality1
+	else if (.@i <= 2706) setarray .@enchants[1],4760,4750,4741; //Matk1 Luck1 Vitality2
+	else if (.@i <= 2717) setarray .@enchants[1],4760,4751,4700; //Matk1 Luck2 Strength1
+	else if (.@i <= 2728) setarray .@enchants[1],4760,4751,4701; //Matk1 Luck2 Strength2
+	else if (.@i <= 2739) setarray .@enchants[1],4760,4751,4730; //Matk1 Luck2 Agility1
+	else if (.@i <= 2750) setarray .@enchants[1],4760,4751,4731; //Matk1 Luck2 Agility2
+	else if (.@i <= 2761) setarray .@enchants[1],4760,4751,4740; //Matk1 Luck2 Vitality1
+	else if (.@i <= 2772) setarray .@enchants[1],4760,4751,4741; //Matk1 Luck2 Vitality2
+	else if (.@i <= 2783) setarray .@enchants[1],4761,4720,4700; //Matk2 Dexterity1 Strength1
+	else if (.@i <= 2794) setarray .@enchants[1],4761,4720,4701; //Matk2 Dexterity1 Strength2
+	else if (.@i <= 2805) setarray .@enchants[1],4761,4720,4730; //Matk2 Dexterity1 Agility1
+	else if (.@i <= 2816) setarray .@enchants[1],4761,4720,4731; //Matk2 Dexterity1 Agility2
+	else if (.@i <= 2827) setarray .@enchants[1],4761,4720,4740; //Matk2 Dexterity1 Vitality1
+	else if (.@i <= 2838) setarray .@enchants[1],4761,4720,4741; //Matk2 Dexterity1 Vitality2
+	else if (.@i <= 2849) setarray .@enchants[1],4761,4721,4700; //Matk2 Dexterity2 Strength1
+	else if (.@i <= 2860) setarray .@enchants[1],4761,4721,4701; //Matk2 Dexterity2 Strength2
+	else if (.@i <= 2871) setarray .@enchants[1],4761,4721,4730; //Matk2 Dexterity2 Agility1
+	else if (.@i <= 2882) setarray .@enchants[1],4761,4721,4731; //Matk2 Dexterity2 Agility2
+	else if (.@i <= 2893) setarray .@enchants[1],4761,4721,4740; //Matk2 Dexterity2 Vitality1
+	else if (.@i <= 2904) setarray .@enchants[1],4761,4721,4741; //Matk2 Dexterity2 Vitality2
+	else if (.@i <= 2915) setarray .@enchants[1],4761,4710,4700; //Matk2 Inteligence1 Strength1
+	else if (.@i <= 2926) setarray .@enchants[1],4761,4710,4701; //Matk2 Inteligence1 Strength2
+	else if (.@i <= 2937) setarray .@enchants[1],4761,4710,4730; //Matk2 Inteligence1 Agility1
+	else if (.@i <= 2948) setarray .@enchants[1],4761,4710,4731; //Matk2 Inteligence1 Agility2
+	else if (.@i <= 2959) setarray .@enchants[1],4761,4710,4740; //Matk2 Inteligence1 Vitality1
+	else if (.@i <= 2970) setarray .@enchants[1],4761,4710,4741; //Matk2 Inteligence1 Vitality2
+	else if (.@i <= 2981) setarray .@enchants[1],4761,4711,4700; //Matk2 Inteligence2 Strength1
+	else if (.@i <= 2992) setarray .@enchants[1],4761,4711,4701; //Matk2 Inteligence2 Strength2
+	else if (.@i <= 3003) setarray .@enchants[1],4761,4711,4730; //Matk2 Inteligence2 Agility1
+	else if (.@i <= 3014) setarray .@enchants[1],4761,4711,4731; //Matk2 Inteligence2 Agility2
+	else if (.@i <= 3025) setarray .@enchants[1],4761,4711,4740; //Matk2 Inteligence2 Vitality1
+	else if (.@i <= 3036) setarray .@enchants[1],4761,4711,4741; //Matk2 Inteligence2 Vitality2
+	else if (.@i <= 3047) setarray .@enchants[1],4761,4750,4700; //Matk2 Luck1 Strength1
+	else if (.@i <= 3058) setarray .@enchants[1],4761,4750,4701; //Matk2 Luck1 Strength2
+	else if (.@i <= 3069) setarray .@enchants[1],4761,4750,4730; //Matk2 Luck1 Agility1
+	else if (.@i <= 3080) setarray .@enchants[1],4761,4750,4731; //Matk2 Luck1 Agility2
+	else if (.@i <= 3091) setarray .@enchants[1],4761,4750,4740; //Matk2 Luck1 Vitality1
+	else if (.@i <= 3102) setarray .@enchants[1],4761,4750,4741; //Matk2 Luck1 Vitality2
+	else if (.@i <= 3113) setarray .@enchants[1],4761,4751,4700; //Matk2 Luck2 Strength1
+	else if (.@i <= 3124) setarray .@enchants[1],4761,4751,4701; //Matk2 Luck2 Strength2
+	else if (.@i <= 3135) setarray .@enchants[1],4761,4751,4730; //Matk2 Luck2 Agility1
+	else if (.@i <= 3146) setarray .@enchants[1],4761,4751,4731; //Matk2 Luck2 Agility2
+	else if (.@i <= 3157) setarray .@enchants[1],4761,4751,4740; //Matk2 Luck2 Vitality1
+	else if (.@i <= 3168) setarray .@enchants[1],4761,4751,4741; //Matk2 Luck2 Vitality2
+	else if (.@i <= 3179) setarray .@enchants[1],4761,4720,4700; //Matk2 Dexterity1 Strength1
+	else if (.@i <= 3181) setarray .@enchants[1],4761,4712,4712; //Matk2 Inteligence3 Inteligence3
+	else if (.@i <= 3183) setarray .@enchants[1],4765,4732,4732; //Critical7 Agility3 Agility3
+	else if (.@i <= 3185) setarray .@enchants[1],4763,4752,4753; //Evasion12 Luck3 Luck4
+	else if (.@i <= 3187) setarray .@enchants[1],4763,4742,4742; //Evasion12 Vitality3 Vitality3
+	else if (.@i <= 3189) setarray .@enchants[1],4763,4722,4722; //Evasion12 Dexterity3 Dexterity3
+	else if (.@i <= 3191) setarray .@enchants[1],4742,4742,4742; //Vitality3 Vitality3 Vitality3
+	else if (.@i <= 3193) setarray .@enchants[1],4761,4722,4722; //Matk2 Dexterity3 Dexterity3
+	else if (.@i <= 3195) setarray .@enchants[1],4767,4702,4702; //Atk3 Strength3 Strength3
+	else if (.@i <= 3197) setarray .@enchants[1],4763,4732,4732; //Evasion12 Agility3 Agility3
+	else if (.@i <= 4568) return 0;
+
+	getitem2 getarg(0),1,1,0,0,0,.@enchants[1],.@enchants[2],.@enchants[3];
+	return 1;
+}
+mora,105,176,4	script	Master Tailor#pa0829	509,{
+	if (checkweight(1201,1) == 0) {
+		mes "You have too many kinds of things with you to do that. Throw out some of them and try again.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much weight to do that. Reduce the weight and try again.";
+		close;
+	}
+	if (countitem(6380) < 5 || countitem(15024) < 1) {
+		mes "[Master Tailor]";
+		mes "With my touch, I can turn a typical army padding into a piece of art. I'm Kay the Master Tailor, creating art with army paddings.";
+		next;
+		mes "[Master Tailor]";
+		mes "Well, what's in a name? I can turn your army padding into a piece of art if you bring ^ff00005 Mora Coins and an Army Padding^000000.";
+		if (countitem(6380)) {
+			next;
+			mes "[Master Tailor]";
+			mes "I happen to have a few army paddings in stock. Would you like to buy one? The price is 1 Mora Coin. So cheap.";
+			next;
+			switch(select("Maybe next time.:I'll buy one now.")) {
+	 		case 1:
+				mes "[Master Tailor]";
+				mes "Okay, I understand.";
+				mes "Come back for one if you change your mind.";
+				close;
+			case 2:
+				delitem 6380,1; //Mora_Coin
+				getitem 15024,1; //Army_Padding
+				mes "[Master Tailor]";
+				mes "Here it is.";
+				mes "It's very nice and fluffy. Please come back.";
+				close;
+			}
+		}
+		close;
+	}
+	mes "[Master Tailor]";
+	mes "Have you come to add art to one of your army paddings?";
+	next;
+	switch(select("Please tell me more.:Yes, I have.")) {
+	case 1:
+		mes "[Master Tailor]";
+		mes "A typical army padding isn't warm enough. It feels rough on your skin and doesn't look good. And artistic value? It has next to none.";
+		next;
+		mes "[Master Tailor]";
+		mes "However, I'll embroider it with velvet threads, and add three options to it.";
+		next;
+		mes "[Master Tailor]";
+		mes "Bring me ^8888005 Mora Coins^000000 and an Army Padding, and we can add some art together!";
+		close;
+	case 2:
+		mes "[Master Tailor]";
+		mes "I'm telling you just in case - I'll do whatever I need to do with your army padding, whether it's brand-new or has been mended before.";
+		next;
+		mes "[Master Tailor]";
+		mes "So if you have with you an army padding mended to your liking, put it in a safe place and come back.";
+		next;
+		mes "[Master Tailor]";
+		mes "And another thing - once I fail to add art to it, it becomes unusable... you'll need to buy a new one in that case.";
+		next;
+		switch(select("Come on, what's the rush?:Okay! Let's do it!!")) {
+		case 1:
+			mes "[Master Tailor]";
+			mes "What's wrong with you?";
+			mes "The villagers keep me busy enough.";
+			close;
+		case 2:
+			if (countitem(6380) < 5 || countitem(15024) == 0) {
+				mes "[Master Tailor]";
+				mes "It looks like you don't have everything you need.";
+				next;
+				mes "[Master Tailor]";
+				mes "You have to have 5 Mora Coins and an Army Padding with you before I can do my work.";
+				close;
+			}
+			if (callfunc("F_Mora_Enchant",15024) == 0) {
+				mes "[Master Tailor]";
+				mes "Oh......";
+				mes "I can't believe I messed up.";
+				next;
+				mes "[Master Tailor]";
+				mes "I want to be alone. Go away!";
+				close;
+			}
+			mes "[Master Tailor]";
+			mes "My art looks great.";
+			close;
+		}
+	}
+}
+
+mora,123,177,6	script	Pendant Crafter#pa0829	509,{
+	if (checkweight(1201,1) == 0) {
+		mes "You have too many kinds of things with you to do that. Throw out some of them and try again.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much weight to do that. Reduce the weight and try again.";
+		close;
+	}
+	if (countitem(6380) < 5 || countitem(2858) == 0) {
+		mes "[Pendant Crafter]";
+		mes "My job is to polish the stone in a Guardian's Pendant, and then carve a symbol with special power on it.";
+		next;
+		mes "[Pendant Crafter]";
+		mes "The process gives the Guardian's Pendant more power than an ordinary accessory.";
+		next;
+		mes "[Pendant Crafter]";
+		mes "If you're interested, I can work on your pendant for ^ff00005 Mora Coins^000000. Of course you need to have a Guardian's Pendant so I can work on with you.";
+		close;
+	}
+	mes "[Pendant Crafter]";
+	mes "Have you come to have your Guardian's Pendant upgraded?";
+	next;
+	switch(select("Please tell me more.:Yes, I have.")) {
+	case 1:
+		mes "[Pendant Crafter]";
+		mes "My job is to polish the stone in a Guardian's Pendant, and then carve a symbol with special power on it.";
+		next;
+		mes "[Pendant Crafter]";
+		mes "The process gives the Guardian's Pendant more power than an ordinary accessory.";
+		next;
+		mes "[Pendant Crafter]";
+		mes "If you're interested, I can work on your pendant for ^ff00005 Mora Coins^000000. Of course you need to have a Guardian's Pendant so I can work on with you.";
+		close;
+	case 2:
+		mes "[Pendant Crafter]";
+		mes "I'm telling you just in case - ";
+		mes "If I work on a Guardian's Pendant that's been upgraded before, it loses its original power.";
+		next;
+		mes "[Pendant Crafter]";
+		mes "And worse, it can lose its power and become an ordinary pendant. Of course, stone is not as susceptible to damage as cloth, so you won't lose the pendant itself.";
+		next;
+		switch(select("Come on, what's the rush?:Okay! Let's do it!!")) {
+		case 1:
+			mes "[Pendant Crafter]";
+			mes "Come back when you're not in a hurry. I always have a lot of time on my hands.";
+			close;
+		case 2:
+			if (countitem(6380) < 5 || countitem(2858) == 0) {
+				mes "[Pendant Crafter]";
+				mes "It looks like you don't have everything you need.";
+				next;
+				mes "[Pendant Crafter]";
+				mes "You must have 5 Mora Coins and a Guardian's Pendant with you before I can do my work.";
+				close;
+			}
+			if (callfunc("F_Mora_Enchant",2858) == 0) {
+				getitem 2858,1; //Pendant_Of_Guardian
+				mes "[Pendant Crafter]";
+				mes "What~!!";
+				mes "What on earth is wrong with it!!";
+				close;
+			}
+			mes "[Pendant Crafter]";
+			mes "Looks like I did it!";
+			close;
+		}
+	}
+}
+
+mora,134,166,4	script	Bulberry Westhood#pa0829	509,{
+	if (checkweight(1201,1) == 0) {
+		mes "You have too many kinds of things with you to do that. Throw out some of them and try again.";
+		close;
+	}
+	if (MaxWeight - Weight < 1000) {
+		mes "You are carrying too much weight to do that. Reduce the weight and try again.";
+		close;
+	}
+	if (countitem(6380) < 5 || countitem(2568) == 0) {
+		mes "[Bulberry Westhood]";
+		mes "I'm Bulberry Westhood, keeping the tradition of quality hoods alive.";
+		next;
+		mes "[Bulberry Westhood]";
+		mes "I only handle quality items - not random scarfs from a marketplace.";
+		next;
+		mes "[Bulberry Westhood]";
+		mes "If you have anything that you think is of high enough quality, come find me with ^ff00005 Mora Coins^000000.";
+		next;
+		mes "[Bulberry Westhood]";
+		mes "I can improve its high quality with my own hands.";
+		close;
+	}
+	mes "[Bulberry Westhood]";
+	mes "So you have a Loki's Scarf 1042 Special Edition. You really have an eye for quality. Can I start working on it right away?";
+	next;
+	switch(select("I don't get it.:Yes, please.")) {
+	case 1:
+		mes "[Bulberry Westhood]";
+		mes "Like I said, I only handle quality items - not random scarfs from a marketplace.";
+		next;
+		mes "[Bulberry Westhood]";
+		mes "This Loki's Scarf you have is awesome. It's a limited edition product with Loki's crest on it!";
+		next;
+		mes "[Bulberry Westhood]";
+		mes "My specialty is bringing out the hidden power at the small cost of... ";
+		mes "5 Mora Coins.";
+		next;
+		mes "[Bulberry Westhood]";
+		mes "Come back if you change your mind.";
+		close;
+	case 2:
+		mes "[Bulberry Westhood]";
+		mes "I'm telling you just in case - ";
+		mes "If I work on a Loki's Scarf that's been upgraded before, it loses its original power.";
+		next;
+		mes "[Bulberry Westhood]";
+		mes "And worse, it can lose all its power becoming an ordinary scarf.";
+		next;
+		mes "[Bulberry Westhood]";
+		mes "Of course, the Loki's Scarf is a quality item, so you won't lose the scarf itself in the process.";
+		next;
+		switch(select("Maybe later, sir...:I'd like to own a quality item!")) {
+		case 1:
+			mes "[Bulberry Westhood]";
+			mes "Ha...!";
+			mes "You say 'later' when you can have the best quality item right away? Well, have it your own way.";
+			close;
+		case 2:
+			if (countitem(6380) < 5 || countitem(2568) == 0) {
+				mes "[Bulberry Westhood]";
+				mes "It looks like you don't everything you need.";
+				next;
+				mes "[Bulberry Westhood]";
+				mes "You must have 5 Mora Coins and a Loki's Scarf with you before you can have the best quality item.";
+				close;
+			}
+			if (callfunc("F_Mora_Enchant",2568) == 0) {
+				getitem 2568,1; //Muffler_Of_Roki
+				mes "[Bulberry Westhood]";
+				mes "Aaarrgghh, this is impossible!";
+				mes "My! My Loki's Scarf!....";
+				next;
+				mes "[Bulberry Westhood]";
+				mes "Oh, I apologize for my disgraceful behavior. I was too upset.";
+				next;
+				mes "[Bulberry Westhood]";
+				mes "Fortunately, it's still in its original state before I started working on it. It's not torn or stretched. It's a quality item after all. Oh ho ho~";
+				close;
+			}
+			mes "[Bulberry Westhood]";
+			mes "Wow~ mission complete!";
+			close;
+		}
+	}
+}

+ 1 - 0
npc/re/scripts_athena.conf

@@ -61,6 +61,7 @@ npc: npc/re/merchants/catalog.txt
 npc: npc/re/merchants/coin_exchange.txt
 npc: npc/re/merchants/diamond.txt
 npc: npc/re/merchants/enchan_mal.txt
+npc: npc/re/merchants/enchan_mora.txt
 npc: npc/re/merchants/flute.txt
 npc: npc/re/merchants/hd_refiner.txt
 npc: npc/re/merchants/inn.txt

+ 1 - 1
npc/scripts_athena.conf

@@ -256,5 +256,5 @@ npc: npc/quests/quests_yuno.txt
 npc: npc/quests/thana_quest.txt
 // - The Sign Quest
 //   Be sure that the time zone set corresponds with the server's.
-//   For more info, read the comments in npc/quests/The_Sign_Quest.txt
+//   For more info, read the comments in npc/quests/the_sign_quest.txt
 npc: npc/quests/the_sign_quest.txt

+ 4 - 4
sql-files/item_db.sql

@@ -3432,13 +3432,13 @@ REPLACE INTO `item_db` VALUES (6379,'7Star_Board','7Star Board',3,20,NULL,10,NUL
 REPLACE INTO `item_db` VALUES (6380,'Mora_Coin','Mora Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (6381,'Field_Shovel','Field Shovel',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (6382,'Urn','Urn',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (6383,'Clue_Of_Lope','Ropewa Clues',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (6384,'Ring_Of_Lope','Ring Of Lope',3,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (6383,'Clue_Of_Lope','Lope's Clue',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (6384,'Ring_Of_Lope','Lope's Ring',3,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (6385,'Research_Tool_Bag','Research Tool Bag',3,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (6386,'Bathtub_R_Sample','Bathtub R Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (6386,'Bathtub_R_Sample','Bath Water Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (6387,'Teeth_Sample','Teeth Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (6388,'Scale_Sample','Scale Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (6389,'Puddle_R_Sample','Pool Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (6389,'Puddle_R_Sample','Sample Of Puddle Research',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (6390,'Small_Pocket','Small Pocket',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (6391,'Splendid_Supply_Kit','Splendid Supply Kit',3,20,NULL,2000,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (6392,'Bradium_Box','Bradium Box',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

+ 42 - 42
sql-files/item_db_re.sql

@@ -975,10 +975,10 @@ REPLACE INTO `item_db_re` VALUES (1653,'Staff_Of_Healing_C','Staff of Healing',4
 REPLACE INTO `item_db_re` VALUES (1654,'Mental_Stick','Mental Stick',4,20,NULL,500,'40:170',NULL,1,1,0x00818315,7,2,2,3,'102',1,10,'if(getrefine()>5) { bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",(getrefine()-5)*2; bonus bMaxHPRate,-(getrefine()-5)*2; } bonus2 bSkillVariableCast,"SO_PSYCHIC_WAVE",-3000; bonus2 bSkillUseSP,"SO_PSYCHIC_WAVE",-60;',NULL,'itemheal 0,-100;');
 #1655,
 #1656,
-REPLACE INTO `item_db_re` VALUES (1657,'Mercy_Staff1','Mercy Staff I',4,20,NULL,500,'30:160',NULL,1,2,0x00000100,7,2,2,3,'100',1,10,'bonus bInt,2; bonus bAtkEle,Ele_Holy; bonus bHealPower,10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (1657,'Wand_Of_Affection','Wand Of Affection',4,20,NULL,500,'30:160',NULL,1,2,0x00000100,7,2,2,3,'100',1,10,'bonus bInt,2; bonus bAtkEle,Ele_Holy; bonus bHealPower,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1658,'P_Staff3','Eden Staff III',4,NULL,NULL,0,'60:170',NULL,1,NULL,0x00818314,7,2,2,3,'60',NULL,10,'bonus bInt,4;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1659,'Light_of_Recovery','Light of Recovery',4,56000,NULL,400,'30:160',NULL,1,1,0x00000100,7,2,2,4,'110',1,10,'bonus bAtkEle,Ele_Holy; bonus bUnbreakableWeapon,0; bonus bHealPower,(getrefine()*3/2); bonus bUseSPrate,(getrefine()*3);',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (1660,'Mercy_Staff2','Mercy Staff II',4,20,NULL,500,'30:180',NULL,1,1,0x00000100,7,2,2,3,'130',1,10,'bonus bAtkEle,Ele_Holy; bonus bInt,4; bonus bHealPower,20;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (1660,'Wand_Of_Affection2','Empowered Wand Of Affection',4,20,NULL,500,'30:180',NULL,1,1,0x00000100,7,2,2,3,'130',1,10,'bonus bAtkEle,Ele_Holy; bonus bInt,4; bonus bHealPower,20;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1661,'Mental_Destroyer','Mental Destroyer',4,20,NULL,1400,'100:50',NULL,1,NULL,0x00000200,7,2,2,4,'95',1,10,'bonus bInt,10; bonus bMdef,20; bonus bUnbreakableWeapon,0; bonus2 bSPVanishRate,10000,5; if(getrefine()>5) { bonus2 bSPVanishRate,10000,5; }',NULL,NULL);
 # Bows
 REPLACE INTO `item_db_re` VALUES (1701,'Bow','Bow',4,1000,NULL,500,'15',NULL,5,3,0x000A0848,7,2,34,1,'4',1,11,NULL,NULL,NULL);
@@ -1168,14 +1168,14 @@ REPLACE INTO `item_db_re` VALUES (2003,'Destruction_Rod_M','Staff of Destruction
 REPLACE INTO `item_db_re` VALUES (2004,'Kronos','Kronos',4,20,NULL,1000,'30:240',NULL,1,NULL,0x00010204,2,2,34,4,'50',1,23,'bonus bInt,3+(getrefine()/2); bonus bMaxHP,300+(50*getrefine()/2); autobonus "{bonus bMatkRate,12; bonus buseSPRate,20;}",1,5000,BF_MAGIC,"{specialeffect2 EF_ENHANCE;}";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2005,'Dea_Staff','Dea Staff',4,20,NULL,1000,'30:220',NULL,1,1,0x00008110,2,2,34,3,'50',1,23,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{}",20,1000,"AL_HEAL","{specialeffect2 EF_MAGICALATTHIT; heal 0,200;}";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2006,'G_Staff_Of_Light','Staff Of Light',4,20,NULL,1900,'80:150',NULL,1,NULL,0x00810204,7,2,34,4,'60',1,23,'bonus bAtkEle,Ele_Holy; bonus bInt,6;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2007,'Golden_Rod_Staff1','Golden Rod Staff I',4,20,NULL,900,'30:230',NULL,1,2,0x00000200,7,2,34,4,'100',1,23,'bonus bAtkEle,Ele_Wind; bonus bInt,3; bonus2 bSkillAtk,"WZ_JUPITEL",12;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2008,'Aqua_Staff1','Aqua Staff I',4,20,NULL,900,'30:230',NULL,1,2,0x00000200,7,2,34,4,'100',1,23,'bonus bAtkEle,Ele_Water; bonus bInt,3; bonus2 bSkillAtk,"MG_COLDBOLT",12; bonus2 bSkillAtk,"MG_FROSTDIVER",12;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2009,'Crimson_Staff1','Crimson Staff I',4,20,NULL,900,'30:230',NULL,1,2,0x00000200,7,2,34,4,'100',1,23,'bonus bAtkEle,Ele_Fire; bonus bInt,3; bonus2 bSkillAtk,"MG_FIREBOLT",10; bonus2 bSkillAtk,"MG_FIREBALL",10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2010,'Forest_Staff1','Forest Staff I',4,20,NULL,900,'30:230',NULL,1,2,0x00000200,7,2,34,4,'100',1,23,'bonus bAtkEle,Ele_Earth; bonus bInt,3; bonus2 bSkillAtk,"WZ_EARTHSPIKE",10; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2011,'Golden_Rod_Staff2','Golden Rod Staff II',4,20,NULL,900,'30:270',NULL,1,1,0x00000200,7,2,34,4,'130',1,10,'bonus bAtkEle,Ele_Wind; bonus bInt,5; bonus2 bSkillAtk,"WZ_JUPITEL",30;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2012,'Aqua_Staff2','Aqua Staff II',4,20,NULL,900,'30:270',NULL,1,1,0x00000200,7,2,34,4,'130',1,10,'bonus bAtkEle,Ele_Water; bonus bInt,5; bonus2 bSkillAtk,"MG_COLDBOLT",30; bonus2 bSkillAtk,"MG_FROSTDIVER",30;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2013,'Crimson_Staff2','Crimson Staff II',4,20,NULL,900,'30:270',NULL,1,1,0x00000200,7,2,34,4,'130',1,10,'bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus2 bSkillAtk,"MG_FIREBOLT",30; bonus2 bSkillAtk,"MG_FIREBALL",30;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2014,'Forest_Staff2','Forest Staff II',4,20,NULL,900,'30:270',NULL,1,1,0x00000200,7,2,34,4,'130',1,10,'bonus bAtkEle,Ele_Earth; bonus bInt,5; bonus2 bSkillAtk,"WZ_EARTHSPIKE",30; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2007,'Golden_Rod_Staff','Golden Rod Staff',4,20,NULL,900,'30:230',NULL,1,2,0x00000200,7,2,34,4,'100',1,23,'bonus bAtkEle,Ele_Wind; bonus bInt,3; bonus2 bSkillAtk,"WZ_JUPITEL",12;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2008,'Aqua_Staff','Aqua Staff',4,20,NULL,900,'30:230',NULL,1,2,0x00000200,7,2,34,4,'100',1,23,'bonus bAtkEle,Ele_Water; bonus bInt,3; bonus2 bSkillAtk,"MG_COLDBOLT",12; bonus2 bSkillAtk,"MG_FROSTDIVER",12;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2009,'Crimson_Staff','Crimson Staff',4,20,NULL,900,'30:230',NULL,1,2,0x00000200,7,2,34,4,'100',1,23,'bonus bAtkEle,Ele_Fire; bonus bInt,3; bonus2 bSkillAtk,"MG_FIREBOLT",10; bonus2 bSkillAtk,"MG_FIREBALL",10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2010,'Forest_Staff','Forest Staff',4,20,NULL,900,'30:230',NULL,1,2,0x00000200,7,2,34,4,'100',1,23,'bonus bAtkEle,Ele_Earth; bonus bInt,3; bonus2 bSkillAtk,"WZ_EARTHSPIKE",10; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2011,'Golden_Rod_Staff2','Empowered Golden Rod Staff',4,20,NULL,900,'30:270',NULL,1,1,0x00000200,7,2,34,4,'130',1,10,'bonus bAtkEle,Ele_Wind; bonus bInt,5; bonus2 bSkillAtk,"WZ_JUPITEL",30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2012,'Aqua_Staff2','Empowered Aqua Staff',4,20,NULL,900,'30:270',NULL,1,1,0x00000200,7,2,34,4,'130',1,10,'bonus bAtkEle,Ele_Water; bonus bInt,5; bonus2 bSkillAtk,"MG_COLDBOLT",30; bonus2 bSkillAtk,"MG_FROSTDIVER",30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2013,'Crimson_Staff2','Empowered Crimson Staff',4,20,NULL,900,'30:270',NULL,1,1,0x00000200,7,2,34,4,'130',1,10,'bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus2 bSkillAtk,"MG_FIREBOLT",30; bonus2 bSkillAtk,"MG_FIREBALL",30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2014,'Forest_Staff2','Empowered Forest Staff',4,20,NULL,900,'30:270',NULL,1,1,0x00000200,7,2,34,4,'130',1,10,'bonus bAtkEle,Ele_Earth; bonus bInt,5; bonus2 bSkillAtk,"WZ_EARTHSPIKE",30; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2015,'Upg_Staff','Upg Staff',4,20,NULL,1000,'50:70',NULL,1,1,0x00818314,7,2,34,3,'1',1,10,'bonus bMatk,(getrefine()*10); bonus bHealPower,getrefine(); if(BaseJob==Job_Wizard) bonus bMatk,30; else if(BaseJob==Job_Sage) bonus bMatk,20; if(BaseLevel>70) bonus bMatk,(((BaseLevel-70)/10)*10);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2016,'Velum_Arc_Wand','Vellum Arc Wand',4,20,NULL,800,'110:220',NULL,1,NULL,0x00818314,7,2,34,4,'95',1,10,'bonus bUnbreakableWeapon,0; bonus2 bMagicAddRace,RC_DemiHuman,25; bonus bIgnoreMdefRate,25; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,15; } if(getrefine()>8) { bonus bVariableCastrate,-20; }',NULL,NULL);
 # Shields
@@ -1529,14 +1529,14 @@ REPLACE INTO `item_db_re` VALUES (2467,'Golden_Rod_Shoes','Golden Rod Shoes',5,2
 REPLACE INTO `item_db_re` VALUES (2468,'Aqua_Shoes','Aqua Shoes',5,20,NULL,500,NULL,12,NULL,1,0x00000200,7,2,64,NULL,'100',1,0,'bonus bMdef,2; bonus bMaxHP,500; bonus2 bSubEle,Ele_Water,15;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2469,'Crimson_Shoes','Crismons Shoes',5,20,NULL,500,NULL,12,NULL,1,0x00000200,7,2,64,NULL,'100',1,0,'bonus bMdef,2; bonus bMaxHP,500; bonus2 bSubEle,Ele_Fire,15;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2470,'Forest_Shoes','Forest Shoes',5,20,NULL,500,NULL,12,NULL,1,0x00000200,7,2,64,NULL,'100',1,0,'bonus bMdef,2; bonus bMaxHP,500; bonus2 bSubEle,Ele_Earth,15;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2471,'Mercy_Shoes','Mercy Shoes',5,20,NULL,300,NULL,12,NULL,NULL,0x00000100,7,2,64,NULL,'100',1,0,'bonus bMaxHP,500; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Formless,-10; bonus2 bSubRace,RC_Undead,-10; bonus2 bSubRace,RC_Brute,-10; bonus2 bSubRace,RC_Plant,-10; bonus2 bSubRace,RC_Insect,-10; bonus2 bSubRace,RC_Fish,-10; bonus2 bSubRace,RC_Demon,-10; bonus2 bSubRace,RC_Angel,-10; bonus2 bSubRace,RC_Dragon,-10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2472,'Judgement_Shoes','Judgement Shoes',5,20,NULL,300,NULL,12,NULL,NULL,0x00000100,7,2,64,NULL,'100',1,0,'bonus bMaxSP,150; bonus2 bSkillAtk,"AB_JUDEX",30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2471,'Shoes_Of_Affection','Shoes Of Affection',5,20,NULL,300,NULL,12,NULL,NULL,0x00000100,7,2,64,NULL,'100',1,0,'bonus bMaxHP,500; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Formless,-10; bonus2 bSubRace,RC_Undead,-10; bonus2 bSubRace,RC_Brute,-10; bonus2 bSubRace,RC_Plant,-10; bonus2 bSubRace,RC_Insect,-10; bonus2 bSubRace,RC_Fish,-10; bonus2 bSubRace,RC_Demon,-10; bonus2 bSubRace,RC_Angel,-10; bonus2 bSubRace,RC_Dragon,-10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2472,'Shoes_Of_Judgement','Shoes Of Judgement',5,20,NULL,300,NULL,12,NULL,NULL,0x00000100,7,2,64,NULL,'100',1,0,'bonus bMaxSP,150; bonus2 bSkillAtk,"AB_JUDEX",30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2473,'Para_Team_Boots4','Eden Team Boots IV',5,NULL,NULL,0,NULL,20,NULL,NULL,0xFFFFFFFF,7,2,64,NULL,'60',NULL,0,'bonus bAgi,1; bonus bVit,1; bonus bHPrecovRate,28; bonus bSPrecovRate,12;',NULL,NULL);
 #2474,
-REPLACE INTO `item_db_re` VALUES (2475,'Ur_Greave','Urj Greaves',5,20,NULL,900,NULL,32,NULL,1,0x00000080,8,2,64,NULL,'100',1,0,'bonus bMaxSP,40; if(getequiprefinerycnt(EQI_SHOES)>7) bonus bMaxHPRate,getequiprefinerycnt(EQI_SHOES)-7;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2476,'Peuz_Greave','Pertz Greaves',5,20,NULL,900,NULL,32,NULL,1,0x00000080,8,2,64,NULL,'100',1,0,'bonus bMaxSP,40; bonus bAgi,-7+(getequiprefinerycnt(EQI_SHOES)>8)?8:getequiprefinerycnt(EQI_SHOES);',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2477,'Sabah_Shoes','Sabath Shoes',5,20,NULL,400,NULL,18,NULL,1,0x00001000,7,2,64,NULL,'100',1,0,'bonus bMaxSP,30; bonus bLuk,3;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2478,'Nab_Shoes','Nabeu\'s Shoes',5,20,NULL,400,NULL,18,NULL,1,0x00001000,7,2,64,NULL,'100',1,0,'bonus bFlee,3; bonus bInt,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2475,'Ur_Greave','Ur\'s Greaves',5,20,NULL,900,NULL,32,NULL,1,0x00000080,8,2,64,NULL,'100',1,0,'bonus bMaxSP,40; if(getequiprefinerycnt(EQI_SHOES)>7) bonus bMaxHPRate,getequiprefinerycnt(EQI_SHOES)-7;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2476,'Peuz_Greave','Peuz\'s Greaves',5,20,NULL,900,NULL,32,NULL,1,0x00000080,8,2,64,NULL,'100',1,0,'bonus bMaxSP,40; bonus bAgi,-7+(getequiprefinerycnt(EQI_SHOES)>8)?8:getequiprefinerycnt(EQI_SHOES);',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2477,'Sabah_Shoes','Sapha Shoes',5,20,NULL,400,NULL,18,NULL,1,0x00001000,7,2,64,NULL,'100',1,0,'bonus bMaxSP,30; bonus bLuk,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2478,'Nab_Shoes','Nab Shoes',5,20,NULL,400,NULL,18,NULL,1,0x00001000,7,2,64,NULL,'100',1,0,'bonus bFlee,3; bonus bInt,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2479,'White_Wing_Boots','White Wing Boots',5,20,NULL,400,NULL,18,NULL,1,0x00000800,7,2,64,NULL,'100',1,0,'bonus bAgi,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2480,'Black_Wing_Boots','Black Wing Boots',5,20,NULL,400,NULL,18,NULL,1,0x00000800,8,2,64,NULL,'100',1,0,'bonus bInt,2; bonus bMaxSPRate,5;',NULL,NULL);
 #2481,
@@ -1621,16 +1621,16 @@ REPLACE INTO `item_db_re` VALUES (2565,'Beach_Towel','Beach Towel',5,20,NULL,100
 REPLACE INTO `item_db_re` VALUES (2566,'Half_Asprika','Half Asprika',5,20,NULL,0,NULL,20,NULL,NULL,0xFFFFFFFF,7,2,4,NULL,'47',NULL,0,'bonus bMdef,2; bonus3 bSubEle,Ele_Neutral,15,BF_SHORT; bonus3 bSubEle,Ele_Water,15,BF_SHORT; bonus3 bSubEle,Ele_Earth,15,BF_SHORT; bonus3 bSubEle,Ele_Fire,15,BF_SHORT; bonus3 bSubEle,Ele_Wind,15,BF_SHORT; bonus3 bSubEle,Ele_Poison,15,BF_SHORT; bonus3 bSubEle,Ele_Holy,15,BF_SHORT; bonus3 bSubEle,Ele_Dark,15,BF_SHORT; bonus3 bSubEle,Ele_Ghost,15,BF_SHORT; bonus3 bSubEle,Ele_Undead,15,BF_SHORT; bonus bFlee,15; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,0;',NULL,NULL);
 #2567,
 REPLACE INTO `item_db_re` VALUES (2568,'Muffler_Of_Roki','Loki\'s Muffler',5,20,NULL,400,NULL,10,NULL,NULL,0xFFFFFFFF,7,2,4,NULL,'100',NULL,0,'bonus bAgi,1; bonus2 bSkillAtk,"GC_CROSSIMPACT",5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2569,'Mercy_Shawl','Mercy Shawl',5,20,NULL,400,NULL,12,NULL,NULL,0x00000100,7,2,4,NULL,'100',1,0,'bonus bFlee2,5; bonus3 bAutoSpellWhenHit,"AB_RENOVATIO",1,10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2570,'Judgement_Shawl','Judgement Shawl',5,20,NULL,400,NULL,12,NULL,NULL,0x00000100,7,2,4,NULL,'100',1,0,'bonus bFlee,5; bonus3 bAutoSpellWhenHit,"AB_ORATIO",getskilllv("AB_ORATIO") ? getskilllv("AB_ORATIO") : 2,10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2569,'Shawl_Of_Affection','Shawl Of Affection',5,20,NULL,400,NULL,12,NULL,NULL,0x00000100,7,2,4,NULL,'100',1,0,'bonus bFlee2,5; bonus3 bAutoSpellWhenHit,"AB_RENOVATIO",1,10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2570,'Shawl_Of_Judgement','Shawl Of Judgement',5,20,NULL,400,NULL,12,NULL,NULL,0x00000100,7,2,4,NULL,'100',1,0,'bonus bFlee,5; bonus3 bAutoSpellWhenHit,"AB_ORATIO",getskilllv("AB_ORATIO") ? getskilllv("AB_ORATIO") : 2,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2571,'Para_Team_Manteau2','Eden Team Manteau II',5,NULL,NULL,0,NULL,18,NULL,NULL,0xFFFFFFFF,7,2,4,NULL,'60',NULL,0,'bonus bFlee,12; bonus2 bSubEle,Ele_Neutral,10;',NULL,NULL);
 #2572,
 REPLACE INTO `item_db_re` VALUES (2573,'Archangel_Wing','Archangel Wings',5,NULL,NULL,200,NULL,18,NULL,1,0xFFFFFFFF,7,2,4,NULL,NULL,1,1,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2574,'Ur_Manteau','Urj Manteau',5,20,NULL,600,NULL,20,NULL,NULL,0x00000080,8,2,4,NULL,'100',1,0,'bonus bMaxHPRate,2; bonus2 bSubEle,Ele_Neutral,10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2575,'Peuz_Manteau','Pertz Manteau',5,20,NULL,600,NULL,16,NULL,NULL,0x00000080,8,2,4,NULL,'100',1,0,'bonus bFlee,10; bonus bCritical,10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2574,'Ur_Manteau','Ur\'s Manteau',5,20,NULL,600,NULL,20,NULL,NULL,0x00000080,8,2,4,NULL,'100',1,0,'bonus bMaxHPRate,2; bonus2 bSubEle,Ele_Neutral,10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2575,'Peuz_Manteau','Peuz\'s Manteau',5,20,NULL,600,NULL,16,NULL,NULL,0x00000080,8,2,4,NULL,'100',1,0,'bonus bFlee,10; bonus bCritical,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2576,'Bravery_Bag','Adventurer\'s Backpack',5,NULL,NULL,200,NULL,20,NULL,1,0xFFFFFFFF,7,2,4,NULL,NULL,1,2,'skill "BS_GREED",1; if(getrefine()>6) { if(readparam(bStr)>=90){ bonus bBaseAtk,20; } if(readparam(bInt)>=90){ bonus bMatk,30; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,10; } if(readparam(bAgi)>=90){ bonus bAspdRate,8; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,10; } } if(getrefine()>8) { if(readparam(bStr)>=90){ bonus bBaseAtk,10; } if(readparam(bInt)>=90){ bonus bMatk,20; } if(readparam(bVit)>=90){ bonus2 bSubEle,Ele_Neutral,5; } if(readparam(bAgi)>=90){ bonus bAspd,1; } if(readparam(bDex)>=90){ bonus bLongAtkRate,5; } if(readparam(bLuk)>=90){ bonus bCritAtkRate,5; } }',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2577,'Sabah_Hood','Sabath Hood',5,20,NULL,100,NULL,13,NULL,NULL,0x00001000,7,2,4,NULL,'100',1,0,'bonus bFlee,12; bonus bCritical,getrefine();',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2578,'Nab_Hood','Nabeu\'s Hood',5,20,NULL,100,NULL,13,NULL,NULL,0x00001000,7,2,4,NULL,'100',1,0,'bonus bFlee,getrefine()*2; bonus bBaseAtk,getrefine()*2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2577,'Sabah_Hood','Sapha Hood',5,20,NULL,100,NULL,13,NULL,NULL,0x00001000,7,2,4,NULL,'100',1,0,'bonus bFlee,12; bonus bCritical,getrefine();',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2578,'Nab_Hood','Nab Hood',5,20,NULL,100,NULL,13,NULL,NULL,0x00001000,7,2,4,NULL,'100',1,0,'bonus bFlee,getrefine()*2; bonus bBaseAtk,getrefine()*2;',NULL,NULL);
 #2579,
 REPLACE INTO `item_db_re` VALUES (2580,'White_Wing_Manteau','White Wing Manteau',5,20,NULL,200,NULL,15,NULL,NULL,0x00000800,7,2,4,NULL,'100',1,0,'bonus bAgi,2; bonus bFlee,10; autobonus2 "{bonus bFlee,20;}",10,7000,BF_LONG,"{specialeffect2 EF_WIND;}";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2581,'Black_Wing_Manteau','Black Wing Manteau',5,20,NULL,200,NULL,15,NULL,NULL,0x00000800,8,2,4,NULL,'100',1,0,'bonus bInt,2; if(getequiprefinerycnt(EQI_GARMENT)>6) bonus bFlee2,getequiprefinerycnt(EQI_GARMENT)-6;',NULL,NULL);
@@ -1902,24 +1902,24 @@ REPLACE INTO `item_db_re` VALUES (2854,'Alchemy_Glove','Alchemy Glove',5,20,NULL
 REPLACE INTO `item_db_re` VALUES (2855,'Whike_Black_Tail','Whike Black Tail',5,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'45',NULL,0,'bonus bCritical,70; bonus bAspdRate,3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2856,'Half_Megin','Half Megingjard',5,20,NULL,0,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'47',NULL,0,'bonus bMdef,3; bonus bStr,20;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2857,'Half_Brysing','Half Brisingamen',5,20,NULL,0,NULL,1,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'47',NULL,0,'bonus bStr,3; bonus bInt,5; bonus bVit,3; bonus bDex,3; bonus bAgi,3; bonus bLuk,5; bonus bMdef,2;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2858,'Pendant_Of_Guardian','Guardian Pendant',5,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'70',NULL,0,'skill "ALL_GUARDIAN_RECALL",1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2858,'Pendant_Of_Guardian','Pendant Of Guardian',5,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'70',NULL,0,'skill "ALL_GUARDIAN_RECALL",1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2859,'Golden_Rod_Orb','Golden Rod Orb',5,20,NULL,200,NULL,2,NULL,NULL,0x00000200,7,2,136,NULL,'100',NULL,0,'bonus bMdef,2; bonus bInt,1; bonus2 bSubEle,Ele_Wind,15; bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",3,30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2860,'Aqua_Orb','Aqua Orb',5,20,NULL,200,NULL,2,NULL,NULL,0x00000200,7,2,136,NULL,'100',NULL,0,'bonus bMdef,2; bonus bInt,1; bonus2 bSubEle,Ele_Water,15; bonus3 bAutoSpellWhenHit,"WZ_FROSTNOVA",3,30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2861,'Crimson_Orb','Crismon Orb',5,20,NULL,200,NULL,2,NULL,NULL,0x00000200,7,2,136,NULL,'100',NULL,0,'bonus bMdef,2; bonus bInt,1; bonus2 bSubEle,Ele_Fire,15; bonus3 bAutoSpellWhenHit,"WZ_SIGHTRASHER",3,30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2862,'Forest_Orb','Forest Orb',5,20,NULL,200,NULL,2,NULL,NULL,0x00000200,7,2,136,NULL,'100',NULL,0,'bonus bMdef,2; bonus bInt,1; bonus2 bSubEle,Ele_Earth,15; bonus3 bAutoSpellWhenHit,"WZ_QUAGMIRE",3,30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2863,'Ring_Of_Valkyrie','Ring Of Valkyrie',5,NULL,NULL,0,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,'bonus2 bExpAddRace,RC_Boss,5; bonus2 bExpAddRace,RC_NonBoss,5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2864,'Light_Of_Cure','Liht Of Cure',5,20,NULL,0,NULL,NULL,NULL,NULL,0x00000100,7,2,136,NULL,'110',NULL,0,'bonus bVit,2; bonus bHealPower,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2864,'Light_Of_Cure','Light Of Cure',5,20,NULL,0,NULL,NULL,NULL,NULL,0x00000100,7,2,136,NULL,'110',NULL,0,'bonus bVit,2; bonus bHealPower,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2865,'Seal_Of_Cathedral','Seal Of Cathedral',5,20,NULL,0,NULL,NULL,NULL,NULL,0x00000100,7,2,136,NULL,'110',NULL,0,'bonus bInt,2; bonus bHealPower,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2866,'Ring_Of_Archbishop','Ring Of Archbishop',5,20,NULL,0,NULL,NULL,NULL,NULL,0x00000100,7,2,136,NULL,'110',NULL,0,'bonus bDex,2; bonus bHealPower,2;',NULL,NULL);
 #
 REPLACE INTO `item_db_re` VALUES (2872,'G_Honor_Certificate','G Honor Certificate',5,NULL,NULL,0,NULL,2,NULL,NULL,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2873,'Cat_Hand_Glove','Cat Hand Glove',5,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,7,2,136,NULL,'1',NULL,0,'bonus bAgi,1; bonus bVit,1; bonus bDex,1; bonus bLuk,1;',NULL,NULL);
 #
-REPLACE INTO `item_db_re` VALUES (2883,'Ur_Seal','Urj Seal',5,20,NULL,200,NULL,4,NULL,1,0x00000080,8,2,136,NULL,'100',NULL,0,'bonus bMaxHPrate,2; bonus2 bSkillUseSP,"LK_SPIRALPIERCE",5; bonus2 bSkillUseSP,"RK_HUNDREDSPEAR",5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2884,'Peuz_Seal','Pertz Seal',5,20,NULL,200,NULL,3,NULL,1,0x00000080,8,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,20; bonus bMaxSP,20;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2883,'Ur_Seal','Ur\'s Seal',5,20,NULL,200,NULL,4,NULL,1,0x00000080,8,2,136,NULL,'100',NULL,0,'bonus bMaxHPrate,2; bonus2 bSkillUseSP,"LK_SPIRALPIERCE",5; bonus2 bSkillUseSP,"RK_HUNDREDSPEAR",5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2884,'Peuz_Seal','Peuz\'s Seal',5,20,NULL,200,NULL,3,NULL,1,0x00000080,8,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,20; bonus bMaxSP,20;',NULL,NULL);
 #2885,
-REPLACE INTO `item_db_re` VALUES (2886,'Sabah_Ring','Sabath Seal',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bCritical,3;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2887,'Nab_Ring','Nabeu\'s Seal',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,10; bonus bMatk,20;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2886,'Sabah_Ring','Sapha Ring',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bCritical,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2887,'Nab_Ring','Nab Ring',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00001000,7,2,136,NULL,'100',NULL,0,'bonus bBaseAtk,10; bonus bMatk,20;',NULL,NULL);
 #2888,
 #2889,
 REPLACE INTO `item_db_re` VALUES (2890,'White_Wing_Brooch','White Wing Brooch',5,20,NULL,100,NULL,NULL,NULL,NULL,0x00000800,7,2,136,NULL,'100',NULL,0,'bonus bDex,2; bonus bLongAtkRate,3;',NULL,NULL);
@@ -3888,13 +3888,13 @@ REPLACE INTO `item_db_re` VALUES (6379,'7Star_Board','7Star Board',3,20,NULL,10,
 REPLACE INTO `item_db_re` VALUES (6380,'Mora_Coin','Mora Coin',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6381,'Field_Shovel','Field Shovel',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6382,'Urn','Urn',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (6383,'Clue_Of_Lope','Ropewa Clues',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (6384,'Ring_Of_Lope','Ring Of Lope',3,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6383,'Clue_Of_Lope','Lope\'s Clue',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6384,'Ring_Of_Lope','Lope\'s Ring',3,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6385,'Research_Tool_Bag','Research Tool Bag',3,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (6386,'Bathtub_R_Sample','Bathtub R Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6386,'Bathtub_R_Sample','Bath Water Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6387,'Teeth_Sample','Teeth Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6388,'Scale_Sample','Scale Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (6389,'Puddle_R_Sample','Pool Sample',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6389,'Puddle_R_Sample','Sample Of Puddle Research',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6390,'Small_Pocket','Small Pocket',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6391,'Splendid_Supply_Kit','Splendid Supply Kit',3,20,NULL,2000,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6392,'Bradium_Box','Bradium Box',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -7205,21 +7205,21 @@ REPLACE INTO `item_db_re` VALUES (15025,'Golden_Rod_Robe','Golden Rod Robe',5,20
 REPLACE INTO `item_db_re` VALUES (15026,'Aqua_Robe','Aqua Robe',5,20,NULL,500,NULL,40,NULL,NULL,0x00000200,7,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Water; bonus bMdef,10; bonus bInt,1; if(readparam(bInt)>=120){ bonus bInt,1; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15027,'Crimson_Robe','Crimson Robe',5,20,NULL,500,NULL,40,NULL,NULL,0x00000200,7,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Fire; bonus bMdef,10; bonus bInt,1; if(readparam(bInt)>=120){ bonus bInt,1; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15028,'Forest_Robe','Forest Robe',5,20,NULL,500,NULL,40,NULL,NULL,0x00000200,7,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Earth; bonus bMdef,10; bonus bInt,1; if(readparam(bInt)>=120){ bonus bInt,1; }',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (15029,'Mercy_Robe','Mercy Robe',5,20,NULL,300,NULL,22,NULL,NULL,0x00000100,2,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Holy; bonus bMdef,10; bonus bInt,1;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (15030,'Judgement_Robe','Judgement Robe',5,20,NULL,300,NULL,22,NULL,NULL,0x00000100,2,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Dark; bonus bMdef,10; bonus bStr,2; bonus bInt,1; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bSubRace,RC_Formless,-10; bonus2 bSubRace,RC_Brute,-10; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Plant,-10; bonus2 bSubRace,RC_Insect,-10; bonus2 bSubRace,RC_Fish,-10; bonus2 bSubRace,RC_Angel,-10; bonus2 bSubRace,RC_Dragon,-10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15029,'Robe_Of_Affection','Robe Of Affection',5,20,NULL,300,NULL,22,NULL,NULL,0x00000100,2,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Holy; bonus bMdef,10; bonus bInt,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15030,'Robe_Of_Judgement','Robe Of Judgement',5,20,NULL,300,NULL,22,NULL,NULL,0x00000100,2,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Dark; bonus bMdef,10; bonus bStr,2; bonus bInt,1; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bSubRace,RC_Formless,-10; bonus2 bSubRace,RC_Brute,-10; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Plant,-10; bonus2 bSubRace,RC_Insect,-10; bonus2 bSubRace,RC_Fish,-10; bonus2 bSubRace,RC_Angel,-10; bonus2 bSubRace,RC_Dragon,-10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15031,'Paradise_Uniform4','Paradise Uniform IV',5,NULL,NULL,0,NULL,58,NULL,NULL,0xFFFFFFFF,7,2,16,NULL,'60',NULL,0,'bonus bMdef,5; bonus bMaxHP,500; bonus bMaxSP,50; bonus bStr,1; bonus bInt,1; bonus bDex,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15032,'Tidon','Tidon',5,20,NULL,500,NULL,2,NULL,1,0xFFFFFFFE,7,2,16,NULL,'1',1,0,'bonus bMdef,10; bonus2 bResEff,Eff_Stun,1500; bonus2 bResEff,Eff_Freeze,1500; bonus2 bSubRace,RC_NonBoss,5; bonus2 bSubRace,RC_Boss,5;',NULL,NULL);
 #15033,
 #15034,
 #15035,
-REPLACE INTO `item_db_re` VALUES (15036,'Ur_Plate','Urj Plate',5,20,NULL,3000,NULL,110,NULL,NULL,0x00000080,8,2,16,NULL,'100',1,0,'bonus bMdef,10; bonus bMaxHPRate,getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (15037,'Peuz_Plate','Pertz Plate',5,20,NULL,3000,NULL,110,NULL,NULL,0x00000080,8,2,16,NULL,'100',1,0,'bonus bMdef,10; bonus bBaseAtk,20; bonus bFlee,17;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (15038,'Sabah_Cloth','Sabath\'s Cloth',5,20,NULL,100,NULL,45,NULL,1,0x00001000,7,2,16,NULL,'100',1,0,'bonus bLuk,3; bonus3 bAutoSpell,"ASC_METEORASSAULT",getskilllv("ASC_METEORASSAULT"),10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (15039,'Nab_Cloth','Nabeu\'s Cloth',5,20,NULL,100,NULL,45,NULL,1,0x00001000,7,2,16,NULL,'100',1,0,'bonus bStr,2; bonus bInt,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15036,'Ur_Plate','Ur\'s Plate',5,20,NULL,3000,NULL,110,NULL,NULL,0x00000080,8,2,16,NULL,'100',1,0,'bonus bMdef,10; bonus bMaxHPRate,getequiprefinerycnt(EQI_ARMOR); bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubEle,Ele_Neutral,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15037,'Peuz_Plate','Peuz\'s Plate',5,20,NULL,3000,NULL,110,NULL,NULL,0x00000080,8,2,16,NULL,'100',1,0,'bonus bMdef,10; bonus bBaseAtk,20; bonus bFlee,17;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15038,'Sabah_Cloth','Sapha\'s Cloth',5,20,NULL,100,NULL,45,NULL,1,0x00001000,7,2,16,NULL,'100',1,0,'bonus bLuk,3; bonus3 bAutoSpell,"ASC_METEORASSAULT",getskilllv("ASC_METEORASSAULT"),10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15039,'Nab_Cloth','Nab\'s Cloth',5,20,NULL,100,NULL,45,NULL,1,0x00001000,7,2,16,NULL,'100',1,0,'bonus bStr,2; bonus bInt,2;',NULL,NULL);
 #15040,
 #15041,
-REPLACE INTO `item_db_re` VALUES (15042,'White_Wing_Suit','White Wing Suit',5,20,NULL,100,NULL,45,NULL,1,0x00000800,7,2,16,NULL,'100',1,0,'bonus bLongAtkRate,getrefine()*2; bonus bFlee,getrefine();',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (15043,'Black_Wing_Suit','Black Wing Suit',5,20,NULL,100,NULL,45,NULL,1,0x00000800,8,2,16,NULL,'100',1,0,'bonus bInt,2; bonus bBaseAtk,getequiprefinerycnt(EQI_ARMOR)*3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15042,'White_Wing_Suits','White Wing Suits',5,20,NULL,100,NULL,45,NULL,1,0x00000800,7,2,16,NULL,'100',1,0,'bonus bLongAtkRate,getrefine()*2; bonus bFlee,getrefine();',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15043,'Black_Wing_Suits','Black Wing Suits',5,20,NULL,100,NULL,45,NULL,1,0x00000800,8,2,16,NULL,'100',1,0,'bonus bInt,2; bonus bBaseAtk,getequiprefinerycnt(EQI_ARMOR)*3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15044,'Green_Surgical_Gown','Green Surgical Gown',5,56000,NULL,660,NULL,66,NULL,1,0x00040000,7,2,16,NULL,'100',1,0,'bonus bDex,1; bonus bMaxSP,30;',NULL,NULL);
 #15045,
 REPLACE INTO `item_db_re` VALUES (15046,'Siege_Plate','Siege Plate',5,NULL,NULL,3300,NULL,85,NULL,1,0x006444A2,7,2,16,NULL,'95',1,0,'bonus bMdef,5; bonus2 bSubRace,RC_DemiHuman,2; if(getrefine()>5) { bonus bHealpower2,12; bonus bAddItemHealRate,12; } if(getrefine()>8) { bonus bMaxHPRate,25; }',NULL,NULL);
@@ -7247,12 +7247,12 @@ REPLACE INTO `item_db_re` VALUES (16009,'E_Spanner_C','Spanner',4,2,NULL,0,'150'
 REPLACE INTO `item_db_re` VALUES (16010,'Red_Ether_Bag','Red Ether Bag',4,20,NULL,0,'15:100',NULL,1,1,0x0004C5B2,7,2,2,3,'102',1,8,' if(getrefine()>=6){ bonus2 bSkillAtk,"GN_CRAZYWEED",20+((getrefine()-5)*2); bonus2 bSkillAtk,"GN_DEMONIC_FIRE",20+((getrefine()-5)*2); } else { bonus2 bSkillAtk,"GN_CRAZYWEED",20; bonus2 bSkillAtk,"GN_DEMONIC_FIRE",20; }',NULL,NULL);
 #16011,
 #16012,
-REPLACE INTO `item_db_re` VALUES (16013,'Judgement_Mace1','Judgement Mace I',4,20,NULL,1200,'140:180',NULL,1,2,0x00000100,2,2,2,3,'100',1,8,'bonus bStr,1; bonus bInt,1; autobonus "{bonus2 bAddRace,RC_Demon,20;}",10,7000,BF_WEAPON|BF_MAGIC,"{specialeffect2 EF_BLOODDRAIN;}";',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (16013,'Mace_Of_Judgement','Mace Of Judgement',4,20,NULL,1200,'140:180',NULL,1,2,0x00000100,2,2,2,3,'100',1,8,'bonus bStr,1; bonus bInt,1; autobonus "{bonus2 bAddRace,RC_Demon,20;}",10,7000,BF_WEAPON|BF_MAGIC,"{specialeffect2 EF_BLOODDRAIN;}";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16014,'P_Mace3','Eden Mace III',4,NULL,NULL,0,'172',NULL,1,NULL,0x0004C5B3,7,2,2,3,'60',NULL,8,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16015,'Cat_Club','Cat Club',4,20,NULL,700,'88',NULL,3,NULL,0x0004C5B3,7,2,2,1,'1',1,8,'bonus2 bAddRace,RC_Brute,15;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16016,'Tuna','Tuna',4,NULL,NULL,0,'180',NULL,1,NULL,0x0004C5B3,7,2,2,1,'50',NULL,8,'bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Stun,100; bonus3 bAutoSpell,"SM_BASH",5+5*(getskilllv("SM_BASH")==10),10; if(BaseLevel>99) { bonus bBaseAtk,20; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16017,'Bloody_Cross','Bloody Cross',4,20,NULL,1500,'170',NULL,1,NULL,0x00008110,7,2,2,4,'100',1,8,'bonus bAtkEle,Ele_Dark; bonus3 bAutoSpell,"WL_HELLINFERNO",1,10+(getrefine()*5);',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (16018,'Judgement_Mace2','Judgement Mace II',4,20,NULL,1200,'170:180',NULL,1,1,0x00000100,2,2,2,3,'130',1,8,'bonus bStr,2; bonus bInt,2; autobonus "{bonus2 bAddRace,RC_Demon,40;}",10,7000,BF_WEAPON|BF_MAGIC,"{specialeffect2 EF_BLOODDRAIN;}";',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (16018,'Mace_Of_Judgement2','Empowered Mace Of Judgement',4,20,NULL,1200,'170:180',NULL,1,1,0x00000100,2,2,2,3,'130',1,8,'bonus bStr,2; bonus bInt,2; autobonus "{bonus2 bAddRace,RC_Demon,40;}",10,7000,BF_WEAPON|BF_MAGIC,"{specialeffect2 EF_BLOODDRAIN;}";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16019,'Upg_Mace','Upg Mace',4,20,NULL,800,'80',NULL,1,1,0x0004C5B3,7,2,2,3,'1',1,8,'bonus bBaseAtk,(getrefine()*10); bonus bHealPower,getrefine(); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16020,'Velum_Stunner','Vellum Stunner',4,20,NULL,1500,'170',NULL,1,NULL,0x0004C5B3,7,2,2,4,'95',1,8,'bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Stun,1000+getrefine(); bonus bAspdRate,getrefine();',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16021,'Velum_Flail','Vellum Flail',4,20,NULL,1500,'170',NULL,1,NULL,0x0004C5B3,7,2,2,4,'95',1,8,'bonus bUnbreakableWeapon,0; bonus3 bAutoSpell,"NPC_CRITICALWOUND",5,10; bonus bHit,getrefine(); bonus bCritical,getrefine();',NULL,NULL);

+ 1 - 3
src/char/char.c

@@ -1926,7 +1926,7 @@ void char_charlist_notify( int fd, struct char_session_data* sd ){
 	WFIFOHEAD(fd, 6);
 	WFIFOW(fd, 0) = 0x9a0;
 	// pages to req / send them all in 1 until mmo_chars_fromsql can split them up
-	WFIFOL(fd, 2) = 1; //int TotalCnt
+	WFIFOL(fd, 2) = (sd->char_slots>3)?sd->char_slots/3:1; //int TotalCnt (nb page to load)
 	WFIFOSET(fd,6);
 }
 
@@ -3303,7 +3303,6 @@ int parse_frommap(int fd)
 		case 0x2b11:
 			if( RFIFOREST(fd) < 10 )
 				return 0;
-
 			divorce_char_sql(RFIFOL(fd,2), RFIFOL(fd,6));
 			RFIFOSKIP(fd,10);
 		break;
@@ -4388,7 +4387,6 @@ int parse_char(int fd)
 		break;
 
 		case 0x9a1:
-			ShowInfo("We are here in 9a1\n");
 			if( RFIFOREST(fd) < 2 )
 				return 0;
 			char_parse_req_charlist(fd,sd);

+ 2 - 2
src/common/mmo.h

@@ -47,8 +47,8 @@
 // 20120307 - 2012-03-07aRagexeRE+ - 0x970
 
 #ifndef PACKETVER
-	//#define PACKETVER 20120410
-	#define PACKETVER 20130320
+	#define PACKETVER 20120410
+	//#define PACKETVER 20130320
 	//#define PACKETVER 20111116
 #endif
 

+ 2 - 0
src/common/msg_conf.c

@@ -87,6 +87,7 @@ int msg_langstr2langtype(char * langtype){
 	else if (!strncmpi(langtype, "idn",2)) lang = 6;
 	else if (!strncmpi(langtype, "frn",2)) lang = 7;
 	else if (!strncmpi(langtype, "por",2)) lang = 8;
+	else if (!strncmpi(langtype, "tha",2)) lang = 9;
 
 	return lang;
 }
@@ -106,6 +107,7 @@ const char* msg_langtype2langstr(int langtype){
 		case 6: return "Bahasa Indonesia (IDN)";
 		case 7: return "Francais (FRN)";
 		case 8: return "Portugues Brasileiro (POR)";
+		case 9: return "Thai (THA)";
 		default: return "??";
 	}
 }

+ 3 - 2
src/common/msg_conf.h

@@ -17,12 +17,13 @@ enum lang_types {
 	LANG_IDN = 0x20,
 	LANG_FRN = 0x40,
 	LANG_POR = 0x80,
+	LANG_THA = 0x100,
 	LANG_MAX
 };
 // Multilanguage System.
 // Define which languages to enable (bitmask).
-// 0xFF will enable all, while 0x00 will enable English only.
-#define LANG_ENABLE 0x00
+// 0xFFF will enable all, while 0x000 will enable English only.
+#define LANG_ENABLE 0x000
 
 //read msg in table
 const char* _msg_txt(int msg_number,int size, char ** msg_table);

+ 2 - 3
src/map/atcommand.c

@@ -537,8 +537,7 @@ ACMD_FUNC(jump)
  * Display list of online characters with
  * various info.
  *------------------------------------------*/
-ACMD_FUNC(who)
-{
+ACMD_FUNC(who) {
 	struct map_session_data *pl_sd = NULL;
 	struct s_mapiterator *iter = NULL;
 	char map_name[MAP_NAME_LENGTH_EXT] = "";
@@ -7781,7 +7780,7 @@ ACMD_FUNC(duel)
 			struct map_session_data *target_sd;
 			target_sd = map_nick2sd((char *)message);
 			if(target_sd != NULL) {
-				unsigned int maxpl=0, newduel;
+				unsigned int newduel;
 				if((newduel = duel_create(sd, 2)) != -1) {
 					if(target_sd->duel_group > 0 ||	target_sd->duel_invite > 0) {
 						clif_displaymessage(fd, msg_txt(sd,353)); // "Duel: Player already in duel."

+ 1 - 1
src/map/battle.c

@@ -801,7 +801,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
 		if( sc->data[SC_SAFETYWALL] && (flag&(BF_SHORT|BF_MAGIC))==BF_SHORT )
 		{
 			struct skill_unit_group* group = skill_id2group(sc->data[SC_SAFETYWALL]->val3);
-			uint16 skill_id = sc->data[SC_SAFETYWALL]->val2;
+			//uint16 skill_id = sc->data[SC_SAFETYWALL]->val2; (safetywall or steinwand)
 			if (group) {
 			//in RE, SW possesses a lifetime equal to group val2, (3x caster hp, or homon formula)
 			#ifdef RENEWAL

+ 1 - 3
src/map/channel.c

@@ -1107,8 +1107,6 @@ void channel_read_config(void) {
 				config_setting_t *channel = config_setting_get_elem(channels, i);
 				const char *color = config_setting_get_string_elem(channels,i);
 				char *name = config_setting_name(channel);
-				struct Channel *chd;
-
 				for (k = 0; k < Channel_Config.colors_count; k++) {
 					if( strcmpi(Channel_Config.colors_name[k],color) == 0 )
 						break;
@@ -1121,7 +1119,7 @@ void channel_read_config(void) {
 					ShowError("channels.conf: duplicate channel '%s', skipping channel...\n",name);
 					continue;
 				}
-				chd = channel_create(name,NULL,k,CHAN_TYPE_PUBLIC,0);
+				channel_create(name,NULL,k,CHAN_TYPE_PUBLIC,0);
 			}
 		}
 

+ 17 - 17
src/map/clif.c

@@ -14394,30 +14394,30 @@ void clif_cashshop_ack(struct map_session_data* sd, int error)
 /// 0288 <name id>.W <amount>.W <kafra points>.L (PACKETVER >= 20070711)
 /// 0288 <packet len>.W <kafra points>.L <count>.W { <amount>.W <name id>.W }.4B*count (PACKETVER >= 20100803)
 void clif_parse_cashshop_buy(int fd, struct map_session_data *sd){
-    int fail = 0;
-    nullpo_retv(sd);
+	int fail = 0;
+	nullpo_retv(sd);
 
     if( sd->state.trading || !sd->npc_shopid )
         fail = 1;
     else {
 #if PACKETVER < 20101116
-        short nameid = RFIFOW(fd,2);
-        short amount = RFIFOW(fd,4);
-        int points = RFIFOL(fd,6);
+		short nameid = RFIFOW(fd,2);
+		short amount = RFIFOW(fd,4);
+		int points = RFIFOL(fd,6);
 
-        fail = npc_cashshop_buy(sd, nameid, amount, points);
+		fail = npc_cashshop_buy(sd, nameid, amount, points);
 #else
-        int len = RFIFOW(fd,2);
-        int points = RFIFOL(fd,4);
-        int count = RFIFOW(fd,8);
-        unsigned short* item_list = (unsigned short*)RFIFOP(fd,10);
-
-        if( len < 10 || len != 10 + count * 4)
-        {
-            ShowWarning("Player %u sent incorrect cash shop buy packet (len %u:%u)!\n", sd->status.char_id, len, 10 + count * 4);
-            return;
-        }
-        fail = npc_cashshop_buylist(sd,points,count,item_list);
+		int len = RFIFOW(fd,2);
+		int points = RFIFOL(fd,4);
+		int count = RFIFOW(fd,8);
+		unsigned short* item_list = (unsigned short*)RFIFOP(fd,10);
+
+		if( len < 10 || len != 10 + count * 4)
+		{
+			ShowWarning("Player %u sent incorrect cash shop buy packet (len %u:%u)!\n", sd->status.char_id, len, 10 + count * 4);
+			return;
+		}
+		fail = npc_cashshop_buylist(sd,points,count,item_list);
 #endif
 	}
 

+ 3 - 3
src/map/intif.c

@@ -2235,11 +2235,11 @@ int intif_parse(int fd)
 	case 0x3854:	intif_parse_Auction_message(fd); break;
 	case 0x3855:	intif_parse_Auction_bid(fd); break;
 
-// Mercenary System
+	// Mercenary System
 	case 0x3870:	intif_parse_mercenary_received(fd); break;
 	case 0x3871:	intif_parse_mercenary_deleted(fd); break;
 	case 0x3872:	intif_parse_mercenary_saved(fd); break;
-// Elemental System
+	// Elemental System
 	case 0x387c:	intif_parse_elemental_received(fd); break;
 	case 0x387d:	intif_parse_elemental_deleted(fd); break;
 	case 0x387e:	intif_parse_elemental_saved(fd); break;
@@ -2256,7 +2256,7 @@ int intif_parse(int fd)
 		ShowError("intif_parse : unknown packet %d %x\n",fd,RFIFOW(fd,0));
 		return 0;
 	}
-    // Skip packet
+	// Skip packet
 	RFIFOSKIP(fd,packet_len);
 	return 1;
 }

+ 3 - 1
src/map/map.c

@@ -3711,7 +3711,8 @@ void map_do_init_msg(void){
 		MSG_CONF_NAME_MAL,
 		MSG_CONF_NAME_IDN,
 		MSG_CONF_NAME_FRN,
-		MSG_CONF_NAME_POR
+		MSG_CONF_NAME_POR,
+		MSG_CONF_NAME_THA
 	};
 
 	map_msg_db = idb_alloc(DB_OPT_BASE);
@@ -3814,6 +3815,7 @@ int do_init(int argc, char *argv[])
 	MSG_CONF_NAME_IDN = "conf/msg_conf/map_msg_idn.conf";	// Indonesian
 	MSG_CONF_NAME_FRN = "conf/msg_conf/map_msg_frn.conf";	// French
 	MSG_CONF_NAME_POR = "conf/msg_conf/map_msg_por.conf";	// Brazilian Portuguese
+	MSG_CONF_NAME_THA = "conf/msg_conf/map_msg_tha.conf";	// Thai
 	/* Multilanguage */
 
 	cli_get_options(argc,argv);

+ 1 - 0
src/map/map.h

@@ -779,6 +779,7 @@ char *MSG_CONF_NAME_MAL;
 char *MSG_CONF_NAME_IDN;
 char *MSG_CONF_NAME_FRN;
 char *MSG_CONF_NAME_POR;
+char *MSG_CONF_NAME_THA;
 
 //Useful typedefs from jA [Skotlex]
 typedef struct map_session_data TBL_PC;

+ 0 - 2
src/map/mob.c

@@ -2094,7 +2094,6 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 	struct status_data *status;
 	struct map_session_data *sd = NULL, *tmpsd[DAMAGELOG_SIZE];
 	struct map_session_data *mvp_sd = NULL, *second_sd = NULL, *third_sd = NULL;
-	struct status_change *sc;
 
 	struct {
 		struct party_data *p;
@@ -2107,7 +2106,6 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 	bool rebirth, homkillonly;
 
 	status = &md->status;
-	sc = &md->sc;
 
 	if( src && src->type == BL_PC ) {
 		sd = (struct map_session_data *)src;

+ 5 - 7
src/map/pc.c

@@ -6568,7 +6568,7 @@ void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int h
 	sd->canlog_tick = gettick();
 }
 
-static int pc_close_npc_timer(int tid, unsigned int tick, int id, intptr_t data)
+int pc_close_npc_timer(int tid, unsigned int tick, int id, intptr_t data)
 {
 	TBL_PC *sd = map_id2sd(id);
 	if(sd) pc_close_npc(sd,data);
@@ -7339,13 +7339,11 @@ int pc_percentheal(struct map_session_data *sd,int hp,int sp)
 {
 	nullpo_ret(sd);
 
-	if(hp > 100) hp = 100;
-	else
-	if(hp <-100) hp =-100;
+	if (hp > 100) hp = 100;
+	else if (hp <-100) hp = -100;
 
-	if(sp > 100) sp = 100;
-	else
-	if(sp <-100) sp =-100;
+	if (sp > 100) sp = 100;
+	else if (sp <-100) sp = -100;
 
 	if(hp >= 0 && sp >= 0) //Heal
 		return status_percent_heal(&sd->bl, hp, sp);

+ 1 - 1
src/map/pc.h

@@ -718,7 +718,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
 void pc_authfail(struct map_session_data *);
 int pc_reg_received(struct map_session_data *sd);
 void pc_close_npc(struct map_session_data *sd,int flag);
-static int pc_close_npc_timer(int tid, unsigned int tick, int id, intptr_t data);
+int pc_close_npc_timer(int tid, unsigned int tick, int id, intptr_t data);
 
 int pc_isequip(struct map_session_data *sd,int n);
 int pc_equippoint(struct map_session_data *sd,int n);

+ 7 - 4
src/map/script.c

@@ -627,11 +627,14 @@ static void script_reportfunc(struct script_state* st)
 static char* script_getfuncname(struct script_state *st)
 {
 	int i;
-	char* name = "";
+	char* name = NULL;
 	for( i = 0; i < st->stack->sp; ++i ) {
 		struct script_data* data = &st->stack->stack_data[i];
-		if(data->type == C_NAME && str_data[data->u.num].type == C_FUNC)
+		if(data->type == C_NAME && str_data[data->u.num].type == C_FUNC) {
 			name = reference_getname(data);
+			if(strcmp(name,"jump_zero"))
+				break;
+		}
 	}
 	return name;
 }
@@ -9830,9 +9833,9 @@ BUILDIN_FUNC(sc_start)
 
 	//If from NPC we make default flag 1 to be unavoidable
 	if(nd && nd->bl.id == fake_nd->bl.id)
-		flag = script_hasdata(st,5+start_type)?script_getnum(st,5+start_type):1;
-	else
 		flag = script_hasdata(st,5+start_type)?script_getnum(st,5+start_type):2;
+	else
+		flag = script_hasdata(st,5+start_type)?script_getnum(st,5+start_type):1;
 
 	rate = script_hasdata(st,4+start_type)?min(script_getnum(st,4+start_type),10000):10000;
 

+ 3 - 3
src/map/skill.c

@@ -2473,8 +2473,9 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
 		skill_id == MER_INCAGI || skill_id == MER_BLESSING) && tsd->sc.data[SC_CHANGEUNDEAD] )
 		damage = 1;
 
-	if( damage > 0 && (( dmg.flag&BF_WEAPON && src != bl && ( src == dsrc || ( dsrc->type == BL_SKILL && ( skill_id == SG_SUN_WARM || skill_id == SG_MOON_WARM || skill_id == SG_STAR_WARM ) ) ))
-			|| ((sc && sc->data[SC_REFLECTDAMAGE]) && !dmg.flag&(BF_MAGIC|BF_LONG) && !skill_get_inf2(skill_id)&INF2_TRAP)) )
+	if( damage > 0 && (( dmg.flag&BF_WEAPON && src != bl && ( src == dsrc || ( dsrc->type == BL_SKILL &&
+		( skill_id == SG_SUN_WARM || skill_id == SG_MOON_WARM || skill_id == SG_STAR_WARM ) ) ))
+		|| ((sc && sc->data[SC_REFLECTDAMAGE]) && !(dmg.flag&(BF_MAGIC|BF_LONG)) && !(skill_get_inf2(skill_id)&INF2_TRAP)) ) )
 		rdamage = battle_calc_return_damage(bl,src, &damage, dmg.flag, skill_id);
 
 	if( damage && sc && sc->data[SC_GENSOU] && dmg.flag&BF_MAGIC ){
@@ -9234,7 +9235,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 		if(sce->val1 == MH_MD_FIGHTING) sce->val1 = MH_MD_GRAPPLING;
 		else sce->val1 = MH_MD_FIGHTING;
 		if(hd->master && hd->sc.data[SC_STYLE_CHANGE]) {
-		    int mode = hd->sc.data[SC_STYLE_CHANGE]->val1;
 		    char output[128];
 		    safesnprintf(output,sizeof(output),msg_txt(sd,378),(sce->val1==MH_MD_FIGHTING?"fighthing":"grappling"));
 		    clif_colormes(hd->master,color_table[COLOR_RED],output);

+ 2 - 2
src/map/status.c

@@ -2685,7 +2685,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
 	sd->left_weapon.atkmods[1] = atkmods[1][sd->weapontype2];
 	sd->left_weapon.atkmods[2] = atkmods[2][sd->weapontype2];
 
-	if(pc_isriding(sd) || pc_isridingdragon(sd) &&
+	if((pc_isriding(sd) || pc_isridingdragon(sd)) &&
 		(sd->status.weapon==W_1HSPEAR || sd->status.weapon==W_2HSPEAR))
 	{	//When Riding with spear, damage modifier to mid-class becomes
 		//same as versus large size.
@@ -2693,7 +2693,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
 		sd->left_weapon.atkmods[1] = sd->left_weapon.atkmods[2];
 	}
 
-// ----- STATS CALCULATION -----
+	// ----- STATS CALCULATION -----
 
 	// Job bonuses
 	index = pc_class2idx(sd->status.class_);

+ 1 - 1
src/map/unit.c

@@ -171,7 +171,7 @@ int unit_check_start_teleport_timer(struct block_list *sbl){
 	if(msd){ //if there is a master
 		int *msd_tid = unit_get_masterteleport_timer(sbl);
 
-		if (!check_distance_bl(&msd->bl, sbl, MAX_MER_DISTANCE)) {
+		if (!check_distance_bl(&msd->bl, sbl, max_dist)) {
 			if(*msd_tid == INVALID_TIMER || *msd_tid == 0)
 				*msd_tid = add_timer(gettick()+3000,unit_teleport_timer,sbl->id,BL_MER);
 		}