Explorar o código

Merge branch 'rathena/master'

Conflicts:
	src/map/script.c
Cydh Ramdh %!s(int64=11) %!d(string=hai) anos
pai
achega
842e35c293
Modificáronse 100 ficheiros con 5447 adicións e 1011 borrados
  1. 8 0
      AUTHORS
  2. 4 0
      conf/battle/battle.conf
  3. 4 1
      conf/battle/gm.conf
  4. 3 0
      conf/battle/misc.conf
  5. 11 4
      conf/battle/player.conf
  6. 6 1
      conf/battle/skill.conf
  7. 1 1
      conf/help.txt
  8. 2 0
      conf/inter_athena.conf
  9. 10 4
      conf/login_athena.conf
  10. 18 4
      conf/msg_conf/map_msg.conf
  11. 20 3
      conf/msg_conf/map_msg_idn.conf
  12. 14 20
      db/const.txt
  13. 2 2
      db/pre-re/item_db.txt
  14. 0 0
      db/pre-re/job_basehpsp_db.txt
  15. 4 4
      db/pre-re/job_db1.txt
  16. 3 3
      db/pre-re/skill_cast_db.txt
  17. 53 53
      db/pre-re/skill_db.txt
  18. 4 4
      db/pre-re/skill_require_db.txt
  19. 11 0
      db/quest_db.txt
  20. 112 60
      db/re/item_db.txt
  21. 30 0
      db/re/item_misc.txt
  22. 60 11
      db/re/item_package.txt
  23. 2 0
      db/re/item_trade.txt
  24. 0 0
      db/re/job_basehpsp_db.txt
  25. 18 18
      db/re/job_db1.txt
  26. 4 4
      db/re/mob_db.txt
  27. 3 3
      db/re/skill_cast_db.txt
  28. 57 57
      db/re/skill_db.txt
  29. 5 5
      db/re/skill_require_db.txt
  30. 11 3
      doc/atcommands.txt
  31. 2 1
      doc/item_bonus.txt
  32. 10 10
      doc/item_group.txt
  33. 27 11
      doc/md5_hashcheck.txt
  34. 56 43
      doc/sample/bank_test.txt
  35. 6 4
      doc/sample/checkoption.txt
  36. 12 12
      doc/sample/delitem2.txt
  37. 8 7
      doc/sample/getequipcardid.txt
  38. 4 5
      doc/sample/getequipid.txt
  39. 4 4
      doc/sample/getiteminfo.txt
  40. 2 2
      doc/sample/getmonsterinfo.txt
  41. 16 24
      doc/sample/gstorage_test.txt
  42. 202 0
      doc/sample/instancing.txt
  43. 28 29
      doc/sample/localized_npc.txt
  44. 34 36
      doc/sample/npc_dynamic_shop.txt
  45. 12 13
      doc/sample/npc_live_dialogues.txt
  46. 1 1
      doc/sample/npc_test_pcre.txt
  47. 1 1
      doc/sample/npc_test_quest.txt
  48. 32 37
      doc/sample/npc_test_setitemx.txt
  49. 8 7
      doc/sample/npc_test_setmapflag.txt
  50. 5 4
      doc/sample/npc_test_skill.txt
  51. 288 284
      doc/script_commands.txt
  52. 2 1
      npc/cities/rachel.txt
  53. 148 0
      npc/custom/battleground/bg_emp.txt
  54. 127 0
      npc/custom/battleground/bg_pvp.txt
  55. 0 0
      npc/custom/battleground/unofficial/bg_common.txt
  56. 0 0
      npc/custom/battleground/unofficial/bg_flavius_01.txt
  57. 0 0
      npc/custom/battleground/unofficial/bg_flavius_02.txt
  58. 0 0
      npc/custom/battleground/unofficial/bg_kvm01.txt
  59. 0 0
      npc/custom/battleground/unofficial/bg_kvm02.txt
  60. 0 0
      npc/custom/battleground/unofficial/bg_kvm03.txt
  61. 0 0
      npc/custom/battleground/unofficial/bg_tierra_01.txt
  62. 0 0
      npc/custom/battleground/unofficial/bg_tierra_02.txt
  63. 72 0
      npc/custom/card_seller.txt
  64. 188 0
      npc/custom/etc/autopot.txt
  65. 401 0
      npc/custom/etc/mvp_room.txt
  66. 235 0
      npc/custom/events/devil_square.txt
  67. 6 3
      npc/custom/events/disguise.txt
  68. 0 0
      npc/custom/events/holiday/hallow06.txt
  69. 0 0
      npc/custom/events/holiday/uneasy_cemetery.txt
  70. 0 0
      npc/custom/events/holiday/valentinesdayexp.txt
  71. 0 0
      npc/custom/events/holiday/xmas_rings_event.txt
  72. 319 0
      npc/custom/events/mvp_ladder.txt
  73. 5 1
      npc/custom/quests/hunting_missions.txt
  74. 1711 0
      npc/events/christmas_2013.txt
  75. 4 0
      npc/events/halloween_2013.txt
  76. 2 2
      npc/jobs/2-1/wizard.txt
  77. 56 5
      npc/other/Global_Functions.txt
  78. 1 0
      npc/other/gm_npcs.txt
  79. 0 1
      npc/quests/newgears/2004_headgears.txt
  80. 4 2
      npc/quests/quests_13_1.txt
  81. 10 4
      npc/re/merchants/cash_trader-idRO.txt
  82. 2 2
      npc/re/merchants/shops.txt
  83. 101 0
      npc/re/mobs/academy.txt
  84. 190 19
      npc/re/quests/eden/eden_iro.txt
  85. 1 0
      npc/re/scripts_monsters.conf
  86. 1 0
      npc/scripts_athena.conf
  87. 28 16
      npc/scripts_custom.conf
  88. 1 1
      npc/scripts_test.conf
  89. 5 5
      sql-files/item_db.sql
  90. 113 61
      sql-files/item_db_re.sql
  91. 22 0
      sql-files/main.sql
  92. 4 4
      sql-files/mob_db_re.sql
  93. 21 0
      sql-files/upgrades/upgrade_20140205.sql
  94. 12 12
      src/char/char.c
  95. 2 0
      src/config/const.h
  96. 30 18
      src/login/login.c
  97. 38 13
      src/map/atcommand.c
  98. 58 32
      src/map/battle.c
  99. 7 0
      src/map/battle.h
  100. 282 9
      src/map/buyingstore.c

+ 8 - 0
AUTHORS

@@ -5,6 +5,7 @@ Thank you for all your hard work.
 3CeAM Dev Team
 Athena Dev Team
 eAthena Dev Team
+Freya Dev Team
 Hercules Dev Team
 Project YARE Team
 rAthena Dev Team
@@ -122,6 +123,7 @@ Katrinn
 Kayla
 Kenpachi
 Kevin
+KeyWorld
 killercube
 Kisuka
 KitsuneStarwind
@@ -184,6 +186,7 @@ non
 npc
 nsstrunks
 nyankochan
+orn
 p
 Paradox924X
 Peter Kieser
@@ -205,9 +208,11 @@ Sanasol
 Sapientia
 Sara
 Sel
+Seventh
 shadow
 shadoweathena
 shadowlady
+Shazeya
 Shinigami
 shinomori
 Shinryo
@@ -233,8 +238,10 @@ Tharis
 Theia
 theultramage
 tk44
+ToastOfDoom
 toms
 Toshi^2
+Trancid
 Trojal
 Tsuyuki
 V&S
@@ -246,6 +253,7 @@ Wizputer
 Wolf
 Xantara
 Xgear
+Yhn
 Yommy
 Yor
 Yuuki

+ 4 - 0
conf/battle/battle.conf

@@ -141,3 +141,7 @@ arrow_decrement: 1
 // range. For example, Sonic Blow requires a 2 cell distance before autocasting is allowed.
 // This setting also affects autospellwhenhit.
 autospell_check_range: no
+
+// Can players use Falcons and Wargs at the same time? (Note 1)
+// This is not allowed on official servers.
+warg_can_falcon: no

+ 4 - 1
conf/battle/gm.conf

@@ -30,4 +30,7 @@ ban_hack_trade: 5
 // modifies @mobinfo to display the users' real drop rate as per renewal_drop formula
 // modifies @iteminfo to not display the minimum item drop rate (since it can't tell the mob level)
 // modifies @whodrops to display the users' real drop rate as per renewal_drop formula
-atcommand_mobinfo_type: 1
+atcommand_mobinfo_type: 1
+
+// Only group with level more than or equal this value can use atcommand while talking with NPC.
+atcommand_enable_npc: 0

+ 3 - 0
conf/battle/misc.conf

@@ -135,3 +135,6 @@ mon_trans_disable_in_gvg: no
 // 2 = Point shops
 // 3 = Item & point shops
 discount_item_point_shop: 0
+
+// Don't display message "login-serv has been asked to %s the player '%.*s'." (Note 1)
+disp_serverbank_msg: no

+ 11 - 4
conf/battle/player.conf

@@ -149,6 +149,10 @@ idle_no_autoloot: 0
 // Minimum distance a vending/chat room must be from a NPC in order to be placed.
 // Default: 3 (0: disabled).
 min_npc_vendchat_distance: 3
+ 
+// How much should rental mounts increase a player's movement speed?
+// Default is 25. 100 = 100% Increase.
+rental_mount_speed_boost: 25
 
 //===================================
 // VIP system
@@ -163,6 +167,10 @@ vip_storage_increase: 300
 // Default: 50
 vip_base_exp_increase: 50
 
+// Job experience rate increase. Setting to 0 will disable. (Note 2)
+// Default: 50
+vip_job_exp_increase: 50
+
 // Experience penalty rate multiplier for non-VIP accounts.
 // Multiplies the 'death_penalty_base' and 'death_penalty_job' settings in 'conf/battle/exp.conf'.
 // Default: 3 (3*100 = 3% penalty)
@@ -175,10 +183,6 @@ vip_exp_penalty_job_normal: 3
 vip_exp_penalty_base: 1
 vip_exp_penalty_job: 1
 
-// Job experience rate increase. Setting to 0 will disable. (Note 2)
-// Default: 50
-vip_job_exp_increase: 50
-
 // Battle Manual experience increase. Setting to 0 will disable.
 // - Regular/Thick Battle Manual: 50+(50/X) = 75%
 // - HE Battle Manual: 100+(100/X) = 150%
@@ -196,3 +200,6 @@ vip_drop_increase: 50
 // Can the VIP Group ignore Gemstone requirement for skills?
 // Default: yes
 vip_gemstone: yes
+
+// Will display rate information (EXP, Drop, and Death penalty message)? (Note 1)
+vip_disp_rate: yes

+ 6 - 1
conf/battle/skill.conf

@@ -271,7 +271,7 @@ eq_single_target_reflectable: yes
 invincible.nodamage: no
 
 // Dancing Weapon Switch
-// On official server, a fix is in place that prevents the switching of weapons to cancel songs.
+// On official servers, a fix is in place that prevents the switching of weapons to cancel songs.
 // Default: yes
 dancing_weaponswitch_fix: yes
 
@@ -286,3 +286,8 @@ skill_trap_type: 0
 // 2-20: Area around caster (2 = 5x5, 3 = 7x7, 4 = 9x9, ..., 20 = 41x41)
 // Note: If you knock the target out of the area it will only be hit once and won't do splash damage
 bowling_bash_area: 0
+
+// Pushback behavior (Note 1)
+// On official servers, hitting a wall will always cause the unit to stop moving.
+// If "no", the unit will continue moving when approaching walls diagonally (old Athena behavior).
+path_blown_halt: yes

+ 1 - 1
conf/help.txt

@@ -63,7 +63,7 @@ undisguise: "Restore your normal appearance."
 disguiseguild: "Disguises all online characters of a guild."
 undisguiseguild: "Restore the normal appearance of all characters of a guild."
 model: "Params:  <hair ID: 0-17> <hair color: 0-8> <clothes color: 0-4> - Changes your characters appearence."
-size: "Params:  <1-3> Changes your size (1-Smallest 2-Biggest 3-Normal)"
+size: "Params:  <0-2> Changes your size (0-Normal 1-Small 2-Large)"
 sizeall: "Changes the size of all players."
 sizeguild: "Changes the size of all online characters of a guild."
 hide: "Makes you character invisible (GM invisibility). Type again to become visible."

+ 2 - 0
conf/inter_athena.conf

@@ -107,6 +107,8 @@ skillcooldown_db: skillcooldown
 bonus_script_db: bonus_script
 
 // Map Database Tables
+buyingstore_db: buyingstores
+buyingstore_items_db: buyingstore_items
 item_db_db: item_db
 item_db_re_db: item_db_re
 item_db2_db: item_db2

+ 10 - 4
conf/login_athena.conf

@@ -165,14 +165,20 @@ account.engine: auto
 // Client MD5 hash check
 // If turned on, the login server will check if the client's hash matches
 // the value below, and will not connect tampered clients.
-// Note: see doc\md5_hashcheck.txt for more details.
+// Note: see 'doc/md5_hashcheck.txt' for more details.
 client_hash_check: off
 
 // Client MD5 hashes
-// A player can login with a client hash at or below the account group_id.
+// The client with the specified hash can be used to log in by players with
+// a group_id equal to or greater than the given value.
+// If you specify 'disabled' as hash, players with a group_id greater than or
+// equal to the given value will be able to log in regardless of hash (and even
+// if their client does not send a hash at all.)
 // Format: group_id, hash
-client_hash: 0, 113e195e6c051bb1cfb12a644bb084c5
-client_hash: 99, cb1ea78023d337c38e8ba5124e2338ae
+// Note: see 'doc/md5_hashcheck.txt' for more details.
+//client_hash: 0, 113e195e6c051bb1cfb12a644bb084c5
+//client_hash: 10, cb1ea78023d337c38e8ba5124e2338ae
+//client_hash: 99, disabled
 
 import: conf/inter_athena.conf
 import: conf/import/login_conf.txt

+ 18 - 4
conf/msg_conf/map_msg.conf

@@ -408,7 +408,7 @@
 387: The chosen emblem was detected invalid as it contain too much transparency (limit=%d)
 //etc
 388: You cannot use this item while storage is open.
-//389-389 free
+//389 free
 //NoAsk
 390: Autorejecting is activated.
 391: Autorejecting is deactivated.
@@ -504,34 +504,38 @@
 410: Removed %d cash points. Total %d points.
 411: Removed %d kafra points. Total %d points.
 
-// Trade Spoof Messages
+// Char ban
 507: This player has been banned for %d minute(s).
 508: This player hasn't been banned (Ban option is disabled).
 
 509: Script-bound commands:
 
 // mail system
-//----------------------
 510: You have %d new emails (%d unread)
 
 // Instancing
 515: Your instance has been reloaded.
 516: Instance database has been reloaded.
 
+//517~534: free
+
 // Bot detect messages (currently unused)
 535: Possible use of BOT (99%% of chance) or modified client by '%s' (account: %d, char_id: %d). This player ask your name when you are hidden.
 536: Character '%s' (account: %d) is trying to use a bot (it tries to detect a fake player).
 537: Character '%s' (account: %d) is trying to use a bot (it tries to detect a fake mob).
+
 // Trade Spoof Messages
 538: Hack on trade: character '%s' (account: %d) try to trade more items that he has.
 539: This player has %d of a kind of item (id: %d), and tried to trade %d of them.
 540: This player has been definitivly blocked.
+
 // Rare Items Drop/Steal announce
 541: '%s' got %s's %s (chance: %0.02f%%)
 //541: %.0s%.0sSomeone got %s
 542: '%s' stole %s's %s (chance: %0.02f%%)
 //542: %.0s%.0sSomeone stole %s
 // 543~548 are not used (previously @away messages)
+
 // @Autotrade
 549: You should have a shop open to use @autotrade.
 
@@ -720,7 +724,17 @@
 
 //Item Group
 717: [%s] has won [%s] from '%s'
-//718-899 free
+
+//@showrate
+718: Personal rate information is not displayed now.
+719: Personal rate information will be shown.
+
+//Skill messages
+720: %s is required.
+721: [%s] Poison effect was applied to the weapon.
+722: Please equipped with a %s.
+
+//723-899 free
 
 //------------------------------------
 // More atcommands message

+ 20 - 3
conf/msg_conf/map_msg_idn.conf

@@ -406,7 +406,9 @@
 385: Kamu tidak diizinkan untuk mengubah emblem ketika WOE.
 386: Emblem yang dipilih tidak bisa digunakan
 387: Emblem yang dipilih tidak bisa digunakan karena terlalu banyak transparency (batas=%d)
-//388-389 kosong
+//lainnya
+388: Kamu tidak bis menggunakan item ini ketika storage sedang dibuka.
+//389 kosong
 //NoAsk
 390: Penolakan otomatis diaktifkan.
 391: Penolakan otomatis ditidakaktifkan.
@@ -502,9 +504,11 @@
 410: %d cash poin sudah dipakai. Total %d poin.
 411: %d kafra poin sudah dipakai. Total %d poin.
 
+// Char ban
 507: Pemain ini sudah dihukum selama %d menit.
 508: Pemain ini tidak dapat dihukum (Hukuman dinonaktifkan).
-//509 kosong
+
+509: Script-bound commands:
 
 // Sistem surat (e-mail)
 510: Kamu memiliki %d pesan baru (ada %d pesan yang belum dibaca)
@@ -513,6 +517,8 @@
 515: Intance kamu sudha dimuat ulang.
 516: Database Instance sudah dimuat ulang.
 
+//517~534: kosong
+
 // 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). 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 pemain umpan).
@@ -529,6 +535,7 @@
 542: '%s' mencuri %s's %s (Kemungkinan: %0.02f%%)
 //542: %.0s%.0sSeseorang mencuri %s
 // 543~548 tidak dipakai (sebelumnya merupakan pesan @away)
+
 // @Autotrade
 549: Kamu harus membuka sebuah toko dulu sebelum menggunakan @autotrade.
 
@@ -691,6 +698,7 @@
 693: Shadow Chaser T
 694: Hanbok
 695: Rebellion
+696: Oktoberfest
 
 // @vip
 700: Penggunaan: @vip <waktu> <nama pemain>
@@ -716,8 +724,17 @@
 
 //Item Group
 717: [%s] mendapatkan [%s] dari '%s'
-//718-899 kosong
 
+//@showrate
+718: Informasi mengenai rate pribadi tidak akan ditampilkan lagi.
+719: Informasi mengenai rate pribadi akan ditampilkan kembali.
+
+//Pesan skill
+720: Membutuhkan %s.
+721: Efek [%s] Poison diberikan ke senjata.
+722: Butuh memakai %s.
+
+//723-899 kosong
 
 //------------------------------------
 // Pesan dalam perintah atcommand

+ 14 - 20
db/const.txt

@@ -647,6 +647,8 @@ bExpAddClass	2069
 bAddClassDropItem	2070
 bAddClassDropItemGroup	2071
 
+bAddMaxWeight	2072
+
 EQI_HEAD_TOP	1
 EQI_ARMOR	2
 EQI_HAND_L	3
@@ -1143,6 +1145,12 @@ IG_Bi_Hwang_Scroll	382
 IG_Jung_Bi_Scroll	383
 IG_Je_Un_Scroll	384
 IG_Yong_Kwang_Scroll	385
+IG_HALLOWEEN_G_BOX	386
+IG_Solo_Christmas_Gift	387
+IG_Sg_Weapon_Supply_Box	388
+IG_Candy_Holder	389
+IG_Lucky_Bag	390
+IG_Holy_Egg_2	391
 
 SC_ALL	-1
 SC_STONE	0
@@ -1728,7 +1736,9 @@ SC_DECORATION_OF_MUSIC	588
 SC_QUEST_BUFF1	589
 SC_QUEST_BUFF2	590
 SC_QUEST_BUFF3	591
-SC_EXTREMITYFIST2	592
+SC_ALL_RIDING	592
+SC_TEARGAS_SOB	593
+SC_EXTREMITYFIST2	594
 
 //Status Icon
 SI_BLANK	-1
@@ -2622,25 +2632,6 @@ MOB_ELEMENT	20
 MOB_MODE	21
 MOB_MVPEXP	22
 
-AI_ACTION_TYPE	0
-AI_ACTION_TAR_TYPE	1
-AI_ACTION_TAR	2
-AI_ACTION_SRC	3
-AI_ACTION_TAR_TYPE_PC	1
-AI_ACTION_TAR_TYPE_MOB	2
-AI_ACTION_TAR_TYPE_PET	4
-AI_ACTION_TAR_TYPE_HOMUN	8
-AI_ACTION_TAR_TYPE_ITEM	16
-AI_ACTION_TYPE_NPCCLICK	256
-AI_ACTION_TYPE_ATTACK	128
-AI_ACTION_TYPE_DETECT	64
-AI_ACTION_TYPE_DEAD	32
-AI_ACTION_TYPE_ASSIST	16
-AI_ACTION_TYPE_KILL	8
-AI_ACTION_TYPE_UNLOCK	4
-AI_ACTION_TYPE_WALKACK	2
-AI_ACTION_TYPE_WARPACK	1
-
 ALL_CLIENT	0
 ALL_SAMEMAP	1
 AREA	2
@@ -4568,3 +4559,6 @@ VAR_MAX_GUILD_STORAGE	8
 VAR_MAX_BG_MEMBERS	9
 VAR_VIP_SCRIPT	10
 VAR_MIN_STORAGE	11
+
+false	0
+true	1

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

@@ -5136,9 +5136,9 @@
 12707,Lucky_Cookie02,Lucky Cookie,11,0,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "PR_MAGNIFICAT",1; },{},{}
 12708,Lucky_Cookie03,Lucky Cookie,11,0,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "PR_IMPOSITIO",3; },{},{}
 12709,Guyak_Candy,Guyak Candy,0,0,,150,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 30,30; },{},{}
-12710,Guyak_Pudding,Guyak Pudding,2,0,,200,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
+12710,Guyak_Pudding,Guyak Pudding,2,0,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SpeedUp1,300000,0; },{},{}
 12711,Pretzel,Pretzel,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(50,90),0; },{},{}
-12712,Green_Beer,Green Beer,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
+12712,Green_Beer,Green Beer,2,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 0,50; },{},{}
 12713,Monster_Extract,Monster Extract,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12714,Easter_Scroll,Easter Scroll,2,1,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_Easter_Scroll),1; },{},{}
 12715,Black_Treasure_Box,Black Treasure Box,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
db/pre-re/job_basehpsp_db.txt


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

@@ -147,10 +147,10 @@
 4045,	20000,0    ,500  ,100  ,500  ,650  ,700  ,2000 ,2000 ,2000 ,800  ,2000 ,700  ,700  ,650  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 650
 // Taekwon
 4046, 28000,70   ,500  ,200  ,400  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
-// Star Knight
-4047, 28000,90   ,650  ,470  ,400  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
-// Star Knight (Union)
-4048, 28000,90   ,650  ,470  ,400  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
+// Star Gladiator
+4047, 28000,90   ,650  ,400  ,400  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
+// Star Gladiator (Union)
+4048, 28000,90   ,650  ,400  ,400  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
 // Soul Linker
 4049, 24000,75   ,500  ,900  ,500  ,575  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,625  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 625 
 //================================

+ 3 - 3
db/pre-re/skill_cast_db.txt

@@ -1464,7 +1464,7 @@
 //-- WM_DOMINION_IMPULSE
 2417,0,1000,0,0,0,0
 //-- WM_SEVERE_RAINSTORM
-2418,1500:2000:2500:3000:3500,1000,0,900:1500:2100:2700:3000,0,5000:5500:6000:6500:7000
+2418,1500:2000:2500:3000:3500,1000,0,3300,0,5000:5500:6000:6500:7000
 //-- WM_POEMOFNETHERWORLD
 2419,3000,0,0,9000:11000:13000:15000:17000,8000:10000:12000:14000:16000,0
 //-- WM_VOICEOFSIREN
@@ -1572,7 +1572,7 @@
 //-- GN_CRAZYWEED_ATK
 2484,0,0,0,100,0,0
 //-- GN_DEMONIC_FIRE
-2485,3000:3500:4000:4500:5000,500,0,10000:12000:14000:16000:18000,8000:16000:24000:32000:40000,5000
+2485,3000:3500:4000:4500:5000,500,0,10000:0:16000:25000:0,8000:16000:24000:32000:40000,5000
 //-- GN_FIRE_EXPANSION
 2486,2000,500,0,0,0,0
 //-- GN_FIRE_EXPANSION_SMOKE_POWDER
@@ -1723,7 +1723,7 @@
 //-- HLIF_AVOID
 8002,0,35000,0,40000:35000:30000:25000:20000,0,0
 //-- HLIF_CHANGE
-8004,0,600000:900000:1200000,0,60000:120000:180000,0,0
+8004,0,600000:900000:1200000,0,60000:180000:300000,0,0
 //-- HAMI_CASTLE
 8005,0,0,0,0,60000:70000:80000:90000:129000,0
 //-- HAMI_DEFENCE

+ 53 - 53
db/pre-re/skill_db.txt

@@ -36,7 +36,7 @@
 //    0x00400- usable only on party-members (and enemies if skill is offensive)
 //    0x00800- usable only on guild-mates (and enemies if skill is offensive)
 //    0x01000- disable usage on enemies (for non-offensive skills).
-//    0x02000- free
+//    0x02000- available skill for SC_AUTOSHADOWSPELL
 //    0x04000- chorus skill
 //    0x08000- spell that ignore bg reduction
 //    0x10000- spell that ignore gvg reduction
@@ -59,7 +59,7 @@
 //    0x0200- spell range affected by NJ_SHADOWJUMP
 //    0x0400- spell range affected by WL_RADIUS
 //    0x0800- spell range affected by RA_RESEARCHTRAP
-//    0x1000- spell that can't be copied
+//    0x1000- Spell that does not affect user that has NC_HOVERING active
 //    0x2000- spell that can be using while riding warg
 //    0x4000- spell that can't be used while in mado
 // 17 Name
@@ -80,17 +80,17 @@
 // Mage
 9,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x20,		MG_SRECOVERY,Increase SP Recovery
 10,0,6,4,3,0x3,3,1,1,yes,0,0,0,magic,0,0x20,		MG_SIGHT,Sight
-11,9,6,1,8,0x6,1,10,1,yes,0,0,0,magic,0,0x20,		MG_NAPALMBEAT,Napalm Beat
+11,9,6,1,8,0x6,1,10,1,yes,0,0x2000,0,magic,0,0x20,		MG_NAPALMBEAT,Napalm Beat
 12,9,8,2,8,0x1,0,10,1,yes,0,0,0,magic,0,0x20,		MG_SAFETYWALL,Safety Wall
-13,9,8,1,8,0,0,10,1:1:2:2:3:3:4:4:5:5,yes,0,0,0,magic,0,0x20,		MG_SOULSTRIKE,Soul Strike
-14,9,8,1,1,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_COLDBOLT,Cold Bolt
-15,9,6,1,1,0,0,10,1,yes,0,0,0,magic,0,0x20,		MG_FROSTDIVER,Frost Diver
+13,9,8,1,8,0,0,10,1:1:2:2:3:3:4:4:5:5,yes,0,0x2000,0,magic,0,0x20,		MG_SOULSTRIKE,Soul Strike
+14,9,8,1,1,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20,	MG_COLDBOLT,Cold Bolt
+15,9,6,1,1,0,0,10,1,yes,0,0x2000,0,magic,0,0x20,		MG_FROSTDIVER,Frost Diver
 16,2,6,1,2,0x1,0,10,1,yes,0,0,0,magic,0,0x20,		MG_STONECURSE,Stone Curse
-17,9,6,1,3,0x2,2,10,1,yes,0,0,0,magic,0,0x20,		MG_FIREBALL,Fire Ball
-18,9,6,2,3,0,0,10,1,yes,0,0,3,magic,2,0x20,		MG_FIREWALL,Fire Wall
-19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_FIREBOLT,Fire Bolt
-20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_LIGHTNINGBOLT,Lightning Bolt
-21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_THUNDERSTORM,Thunderstorm
+17,9,6,1,3,0x2,2,10,1,yes,0,0x2000,0,magic,0,0x20,		MG_FIREBALL,Fire Ball
+18,9,6,2,3,0,0,10,1,yes,0,0x2000,3,magic,2,0x20,		MG_FIREWALL,Fire Wall
+19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20,	MG_FIREBOLT,Fire Bolt
+20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20,	MG_LIGHTNINGBOLT,Lightning Bolt
+21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20,	MG_THUNDERSTORM,Thunderstorm
 
 //****
 // Acolyte
@@ -100,7 +100,7 @@
 25,9,6,2,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20,		AL_PNEUMA,Pneuma
 26,0,6,4,0,0x1,0,2,1,yes,0,0,0,magic,0,0x60,		AL_TELEPORT,Teleport
 27,9,6,2,0,0x1,0,4,1,yes,0,0,3,magic,0,0x20,		AL_WARP,Warp Portal
-28,9,6,16,6,0x21,0,10,1,yes,0,0,0,magic,0,0x20,	AL_HEAL,Heal
+28,9,6,16,6,0x21,0,10,1,yes,0,0x2000,0,magic,0,0x20,	AL_HEAL,Heal
 29,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x1020,	AL_INCAGI,Increase AGI
 30,9,6,1,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0,		AL_DECAGI,Decrease AGI
 31,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20,		AL_HOLYWATER,Aqua Benedicta
@@ -171,18 +171,18 @@
 
 //****
 // Wizard
-80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,3:4:5:6:7:8:9:10:11:12:12,yes,0,0x80,5,magic,0,0x0,	WZ_FIREPILLAR,Fire Pillar
-81,0,6,4,3,0,3,10,1,yes,0,0,0,magic,5,0x20,		WZ_SIGHTRASHER,Sightrasher
-83,9,8,2,3,0,3:3:3:3:3:3:3:3:3:3:14,10,1:1:2:2:3:3:4:4:5:5:15,yes,0,0,0,magic,0,0x20,	WZ_METEOR,Meteor Storm
-84,9,8,1,4,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0,0,magic,2:3:3:4:4:5:5:6:6:7,0x20,	WZ_JUPITEL,Jupitel Thunder
-85,9,8,2,4,0,0,10,-10,yes,0,0,0,magic,0,0x20,		WZ_VERMILION,Lord of Vermilion
-86,9,8,1,1,0,0,5,1,yes,0,0,0,magic,0,0x0,		WZ_WATERBALL,Water Ball
+80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,3:4:5:6:7:8:9:10:11:12:12,yes,0,0x2080,5,magic,0,0x0,	WZ_FIREPILLAR,Fire Pillar
+81,0,6,4,3,0,3,10,1,yes,0,0x2000,0,magic,5,0x20,		WZ_SIGHTRASHER,Sightrasher
+83,9,8,2,3,0,3:3:3:3:3:3:3:3:3:3:14,10,1:1:2:2:3:3:4:4:5:5:15,yes,0,0x2000,0,magic,0,0x20,	WZ_METEOR,Meteor Storm
+84,9,8,1,4,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0x2000,0,magic,2:3:3:4:4:5:5:6:6:7,0x20,	WZ_JUPITEL,Jupitel Thunder
+85,9,8,2,4,0,0,10,-10,yes,0,0x2000,0,magic,0,0x20,		WZ_VERMILION,Lord of Vermilion
+86,9,8,1,1,0,0,5,1,yes,0,0x2000,0,magic,0,0x0,		WZ_WATERBALL,Water Ball
 87,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x20,		WZ_ICEWALL,Ice Wall
-88,0,6,4,1,0x2,2,10,1,yes,0,0,0,magic,0,0x0,		WZ_FROSTNOVA,Frost Nova
-89,9,6,2,1,0,0,10,1,yes,0,0,0,magic,2,0x20,		WZ_STORMGUST,Storm Gust
-90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20,	WZ_EARTHSPIKE,Earth Spike
-91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20,	WZ_HEAVENDRIVE,Heaven's Drive
-92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20,		WZ_QUAGMIRE,Quagmire
+88,0,6,4,1,0x2,2,10,1,yes,0,0x2000,0,magic,0,0x0,		WZ_FROSTNOVA,Frost Nova
+89,9,6,2,1,0,0,10,1,yes,0,0x2000,0,magic,2,0x20,		WZ_STORMGUST,Storm Gust
+90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20,	WZ_EARTHSPIKE,Earth Spike
+91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20,	WZ_HEAVENDRIVE,Heaven's Drive
+92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x1020,		WZ_QUAGMIRE,Quagmire
 93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,		WZ_ESTIMATION,Sense
 
 //****
@@ -211,15 +211,15 @@
 
 //****
 // Hunter
-115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x2000,	HT_SKIDTRAP,Skid Trap
-116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800,	HT_LANDMINE,Land Mine
-117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x2000,	HT_ANKLESNARE,Ankle Snare
-118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x2000,	HT_SHOCKWAVE,Shockwave Trap
-119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x2000,	HT_SANDMAN,Sandman
-120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x2000,	HT_FLASHER,Flasher
-121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x2800,	HT_FREEZINGTRAP,Freezing Trap
-122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800,	HT_BLASTMINE,Blast Mine
-123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x2800,	HT_CLAYMORETRAP,Claymore Trap
+115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x3000,	HT_SKIDTRAP,Skid Trap
+116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800,	HT_LANDMINE,Land Mine
+117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x3000,	HT_ANKLESNARE,Ankle Snare
+118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x3000,	HT_SHOCKWAVE,Shockwave Trap
+119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x3000,	HT_SANDMAN,Sandman
+120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x3000,	HT_FLASHER,Flasher
+121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x3800,	HT_FREEZINGTRAP,Freezing Trap
+122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800,	HT_BLASTMINE,Blast Mine
+123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x3800,	HT_CLAYMORETRAP,Claymore Trap
 124,2,6,32,0,0x1,0,1,1,no,0,0,0,misc,0,0x0,		HT_REMOVETRAP,Remove Trap
 125,3,6,2,0,0x1,0,1,1,no,0,0x80,0,misc,0,0x2000,		HT_TALKIEBOX,Talkie Box
 126,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		HT_BEASTBANE,Beast Bane
@@ -361,7 +361,7 @@
 247,9,6,4,0,0x1,1,5,0,no,0,0,0,none,0,0x0,		AM_RESURRECTHOMUN,Homunculus Resurrection
 
 //****
-// Creator
+// Crusader
 248,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		CR_TRUST,Faith
 249,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	CR_AUTOGUARD,Guard
 250,3,6,1,0,0,0,5,1,no,0,0,0,weapon,5:6:7:8:9,0x0,	CR_SHIELDCHARGE,Smite
@@ -405,9 +405,9 @@
 282,9,6,16,4,0x1,0,5,1,yes,0,0xC00,0,magic,0,0x20,	SA_LIGHTNINGLOADER,Endow Tornado
 283,9,6,16,2,0x1,0,5,1,yes,0,0xC00,0,magic,0,0x20,	SA_SEISMICWEAPON,Endow Quake
 284,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		SA_DRAGONOLOGY,Dragonology
-285,2,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_VOLCANO,Volcano
-286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_DELUGE,Deluge
-287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_VIOLENTGALE,Whirlwind
+285,2,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x1020,		SA_VOLCANO,Volcano
+286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x1020,		SA_DELUGE,Deluge
+287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x1020,		SA_VIOLENTGALE,Whirlwind
 288,2,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_LANDPROTECTOR,Magnetic Earth
 289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x20,	SA_DISPELL,Dispell
 290,0,6,4,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0,	SA_ABRACADABRA,Hocus-pocus
@@ -697,7 +697,7 @@
 481,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		HP_MANARECHARGE,Mana Recharge
 482,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,		PF_DOUBLECASTING,Double Casting
 483,16,6,2,0,0x1,1:2:3:4:5,1,1,no,0,0,0,none,0,0x20,	HW_GANBANTEIN,Ganbantein
-484,9,6,2,2,0x91,0,5,1,yes,0,0x18000,0,misc,0,0x30,		HW_GRAVITATION,Gravitation Field
+484,9,6,2,2,0x91,0,5,1,yes,0,0x18000,0,misc,0,0x1030,		HW_GRAVITATION,Gravitation Field
 485,-2,6,1,-1,0x8,0,10,1,no,0,0,0,weapon,0,0x4000,	WS_CARTTERMINATION,Cart Termination
 486,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x4000,		WS_OVERTHRUSTMAX,Maximum Power Thrust
 487,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x8,		CG_LONGINGFREEDOM,Longing for Freedom
@@ -743,7 +743,7 @@
 // Ninja
 522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0,0x0,		NJ_TOBIDOUGU,Shuriken Training
 523,9,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0,0x0,	NJ_SYURIKEN,Throw Shuriken
-524,9,8,1,-1,0x40,0,5,3,no,0,0,0,weapon,0,0x0,	NJ_KUNAI,Throw Kunai
+524,9,8,1,-1,0x48,0,5,3,no,0,0,0,weapon,0,0x0,	NJ_KUNAI,Throw Kunai
 525,9,8,1,-1,0x6,1,5,-3:-3:-4:-4:-5,yes,0,0,0,weapon,0,0x0,	NJ_HUUMA,Throw Huuma Shuriken
 526,9,6,1,0,0x50,0,10,1,no,0,0x18000,0,misc,0,0x0,		NJ_ZENYNAGE,Throw Zeny
 527,0,6,4,-1,0,0,5,1,no,0,0,0,weapon,3,0x0,		NJ_TATAMIGAESHI,Improvised Defense
@@ -757,7 +757,7 @@
 535,0,8,4,3,0,0,10,1,yes,0,0,0,magic,1,0x0,		NJ_KAENSIN,Crimson Fire Formation
 536,9,8,1,3,0x2,2,5,3,yes,0,0,0,magic,0,0x0,		NJ_BAKUENRYU,Raging Fire Dragon
 537,9,8,1,1,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0,0,magic,0,0x0,	NJ_HYOUSENSOU,Spear of Ice
-538,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x0,	NJ_SUITON,Hidden Water
+538,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x1000,	NJ_SUITON,Hidden Water
 539,0,6,4,1,0x2,3,5,1,yes,0,0,0,magic,0,0x0,		NJ_HYOUSYOURAKU,Ice Meteor
 540,9,8,1,4,0,0,10,1:2:2:3:3:4:4:5:5:6,yes,0,0,0,magic,0,0x0,	NJ_HUUJIN,Wind Blade
 541,9,6,4,4,0x2,2:2:3:3:4,5,1,yes,0,0,0,magic,0,0x0,	NJ_RAIGEKISAI,Lightning Strike of Destruction
@@ -886,11 +886,11 @@
 2005,1,6,2,4,0x2,2,5,1,no,0,0,0,weapon,3,0x0,	RK_WINDCUTTER,Wind Cutter
 2006,0,6,4,-1,0x2,5,5,1,no,0,0,0,weapon,0,0x0,	RK_IGNITIONBREAK,Ignition Break
 2007,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		RK_DRAGONTRAINING,Dragon Training
-2008,9,6,2,3,0xC2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,0x0,	RK_DRAGONBREATH,Dragon Breath
+2008,9,6,2,3,0x2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,0x0,	RK_DRAGONBREATH,Dragon Breath
 2009,0,6,4,0,0x3,3:4:5:6:7,5,1,no,0,0,0,none,0,0x0,	RK_DRAGONHOWLING,Dragon Howling
 2010,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RK_RUNEMASTERY,Rune Mastery
 2011,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	RK_MILLENNIUMSHIELD,Millenium Shield
-2012,1,6,4,-1,0,0x8,1,1,yes,0,0,0,weapon,0,0x0,	RK_CRUSHSTRIKE,Crush Strike
+2012,1,6,4,-1,0,0,1,1,yes,0,0,0,weapon,0,0x0,	RK_CRUSHSTRIKE,Crush Strike
 2013,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_REFRESH,Refresh
 2014,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_GIANTGROWTH,Giant Growth
 2015,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_STONEHARDSKIN,Stone Hard Skin
@@ -898,7 +898,7 @@
 2017,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,7,0x0,	RK_STORMBLAST,Storm Blast
 2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,0x0,	RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
 2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_ABUNDANCE,Abundance
-2020,5:6:7:8:9,6,16,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RK_PHANTOMTHRUST,Phantom Thrust
+2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RK_PHANTOMTHRUST,Phantom Thrust
 
 //****
 // WL Warlock
@@ -947,7 +947,7 @@
 2027,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_POISONINGWEAPON,Poisoning Weapon
 2028,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_WEAPONBLOCKING,Weapon Blocking
 2029,0,6,4,-1,0x22,1,5,1,no,0,0,0,weapon,3,0x0,	GC_COUNTERSLASH,Counter Slash
-2030,-2,6,4,-1,0x1,0,5,1,no,0,0x200,0,weapon,0,0x0,	GC_WEAPONCRUSH,Weapon Crush
+2030,-2,6,4,-1,0,0,5,1,no,0,0x200,0,weapon,0,0x0,	GC_WEAPONCRUSH,Weapon Crush
 2031,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	GC_VENOMPRESSURE,Venom Pressure
 2032,5,6,2,0,0x1,0,5,1,yes,0,0,1,none,0,0x0,	GC_POISONSMOKE,Poison Smoke
 2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x40,	GC_CLOAKINGEXCEED,Cloaking Exceed
@@ -993,7 +993,7 @@
 2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0,		RA_WUGMASTERY,Warg Mastery
 2241,0,6,4,0,0,0,3,1,no,0,0,0,none,0,0x2000,		RA_WUGRIDER,Warg Rider
 2242,0,6,4,-1,0x2,1,1,0,no,0,0,0,weapon,0,0x2000,	RA_WUGDASH,Warg Dash
-2243,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x2000,	RA_WUGSTRIKE,Warg Strike
+2243,9,6,1,-1,0x40,0,5,1,no,0,0,0,weapon,0,0x2000,	RA_WUGSTRIKE,Warg Strike
 2244,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x80,	RA_WUGBITE,Warg Bite
 2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RA_TOOTHOFWUG,Tooth of Warg
 2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0,	RA_SENSITIVEKEEN,Sensitive Keen
@@ -1014,7 +1014,7 @@
 2258,13,6,1,-1,0x2,1,3,1,no,0,0,0,weapon,0,0x0,	NC_VULCANARM,Vulcan Arm
 2259,7,6,1,3,0,2,3,1,no,0,0,5,weapon,0,0x0,		NC_FLAMELAUNCHER,Flame Launcher
 2260,7,6,2,1,0x2,2:3:4,3,1,no,0,0,0,weapon,0,0x0,	NC_COLDSLOWER,Cold Slower
-2261,9:11:13,6,1,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0,	NC_ARMSCANNON,Arm Cannon
+2261,9:11:13,6,2,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0,	NC_ARMSCANNON,Arm Cannon
 2262,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0,		NC_ACCELERATION,Acceleration
 2263,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_HOVERING,Hovering
 2264,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0,		NC_F_SIDESLIDE,Front-Side Slide
@@ -1077,7 +1077,7 @@
 2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7,0x0,	LG_OVERBRAND,Over Brand
 2318,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	LG_PRESTIGE,Prestige
 2319,0,6,4,0,0x3,3,5,1,no,0,0,0,weapon,0,0x0,	LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID.
-2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x0,	LG_MOONSLASHER,Moon Slasher
+2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x1000,	LG_MOONSLASHER,Moon Slasher
 2321,1,8,2,6,0x2,5,5,-7,yes,0,0,0,weapon,0,0x0,	LG_RAYOFGENESIS,Ray of Genesis
 2322,0,6,16,0,0x3,1,5,1,yes,0,0,0,none,0,0x0,	LG_PIETY,Piety
 2323,0,8,4,2,0x2,1:1:2:2:3,5,-5,yes,0,0,0,weapon,0,0x0,	LG_EARTHDRIVE,Earth Drive
@@ -1090,14 +1090,14 @@
 2327,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,3,0x0,	SR_SKYNETBLOW,Sky Net Blow
 2328,0,6,4,-1,0x2,1:2:3:4:5,5,1,no,0,0,0,weapon,0,0x0,	SR_EARTHSHAKER,Earth Shaker
 2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0,	SR_FALLENEMPIRE,Fallen Empire
-2330,-2,6,1,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0,	SR_TIGERCANNON,Tiger Cannon //CHECK Need to fix to be enemy targeted and also combo after Fallen Empire.
-2331,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		SR_HELLGATE,Hell Gate
+2330,-2,6,1,-1,0x2,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0,	SR_TIGERCANNON,Tiger Cannon
+2331,1:2:3:3:4:4:5:5:6:7,6,1,0,0,0,10,0,no,0,0,0,none,0,0x0,		SR_HELLGATE,Hell Gate
 2332,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0,	SR_RAMPAGEBLASTER,Rampage Blaster
 2333,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		SR_CRESCENTELBOW,Crescent Elbow //CHECK Check the autospell ID.
 2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0,	SR_CURSEDCIRCLE,Cursed Circle
 2335,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		SR_LIGHTNINGWALK,Lightning Walk
 2336,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0,	SR_KNUCKLEARROW,Knuckle Arrow
-2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x0,	SR_WINDMILL,Windmill
+2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x1000,	SR_WINDMILL,Windmill
 2338,0,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0,	SR_RAISINGDRAGON,Raising Dragon
 2339,0,0,0,0,0,0,5,1,no,0,0,0,none,0,0x0,		SR_GENTLETOUCH,Gentle Touch
 2340,0,6,4,0,0x3,2,1,1,no,0,0,0,none,0,0x0,	SR_ASSIMILATEPOWER,Assimilate Power
@@ -1154,8 +1154,8 @@
 
 //****
 // SO Sorcerer (statis blocking need to be confirmed)
-2443,0,6,4,3,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x20,	SO_FIREWALK,Fire Walk //CHECK Video and data shows each cell only hits once.
-2444,0,6,4,4,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x20,	SO_ELECTRICWALK,Electric Walk
+2443,0,6,4,3,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x1020,	SO_FIREWALK,Fire Walk //CHECK Video and data shows each cell only hits once.
+2444,0,6,4,4,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x1020,	SO_ELECTRICWALK,Electric Walk
 2445,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x20,		SO_SPELLFIST,Spell Fist
 2446,9,6,2,2,0,0,5,-3,yes,0,0,0,magic,0,0x20,	SO_EARTHGRAVE,Earth Grave
 2447,9,6,2,1,0,0,5,-5,yes,0,0,0,magic,0,0x20,	SO_DIAMONDDUST,Diamond Dust
@@ -1164,7 +1164,7 @@
 2450,9,6,2,5,0,0,5,1,yes,0,0,0,magic,0,0x20,		SO_CLOUD_KILL,Cloud Kill
 2451,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x20,	SO_STRIKING,Striking //CHECK Data shows a % for increased successful refine rate. Is this true?
 2452,9,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	SO_WARMER,Warmer
-2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	SO_VACUUM_EXTREME,Vacuum Extreme
+2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x1020,	SO_VACUUM_EXTREME,Vacuum Extreme
 2454,9,6,1,4,0x2,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_VARETYR_SPEAR,Varetyr Spear
 2455,7:7:7:7:9,6,2,0,0x3,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_ARRULLO,Arrullo
 2456,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0,	SO_EL_CONTROL,Spirit Control
@@ -1195,7 +1195,7 @@
 2483,11,6,2,0,0x3,4,10,1,yes,0,0x2000,0,weapon,0,0x0,	GN_CRAZYWEED,Crazy Weed
 2484,0,6,2,2,0x2,2,10,1,no,0,0x2000,0,weapon,0,0x0,	GN_CRAZYWEED_ATK,Crazy Weed Attack
 2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0,		GN_DEMONIC_FIRE,Demonic Fire
-2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION,Fire Expansion //CHECK FIX ME!!!! Level 1 is reducing the damage. Should increase it by 50%
+2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION,Fire Expansion
 2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder
 2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas
 2489,11,6,1,0,0,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0,		GN_FIRE_EXPANSION_ACID,Fire Expansion Acid

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

@@ -599,7 +599,7 @@
 2204,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_JACKFROST#Jack Frost#
 2205,0,0,40:42:44:46:48,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_MARSHOFABYSS#Marsh of Abyss#
 2206,0,0,100:120:140:160:180,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_RECOGNIZEDSPELL#Recognized Spell#
-2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_SIENNAEXECRATE#Sienna Execrate#
+2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,716,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_SIENNAEXECRATE#Sienna Execrate#
 
 2209,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_STASIS#Stasis#
 2210,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_DRAINLIFE#Drain Life#
@@ -758,12 +758,12 @@
 2327,0,0,8:9:10:11:12,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_SKYNETBLOW#Sky Net Blow#
 2328,0,0,36:40:44:48:52,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_EARTHSHAKER#Earth Shaker#
 2329,0,0,20:30:40:50:60,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_FALLENEMPIRE#Fallen Empire#
-2330,0,0,1:2:3:4:5:6:7:8:9:10,-12:-14:-16:-18:-20:-22:-24:-26:-28:-30,-6:-7:-8:-9:-10:-11:-12:-13:-14:-15,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_TIGERCANNON#Tiger Cannon#
-2331,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HELLGATE#Hell Gate#
+2330,0,0,1:2:3:4:5:6:7:8:9:10,0,0,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_TIGERCANNON#Tiger Cannon#
+2331,0,0,1,0,-11:-12:-13:-14:-15:-16:-17:-18:-19:-20,0,99,0,0,none,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HELLGATE#Hell Gate#
 2332,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RAMPAGEBLASTER#Rampage Blaster#
 2333,0,0,80,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_CRESCENTELBOW#Crescent Elbow#
 2334,0,0,40:60:80:100:120,-1:-2:-3:-4:-5,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_CURSEDCIRCLE#Cursed Circle#
-2335,0,0,80:70:60:50:40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_LIGHTNINGWALK#Lightning Walk#
+2335,0,0,80:70:60:50:40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_LIGHTNINGWALK#Lightning Walk#
 2336,0,0,10:15:20:25:30,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_KNUCKLEARROW#Knuckle Arrow#
 2337,0,0,45,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_WINDMILL#Windmill#
 2338,0,0,120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RAISINGDRAGON#Raising Dragon#

+ 11 - 0
db/quest_db.txt

@@ -2469,6 +2469,17 @@
 //15043,0,0,0,0,0,0,0,""
 //15045,0,0,0,0,0,0,0,""
 
+// 2013 Christmas Event
+15055,0,0,0,0,0,0,0,"Christmas : We are the great Single Union Army!"
+15056,0,0,0,0,0,0,0,"Christmas : Declare war against couples!"
+15057,0,0,0,0,0,0,0,"Christmas : Prepare the festival!"
+15059,86400,0,0,0,0,0,0,"Christmas : Cooldown Timer"
+15060,0,0,0,0,0,0,0,"Christmas : Kwami has joined"
+15061,0,0,0,0,0,0,0,"Christmas : Willer has joined"
+15062,0,0,0,0,0,0,0,"Christmas : Rinka has joined"
+15063,0,0,0,0,0,0,0,"Christmas : Jee has joined"
+15064,0,0,0,0,0,0,0,"Christmas : Marty has joined"
+
 16000,0,0,0,0,0,0,0,"Metz Brayde's Notice"
 16001,0,0,0,0,0,0,0,"First examination"
 16002,0,0,0,0,0,0,0,"Fetching Items for Arian -1"

+ 112 - 60
db/re/item_db.txt

@@ -966,6 +966,7 @@
 1670,RWC_Memory_Staff,RWC Memory Staff,5,20,,500,25:30,,1,1,0x00818315,63,2,2,3,1,1,10,{ bonus bUnbreakableWeapon,0; bonus bMatk,30*(getrefine()/3); if(getrefine()>=7){ set .@i,1; bonus4 bAutoSpell,"HW_MAGICPOWER",1,10,0; } if (getrefine()>=4){ set .@rate,5*(.@i+1); bonus2 bMagicAddClass,Class_All,.@rate; } },{},{}
 1673,Half_BF_Staff4,Half BF Staff4,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bDelayRate,-10; bonus2 bSPLossRate,5,12000; bonus bUnbreakableWeapon,0; },{},{}
 1674,Half_BF_Staff2,Half BF Staff2,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus2 bMagicAddRace,RC_DemiHuman,10; bonus2 bMagicAddRace,RC_Player,10; bonus3 bAddEff,Eff_Stun,200,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{}
+1676,Baculum_Daemonicum,Baculum Daemonicum,5,20,,1200,60:150,,1,2,0x00818315,63,2,2,4,80,1,10,{ bonus bAtkEle,Ele_Dark; bonus bUnbreakableWeapon,0; bonus bVariableCastrate,-10; if (BaseLevel > 99){ bonus bMatk,30; } if(getrefine() > 8){ bonus2 bResEff,Eff_Blind,3000; bonus bUseSPrate,-10; } },{},{}
 // Bows
 1701,Bow,Bow,5,1000,,500,15,,5,3,0x000A0848,63,2,34,1,4,1,11,{},{},{}
 1702,Bow_,Bow,5,1000,,500,15,,5,4,0x000A0848,63,2,34,1,4,1,11,{},{},{}
@@ -1979,7 +1980,7 @@
 2926,Vit_Glove_,Vit Glove,4,75000,,100,,0,,1,0xFFFFFFFF,63,2,136,,100,0,0,{ bonus bMaxHP,100; bonus bMaxSP,20; bonus bMaxHP,(readparam(bVit)/10)*50; if(readparam(bVit)>=110) bonus bMaxHPrate,1; },{},{}
 2927,Dex_Glove_,Dex Glove,4,75000,,100,,0,,1,0xFFFFFFFF,63,2,136,,100,0,0,{ bonus bMaxHP,100; bonus bMaxSP,20; bonus bHit,(readparam(bDex)/10); if(readparam(bDex)>=110) bonus bLongAtkRate,1; },{},{}
 2928,Luk_Glove_,Luk Glove,4,75000,,100,,0,,1,0xFFFFFFFF,63,2,136,,100,0,0,{ bonus bMaxHP,100; bonus bMaxSP,20; bonus bCritical,(readparam(bLuk)/10); if(readparam(bLuk)>=110) bonus bCritAtkRate,1; },{},{}
-2936,Recovery_Ring,Recovery Ring,4,20,,100,,5,,1,0xFFFFFFFF,63,2,136,,10,0,0,{ bonus bVit,1; },{},{}
+2936,Recovery_Ring,Recovery Ring,4,20,,100,,5,,1,0xFFFFFFFF,63,2,136,,10,0,0,{ bonus bVit,1; bonus bMaxHP,250; bonus bMaxHPrate,10; bonus2 bAddItemHealRate,IG_Potion,5; },{},{}
 2940,Ninja_Manual,Ninja Manual,4,0,,100,,0,,0,0x00000001,63,2,136,,0,0,0,{ bonus bMaxSP,100; skill "NJ_UTSUSEMI",1; skill "NJ_KOUENKA",1; skill "NJ_SYURIKEN",1; },{},{}
 2941,Gunslinger_Manual,Gunslinger Manual,4,0,,100,,0,,0,0x00000001,63,2,136,,0,0,0,{ bonus bMaxSP,100; skill "GS_GLITTERING",1; skill "GS_ADJUSTMENT",1; skill "GS_MADNESSCANCEL",1; skill "GS_INCREASING",1; },{},{}
 2942,Taekwon_Manual,Taekwon Manual,4,0,,100,,0,,0,0x00000001,63,2,136,,0,0,0,{ bonus bMaxSP,100; skill "TK_SEVENWIND",4; skill "TK_JUMPKICK",5; },{},{}
@@ -3667,9 +3668,23 @@
 5869,Mimic_Egg_Shell,Mimic Egg Shell,4,10,,100,,4,,0,0xFFFFFFFF,63,2,256,,0,1,999,{ bonus2 bAddEffWhenHit,Eff_Stone,600; bonus bSpeedRate,25; },{},{}
 5870,Bunny_Egg_Shell,Bunny Egg Shell,4,10,,100,,5,,0,0xFFFFFFFF,63,2,256,,0,1,1000,{ bonus bAgi,3; bonus bAspd,1; },{},{}
 5871,Picky_Egg_Shell,Picky Egg Shell,4,10,,100,,2,,0,0xFFFFFFFF,63,2,256,,0,1,1001,{ bonus bVit,3; bonus bMdef,2; },{},{}
-5873,Helmet_Of_Siegfried,Helmet Of Siegfried,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1055,{ bonus bAllStats,5; bonus bUnbreakableHelm,0; },{},{}
+5873,Helmet_Of_Siegfried,Helmet Of Siegfried,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1055,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",5,5; bonus2 bHPLossRate,600,1000; bonus bUnbreakableHelm,0;  },{},{}
+5874,Circlet_Of_Kriemhild,Circlet Of Kriemhild,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1056,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"PR_KYRIE",9,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm,0; },{},{}
+5875,Diadem_Of_Bruenhild,Diadem Of Bruenhild,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1057,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"SM_ENDURE",8,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm,0; },{},{}
 //
+5881,Weissbier_Hat,Weissbier Hat,4,20,,300,,5,,0,0xFFFFFFFF,63,2,256,,0,1,1079,{ bonus bMaxHPrate,3; bonus bMaxSPrate,3; bonus bDex,10; if(getrefine()>6){ bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bDex,5; } },{},{}
+5882,Red_Wizardry_Hat_C,Red Mage Hat C,4,20,,300,,1,,0,0x00810204,63,2,256,,0,1,282,{ bonus bMaxSP,150; },{},{}
+5883,White_Wizardry_Hat_C,Gray Mage Hat C,4,20,,300,,1,,0,0x00810204,63,2,256,,0,1,283,{ bonus bMaxSP,150; },{},{}
+5884,Gray_Wizardry_Hat_C,Brown Mage Hat C,4,20,,300,,1,,0,0x00810204,63,2,256,,0,1,284,{ bonus bMaxSP,150; },{},{}
+5885,Blue_Wizardry_Hat_C,Blue Mage Hat C,4,20,,300,,1,,0,0x00810204,63,2,256,,0,1,285,{ bonus bMaxSP,150; },{},{}
+5886,Yellow_Wizardry_Hat_C,Yellow Mage Hat C,4,20,,300,,1,,0,0x00810204,63,2,256,,0,1,286,{ bonus bMaxSP,150; },{},{}
 5887,Half_L_Magestic_Goat,Half L Majestic Goat,4,20,,800,,5,,0,0xFFFFFFFF,63,2,256,,0,1,380,{ bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus bBaseAtk,(JobLevel*2)/7; },{},{}
+//
+5892,RCC2013_1ST_CROWN,RCC2013 1ST CROWN,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1106,{ sc_start SC_SpeedUp0,-1,0; skill "AL_TELEPORT",1; },{ sc_end SC_SpeedUp0; },{}
+5893,RCC2013_2ND_CROWN,RCC2013 2ND CROWN,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1107,{ sc_start SC_SpeedUp0,-1,0; skill "AL_TELEPORT",1; },{ sc_end SC_SpeedUp0; },{}
+5894,RCC2013_3RD_CROWN,RCC2013 3RD CROWN,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1108,{ sc_start SC_SpeedUp0,-1,0; skill "AL_TELEPORT",1; },{ sc_end SC_SpeedUp0; },{}
+5895,RCC2013_ANV_Hat,RCC2013 ANV Hat,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1109,{ bonus2 bAddClass,Class_All,2; bonus bMatkRate,2; },{},{}
+//
 // More Etc Items
 //===================================================================
 6000,Dark_Ashes,Ashes of Darkness,3,0,,0,,,,,,,,,,,,,{},{},{}
@@ -4311,7 +4326,7 @@
 //
 6804,ORGANIC_PUMPKIN,Organic Pumpkin,3,20,,10,,,,,,,,,,,,,{},{},{}
 6805,INORGANIC_PUMPKIN,Inorganic Pumpkin,3,20,,10,,,,,,,,,,,,,{},{},{}
-6821,Solo_Troops_Badge,Solo Troops Badge,3,0,,0,,,,,,,,,,,,,{},{},{}
+6821,Solo_Troops_Badge,Single Union Badge,3,0,,0,,,,,,,,,,,,,{},{},{}
 //
 7001,Mould_Powder,Mould Powder,3,466,,10,,,,,,,,,,,,,{},{},{}
 7002,Ogre_Tooth,Ogre Tooth,3,658,,10,,,,,,,,,,,,,{},{},{}
@@ -6002,7 +6017,7 @@
 12487,PC_4Leaf_Clover_Box,PC 4Leaf Clover Box,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
 12488,Ticket_Gift_Box,Ticket Gift Box,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
 12489,Ticket_Gift_Box2,Ticket Gift Box2,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
-12490,Vivid_Notation,Vivid Notation,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
+12490,Vivid_Notation,Christmas Music Box,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ playbgm rand(53,58)+".mp3"; },{},{}
 12491,Curious_Snowball,Curious Snowball,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_Snowball"; },{},{}
 12492,Crumpled_Paper,Crumpled Paper,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Crumpled_Paper,1); },{},{}
 12493,Lucky_Egg_C4,Lucky Egg C4,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Lucky_Egg_C4); },{},{}
@@ -6095,11 +6110,13 @@
 12580,Vending_Search_Scroll,Universal Catalog Silver,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ searchstores 10,0; },{},{}
 12581,Vending_Search_Scroll2,Universal Catalog Gold,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ searchstores 10,1; },{},{}
 12582,Siege_Supply_Box,WoE Supply Box,11,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
-12583,PR_Team_Box,Public Relations box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
-12584,Develop_Team_box,Development Team box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
-12585,Marketing_Team_Box,Marketing Team box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
-12586,Operating_Team_Box,Operation Team box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
-12587,Summer_Night_box,A Summer Night's Box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
+12583,PR_Team_Box,Public Relations box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 6397,1; },{},{}
+12584,Develop_Team_box,Development Team box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 6398,1; },{},{}
+12585,Marketing_Team_Box,Marketing Team box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 6399,1; },{},{}
+12586,Operating_Team_Box,Operation Team box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 6400,1; },{},{}
+12587,Summer_Night_box,A Summer Night's Box,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12246,1; },{},{}
+12588,Summer_Night_box2,A Summer Night's Box2,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12103,1; },{},{}
+12589,Summer_Night_box3,A Summer Night's Box3,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12106,1; },{},{}
 12591,Uni_Catalog_Bz,Universal Catalog Bronze,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ searchstores 10,1; },{},{}
 12592,Cyclops_Box1,Cyclops Box1,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
 12593,Cyclops_Box2,Cyclops Box2,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
@@ -6129,7 +6146,7 @@
 12619,Cgrade_Pocket,C Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Cgrade_Pocket); },{},{}
 12620,Dgrade_Pocket,D Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Dgrade_Pocket); },{},{}
 12621,Egrade_Pocket,E Grade Coin Bag,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Egrade_Pocket); },{},{}
-12622,Boarding_Halter,Reins Of Mount,11,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ setmounting(); },{},{}
+12622,Boarding_Halter,Reins Of Mount,11,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_ALL_RIDING,-1,1; },{},{}
 12623,High_Weapon_Box,Advanced Weapons Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Advanced_Weapons_Box),1; },{},{}
 12624,Delicious_Jelly,Delicious Jelly,0,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 3,3; },{},{}
 12625,Sapa_Feat_Cert_Pack,Sapa Feat Cert Pack,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
@@ -6182,7 +6199,7 @@
 12672,Start_New_Box,Start New Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 617,2; getitem 12263,2; getitem 12329,3; getitem 12330,2; },{},{}
 12673,Lucky_Egg_C10,Lucky Egg C10,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Lucky_Egg_C10); },{},{}
 12674,God_Material_Box,God Material Box,2,20,,500,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
-12675,Sg_Weapon_Supply_Box,WoE Weapon Supply Box,2,20,,500,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem callfunc("F_Rand",18113,2016,1586,1395,21001,18114,13072,16021,1492,1587,1396,1293,21002,1294,1436,16020,1775,1776),1; },{},{}
+12675,Sg_Weapon_Supply_Box,WoE Weapon Supply Box,2,20,,500,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Sg_Weapon_Supply_Box); },{},{}
 12676,Sg_Violet_Potion_Box,Siege Violet Potion Box,2,20,,500,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 11547,50; },{},{}
 12677,Siege_Arrow_Quiver_S,Siege Arrow Quiver S,2,2,,100,,,,,0xFFFFFFFF,63,2,,,130,,,{ getitem 1776,200; },{},{}
 12678,Siege_Arrow_Quiver_A,Siege Arrow Quiver A,2,2,,100,,,,,0xFFFFFFFF,63,2,,,95,,,{ getitem 1775,200; },{},{}
@@ -6210,14 +6227,14 @@
 12700,Insideout_Shirt,Inside-out Shirt,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "malaya",242,211; },{},{}
 12701,Old_Blue_Box_F,Old Blue Box,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
 12702,Old_Bleu_Box,Old Navy Box,2,0,,200,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_BleuBox),1; getrandgroupitem(IG_BleuBox),1; },{},{}
-12703,Holy_Egg_2,Holy Egg,11,0,,50,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
+12703,Holy_Egg_2,Holy Egg,11,0,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Holy_Egg_2,1); },{},{}
 12704,Elixir_Of_Life,Elixir of Life,0,0,,10,,,,,0xFFFFFFFF,63,2,,,85,,,{ percentheal 100,0; },{},{}
 12705,Noble_Nameplate,Noble Nameplate,2,0,,100,,,,,0xFFFFFFFF,63,2,,,90,,,{ sc_start SC_EXPBOOST,1800000,100; },{},{}
 12706,Lucky_Cookie01,Lucky Cookie,11,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "PR_GLORIA",5; },{},{}
 12707,Lucky_Cookie02,Lucky Cookie,11,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "PR_MAGNIFICAT",1; },{},{}
 12708,Lucky_Cookie03,Lucky Cookie,11,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "PR_IMPOSITIO",3; },{},{}
 12709,Guyak_Candy,Guyak Candy,0,0,,150,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 30,30; },{},{}
-12710,Guyak_Pudding,Guyak Pudding,2,0,,200,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
+12710,Guyak_Pudding,Guyak Pudding,2,0,,200,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_SpeedUp1,300000,0; },{},{}
 12711,Pretzel,Pretzel,0,2,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ itemheal rand(50,90),0; },{},{}
 12712,Green_Beer,Green Beer,2,2,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 0,50; },{},{}
 12713,Monster_Extract,Monster Extract,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
@@ -6542,7 +6559,7 @@
 13071,Upg_Dagger,Upg Dagger,5,20,,600,55,,1,1,0xFE9F7EEF,63,2,2,3,1,1,1,{ bonus bBaseAtk,(getrefine()*10); bonus bMatk,(getrefine()*5); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5); },{},{}
 13072,Velum_Damascus,Vellum Damascus,5,20,,1000,180,,1,0,0xFE9F7EEF,63,2,2,4,95,1,1,{ bonus bAspdRate,getrefine(); },{},{}
 13073,Counter_Dagger_,Counter Dagger,5,120000,,550,140,,1,1,0x00810204,63,2,2,4,55,1,1,{},{},{}
-13074,Ninja_Cutter,Ninja Sword Prototype,5,0,,0,0,,1,0,0x02000000,63,2,2,4,99,0,1,{},{},{}
+13074,Ninja_Cutter,Ninja Sword Prototype,5,0,,0,0,,1,0,0x02000000,63,2,2,4,99,1,1,{},{},{}
 13075,Kurenai,Kurenai,5,5000,,700,130,,1,0,0x02000000,63,2,2,3,99,1,1,{ bonus bInt,3; },{},{}
 13076,Raksasa_Dagger,Nachal Sword,5,40000,,600,120:100,,1,1,0x02000000,63,2,2,3,110,1,1,{ bonus bInt,3; },{},{}
 13077,Kagekiri,Kagekiri,5,40000,,600,50:120,,1,0,74,7,2,2,4,100,1,1,{},{},{}
@@ -7795,8 +7812,8 @@
 15026,Aqua_Robe,Aqua Robe,4,20,,500,,40,,0,0x00000200,63,2,16,,100,1,0,{ bonus bDefEle,Ele_Water; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_STORMGUST",-3000; if(readparam(bInt)>=120){ bonus bInt,1; } },{},{}
 15027,Crimson_Robe,Crimson Robe,4,20,,500,,40,,0,0x00000200,63,2,16,,100,1,0,{ bonus bDefEle,Ele_Fire; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_METEOR",-3000; if(readparam(bInt)>=120){ bonus bInt,1; } },{},{}
 15028,Forest_Robe,Forest Robe,4,20,,500,,40,,0,0x00000200,63,2,16,,100,1,0,{ bonus bDefEle,Ele_Earth; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_HEAVENDRIVE",-3000; if(readparam(bInt)>=120){ bonus bInt,1; } },{},{}
-15029,Robe_Of_Affection,Robe Of Affection,4,20,,300,,22,,0,0x00000100,18,2,16,,100,1,0,{ bonus bDefEle,Ele_Holy; bonus bMdef,10; bonus bInt,1; bonus2 bSkillUseSP,"AB_CLEMENTIA",50; },{},{}
-15030,Robe_Of_Judgement,Robe Of Judgement,4,20,,300,,22,,0,0x00000100,18,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_Player,-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,4,20,,300,,22,,0,0x00000100,56,2,16,,100,1,0,{ bonus bDefEle,Ele_Holy; bonus bMdef,10; bonus bInt,1; bonus2 bSkillUseSP,"AB_CLEMENTIA",50; },{},{}
+15030,Robe_Of_Judgement,Robe Of Judgement,4,20,,300,,22,,0,0x00000100,56,2,16,,100,1,0,{ bonus bDefEle,Ele_Dark; bonus bMdef,10; bonus bStr,2; bonus bInt,1; bonus2 bSubRace,RC_All,-10; bonus2 bSubRace,RC_Undead,20; bonus2 bSubRace,RC_Demon,20; },{},{}
 15031,Para_Team_Armor,Paradise Uniform IV,4,0,,0,,70,,0,0xFFFFFFFF,63,2,16,,60,0,0,{ bonus bMdef,5; bonus bMaxHP,500; bonus bMaxSP,50; bonus bStr,1; bonus bInt,1; bonus bDex,1; },{},{}
 15032,Tidung,Tidung,4,10,,500,,2,,1,0xFFFFFFFE,63,2,16,,0,1,0,{ bonus bMdef,10; bonus2 bResEff,Eff_Stun,1500; bonus2 bResEff,Eff_Freeze,1500; bonus2 bSubClass,Class_All,5; },{},{}
 15033,Tutorial_Mattle,Tutorial Mantle,4,0,,600,,37,,0,0x00000000,63,2,16,,1,0,0,{},{},{}
@@ -7853,12 +7870,12 @@
 16010,Red_Ether_Bag,Red Ether Bag,5,20,,1000,15:100,,1,1,0x0004C5B2,63,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,Adventure_Mace,Adventure Mace,5,0,,0,60,,1,0,0x00008110,63,2,2,1,1,0,8,{},{},{}
 16012,Academy_Mace,Academy Mace,5,0,,1000,110,,1,1,0x00008110,63,2,2,1,1,1,8,{},{},{}
-16013,Mace_Of_Judgement,Mace Of Judgement,5,20,,1200,140:180,,1,2,0x00000100,18,2,2,3,100,1,8,{ bonus bStr,1; bonus bInt,1; autobonus "{ bonus2 bMagicAddRace,RC_Demon,20; }",30,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,20; }",5,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
+16013,Mace_Of_Judgement,Mace Of Judgement,5,20,,1200,140:180,,1,2,0x00000100,56,2,2,3,100,1,8,{ bonus bStr,1; bonus bInt,1; autobonus "{ bonus2 bMagicAddRace,RC_Demon,20; }",30,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,20; }",5,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
 16014,P_Mace3,Eden Mace III,5,0,,0,172,,1,0,0x0004C5B3,63,2,2,3,60,0,8,{},{},{}
 16015,Cat_Club,Cat Club,5,20,,700,88,,1,3,0x0004C5B3,63,2,2,1,1,1,8,{ bonus2 bAddRace,RC_Brute,15; },{},{}
 16016,Tuna,Tuna,5,0,,0,180,,1,0,0x0004C5B3,63,2,2,1,50,0,8,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Stun,150; bonus3 bAutoSpell,"SM_BASH",5,20; if(BaseLevel>99) bonus bBaseAtk,20; },{},{}
 16017,Bloody_Cross,Bloody Cross,5,20,,1500,170,,1,0,0x00008110,63,2,2,4,100,1,8,{ bonus bAtkEle,Ele_Dark; bonus3 bAutoSpell,"WL_HELLINFERNO",1,(getrefine()?getrefine()*20:20); },{},{}
-16018,Mace_Of_Judgement2,Empowered Mace Of Judgement,5,20,,1200,170:180,,1,1,0x00000100,18,2,2,3,130,1,8,{ bonus bStr,2; bonus bInt,2; autobonus "{ bonus2 bMagicAddRace,RC_Demon,40; }",60,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
+16018,Mace_Of_Judgement2,Empowered Mace Of Judgement,5,20,,1200,170:180,,1,1,0x00000100,56,2,2,3,130,1,8,{ bonus bStr,2; bonus bInt,2; autobonus "{ bonus2 bMagicAddRace,RC_Demon,40; }",60,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{}
 16019,Upg_Mace,Upg Mace,5,20,,800,80,,1,1,0x0004C5B3,63,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,5,20,,1500,170,,1,0,0x0004C5B3,63,2,2,4,95,1,8,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Stun,1000+getrefine(); bonus bAspdRate,getrefine(); },{},{}
 16021,Velum_Flail,Vellum Flail,5,20,,1500,170,,1,0,0x0004C5B3,63,2,2,4,95,1,8,{ bonus bUnbreakableWeapon,0; bonus3 bAutoSpell,"NPC_CRITICALWOUND",5,10; bonus bHit,getrefine(); bonus bCritical,getrefine(); },{},{}
@@ -8068,9 +8085,9 @@
 16625,Half_Asprika_box7,Half Asprika box7,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ rentitem 2566,604800; },{},{}
 16628,Brynhild_Box,Half Brynhild Box,2,20,,0,,,,,0xFFFFFFFF,63,2,,,47,,,{ rentitem 15023,604800; },{},{}
 16631,Aributa_Scroll,Aributa Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
-16638,Life_Ribbon_Box,Life Ribbon Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Life_Ribbon_Box);*/ /*rentitem Life_Ribbon,3600;*/ },{},{}
-16639,Life_Ribbon_Box2,Life Ribbon Box2,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Life_Ribbon_Box2);*/ /*rentitem Life_Ribbon,7200;*/ },{},{}
-16640,Life_Ribbon_Box3,Life Ribbon Box3,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Life_Ribbon_Box3);*/ /*rentitem Life_Ribbon,14400;*/ },{},{}
+16638,Life_Ribbon_Box,Life Ribbon Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Life_Ribbon_Box); },{},{}
+16639,Life_Ribbon_Box2,Life Ribbon Box2,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Life_Ribbon_Box2); },{},{}
+16640,Life_Ribbon_Box3,Life Ribbon Box3,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Life_Ribbon_Box3); },{},{}
 //
 16652,Flame_Light,Flame Light,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Flame_Light); },{},{}
 16653,BM75_10Box,BM75 10Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12563,10; },{},{}
@@ -8187,7 +8204,7 @@
 16866,Siege_Map_Teleport_Scroll_II_Box_10,Siege Map Teleport Scroll II Box(10),18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 14591,10; },{},{}
 16867,Siege_Map_Teleport_Scroll_II_Box_30,Siege Map Teleport Scroll II Box(30),18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 14591,30; },{},{}
 //
-16972,Weather_Report_Box,Weather Report Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Weather_Report_Box);*/ /*getitem Fine_Sun,1;*/ getitem 19518,1; getitem 19520,1; getitem 19519,1; },{},{}
+16972,Weather_Report_Box,Weather Report Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Weather_Report_Box);*/ getitem 19507,1; getitem 19518,1; getitem 19520,1; getitem 19519,1; },{},{}
 16973,Yellow_Hat_Box,Yellow Hat Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 19515,1; },{},{}
 16974,Comin_Actor_Box,Comin Actor Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Comin_Actor_Box);*/ getitem 19514,1; getitem 19521,1; },{},{}
 16975,Singing_Bird_Box,Singing Bird Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 19516,1; },{},{}
@@ -8436,15 +8453,15 @@
 18506,Hattah_Black,Hattah Black,4,12000,,4000,,2,,1,0xFFFFFFFF,63,2,769,,1,1,676,{},{},{}
 18507,Elven_Ears_,Elven Ears,4,20,,100,,0,,1,0xFFFFFFFE,63,2,512,,70,0,73,{},{},{}
 18508,Garuda_Hat,Garuda Hat,4,20,,100,,4,,1,0xFFFFFFFE,63,2,256,,30,1,677,{ bonus bLuk,5; bonus bMdef,3; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Wind,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubEle,Ele_Dark,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Ghost,5; bonus bHit,10; bonus bDelayRate,-5; if(getrefine()>=7) bonus2 bAddMonsterDropItem,522,100*(getrefine()-6); },{},{}
-18509,RWC2010_Indonesia,RWC2010 Indonesia,4,20,,100,,6,,1,0xFFFFFFFE,63,2,256,,15,1,678,{ bonus bLuk,5; },{},{}
+18509,RWC2010_Indonesia,RWC2010 Indonesia,4,20,,100,,6,,1,0xFFFFFFFE,63,2,256,,15,1,678,{ bonus bLuk,5; bonus2 bSubRace2,RC_Player,10; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bAddItemHealRate,501,100; bonus2 bAddItemHealRate,504,100; bonus bCritical,10; bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; },{},{}
 18510,Blood_Angel_Hair_Band,Blood Angel Hair Band,4,0,,0,,1,,0,0xFFFFFFFF,63,2,256,,60,0,679,{},{},{}
 18511,Blood_Angel_Wing_Ear,Blood Angel Wing Ear,4,0,,0,,1,,0,0xFFFFFFFF,63,2,512,,60,0,680,{},{},{}
 18512,Juho_Necktie,Juho Necktie,4,0,,0,,1,,1,0xFFFFFFFF,63,2,256,,20,1,443,{},{},{}
 18513,Shining_Sunflower,Shining Sunflower,4,20,,300,,0,,0,0xFFFFFFFE,63,2,256,,0,0,681,{ bonus bLuk,2; },{},{}
 18514,Para_Team_Hat2,Eden Team Hat II,4,0,,0,,5,,1,0xFFFFFFFF,63,2,256,,60,1,682,{ autobonus "{ bonus bBaseAtk,10; }",70,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,10; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; },{},{}
-18515,RTC_Winner_Hat,RTC Winner Hat,4,20,,100,,2,,0,0xFFFFFFFF,63,2,512,,1,0,683,{},{},{}
-18516,RTC_2nd_Winner_Hat,RTC 2nd Winner Hat,4,20,,100,,2,,0,0xFFFFFFFF,63,2,512,,1,0,684,{},{},{}
-18517,RTC_3rd_Winner_Hat,RTC 3rd Winner Hat,4,20,,100,,2,,0,0xFFFFFFFF,63,2,512,,1,0,685,{},{},{}
+18515,RTC_Winner_Hat,RTC Winner Hat,4,20,,100,,2,,0,0xFFFFFFFF,63,2,512,,1,0,683,{ bonus bIntravision,0; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; bonus2 bAddEff,Eff_Curse,50; },{},{}
+18516,RTC_2nd_Winner_Hat,RTC 2nd Winner Hat,4,20,,100,,2,,0,0xFFFFFFFF,63,2,512,,1,0,684,{ bonus bIntravision,0; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bAddEff,Eff_Curse,50; },{},{}
+18517,RTC_3rd_Winner_Hat,RTC 3rd Winner Hat,4,20,,100,,2,,0,0xFFFFFFFF,63,2,512,,1,0,685,{ bonus bIntravision,0; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bAddEff,Eff_Curse,50;},{},{}
 18518,Angelwing_Ear_S,Angel Wing Ears,4,20,,100,,3,,1,0xFFFFFFFF,63,2,512,,70,0,158,{ bonus bStr,1; },{},{}
 18519,Devilwing_Ear_S,Evil Wing Ears,4,20,,100,,3,,1,0xFFFFFFFF,63,2,512,,70,0,152,{ bonus bStr,1; },{},{}
 18520,Jaty_C,Jaty Crown,4,20,,100,,1,,0,0xFFFFFFFF,63,2,256,,1,1,686,{ bonus2 bSubRace,RC_Plant,5; bonus2 bSubRace,RC_Brute,5; bonus2 bAddRace,RC_Plant,5; bonus2 bAddRace,RC_Brute,5; },{},{}
@@ -8463,7 +8480,7 @@
 18533,Honeybee_Hat,Honey Bee Hat,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,50,1,709,{ bonus bMdef,3; bonus2 bAddRace,RC_Insect,5; bonus2 bMagicAddRace,RC_Insect,5; bonus2 bSubRace,RC_Insect,5; bonus3 bAddMonsterDropItem,518,RC_Insect,2; },{},{}
 18534,Fancy_Phantom_Mask,Fancy Phantom Mask,4,20,,1000,,5,,1,0xFFFFFFFF,63,2,768,,20,1,710,{ bonus bStr,1; bonus2 bAddClass,Class_All,5; bonus bDelayRate,-1; bonus bMaxHP,getrefine()*100; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillAtk,"NJ_ZENYNAGE",20; },{},{}
 18535,Pumpkin_Hat_2010,Pumpkin Hat 2010,4,20,,200,,0,,0,0xFFFFFFFF,63,2,256,,0,1,206,{},{},{}
-18536,Foxtail,Foxtail,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,711,{},{},{}
+18536,Foxtail,Foxtail,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,711,{ bonus bMatk,10; },{},{}
 18537,Malangdo_Hat,Malangdo Hat,4,20,,100,,5,,1,0xFFFFFFFF,63,2,256,,0,1,726,{ bonus bFlee,6; },{},{}
 18538,Devil_Whisper,Spirit Whispers,4,20,,300,,3,,0,0xFFFFFFFF,63,2,512,,0,0,712,{ bonus bUnbreakableHelm,0; bonus bMdef,3; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400; },{},{}
 18539,Skull_Cap,Skull Cap,4,40,,200,,5,,1,0xFFFFFFFF,63,2,256,,10,1,713,{ bonus bMatkRate,2; if(getrefine() >= 5) { bonus bMatkRate,3; } if(getrefine() >= 7) { bonus bMatkRate,3; } },{},{}
@@ -8477,33 +8494,33 @@
 18547,Campus_Festival,Campus Festival,4,20,,100,,0,,0,0xFFFFFFFF,63,2,256,,0,1,721,{},{},{}
 18548,Tiny_Hat,Tiny Hat,4,20,,30,,0,,0,0xFFFFFFFF,63,2,256,,0,1,722,{ bonus bInt,1; bonus bAgi,1; },{},{}
 18549,Nabi_Hair_Pin,Nabi Hair Pin,4,20,,200,,3,,1,0xFFFFFFFF,63,2,256,,20,1,723,{ bonus bInt,1; bonus bAgi,1; bonus bMdef,3; bonus2 bAddRace,RC_Plant,5; bonus2 bMagicAddRace,RC_Plant,5; bonus2 bSubRace,RC_Plant,5; bonus3 bAddMonsterDropItem,709,RC_Plant,30; },{},{}
-18550,Asgard_Blessing,Asgard Blessing,4,20,,300,,3,,1,0xFFFFFFFF,63,2,256,,30,1,724,{ bonus bAllStats,2; },{},{}
+18550,Asgard_Blessing,Asgard Blessing,4,20,,300,,3,,1,0xFFFFFFFF,63,2,256,,30,1,724,{ bonus bAllStats,2; bonus2 bSubEle,Ele_All,5; bonus2 bHPRegenRate,(MaxHp/100),10000; },{},{}
 18551,Galaxy_Circlet,Galaxy Circlet,4,20,,1000,,5,,1,0xFFFFFFFF,63,2,256,,50,1,725,{ bonus bMdef,5; },{},{}
 18552,Proba_Angel_Blessing,Proba Angel Blessing,4,20,,1200,,0,,1,0xFFFFFFFF,63,2,256,,10,1,444,{ bonus bLuk,2; },{},{}
-18553,Mini_Tree,Mini Tree,4,20,,50,,5,,0,0xFFFFFFFF,63,2,256,,0,1,727,{},{},{}
+18553,Mini_Tree,Mini Tree,4,20,,50,,5,,0,0xFFFFFFFF,63,2,256,,0,1,727,{ bonus2 bResEff,Eff_Stun,20; bonus2 bResEff,Eff_Curse,20; bonus2 bResEff,Eff_Blind,20; bonus2 bResEff,Eff_Confusion,20; bonus2 bAddMonsterDropItem,529,300; bonus2 bAddMonsterDropItem,529,644; },{},{}
 18554,King_Prawn_Hat,King Prawn Hat,4,20,,1000,,8,,0,0xFFFFFFFF,63,2,256,,0,0,728,{ bonus2 bAddItemHealRate,IG_Fish,100; },{},{}
-18555,General_Helmet,General Helmet,4,20,,200,,3,,1,0xFFFFFFFF,63,2,256,,10,1,729,{ bonus bMdef,3; },{},{}
-18556,Angel_Helmet,Angel Helmet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,512,,0,0,3,{},{},{}
-18557,Devil_Helmet,Devil Helmet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,512,,0,0,12,{},{},{}
-18558,Sinsuncho_Hat,Sinsuncho Hat,4,20,,1000,,0,,0,0xFFFFFFFF,63,2,256,,10,0,730,{},{},{}
+18555,General_Helmet,General Helmet,4,20,,200,,3,,1,0xFFFFFFFF,63,2,256,,10,1,729,{ bonus bMdef,3; bonus2 bAddRace,RC_Dragon,5; bonus2 bMagicAddRace,RC_Dragon,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAddMonsterDropItem,7444,RC_Dragon,2; },{},{}
+18556,Angel_Helmet,Angel Helmet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,512,,0,0,3,{ bonus3 bAddMonsterIdDropItem,6464,2220,310; },{},{}
+18557,Devil_Helmet,Devil Helmet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,512,,0,0,12,{ bonus3 bAddMonsterIdDropItem,6345,1812,310; },{},{}
+18558,Sinsuncho_Hat,Sinsuncho Hat,4,20,,1000,,0,,0,0xFFFFFFFF,63,2,256,,10,0,730,{ bonus2 bExpAddRace,RC_Plant,5; bonus2 bSubRace,RC_Plant,-10; },{},{}
 18559,Fafnir_Skin,Fafnir Skin,4,20,,100,,3,,0,0xFFFFFFFF,63,2,512,,50,0,152,{ bonus bCritical,3; bonus bHPrecovRate,-100; },{},{}
 18560,Fafnir_Mask,Fafnir Mask,4,20,,300,,2,,0,0xFFFFFFFF,63,2,1,,50,0,180,{ bonus bCritical,2; },{},{}
 18561,B_Feather_Beret,B Feather Beret,4,20,,300,,5,,1,0xFFFFFFFF,63,2,256,,40,1,731,{ bonus bVit,2; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
 18562,Bone_Hat,Bone Hat,4,20,,200,,3,,1,0xFFFFFFFF,63,2,256,,10,1,732,{ bonus bMdef,3; },{},{}
-18563,Heart_Wing_Hairband,Heart Wing Hairband,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,50,1,733,{},{},{}
+18563,Heart_Wing_Hairband,Heart Wing Hairband,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,50,1,733,{ bonus bUseSPrate,-10; bonus bDelayrate,-5; bonus bUseSPrate,getrefine(); bonus bDelayrate,getrefine(); },{},{}
 18564,Love_Piece,Love Piece,4,20,,200,,0,,0,0xFFFFFFFF,63,2,1,,50,0,734,{},{},{}
-18565,Leprechaun_Hat,Leprechaun Hat,4,20,,300,,8,,1,0xFFFFFFFF,63,2,256,,40,0,735,{ bonus bStr,1; bonus bInt,1; bonus bMdef,4; },{},{}
-18566,Nut_Donut_In_Mouth,Nut Donut In Mouth,4,20,,0,,1,,0,0xFFFFFFFF,63,2,1,,0,0,736,{},{},{}
+18565,Leprechaun_Hat,Leprechaun Hat,4,20,,300,,8,,1,0xFFFFFFFF,63,2,256,,40,0,735,{ bonus bStr,1; bonus bInt,1; bonus bMdef,4; if(getrefine()>6){ bonus2 bAddMonsterDropItem,12135,50; } },{},{}
+18566,Nut_Donut_In_Mouth,Nut Donut In Mouth,4,20,,0,,1,,0,0xFFFFFFFF,63,2,1,,0,0,736,{ bonus bBaseAtk,5; bonus bbMatk,5; },{},{}
 18567,Stretched_Nose,Stretched Nose,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,737,{},{},{}
 18568,Humming_Bird,Humming Bird,4,20,,100,,3,,0,0xFFFFFFFF,63,2,256,,10,0,702,{ bonus bMdef,6; },{},{}
 18569,Soft_Sheep_Hat,Soft Sheep Hat,4,20,,1000,,0,,0,0xFFFFFFFF,63,2,256,,10,0,738,{},{},{}
 18570,Ancient_Gold_Ornament,Ancient Gold Ornament,4,20,,400,,7,,1,0xFFFFFFFE,63,2,256,,100,1,739,{ if(BaseLevel >= 150) { bonus bAllStats,2; } if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief){ bonus2 bAddClass,Class_All,8; } if(BaseClass==Job_Mage||BaseClass==Job_Acolyte){ bonus bMatk,8; } if(BaseClass==Job_Archer){ bonus bDex,3; bonus bLongAtkRate,10; } },{},{}
-18571,Lucky_Hat,Lucky Hat,4,20,,1000,,0,,0,0xFFFFFFFF,63,2,256,,0,0,740,{},{},{}
-18572,Korean_Judge_Hat,Korean Judge Hat,4,20,,300,,2,,1,0xFFFFFFFF,63,2,256,,0,1,377,{ bonus bMdef,2; },{},{}
-18573,White_Feather,White Feather,4,20,,500,,2,,1,0xFFFFFFFF,63,2,256,,30,1,741,{},{},{}
-18574,Lord_of_Death,Lord of Death,4,20,,1000,,10,,1,0xFFFFFFFF,63,2,256,,70,1,742,{ bonus bMdef,5; },{},{}
+18571,Lucky_Hat,Lucky Hat,4,20,,1000,,0,,0,0xFFFFFFFF,63,2,256,,0,0,740,{ bonus2 bExpAddRace,RC_All,3; },{},{}
+18572,Korean_Judge_Hat,Korean Judge Hat,4,20,,300,,2,,1,0xFFFFFFFF,63,2,256,,0,1,377,{ bonus bMdef,2; bonus bVariableCastrate,-6;bonus bAspdRate,6;if(getrefine()>6){bonus2 bSubRace,RC_DemiHuman,2;bonus2 bSubRace,RC_Player,2;}if(BaseClass==Job_Swordman || BaseClass==Job_Merchant || BaseClass==Job_Thief || Class==Job_Taekwon || Class==Job_Star_Gladiator || Class==Job_Star_Gladiator2 || Class==Job_Monk || Class==Job_Champion || Class==Job_Sura || Class==Job_Sura_T) bonus2 bAddClass,Class_All,(getrefine()/2);if(BaseClass==Job_Mage || BaseClass==Job_Acolyte || Class==Job_Ninja || Class==Job_Soul_Linker) bonus bMatkRate,(getrefine()/2);if(BaseClass==Job_Archer || Class==Job_Gunslinger) bonus bBaseAtk,getrefine(); },{},{}
+18573,White_Feather,White Feather,4,20,,500,,2,,1,0xFFFFFFFF,63,2,256,,30,1,741,{ if(getrefine()<5){bonus bHit,20;bonus bMaxHPrate,-10;}else if(getrefine()<7){bonus bHit,10;}else if(getrefine()<9){bonus bHit,7;bonus bMaxHPrate,3;}else{bonus bHit,4;bonus bMaxHPrate,4;} },{},{}
+18574,Lord_of_Death,Lord of Death,4,20,,1000,,10,,1,0xFFFFFFFF,63,2,256,,70,1,742,{ bonus bMdef,5; bonus2 bAddClass,Class_Normal,(10+((getrefine()>4)?getrefine()-4:0)); bonus2 bSubClass,Class_Normal,-5; },{},{}
 18575,Wunderkammer,Wunderkammer,4,20,,500,,10,,1,0xFFFFFFFF,63,2,769,,20,0,743,{ bonus bMdef,10; },{},{}
-18576,YinYang_Earring,YinYang Earring,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,50,0,744,{},{},{}
+18576,YinYang_Earring,YinYang Earring,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,50,0,744,{ bonus2 bSkillAtk,"MO_CHAINCOMBO",10; bonus2 bSkillAtk,"MO_TRIPLEATTACK",5; bonus2 bSkillAtk,"MO_COMBOFINISH",5; bonus2 bSkillUseSP,"MO_CHAINCOMBO",1; bonus2 bSkillUseSP,"MO_COMBOFINISH",1; },{},{}
 18577,24_Bolt,24 Bolt,4,20,,200,,0,,0,0xFFFFFFFF,63,2,512,,10,0,696,{},{},{}
 18578,Helm_Of_Valor,Helm Of Valor,4,0,,0,,4,,0,0xFFFFFFFF,63,2,256,,0,0,258,{},{},{}
 18579,9th_Anni_Hat,9th Anni Hat,4,0,,90,,0,,0,0xFFFFFFFF,63,2,256,,0,1,745,{ bonus bMdef,9; },{},{}
@@ -8729,7 +8746,11 @@
 18879,Angry_Scorpion_Hat,Angry Scorpion Hat,4,10,,100,,5,,1,0xFFFFFFFF,63,2,256,,0,1,995,{ bonus bMdef,5; },{},{}
 18885,Jejecap,Jejecap,4,0,,100,,8,,0,0xFFFFFFFF,63,2,256,,70,1,1011,{ bonus bStr,2; bonus bInt,3; },{},{}
 18887,Aqua_Bunny_Band,Aqua Bunny Band,4,0,,100,,2,,1,0xFFFFFFFF,63,2,256,,0,1,1012,{ bonus bVit,3; bonus bMdef,5; },{},{}
+//
 18936,Golden_Fish_In_Mouth,Golden Fish In Mouth,4,10,,10,,1,,0,0xFFFFFFFF,63,2,1,,1,0,1081,{ bonus bAllStats,2; bonus bBaseAtk,10; bonus bMatk,10; bonus2 bExpAddRace,RC_Fish,2; bonus2 bSubRace,RC_Fish,2; },{},{}
+//
+18987,RWC13_Jormungandr_Hat,RWC13 Jormungandr Hat,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1149,{ bonus bVariableCastrate,-5; bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; if(getrefine()>6){ bonus2 bAddItemHealRate,11596,20; bonus bAspd,1; } if(getrefine()>9){ bonus bVariableCastrate,-5; bonus bDelayrate,-5; } bonus2 bAddItemHealRate,11596,150; },{ sc_end SC_SpeedUp0; },{}
+//
 // Costume System
 19500,T_Mr_Smile,T Mr Smile,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,0,0,65,{ bonus bStr,2; },{},{}
 19501,T_Spinx_Helm,T Spinx Helm,4,0,,0,,0,,1,0xFFFFFFFF,63,2,5120,,0,0,137,{},{},{}
@@ -8787,31 +8808,61 @@
 19553,C_Assassin_Mask_,Costume Assassin Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,4096,,100,0,180,{ bonus bUnbreakableHelm,0; },{},{}
 19573,C_Heart_Wing_Hairband,Costume Heart Wing Hairband,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,733,{},{},{}
 19574,C_Lord_of_Death,Costume Lord of Death,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,0,1,742,{ bonus bUnbreakableHelm,0; },{},{} 
+19576,C_Tare_Pope,Costume Tare Pope,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,817,{},{},{}
+19585,C_Feather_Beret,Costume Feather Beret,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,224,{},{},{}
 19587,C_King_Poring_Hat,Costume King Poring Hat,4,0,,100,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,905,{ bonus bUnbreakableHelm,0; },{},{}
-19589,C_Fallen_Angel_Lost_J,C Fallen Angel Lost J,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,907,{},{},{}
+19588,C_Cat_Hat_J,Costume Cat Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,182,{ bonus bAllStats,3; bonus2 bExpAddClass,Class_All,30; },{},{}
+19589,C_Fallen_Angel_Lost_J,Costume Fallen Angel Lost,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,907,{},{},{}
+19590,C_Twin_Maiden_Ribbon_J,Maiden's Twin Ribbon,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,239,{},{},{}
+19603,C_Invisible_Sunglasses,Costume Invisible Sunglasses,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,0,{},{},{}
+19607,C_Love_Chick_Hat,Costume Love Chick Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,500,{},{},{}
 19617,C_Puppy_Headband,Costume Puppy Headband,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,199,{},{},{}
-19590,C_Maiden's_Twin_Ribbon,Maiden's Twin Ribbon,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,239,{},{},{}
 19618,C_Kitsune_Mask,Costume Kitsune Mask,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,153,{},{},{}
 19619,C_Corsair,Costume Corsair,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,0,0,105,{ bonus bVit,1; },{},{}
 19620,C_Dectective_Hat,Costume Detective Hat,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,189,{},{},{}
-19621,C_Evil_Wing_Ears,Costume Evil Wing Ear,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,152,{},{},{}
+19621,C_Ear_Of_Devils_Wing,Costume Evil Wing Ear,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,152,{},{},{}
 19622,C_Crescent_Hairpin,Costume Crescent Hairpin,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,132,{},{},{}
 19623,C_Bijofnil_Wings,Costume Bijofnil Wings,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,477,{},{},{}
-19624,C_Blank_Eyes,Costume Blank Eyes,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,185,{},{},{}
+19624,C_Round_Eyes,Costume Blank Eyes,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,185,{},{},{}
 19625,C_Bunny_Band,Costume Bunny Band,4,0,,0,,,,,0xFFFFFFFF,63,2,1024,,,,15,{},{},{}
+19629,C_Tiara,Costume Tiara,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,19,{},{},{}
+19643,C_Whikebain_Ears,Costume Wickebine Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,368,{},{},{}
+19649,C_White_Baby_Cat_Ears,Costume White Baby Cat Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,926,{},{},{}
 19650,C_Rainbow_Feather_Deco,Costume Rainbow Feather Deco,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,934,{},{},{}
-19655,C_Tiraya_Bonnet,C Tiraya Bonnet,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,398,{},{},{}
+19655,C_Tiraya_Bonnet,Costume Tiraya Bonnet,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,398,{},{},{}
 19656,C_Wandering_Minstrel_Hat,Wandering Minstrel Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,240,{},{},{}
+19661,C_Sweet_Bonnet,Costume Sweet Bonnet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,938,{},{},{}
+19662,C_Magician_Hat,Costume Magician Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,130,{},{},{}
+19666,C_Cookie_Hat,Costume Cookie Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,217,{ bonus2 bAddItemHealRate,513,1100; },{},{}
+19676,C_Rainbow_Poring_Hat,Costume Rainbow Poring Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,900,{},{},{}
+19678,C_Bell_Ribbon,Costume Bell Ribbon,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,388,{},{},{}
+19685,C_ShineSantaPoring,Costume Shining Santa Poring,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,961,{},{},{}
 19707,C_Polar_Bear_Cap,Costume Polar Bear Cap,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,966,{ bonus bUnbreakableHelm,0; },{},{}
+19716,C_Alice_Doll,Costume Alice Doll,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,208,{},{},{}
 19730,C_Snake_Hat,C Snake Hat,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,986,{},{},{}
+19733,C_Panda_Cap,Costume Panda Cap,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,115,{ bonus bAllStats,1; bonus2 bExpAddClass,Class_All,10; },{},{}
 19746,C_Executioner_Hood,Executioner Hood,4,20,,0,,0,,0,0xFFFFFFFF,63,2,2048,,0,0,326,{},{},{}
+19767,C_Home_Cherry_Blossom,Costume Home Cherry Blossom,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,602,{},{},{}
+19768,C_Sakura_Coronet,Costume Sakura Coronet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,645,{},{},{}
+19772,C_Honeybee_Hat,Costume Honeybee Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,709,{},{},{}
 19775,C_Dokebi_Hat,C Dokebi Hat,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,307,{},{},{}
 19777,C_Shiny_Small_Star,Shiny Small Star,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1005,{},{},{}
+19778,C_King_Berry,Costume King Berry,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,968,{},{},{}
+19779,C_Persika,Costume Persika,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,659,{ bonus bAllStats,1; bonus2 bExpAddClass,Class_All,10; },{},{}
 19780,C_Knit_Rabbit_Ears,Costume Knit Rabbit Ears,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,867,{ bonus bMaxHPrate,3; bonus bMaxSPrate,3; },{},{}
 19821,C_Hyegun_hat,C Yao Jun,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,375,{},{},{}
 19826,C_Ice_Wing_Ear,C Ice Wing Ear,4,20,,10,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,584,{},{},{}
 19829,C_Straw_Hat,C Straw Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,146,{},{},{}
 19830,C_Sunglasses,Costume Sunglasses,4,10,,0,,,,,0xFFFFFFFF,63,2,2048,,1,,12,{},{},{}
+19831,C_Filir_Hat,Costume Filir Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,408,{},{},{}
+19832,C_Poring_Hat,Costume Poring Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,120,{},{},{}
+19833,C_Fillet,Costume Fillet,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,34,{},{},{}
+19834,C_Baseball_Cap,Costume Baseball Cap,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,216,{},{},{}
+19835,C_Lif_Doll_Hat,Costume Lif Doll Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,297,{},{},{}
+19836,C_L_Magestic_Goat,Costume Majestic Goat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,380,{},{},{}
+19839,C_Vanilmirth_Hat,Costume Vanilmirth Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,317,{},{},{}
+19841,C_Dragonhelm_Copper,Costume Dragon Helm Copper,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,454,{},{},{}
+19842,C_Puppy_Hat,Costume Puppy Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,234,{},{},{}
 19843,C_Cat_Hairband,Costume Kitty Band,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,2,{},{},{}
 19844,C_Turban,Costume Turban,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,7,{},{},{}
 19845,C_Hair_Protector,Costume Bao Bao,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,127,{},{},{}
@@ -8821,9 +8872,11 @@
 19849,C_Munak_Turban,Costume Munak Hat,4,20,,10,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,51,{},{},{}
 19850,C_Bongun_Hat,Costume Bongun Hat,4,20,,10,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,139,{},{},{}
 19851,C_Brown_Bear_Cap,Costume Teddybear Hat,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,143,{},{},{}
+19852,C_Galapago_Cap,Costume Galapago Cap,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,192,{},{},{}
 19853,C_Filir Wings,C Filir Wings,4,20,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,595,{ bonus2 bExpAddClass,Class_All,5; },{},{}
-19856,Costume_Snow_Cone_Hat,Costume Snow Cone Hat,4,10,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1080,{ bonus2 bAddEle,Ele_Fire,5; bonus2 bMagicAddEle,Ele_Fire,5; bonus2 bAddMonsterDropItem,11589,5; },{},{}
-19857,Costume_Crayfish_Hat,Costume Crayfish Hat,4,10,,10,,0,,,0xFFFFFFFF,63,2,1024,,1,0,728,{},{},{}
+19854,C_Ear_Of_Black_Cat_,Costume Black Cat Ears,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,141,{},{},{}
+19856,C_Iceflake_Hat,Costume Snow Cone Hat,4,10,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1080,{ bonus2 bAddEle,Ele_Fire,5; bonus2 bMagicAddEle,Ele_Fire,5; bonus2 bAddMonsterDropItem,11589,5; },{},{}
+19857,C_King_Prawn_Hat,Costume Crayfish Hat,4,10,,10,,0,,,0xFFFFFFFF,63,2,1024,,1,0,728,{},{},{}
 19859,C_Flying_Angel,Flying Angel,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,264,{},{},{}
 19860,C_School_Criatura_Hat,School Criatura Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,872,{},{},{}
 19861,C_Heart_Hairpin,Heart Hairpin,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,126,{},{},{}
@@ -8837,13 +8890,14 @@
 19887,C_Cyclops_Glasses,Costume Cyclops Glasses,4,10,,0,,,,,0xFFFFFFFF,63,2,2048,,1,,23,{},{},{}
 19888,C_Glasses,Costume Glasses,4,10,,0,,,,,0xFFFFFFFF,63,2,2048,,1,,3,{},{},{}
 //
-19903,Costume_Witch's_Hat,Costume Witch's Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,717,{ bonus bVariableCastrate,-10; },{},{}
-19917,Costume_Pumpkin_Hat,Costume Pumpkin Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,691,{ bonus bSpeedRate,10; },{},{}
-19918,Costume_Lude_Mask,Costume Lude Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,802,{ bonus bAddItemHealRate,20; },{},{}
-19919,Costume_Quve_Mask,Costume Quve Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,472,{ bonus bAspdRate,10; },{},{}
-19920,Costume_Evolved_Whisper_Mask,Costume Evolved Whisper Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,458,{ bonus bFlee,20; },{},{}
+19903,C_Witchs_Hat,Costume Witch's Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,717,{ bonus bVariableCastrate,-10; },{},{}
+19917,C_Gloomy_Pumpkin_Hat,Costume Pumpkin Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,691,{ bonus bSpeedRate,25; },{},{}
+19918,C_Lude_Mask,Costume Lude Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,802,{ bonus bAddItemHealRate,20; },{},{}
+19919,C_Cube_Mask_,Costume Quve Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,472,{ bonus bAspdRate,10; },{},{}
+19920,C_Adv_Whisper_Mask,Costume Evolved Whisper Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,458,{ bonus bFlee,20; },{},{}
 19922,Costume_Noahs_Hat,Costume Noahs Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,458,{ /* TODO */ },{},{}
 19938,Costume_Love_Rabbit_Hood,Costume Love Rabbit Hood,4,0,,0,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,549,{},{},{}
+19976,C_Cat_Santa_Hat,Cat Santa Hat,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1144,{ bonus bAspdRate,10; bonus bSpeedRate,25; },{},{}
 //
 20500,T_Archangel_Wing,Archangel Wing,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,1,{ bonus bUnbreakableHelm,0; },{},{}
 20600,Fantastic_Aura,Fantastic Aura,4,0,,0,,0,,0,0xFFFFFFFF,63,2,16384,,1,0,0,{ bonus bUnbreakableHelm,0; },{},{}
@@ -8869,9 +8923,9 @@
 22043,AGI_Complement,AGI Complement,4,10,,350,,25,,,0x00000400,56,2,64,,100,1,,{ bonus bAspdRate,5+(getrefine()/4); },{},{}
 22044,Reinforced_Parts_Booster,Reinforced Parts - Booster,4,10,,1000,,23,,,0x00000400,56,2,64,,100,1,,{ bonus2 bSkillUseSP,"NC_HOVERING",15; if(getrefine()>=7){bonus2 bSkillUseSP,"NC_HOVERING",-20;} },{},{}
 22045,Beach_Sandals,Summer Sandals,4,10,,200,,5,,0,0xFFFFFFFF,63,2,64,,0,1,0,{ bonus bFlee,5; bonus3 bAutoSpellWhenHit,"AL_INCAGI",10,300; },{},{}
-22514,Candy_Holder,Candy Holder,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
+22514,Candy_Holder,Candy Holder,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Candy_Holder,1); getrandgroupitem(IG_Candy_Holder,1); getrandgroupitem(IG_Candy_Holder,1); },{},{}
 22540,Runstone_Luxanima,Lux Anima Runestone,11,2,,100,,,,,0xFFFFFFFF,56,2,,,,,,{ itemskill "RK_LUXANIMA",1; },{},{}
-22558,Lucky_Bag,Lucky Bag,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
+22558,Lucky_Bag,Lucky Bag,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Lucky_Bag,1); },{},{}
 22559,Mock_Strawberry,Mock Strawberry,11,20,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 50,50; itemskill "SM_ENDURE",3; },{},{}
 22563,Lucky_Bag_Of_New_Era,Lucky Bag Of New Era,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ /* TODO */ },{},{}
 22566,Last_Years_Frost,Last Year's Frost,3,20,,0,,,,,,,,,,,,,{},{},{}
@@ -8897,13 +8951,12 @@
 22657,Honey_Songpyun,Honey_Songpyun,0,20,,200,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 20,0; },{},{}
 22659,Pig_Steamed_Ribs,Pig_Steamed_Ribs,0,20,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ bonus_script "{ bonus bAspdRate,5; bonus bUseSPrate,-2; }",180; },{},{}
 22658,Cow_Steamed_Ribs,Cow_Steamed_Ribs,0,20,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ bonus_script "{ bonus bVariableCastrate,5; bonus bUseSPrate,-3; }",180; },{},{}
-22669,HALLOWEEN_G_BOX,Halloween Box,2,0,,200,,,,,0xFFFFFFFF,63,2,,,,,,{ /* TODO */ },{},{}
+22669,HALLOWEEN_G_BOX,Halloween Box,2,0,,200,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_HALLOWEEN_G_BOX); },{},{}
 22670,DARK_INVITATION,Invitation of Darkness,2,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ set .@r,rand(1,3); if(.@r==1){ specialeffect2 EF_DEVIL; warp "niflheim",193,186; }else if(.@r==2){ heal -500,-1000; sc_start SC_Stun,3000,0; }else{ specialeffect2 EF_DEVIL; warp "niflheim",347,255; } },{},{}
 22676,Hangul_Day_Event_Box,Hangul Day Event Box,2,20,,0,,,,,0xFFFFFFFF,63,2,,,0,,,{ getitem 22675,10; getitem 607,9; },{},{}
 22675,Mysterious_Scroll,Mysterious Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_INTFOOD,3600000,30; },{},{}
-22669,Halloween_Witchs_Box,Halloween_Box,2,20,,0,,,,,0xFFFFFFFF,63,2,,,0,,,{ /* TODO */ },{},{}
-22685,Solo_Christmas_Gift,Solo Christmas Gift,2,0,,0,,,,,0xFFFFFFFF,63,2,,,0,,,{ /* TODO */ },{},{}
-22686,Solo_Cookie,Solo Cookie,0,0,,50,,,,,0xFFFFFFFF,63,2,,,0,,,{ percentheal 5,5; },{},{}
+22685,Solo_Christmas_Gift,Single Union Christmas Gift,2,0,,0,,,,,0xFFFFFFFF,63,2,,,0,,,{ getgroupitem(IG_Solo_Christmas_Gift); },{},{}
+22686,Solo_Cookie,Single Cookie,0,0,,50,,,,,0xFFFFFFFF,63,2,,,0,,,{ percentheal 5,5; },{},{}
 
 // Shadow Equip
 24018,Shadow_Physical_Earring,Shadow Physical Earring,12,10,,0,,0,,0,0xFFFFFFFF,63,2,3145728,,1,1,0,{ bonus bAspdRate,(getrefine()>=7)?2:1; },{},{}
@@ -8989,5 +9042,4 @@
 //unknown,Br_MerPackage,Br_MerPackage,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Br_MerPackage); },{},{}
 //unknown,Br_ThiefPackage,Br_ThiefPackage,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Br_ThiefPackage); },{},{}
 //unknown,Sakura_Scroll,Sakura_Scroll,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Sakura_Scroll); },{},{}
-//unknown,Ptotection_Seagod_Box,The Sea God's Call 1 Day Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Ptotection_Seagod_Box);*/ rentitem 6436,86400; },{},{}
 //unknown,Blue_Scroll,Blue_Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Blue_Scroll); },{},{}

+ 30 - 0
db/re/item_misc.txt

@@ -1220,3 +1220,33 @@
 70,545,1		// Condensed Red Potion
 70,546,1		// Condensed Yellow Potion
 70,547,1		// Condensed White Potion
+//Candy Holder
+IG_Candy_Holder,518,10 //Honey
+IG_Candy_Holder,529,20	//Candy
+IG_Candy_Holder,538,15	//Well_Baked_Cookie
+IG_Candy_Holder,539,10	//Piece_Of_Cake
+IG_Candy_Holder,580,20	//Bread
+IG_Candy_Holder,603,1	//Old_Blue_Box
+IG_Candy_Holder,607,1	//Yggdrasilberry
+IG_Candy_Holder,616,1	//Old_Card_Album
+IG_Candy_Holder,617,1	//Old_Violet_Box
+IG_Candy_Holder,641,1	//Contracts_In_Shadow
+IG_Candy_Holder,7460,10	//Niflheim_Ticket
+IG_Candy_Holder,11550,5	//Pumpkin_Cake
+IG_Candy_Holder,12192,5	//Pumpkin_Pie
+//Lucky Bag
+IG_Lucky_Bag,12018,8	//Fire_Cracker
+IG_Lucky_Bag,663,6	//Korea_Rice_Cake
+IG_Lucky_Bag,668,2	//Handsei
+IG_Lucky_Bag,7647,3	//Taiwan_Luk_Coin
+IG_Lucky_Bag,7649,1	//Big_Luk_Bookmark
+//Holy Egg 2
+IG_Holy_Egg_2,984,4	//Oridecon
+IG_Holy_Egg_2,985,10	//Elunium
+IG_Holy_Egg_2,547,30	//White_Slim_Potion
+IG_Holy_Egg_2,505,30	//Blue_Potion
+IG_Holy_Egg_2,607,3	//Yggdrasilberry
+IG_Holy_Egg_2,608,2	//Seed_Of_Yggdrasil
+IG_Holy_Egg_2,610,15	//Leaf_Of_Yggdrasil
+IG_Holy_Egg_2,616,5	//Old_Card_Album
+IG_Holy_Egg_2,5198,1	//Drooping_Bunny

+ 60 - 11
db/re/item_package.txt

@@ -108,7 +108,7 @@ IG_Solo_Gift_Basket,HandMade_Chocolate_,1,10,1
 
 IG_Couple_Event_Basket,Fire_Cracker_Love,1,10,1
 IG_Couple_Event_Basket,Fire_Cracker_Wday,1,10,1
-//IG_Couple_Event_Basket,Fire_Cracker_Vday,1,10,1
+IG_Couple_Event_Basket,14548,1,10,1
 IG_Couple_Event_Basket,Fire_Cracker_Bday,1,10,1
 IG_Couple_Event_Basket,Fire_Cracker_Xmas,1,10,1
 
@@ -183,11 +183,11 @@ IG_Pet_Egg_Scroll2,Aspersio_5_Scroll,200,2,1,0,0,1
 IG_Pet_Egg_Scroll2,Bubble_Gum,150,2,1,0,0,1
 IG_Pet_Egg_Scroll2,Red_Wizardry_Hat,10,1,1,0,0,1
 
-IG_Pet_Egg_Scroll_Box3,Pet_Egg_Scroll3,0,1,1,0,0,1
+IG_Pet_Egg_Scroll_Box3,Pet_Egg_Scroll3,0,1,0,0,0,1
 
-IG_Pet_Egg_Scroll_Box4,Pet_Egg_Scroll4,0,1,1,0,0,1
+IG_Pet_Egg_Scroll_Box4,Pet_Egg_Scroll4,0,1,0,0,0,1
 
-IG_Pet_Egg_Scroll_Box4,Pet_Egg_Scroll5,0,1,1,0,1
+IG_Pet_Egg_Scroll_Box4,Pet_Egg_Scroll5,0,1,0,0,0,1
 
 IG_Pet_Egg_Scroll3,Battle_Manual,100,2,1,0,0,1
 IG_Pet_Egg_Scroll3,Insurance,200,2,1,0,0,1
@@ -1275,11 +1275,11 @@ IG_Majestic_Devil_Scroll,Magic_Card_Album,10,1,1,0,0,1
 IG_Majestic_Devil_Scroll,Orleans_Glove,20,1,1,0,0,1
 IG_Majestic_Devil_Scroll,Majestic_Evil_Horn,1,1,1,0,0,1
 
-//IG_Life_Ribbon_Box,Life_Ribbon,0,1,0,0,60,1
+IG_Life_Ribbon_Box,5793,0,1,0,0,60,1
 
-//IG_Life_Ribbon_Box2,Life_Ribbon,0,1,0,0,120,1
+IG_Life_Ribbon_Box2,5793,0,1,0,0,120,1
 
-//IG_Life_Ribbon_Box3,Life_Ribbon,0,1,0,0,240,1
+IG_Life_Ribbon_Box3,5793,0,1,0,0,240,1
 
 IG_Magic_Candy_Box10,Magic_Candy,0,10,0,0,0,1
 
@@ -1940,6 +1940,7 @@ IG_Lucky_Egg_C2,Bogy_Horn,150,1,1,1,0,0
 IG_Lucky_Egg_C2,Flame_Sprits_Armor__,150,1,1,1,0,0
 IG_Lucky_Egg_C2,Jasper_Crest,150,1,1,1,0,0
 
+//Duplicated? But has different contents
 //IG_Lucky_Egg_C6,Yggdrasilberry_Box_,928,1,1,0,0,0
 //IG_Lucky_Egg_C6,Battle_Manual_Box,800,1,1,0,0,0
 //IG_Lucky_Egg_C6,Underripe_Yggseed,1000,10,1,0,0,0
@@ -2133,7 +2134,7 @@ IG_Lucky_Egg_C5,Ring_Of_Flame_Lord,50,1,1,1,0,0
 IG_Lucky_Egg_C5,Samambaia_Box,200,1,1,1,0,0
 IG_Lucky_Egg_C5,Ring_Of_Resonance,50,1,1,1,0,0
 
-//IG_Weather_Report_Box,Fine_Sun,0,1,0,0,0,0
+IG_Weather_Report_Box,19507,0,1,0,0,0,0 //Fine_Sun
 IG_Weather_Report_Box,Rainbow,0,1,0,0,0,0
 IG_Weather_Report_Box,Rain_Cloud,0,1,0,0,0,0
 IG_Weather_Report_Box,Lightning_Cloud,0,1,0,0,0,0
@@ -2205,6 +2206,7 @@ IG_Earth_Type_Scroll,Sealed_Lady_Tanee_Card,1,1,1,1,0,0
 IG_Earth_Type_Scroll,Silvervine_Fruit_Box10,1600,1,1,0,0,0
 IG_Earth_Type_Scroll,Diabolic_Scroll,1600,5,1,0,0,0
 
+//Duplicated?
 //IG_Earth_Type_Scroll,5745,150,1,1,1,0,0
 //IG_Earth_Type_Scroll,5744,150,1,1,1,0,0
 //IG_Earth_Type_Scroll,Virgo_Diadem,150,1,1,1,0,0
@@ -2224,7 +2226,7 @@ IG_Earth_Type_Scroll,Diabolic_Scroll,1600,5,1,0,0,0
 //IG_Earth_Type_Scroll,Hen_Set_Box,50,1,1,1,0,0
 //IG_Earth_Type_Scroll,Sealed_Knight_WS_Card,1,1,1,1,0,0
 //IG_Earth_Type_Scroll,Sealed_Lady_Tanee_Card,1,1,1,1,0,0
-//IG_Earth_Type_Scroll,Fruit_Of_Mastela_Box2,1600,1,1,0,0,0
+//IG_Earth_Type_Scroll,Fruit_Of_Mastela_Box2,1600,1,1,0,0,0 //The different only here
 //IG_Earth_Type_Scroll,Diabolic_Scroll,1600,5,1,0,0,0
 
 IG_Splash_Scroll,Songpyun_Box50,1200,1,1,0,0,0
@@ -2691,6 +2693,7 @@ IG_Tw_April_Scroll,Spiked_Scarf_Box,50,1,1,1,0,0
 IG_Tw_April_Scroll,Rainbow_Scarf_Box,50,1,1,1,0,0
 IG_Tw_April_Scroll,Fish_Head_Hat_Box,180,1,1,1,0,0
 
+//Duplicated?
 //IG_Tw_October_Scroll,Max_Weight_Up_Box,432,1,1,0,0,1
 //IG_Tw_October_Scroll,Token_Of_Siegfried_Box,1350,1,1,0,0,1
 //IG_Tw_October_Scroll,Int_Dish_Box,1350,1,1,0,0,1
@@ -2867,7 +2870,7 @@ IG_Egrade_Pocket,Egrade_Coin,200,2,2,0,0,0
 IG_Egrade_Pocket,Malang_Sp_Can,800,1,3,0,0,0
 IG_Egrade_Pocket,Egrade_Coin,200,1,3,0,0,0
 
-//IG_Ptotection_Seagod_Box,Ptotection_Seagod,0,1,0,0,1380,0
+IG_Ptotection_Seagod_Box,Ptotection_Seagod,0,1,0,0,1380,0
 
 IG_Hairtail_Box1,Hairtail,0,1,0,0,60,0
 
@@ -2912,7 +2915,7 @@ IG_Silvervine_Fruit_Box40,Malang_Sp_Can,0,120,0,0,0,0
 IG_Silvervine_Fruit_Box4,Silvervine,0,4,0,0,0,0
 IG_Silvervine_Fruit_Box4,Malang_Sp_Can,0,12,0,0,0,0
 
-//IG_Malang_Woe_Encard_Box,Ptotection_Seagod_Box,0,1,0,0,0,0
+IG_Malang_Woe_Encard_Box,Protection_Seagod_Box,0,1,0,0,0,0
 IG_Malang_Woe_Encard_Box,Octo_Hstick_Box,0,1,0,0,0,0
 
 IG_Xmas_Bless,Fire_Cracker_Xmas,0,10,0,0,0,1
@@ -3099,3 +3102,49 @@ IG_Yong_Kwang_Scroll,SLD_Garm_Card,5,1,1,1,0,0
 IG_Yong_Kwang_Scroll,Drosera_Hairpin,25,1,1,1,0,0
 IG_Yong_Kwang_Scroll,Sinsuncho_Hat,25,1,1,1,0,0
 IG_Yong_Kwang_Scroll,Detale_Card,1,1,1,1,0,0
+
+// 2013 iRO Events - incomplete
+IG_Solo_Christmas_Gift,C_Cat_Santa_Hat,1,1,1
+IG_Solo_Christmas_Gift,Old_Blue_Box,1,1,1
+IG_Solo_Christmas_Gift,Oh_Holy_Night,1,1,1
+IG_Solo_Christmas_Gift,Angeling_Potion,1,3,1
+IG_Solo_Christmas_Gift,Solo_Cookie,1,5,1
+IG_Solo_Christmas_Gift,Buche_De_Noel,1,5,1
+IG_Solo_Christmas_Gift,Event_Cake,1,5,1
+IG_Solo_Christmas_Gift,Vivid_Notation,1,5,1
+IG_HALLOWEEN_G_BOX,Immortal_Heart,1,30,1
+IG_HALLOWEEN_G_BOX,Starsand_Of_Witch,1,30,1
+IG_HALLOWEEN_G_BOX,Empty_Bottle,1,30,1
+IG_HALLOWEEN_G_BOX,Alchol,1,30,1
+IG_HALLOWEEN_G_BOX,Karvodailnirol,1,30,1
+IG_HALLOWEEN_G_BOX,Transparent_Cloth,1,30,1
+IG_HALLOWEEN_G_BOX,Stem,1,30,1
+IG_HALLOWEEN_G_BOX,Poison_Spore,1,30,1
+IG_HALLOWEEN_G_BOX,Speed_Up_Potion,1,5,1
+IG_HALLOWEEN_G_BOX,Chocolate,1,5,1
+IG_HALLOWEEN_G_BOX,Guarana_Candy,1,5,1
+IG_HALLOWEEN_G_BOX,Seed_Of_Yggdrasil,1,5,1
+IG_HALLOWEEN_G_BOX,Old_Blue_Box,1,1,1
+IG_HALLOWEEN_G_BOX,Old_Card_Album,1,1,1
+IG_HALLOWEEN_G_BOX,Old_Violet_Box,1,1,1
+
+// Based on available information - may be inaccurate
+IG_Sg_Weapon_Supply_Box,Velum_Arbalest,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Arc_Wand,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Bible,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Buster,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Claw,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Claymore,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_CrossBow,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Damascus,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Flail,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Glaive,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Encyclopedia,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Guillotine,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Jamadhar,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Katzbalger,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Scare,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Spear,1,1,1
+IG_Sg_Weapon_Supply_Box,Velum_Stunner,1,1,1
+IG_Sg_Weapon_Supply_Box,Siege_Arrow_A,1,1,1
+IG_Sg_Weapon_Supply_Box,Siege_Arrow_S,1,1,1

+ 2 - 0
db/re/item_trade.txt

@@ -2003,6 +2003,7 @@
 2826,65,100	// Dark Knight Belt
 2827,65,100	// Dark Knight Glove
 2843,507,100	// Gold Trickle
+6821,475,100	// Single Union Badge
 12786,459,100	// Character Position Change Coupon
 13049,65,100	// Lacma
 13052,499,100	// Tourist Dagger
@@ -2019,6 +2020,7 @@
 12779,473,100	// Galapago Scroll
 17338,457,100	// Ore Box V
 17339,457,100	// Ore Box V(10)
+22685,475,100	// Single Union Christmas Gift
 
 // Sealed Cards
 4485,457,100	// Sealed Gloom Under Night Card

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
db/re/job_basehpsp_db.txt


+ 18 - 18
db/re/job_db1.txt

@@ -32,9 +32,9 @@
 // Knight (Peco)
 13,	28000,150  ,500  ,300  ,440  ,530  ,490  ,560  ,590  ,690  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Crusader
-14,	28000,110  ,700  ,400  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+14,	28000,110  ,700  ,470  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Monk
-15,	26000,90   ,650  ,400  ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,640  ,2000 ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,620  ,490
+15,	26000,90   ,650  ,470  ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,640  ,2000 ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,620  ,490
 // Sage
 16,	24000,75   ,500  ,700  ,490  ,570  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,2000 ,2000 ,2000 ,2000 ,470  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,590
 // Rogue
@@ -46,7 +46,7 @@
 // Dancer
 20,	27000,75   ,300  ,600  ,400  ,530  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480  ,2000 ,2000 ,450  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470
 // Crusader (Peco)
-21,	28000,110  ,700  ,400  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+21,	28000,110  ,700  ,470  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Wedding
 22,	20000,0    ,500  ,100  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
 // Super Novice
@@ -84,9 +84,9 @@
 // Lord Knight (Peco)
 4014,	28000,150  ,500  ,300  ,440  ,530  ,490  ,560  ,590  ,690  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Paladin
-4015,	28000,110  ,700  ,400  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+4015,	28000,110  ,700  ,470  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Champion
-4016,	26000,90   ,650  ,400  ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,640  ,2000 ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,620  ,490
+4016,	26000,90   ,650  ,470  ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,640  ,2000 ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,620  ,490
 // Professor
 4017,	24000,75   ,500  ,700  ,490  ,570  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,2000 ,2000 ,2000 ,2000 ,470  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,590
 // Stalker
@@ -98,7 +98,7 @@
 // Gypsy
 4021,	27000,75   ,300  ,600  ,440  ,570  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520  ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
 // Paladin (Peco)
-4022,	28000,110  ,700  ,400  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+4022,	28000,110  ,700  ,470  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Baby Novice
 4023,	20000,0    ,500  ,100  ,440  ,590  ,610  ,2000 ,2000 ,2000 ,540  ,2000 ,540  ,540  ,690  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,690  ,540
 // Baby Swordman
@@ -142,14 +142,14 @@
 // Baby Dancer
 4043,	27000,75   ,300  ,600  ,400  ,530  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480  ,2000 ,2000 ,450  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470
 // Baby Crusader (Peco)
-4044,	28000,110  ,700  ,400  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+4044,	28000,110  ,700  ,470  ,440  ,520  ,470  ,590  ,570  ,560  ,540  ,590  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Baby Super Novice
 4045,	20000,0    ,500  ,100  ,440  ,590  ,610  ,2000 ,2000 ,2000 ,540  ,2000 ,540  ,540  ,690  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,690  ,540
 // Taekwon
 4046,	28000,70   ,500  ,200  ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
-// Star Knight
+// Star Gladiator
 4047,	28000,90   ,650  ,400  ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
-// Star Knight (flying)
+// Star Gladiator (flying)
 4048,	28000,90   ,650  ,400  ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
 // Soul Linker
 4049,	24000,75   ,500  ,900  ,540  ,440  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570  ,620
@@ -184,7 +184,7 @@
 // Guillotine Cross (Trans)
 4065,	32000,110  ,500  ,400  ,440  ,460  ,690  ,2000 ,2000 ,2000 ,840  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
 // Royal Guard (Regular)
-4066,	35000,110  ,700  ,400  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+4066,	35000,110  ,700  ,470  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Sorcerer (Regular)
 4067,	30000,75   ,500  ,700  ,440  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490  ,490
 // Minstrel (Regular)
@@ -192,13 +192,13 @@
 // Wanderer (Regular)
 4069,	32000,75   ,300  ,600  ,440  ,560  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
 // Sura (Regular)
-4070,	30000,90   ,650  ,400  ,420  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,520  ,2000 ,430  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,470
+4070,	30000,90   ,650  ,470  ,420  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,520  ,2000 ,430  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,470
 // Genetic (Regular)
 4071,	32000,90   ,500  ,400  ,440  ,540  ,480  ,2000 ,2000 ,2000 ,550  ,550  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480
 // Shadow Chaser (Regular)
 4072,	28000,85   ,500  ,500  ,440  ,470  ,510  ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Royal Guard (Trans)
-4073,	35000,110  ,700  ,400  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+4073,	35000,110  ,700  ,470  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Sorcerer (Trans)
 4074,	30000,75   ,500  ,700  ,440  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490  ,490
 // Minstrel (Trans)
@@ -206,7 +206,7 @@
 // Wanderer (Trans)
 4076,	32000,75   ,300  ,600  ,440  ,560  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
 // Sura (Trans)
-4077,	30000,90   ,650  ,400  ,420  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,520  ,2000 ,430  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,470
+4077,	30000,90   ,650  ,470  ,420  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,520  ,2000 ,430  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,470
 // Genetic (Trans)
 4078,	32000,90   ,500  ,400  ,440  ,540  ,480  ,2000 ,2000 ,2000 ,550  ,550  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480
 // Shadow Chaser (Trans)
@@ -216,9 +216,9 @@
 // Rune Knight (Dragon) (Trans)
 4081,	35000,150  ,500  ,300  ,440  ,540  ,560  ,590  ,620  ,560  ,620  ,640  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Royal Guard (Gryphon) (Regular)
-4082,	35000,110  ,700  ,400  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+4082,	35000,110  ,700  ,470  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Royal Guard (Gryphon) (Trans)
-4083,	35000,110  ,700  ,400  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+4083,	35000,110  ,700  ,470  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Ranger (Warg) (Regular)
 4084,	32000,85   ,500  ,400  ,440  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520
 // Ranger (Warg) (Trans)
@@ -240,7 +240,7 @@
 // Baby Guillotine Cross
 4101,	24000,110  ,500  ,400  ,440  ,460  ,690  ,2000 ,2000 ,2000 ,840  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
 // Baby Royal Guard
-4102,	28000,110  ,700  ,400  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+4102,	28000,110  ,700  ,470  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Baby Sorcerer
 4103,	24000,75   ,500  ,700  ,440  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490  ,490
 // Baby Minstrel
@@ -248,7 +248,7 @@
 // Baby Wanderer
 4105,	27000,75   ,300  ,600  ,440  ,560  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,2000 ,2000 ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
 // Baby Sura
-4106,	26000,90   ,650  ,400  ,420  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,520  ,2000 ,430  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,470
+4106,	26000,90   ,650  ,470  ,420  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470  ,470  ,520  ,2000 ,430  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540  ,470
 // Baby Genetic
 4107,	30000,90   ,500  ,400  ,440  ,540  ,480  ,2000 ,2000 ,2000 ,550  ,550  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480
 // Baby Shadow Chaser
@@ -256,7 +256,7 @@
 // Baby Rune Knight (Dragon)
 4109,	28000,150  ,500  ,300  ,440  ,540  ,560  ,590  ,620  ,560  ,620  ,640  ,490  ,490  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Baby Royal Guard (Gryphon)
-4110,	28000,110  ,700  ,400  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
+4110,	28000,110  ,700  ,470  ,440  ,510  ,490  ,530  ,540  ,540  ,520  ,560  ,480  ,480  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
 // Baby Ranger (Warg)
 4111,	27000,85   ,500  ,400  ,440  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520
 // Baby Mechanic (Mado)

+ 4 - 4
db/re/mob_db.txt

@@ -1475,7 +1475,7 @@
 2332,BUWAYA_GHOST,Fake Buwaya,Fake Buwaya,138,30000,1,0,0,1,1280,2532,481,78,201,248,174,112,371,57,10,12,0,3,81,0x37B5,100,1424,576,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 2333,BUWAYA_WEAK,Buwaya's Weakness,Buwaya's Weakness,138,20,1,0,0,1,0,1,100,78,0,0,0,0,0,0,10,12,0,3,81,0x60,2000,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 2334,G_WAKWAK,Wakwak,Wakwak,145,194830,1,0,0,1,1544,4715,24,104,101,154,104,184,151,71,10,12,0,6,47,0x83,100,424,576,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2335,MA_TREASURE,Treasure Chest,Treasure Chest,140,5,0,0,0,1,0,0,100,0,0,0,0,0,1199,0,10,12,0,0,26,0x120,0,0,0,0,0,0,0,0,0,0,0,6516,2000,6524,50,6499,2000,15051,1000,2169,100,969,2000,6499,10000,0,0,0,0,0,0
+2335,MA_TREASURE,Treasure Chest,Treasure Chest,140,5,0,0,0,1,0,0,100,0,0,0,0,0,1199,0,10,12,0,0,26,0x120,0,0,0,0,0,0,0,0,0,0,0,6516,2000,6523,50,6499,2000,15051,1000,2169,100,969,2000,6499,10000,0,0,0,0,0,0
 2336,DOMOVOI,Domovoi,Domovoi,38,898,1,135,152,1,63,74,40,0,20,11,34,20,19,10,10,12,0,2,22,0x83,200,800,1200,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 2337,HIDDEN_MOB,Hidden Mob,Hidden Mob,151,10000,200,0,0,7,0,1000,200,10,200,200,200,200,200,200,12,12,0,4,88,0x1C4,2000,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 2338,MD_MANANANGGAL,Bangungot Manananggal,Bangungot Manananggal,107,204511,1,0,0,1,801,904,64,31,75,85,45,71,75,46,10,12,1,6,47,0x3795,100,280,720,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
@@ -1528,8 +1528,8 @@
 2376,MOROCC_2_142,Incarnation of Morroc,Incarnation of Morroc,100,2000,1,0,0,1,381,464,81,5,121,86,71,65,113,44,10,12,1,6,67,0x83,150,576,648,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 2377,E_NOVUS_,Novus,Novus,1,12,1,0,0,1,50,100,1,1,1,10,1,10,30,5,10,12,0,9,20,0x83,100,252,816,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 2378,MER_ANTLER_SCARABA,Antler Scaraba,Antler Scaraba,136,30000,1,0,0,1,1418,1828,155,102,23,99,59,129,137,45,10,12,1,4,42,0x37B5,200,504,624,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2379,XMAS_SMOKEY_SOCK,Smokey Sock,Smokey Sock,10,10,1,0,0,1,70,81,1,0,1,1,16,5,100,100,10,12,0,2,22,0x181,200,1576,576,420,0,0,0,0,0,0,0,6535,3000,6535,3000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2380,XMAS_SMOKEY_GIFT,Smokey Gift,Smokey Gift,10,10,1,0,0,1,70,81,1,0,1,1,16,5,100,100,10,12,0,2,22,0x181,200,1576,576,420,0,0,0,0,0,0,0,7909,3000,7910,3000,7909,3000,7910,3000,0,0,0,0,0,0,0,0,0,0,0,0
+2379,XMAS_SMOKEY_SOCK,Smokey Sock,Smokey Sock,10,10,1,0,0,1,70,81,1,0,1,1,16,5,100,100,10,12,0,2,22,0x1C1,200,1576,576,420,0,0,0,0,0,0,0,7909,3000,7910,3000,6682,3000,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+2380,XMAS_SMOKEY_GIFT,Smokey Gift,Smokey Gift,10,10,1,0,0,1,70,81,1,0,1,1,16,5,100,100,10,12,0,2,22,0x1C1,200,1576,576,420,0,0,0,0,0,0,0,7909,3000,7910,3000,6682,3000,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
 // Monsters Waiting To Be Coded In
 //2381,E_VADON_X_S
@@ -1549,7 +1549,7 @@
 //2395,SEIREN
 //2396,POSEIDON
 //2397,KRAKEN_BABY
-//2398,LITTLE_PORING
+2398,LITTLE_PORING,Little Poring,Little Poring,1,40,1,18,10,1,8,9,2,5,6,1,1,0,6,5,10,12,0,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,909,9000,1202,100,938,1000,512,5000,507,1000,512,500,507,1000,0,0,0,0,4545,1
 //2399,E_MINI_DEMON
 //2400,E_DIABOLIC
 2401,G_PORING,Poring,Poring,1,60,1,0,0,1,8,9,2,5,6,1,1,0,6,5,10,12,1,3,21,0x83,400,1872,480,672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

+ 3 - 3
db/re/skill_cast_db.txt

@@ -1482,7 +1482,7 @@
 //-- WM_DOMINION_IMPULSE
 2417,0,1000,0,0,0,0,-1
 //-- WM_SEVERE_RAINSTORM
-2418,1500:2000:2500:3000:3500,1000,0,900:1500:2100:2700:3000,0,5000:5500:6000:6500:7000,500
+2418,1500:2000:2500:3000:3500,1000,0,3300,0,5000:5500:6000:6500:7000,500
 //-- WM_POEMOFNETHERWORLD
 2419,3000,0,0,9000:11000:13000:15000:17000,8000:10000:12000:14000:16000,0,-1
 //-- WM_VOICEOFSIREN
@@ -1594,7 +1594,7 @@
 //-- GN_CRAZYWEED_ATK
 2484,0,0,0,100,0,0,-1
 //-- GN_DEMONIC_FIRE
-2485,3000:3500:4000:4500:5000,500,0,10000:12000:14000:16000:18000,8000:16000:24000:32000:40000,5000,-1
+2485,3000:3500:4000:4500:5000,500,0,10000:0:16000:25000:0,8000:16000:24000:32000:40000,5000,-1
 //-- GN_FIRE_EXPANSION
 2486,2000,500,0,0,0,0,-1
 //-- GN_FIRE_EXPANSION_SMOKE_POWDER
@@ -1763,7 +1763,7 @@
 //-- HLIF_AVOID
 8002,0,35000,0,40000:35000:30000:25000:20000,0,0,-1
 //-- HLIF_CHANGE
-8004,0,600000:900000:1200000,0,60000:120000:180000,0,0,-1
+8004,0,600000:900000:1200000,0,60000:180000:300000,0,0,-1
 //-- HAMI_CASTLE
 8005,0,0,0,0,60000:70000:80000:90000:129000,0,-1
 //-- HAMI_DEFENCE

+ 57 - 57
db/re/skill_db.txt

@@ -36,7 +36,7 @@
 //    0x00400- usable only on party-members (and enemies if skill is offensive)
 //    0x00800- usable only on guild-mates (and enemies if skill is offensive)
 //    0x01000- disable usage on enemies (for non-offensive skills).
-//    0x02000- free
+//    0x02000- available skill for SC_AUTOSHADOWSPELL
 //    0x04000- chorus skill
 //    0x08000- spell that ignore bg reduction
 //    0x10000- spell that ignore gvg reduction
@@ -59,7 +59,7 @@
 //    0x0200- spell range affected by NJ_SHADOWJUMP
 //    0x0400- spell range affected by WL_RADIUS
 //    0x0800- spell range affected by RA_RESEARCHTRAP
-//    0x1000- free
+//    0x1000- Spell that does not affect user that has NC_HOVERING active
 //    0x2000- spell that can be using while riding warg
 //    0x4000- spell that can't be used while in mado
 // 17 Name
@@ -80,27 +80,27 @@
 // Mage
 9,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x20,		MG_SRECOVERY,Increase SP Recovery
 10,0,6,4,3,0x3,3,1,1,yes,0,0,0,magic,0,0x20,		MG_SIGHT,Sight
-11,9,6,1,8,0x6,1,10,1,yes,0,0,0,magic,0,0x20,		MG_NAPALMBEAT,Napalm Beat
+11,9,6,1,8,0x6,1,10,1,yes,0,0x2000,0,magic,0,0x20,		MG_NAPALMBEAT,Napalm Beat
 12,9,8,2,8,0x1,0,10,1,yes,0,0,0,magic,0,0x20,		MG_SAFETYWALL,Safety Wall
-13,9,8,1,8,0,0,10,1:1:2:2:3:3:4:4:5:5,yes,0,0,0,magic,0,0x20,		MG_SOULSTRIKE,Soul Strike
-14,9,8,1,1,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_COLDBOLT,Cold Bolt
-15,9,6,1,1,0,0,10,1,yes,0,0,0,magic,0,0x20,		MG_FROSTDIVER,Frost Diver
+13,9,8,1,8,0,0,10,1:1:2:2:3:3:4:4:5:5,yes,0,0x2000,0,magic,0,0x20,		MG_SOULSTRIKE,Soul Strike
+14,9,8,1,1,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20,	MG_COLDBOLT,Cold Bolt
+15,9,6,1,1,0,0,10,1,yes,0,0x2000,0,magic,0,0x20,		MG_FROSTDIVER,Frost Diver
 16,2,6,1,2,0x1,0,10,1,yes,0,0,0,magic,0,0x20,		MG_STONECURSE,Stone Curse
-17,9,6,1,3,0x2,2,10,1,yes,0,0,0,magic,0,0x20,		MG_FIREBALL,Fire Ball
-18,9,6,2,3,0,0,10,1,yes,0,0,3,magic,2,0x20,		MG_FIREWALL,Fire Wall
-19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_FIREBOLT,Fire Bolt
-20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_LIGHTNINGBOLT,Lightning Bolt
-21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	MG_THUNDERSTORM,Thunderstorm
+17,9,6,1,3,0x2,2,10,1,yes,0,0x2000,0,magic,0,0x20,		MG_FIREBALL,Fire Ball
+18,9,6,2,3,0,0,10,1,yes,0,0x2000,3,magic,2,0x20,		MG_FIREWALL,Fire Wall
+19,9,8,1,3,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20,	MG_FIREBOLT,Fire Bolt
+20,9,8,1,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20,	MG_LIGHTNINGBOLT,Lightning Bolt
+21,9,8,2,4,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x2000,0,magic,0,0x20,	MG_THUNDERSTORM,Thunderstorm
 
 //****
 // Acolyte
 22,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AL_DP,Divine Protection
 23,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		AL_DEMONBANE,Demon Bane
-24,0,6,4,6,0x3,2,1,1,yes,0,0,0,magic,0,0x20,		AL_RUWACH,Ruwach
+24,0,6,4,6,0x3,2,1,1,yes,0,0x0,0,magic,0,0x20,		AL_RUWACH,Ruwach
 25,9,6,2,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20,		AL_PNEUMA,Pneuma
 26,0,6,4,0,0x1,0,2,1,yes,0,0,0,magic,0,0x60,		AL_TELEPORT,Teleport
 27,9,6,2,0,0x1,0,4,1,yes,0,0,3,magic,0,0x20,		AL_WARP,Warp Portal
-28,9,6,16,6,0x21,0,10,1,yes,0,0,0,magic,0,0x20,	AL_HEAL,Heal
+28,9,6,16,6,0x21,0,10,1,yes,0,0x2000,0,magic,0,0x20,	AL_HEAL,Heal
 29,9,6,16,0,0x1,0,10,1,yes,0,0,0,magic,0,0x20,	AL_INCAGI,Increase AGI
 30,9,6,1,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0,		AL_DECAGI,Decrease AGI
 31,0,6,4,0,0x1,0,1,1,yes,0,0,0,magic,0,0x20,		AL_HOLYWATER,Aqua Benedicta
@@ -136,7 +136,7 @@
 52,-2,6,1,5,0,0,10,1,no,0,0,0,weapon,0,0x0,		TF_POISON,Envenom
 53,9,6,16,5,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		TF_DETOXIFY,Detoxify
 //
-54,9,6,16,6,0x1,0,4,1,yes,0,0,0,magic,0,0x20,		ALL_RESURRECTION,Resurrection
+54,9,6,16,6,0x1,0,4,1,yes,0,0x2000,0,magic,0,0x20,		ALL_RESURRECTION,Resurrection
 
 //****
 // Knight
@@ -165,24 +165,24 @@
 74,0,6,4,0,0x3,-1,5,1,yes,0,0,0,magic,0,0x20,		PR_MAGNIFICAT,Magnificat
 75,0,6,4,0,0x3,-1,5,1,yes,0,0,0,magic,0,0x0,		PR_GLORIA,Gloria
 76,5,6,1,0,0x1,0,10,0,yes,0,0,0,magic,0,0x20,	PR_LEXDIVINA,Lex Divina
-77,5,6,1,6,0x28,0,10,1,yes,0,0,0,magic,0,0x20,	PR_TURNUNDEAD,Turn Undead
+77,5,6,1,6,0x28,0,10,1,yes,0,0x0,0,magic,0,0x20,	PR_TURNUNDEAD,Turn Undead
 78,9,6,1,0,0x1,0,1,0,yes,0,0,0,magic,0,0x20,		PR_LEXAETERNA,Lex Aeterna
-79,9,8,2,6,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0,0,magic,0,0x20,	PR_MAGNUS,Magnus Exorcismus
+79,9,8,2,6,0,0,10,1:2:3:4:5:6:7:8:9:10,yes,0,0x0,0,magic,0,0x20,	PR_MAGNUS,Magnus Exorcismus
 
 //****
 // Wizard
-80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,3:4:5:6:7:8:9:10:11:12:12,yes,0,0x80,5,magic,0,0x0,	WZ_FIREPILLAR,Fire Pillar
-81,0,6,4,3,0,3,10,1,yes,0,0,0,magic,5,0x20,		WZ_SIGHTRASHER,Sightrasher
-83,9,8,2,3,0,3:3:3:3:3:3:3:3:3:3:14,10,1:1:2:2:3:3:4:4:5:5:15,yes,0,0,0,magic,0,0x20,	WZ_METEOR,Meteor Storm
-84,9,8,1,4,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0,0,magic,2:3:3:4:4:5:5:6:6:7,0x20,	WZ_JUPITEL,Jupitel Thunder
-85,9,8,2,4,0,0,10,-10,yes,0,0,0,magic,0,0x20,		WZ_VERMILION,Lord of Vermilion
-86,9,8,1,1,0,0,5,1,yes,0,0,0,magic,0,0x0,		WZ_WATERBALL,Water Ball
+80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,3:4:5:6:7:8:9:10:11:12:12,yes,0,0x2080,5,magic,0,0x0,	WZ_FIREPILLAR,Fire Pillar
+81,0,6,4,3,0,3,10,1,yes,0,0x2000,0,magic,5,0x20,		WZ_SIGHTRASHER,Sightrasher
+83,9,8,2,3,0,3:3:3:3:3:3:3:3:3:3:14,10,1:1:2:2:3:3:4:4:5:5:15,yes,0,0x2000,0,magic,0,0x20,	WZ_METEOR,Meteor Storm
+84,9,8,1,4,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0x2000,0,magic,2:3:3:4:4:5:5:6:6:7,0x20,	WZ_JUPITEL,Jupitel Thunder
+85,9,8,2,4,0,0,10,-10,yes,0,0x2000,0,magic,0,0x20,		WZ_VERMILION,Lord of Vermilion
+86,9,8,1,1,0,0,5,1,yes,0,0x2000,0,magic,0,0x0,		WZ_WATERBALL,Water Ball
 87,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x20,		WZ_ICEWALL,Ice Wall
-88,0,6,4,1,0x2,2,10,1,yes,0,0,0,magic,0,0x0,	WZ_FROSTNOVA,Frost Nova
-89,9,6,2,1,0,0,10,1,yes,0,0,0,magic,2,0x20,		WZ_STORMGUST,Storm Gust
-90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20,	WZ_EARTHSPIKE,Earth Spike
-91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0,0x20,	WZ_HEAVENDRIVE,Heaven's Drive
-92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x20,		WZ_QUAGMIRE,Quagmire
+88,0,6,4,1,0x2,2,10,1,yes,0,0x2000,0,magic,0,0x0,	WZ_FROSTNOVA,Frost Nova
+89,9,6,2,1,0,0,10,1,yes,0,0x2000,0,magic,2,0x20,		WZ_STORMGUST,Storm Gust
+90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20,	WZ_EARTHSPIKE,Earth Spike
+91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0x2000,0,magic,0,0x20,	WZ_HEAVENDRIVE,Heaven's Drive
+92,9,6,2,2,0x1,0,5,1,yes,0,0,3,magic,0,0x1020,		WZ_QUAGMIRE,Quagmire
 93,9,6,1,0,0x1,0,1,1,yes,0,0,0,magic,0,0x0,		WZ_ESTIMATION,Sense
 
 //****
@@ -211,15 +211,15 @@
 
 //****
 // Hunter
-115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x2000,	HT_SKIDTRAP,Skid Trap
-116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800,	HT_LANDMINE,Land Mine
-117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x2000,	HT_ANKLESNARE,Ankle Snare
-118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x2000,	HT_SHOCKWAVE,Shockwave Trap
-119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x2000,	HT_SANDMAN,Sandman
-120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x2000,	HT_FLASHER,Flasher
-121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x2800,	HT_FREEZINGTRAP,Freezing Trap
-122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x2800,	HT_BLASTMINE,Blast Mine
-123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x2800,	HT_CLAYMORETRAP,Claymore Trap
+115,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,6:7:8:9:10,0x3000,	HT_SKIDTRAP,Skid Trap
+116,3,6,2,2,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800,	HT_LANDMINE,Land Mine
+117,3,6,2,0,0x1,0,5,1,no,0,0x80,0,misc,0,0x3000,	HT_ANKLESNARE,Ankle Snare
+118,3,6,2,0,0x2,1,5,1,no,0,0x80,0,misc,0,0x3000,	HT_SHOCKWAVE,Shockwave Trap
+119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x3000,	HT_SANDMAN,Sandman
+120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x3000,	HT_FLASHER,Flasher
+121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x3800,	HT_FREEZINGTRAP,Freezing Trap
+122,3,6,2,4,0x42,1,5,1,no,0,0x80,0,misc,0,0x3800,	HT_BLASTMINE,Blast Mine
+123,3,6,2,3,0x42,2,5,1,no,0,0x80,0,misc,0,0x3800,	HT_CLAYMORETRAP,Claymore Trap
 124,2,6,32,0,0x1,0,1,1,no,0,0,0,misc,0,0x0,		HT_REMOVETRAP,Remove Trap
 125,3,6,2,0,0x1,0,1,1,no,0,0x80,0,misc,0,0x2000,		HT_TALKIEBOX,Talkie Box
 126,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		HT_BEASTBANE,Beast Bane
@@ -361,7 +361,7 @@
 247,9,6,4,0,0x1,1,5,0,no,0,0,0,none,0,0x0,		AM_RESURRECTHOMUN,Homunculus Resurrection
 
 //****
-// Creator
+// Crusader
 248,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		CR_TRUST,Faith
 249,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	CR_AUTOGUARD,Guard
 250,3,6,1,0,0,0,5,1,no,0,0,0,weapon,5:6:7:8:9,0x0,	CR_SHIELDCHARGE,Smite
@@ -405,9 +405,9 @@
 282,9,6,16,4,0x1,0,5,1,yes,0,0xC00,0,magic,0,0x20,	SA_LIGHTNINGLOADER,Endow Tornado
 283,9,6,16,2,0x1,0,5,1,yes,0,0xC00,0,magic,0,0x20,	SA_SEISMICWEAPON,Endow Quake
 284,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		SA_DRAGONOLOGY,Dragonology
-285,2,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_VOLCANO,Volcano
-286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_DELUGE,Deluge
-287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_VIOLENTGALE,Whirlwind
+285,2,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x1020,		SA_VOLCANO,Volcano
+286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x1020,		SA_DELUGE,Deluge
+287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x1020,		SA_VIOLENTGALE,Whirlwind
 288,2,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,		SA_LANDPROTECTOR,Magnetic Earth
 289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x20,	SA_DISPELL,Dispell
 290,0,6,4,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0,	SA_ABRACADABRA,Hocus-pocus
@@ -697,7 +697,7 @@
 481,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		HP_MANARECHARGE,Mana Recharge
 482,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,		PF_DOUBLECASTING,Double Casting
 483,16,6,2,0,0x1,1:2:3:4:5,1,1,no,0,0,0,none,0,0x20,	HW_GANBANTEIN,Ganbantein
-484,9,6,2,2,0x91,0,5,1,yes,0,0x18000,0,misc,0,0x30,		HW_GRAVITATION,Gravitation Field
+484,9,6,2,2,0x91,0,5,1,yes,0,0x18000,0,misc,0,0x1030,		HW_GRAVITATION,Gravitation Field
 485,-2,6,1,-1,0x8,0,10,1,no,0,0,0,weapon,0,0x4000,	WS_CARTTERMINATION,Cart Termination
 486,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x4000,		WS_OVERTHRUSTMAX,Maximum Power Thrust
 487,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x8,		CG_LONGINGFREEDOM,Longing for Freedom
@@ -757,7 +757,7 @@
 535,0,8,4,3,0,0,10,1,yes,0,0,0,magic,1,0x0,		NJ_KAENSIN,Crimson Fire Formation
 536,9,8,1,3,0x2,2,5,3,yes,0,0,0,magic,0,0x0,		NJ_BAKUENRYU,Raging Fire Dragon
 537,9,8,1,1,0,0,10,3:4:5:6:7:8:9:10:11:12,yes,0,0,0,magic,0,0x0,	NJ_HYOUSENSOU,Spear of Ice
-538,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x0,	NJ_SUITON,Hidden Water
+538,9,6,2,1,0x1,0,10,1,yes,0,0,0,magic,0,0x1000,	NJ_SUITON,Hidden Water
 539,0,6,4,1,0x2,3,5,1,yes,0,0,0,magic,0,0x0,		NJ_HYOUSYOURAKU,Ice Meteor
 540,9,8,1,4,0,0,10,1:2:2:3:3:4:4:5:5:6,yes,0,0,0,magic,0,0x0,	NJ_HUUJIN,Wind Blade
 541,9,6,2,4,0x2,2:2:3:3:4,5,1,yes,0,0,0,magic,0,0x0,	NJ_RAIGEKISAI,Lightning Strike of Destruction
@@ -886,11 +886,11 @@
 2005,1,6,2,4,0x2,2,5,1,no,0,0,0,weapon,3,0x0,	RK_WINDCUTTER,Wind Cutter
 2006,0,6,4,-1,0x2,5,5,1,no,0,0,0,weapon,0,0x0,	RK_IGNITIONBREAK,Ignition Break
 2007,0,0,0,0,0,0,5,0,no,0,0,0,weapon,0,0x0,		RK_DRAGONTRAINING,Dragon Training
-2008,9,6,2,3,0xC2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,0x0,	RK_DRAGONBREATH,Dragon Breath
+2008,9,6,2,3,0x2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,misc,0,0x0,	RK_DRAGONBREATH,Dragon Breath
 2009,0,6,4,0,0x3,3:4:5:6:7,5,1,no,0,0,0,none,0,0x0,	RK_DRAGONHOWLING,Dragon Howling
 2010,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RK_RUNEMASTERY,Rune Mastery
 2011,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	RK_MILLENNIUMSHIELD,Millenium Shield
-2012,1,6,4,-1,0,0x8,1,1,yes,0,0,0,weapon,0,0x0,	RK_CRUSHSTRIKE,Crush Strike
+2012,1,6,4,-1,0,0,1,1,yes,0,0,0,weapon,0,0x0,	RK_CRUSHSTRIKE,Crush Strike
 2013,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_REFRESH,Refresh
 2014,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_GIANTGROWTH,Giant Growth
 2015,0,6,4,0,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_STONEHARDSKIN,Stone Hard Skin
@@ -898,7 +898,7 @@
 2017,0,6,4,-1,0x2,3,1,1,no,0,0,0,weapon,7,0x0,	RK_STORMBLAST,Storm Blast
 2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,0x0,	RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
 2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_ABUNDANCE,Abundance
-2020,5:6:7:8:9,6,16,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RK_PHANTOMTHRUST,Phantom Thrust
+2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RK_PHANTOMTHRUST,Phantom Thrust
 
 //****
 // WL Warlock
@@ -947,7 +947,7 @@
 2027,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_POISONINGWEAPON,Poisoning Weapon
 2028,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		GC_WEAPONBLOCKING,Weapon Blocking
 2029,0,6,4,-1,0x22,1,5,1,no,0,0,0,weapon,3,0x0,	GC_COUNTERSLASH,Counter Slash
-2030,-2,6,4,-1,0x1,0,5,1,no,0,0x200,0,weapon,0,0x0,	GC_WEAPONCRUSH,Weapon Crush
+2030,-2,6,4,-1,0,0,5,1,no,0,0x200,0,weapon,0,0x0,	GC_WEAPONCRUSH,Weapon Crush
 2031,1,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	GC_VENOMPRESSURE,Venom Pressure
 2032,5,6,2,0,0x1,0,5,1,yes,0,0,1,none,0,0x0,	GC_POISONSMOKE,Poison Smoke
 2033,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x40,	GC_CLOAKINGEXCEED,Cloaking Exceed
@@ -993,7 +993,7 @@
 2240,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x0,		RA_WUGMASTERY,Warg Mastery
 2241,0,6,4,0,0,0,3,1,no,0,0,0,none,0,0x2000,		RA_WUGRIDER,Warg Rider
 2242,0,6,4,-1,0x2,1,1,0,no,0,0,0,weapon,0,0x2000,	RA_WUGDASH,Warg Dash
-2243,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x2000,	RA_WUGSTRIKE,Warg Strike
+2243,9,6,1,-1,0x40,0,5,1,no,0,0,0,misc,0,0x2000,	RA_WUGSTRIKE,Warg Strike
 2244,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x80,	RA_WUGBITE,Warg Bite
 2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RA_TOOTHOFWUG,Tooth of Warg
 2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0,0,weapon,0,0x0,	RA_SENSITIVEKEEN,Sensitive Keen
@@ -1014,7 +1014,7 @@
 2258,13,6,1,-1,0x2,1,3,1,no,0,0,0,weapon,0,0x0,	NC_VULCANARM,Vulcan Arm
 2259,7,6,1,3,0,2,3,1,no,0,0,5,weapon,0,0x0,		NC_FLAMELAUNCHER,Flame Launcher
 2260,7,6,2,1,0x2,2:3:4,3,1,no,0,0,0,weapon,0,0x0,	NC_COLDSLOWER,Cold Slower
-2261,9:11:13,6,1,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0,	NC_ARMSCANNON,Arm Cannon
+2261,9:11:13,6,2,-1,0x42,3:2:1,3,1,no,0,0,0,weapon,0,0x0,	NC_ARMSCANNON,Arm Cannon
 2262,0,6,4,0,0x1,0,3,1,no,0,0,0,none,0,0x0,		NC_ACCELERATION,Acceleration
 2263,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,		NC_HOVERING,Hovering
 2264,0,6,4,0,0x1,0,1,1,no,0,0,0,none,7,0x0,		NC_F_SIDESLIDE,Front-Side Slide
@@ -1077,7 +1077,7 @@
 2317,1,6,2,-1,0x2,5,5,1,yes,0,0,0,none,3:4:5:6:7,0x0,	LG_OVERBRAND,Over Brand
 2318,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,	LG_PRESTIGE,Prestige
 2319,0,6,4,0,0x3,3,5,1,no,0,0,0,weapon,0,0x0,	LG_BANDING,Banding //CHECK Splash isnt needed right? Banding has its own UNIT ID.
-2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x0,	LG_MOONSLASHER,Moon Slasher
+2320,0,6,4,-1,0x2,3,5,1,yes,0,0,0,weapon,0,0x1000,	LG_MOONSLASHER,Moon Slasher
 2321,1,8,2,6,0x2,5,5,-7,yes,0,0,0,weapon,0,0x0,	LG_RAYOFGENESIS,Ray of Genesis
 2322,0,6,16,0,0x3,1,5,1,yes,0,0,0,none,0,0x0,	LG_PIETY,Piety
 2323,0,8,4,2,0x2,1:1:2:2:3,5,-5,yes,0,0,0,weapon,0,0x0,	LG_EARTHDRIVE,Earth Drive
@@ -1090,14 +1090,14 @@
 2327,0,8,4,-1,0x2,2,5,-3,no,0,0,0,weapon,3,0x0,	SR_SKYNETBLOW,Sky Net Blow
 2328,0,6,4,-1,0x2,1:2:3:4:5,5,1,no,0,0,0,weapon,0,0x0,	SR_EARTHSHAKER,Earth Shaker
 2329,-2,8,4,-1,0,0,5,-2,no,0,0x200,0,weapon,0,0x0,	SR_FALLENEMPIRE,Fallen Empire
-2330,-2,6,1,-1,0x42,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0,	SR_TIGERCANNON,Tiger Cannon //CHECK Need to fix to be enemy targeted and also combo after Fallen Empire.
-2331,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		SR_HELLGATE,Hell Gate
+2330,-2,6,1,-1,0x2,1:1:1:1:1:2:2:2:2:2,10,1,yes,0,0,0,weapon,0,0x0,	SR_TIGERCANNON,Tiger Cannon
+2331,1:2:3:3:4:4:5:5:6:7,6,1,0,0,0,10,0,no,0,0,0,none,0,0x0,		SR_HELLGATE,Hell Gate
 2332,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0,	SR_RAMPAGEBLASTER,Rampage Blaster
 2333,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		SR_CRESCENTELBOW,Crescent Elbow //CHECK Check the autospell ID.
 2334,0,6,4,0,0x3,1:1:2:2:3,5,1,no,0,0,0,none,0,0x0,	SR_CURSEDCIRCLE,Cursed Circle
 2335,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,		SR_LIGHTNINGWALK,Lightning Walk
 2336,7:8:9:10:11,6,1,-1,0,0,5,1,no,0,0,0,weapon,2:3:4:5:6,0x0,	SR_KNUCKLEARROW,Knuckle Arrow
-2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x0,	SR_WINDMILL,Windmill
+2337,0,6,4,-1,0x2,2,1,1,yes,0,0,0,weapon,0,0x1000,	SR_WINDMILL,Windmill
 2338,0,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0,	SR_RAISINGDRAGON,Raising Dragon
 2339,0,0,0,0,0,0,5,1,no,0,0,0,none,0,0x0,		SR_GENTLETOUCH,Gentle Touch
 2340,0,6,4,0,0x3,2,1,1,no,0,0,0,none,0,0x0,	SR_ASSIMILATEPOWER,Assimilate Power
@@ -1154,8 +1154,8 @@
 
 //****
 // SO Sorcerer (statis blocking need to be confirmed)
-2443,0,6,4,3,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x20,	SO_FIREWALK,Fire Walk //CHECK Video and data shows each cell only hits once.
-2444,0,6,4,4,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x20,	SO_ELECTRICWALK,Electric Walk
+2443,0,6,4,3,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x1020,	SO_FIREWALK,Fire Walk //CHECK Video and data shows each cell only hits once.
+2444,0,6,4,4,0,0,5,1,yes,0,0,8:10:12:14:16,magic,0,0x1020,	SO_ELECTRICWALK,Electric Walk
 2445,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x20,		SO_SPELLFIST,Spell Fist
 2446,9,6,2,2,0,0,5,-3,yes,0,0,0,magic,0,0x20,	SO_EARTHGRAVE,Earth Grave
 2447,9,6,2,1,0,0,5,-5,yes,0,0,0,magic,0,0x20,	SO_DIAMONDDUST,Diamond Dust
@@ -1164,7 +1164,7 @@
 2450,9,6,2,5,0,0,5,1,yes,0,0,0,magic,0,0x20,		SO_CLOUD_KILL,Cloud Kill
 2451,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x20,	SO_STRIKING,Striking //CHECK Data shows a % for increased successful refine rate. Is this true?
 2452,9,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	SO_WARMER,Warmer
-2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	SO_VACUUM_EXTREME,Vacuum Extreme
+2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x1020,	SO_VACUUM_EXTREME,Vacuum Extreme
 2454,9,6,1,4,0x2,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_VARETYR_SPEAR,Varetyr Spear
 2455,7:7:7:7:9,6,2,0,0x3,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x20,	SO_ARRULLO,Arrullo
 2456,0,6,4,0,0x1,0,4,1,yes,0,0,0,none,0,0x0,	SO_EL_CONTROL,Spirit Control
@@ -1195,7 +1195,7 @@
 2483,11,6,2,0,0x3,4,10,1,yes,0,0x0,0,weapon,0,0x1,	GN_CRAZYWEED,Crazy Weed
 2484,0,6,2,2,0x2,2,10,1,no,0,0x0,0,weapon,0,0x1,	GN_CRAZYWEED_ATK,Crazy Weed Attack
 2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0,		GN_DEMONIC_FIRE,Demonic Fire
-2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION,Fire Expansion //CHECK FIX ME!!!! Level 1 is reducing the damage. Should increase it by 50%
+2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION,Fire Expansion
 2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder
 2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0,		GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas
 2489,11,6,1,0,0,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,weapon,0,0x0,		GN_FIRE_EXPANSION_ACID,Fire Expansion Acid
@@ -1303,7 +1303,7 @@
 5001,1,8,1,-1,0,0,5,3,no,0,0,0,weapon,0,0x0, GC_DARKCROW,Dark Claw
 5002,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RA_UNLIMIT,Unlimited
 5003,7,6,1,-1,0x2,4:5:6:7:8,5,1,no,0,0,0,weapon,0,0x0, GN_ILLUSIONDOPING,Illusion Doping
-5004,9,6,2,1,0x42,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,weapon,0,0x0, RK_DRAGONBREATH_WATER,Dragon Breath - Water
+5004,9,6,2,1,0x2,1:1:1:2:2:2:3:3:4:4,10,1,no,0,0,0,weapon,0,0x0, RK_DRAGONBREATH_WATER,Dragon Breath - Water
 5005,0,6,4,0,0x3,3,1,1,no,0,0,0,none,0,0x0, RK_LUXANIMA,Lux Anima
 5006,1,6,2,3,0,0,5,1,no,0,0,3,misc,0,0x0, NC_MAGMA_ERUPTION,Magma Eruption
 5007,0,6,4,0,0x3,5:6:7:8:9,5,1,no,0,0,0,none,0,0x0, WM_FRIGG_SONG,Frigg's Song

+ 5 - 5
db/re/skill_require_db.txt

@@ -599,7 +599,7 @@
 2204,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_JACKFROST#Jack Frost#
 2205,0,0,40:42:44:46:48,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_MARSHOFABYSS#Marsh of Abyss#
 2206,0,0,100:120:140:160:180,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_RECOGNIZEDSPELL#Recognized Spell#
-2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_SIENNAEXECRATE#Sienna Execrate#
+2207,0,0,32:34:36:38:40,0,0,0,99,0,0,none,0,716,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_SIENNAEXECRATE#Sienna Execrate#
 
 2209,0,0,50:60:70:80:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_STASIS#Stasis#
 2210,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//WL_DRAINLIFE#Drain Life#
@@ -758,12 +758,12 @@
 2327,0,0,8:9:10:11:12,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_SKYNETBLOW#Sky Net Blow#
 2328,0,0,36:40:44:48:52,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_EARTHSHAKER#Earth Shaker#
 2329,0,0,20:30:40:50:60,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_FALLENEMPIRE#Fallen Empire#
-2330,0,0,1:2:3:4:5:6:7:8:9:10,-12:-14:-16:-18:-20:-22:-24:-26:-28:-30,-6:-7:-8:-9:-10:-11:-12:-13:-14:-15,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_TIGERCANNON#Tiger Cannon#
-2331,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HELLGATE#Hell Gate#
+2330,0,0,1:2:3:4:5:6:7:8:9:10,0,0,0,99,0,0,none,SC_EXPLOSIONSPIRITS,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_TIGERCANNON#Tiger Cannon#
+2331,0,0,1,0,-11:-12:-13:-14:-15:-16:-17:-18:-19:-20,0,99,0,0,none,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_HELLGATE#Hell Gate#
 2332,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RAMPAGEBLASTER#Rampage Blaster#
 2333,0,0,80,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_CRESCENTELBOW#Crescent Elbow#
 2334,0,0,40:60:80:100:120,-1:-2:-3:-4:-5,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_CURSEDCIRCLE#Cursed Circle#
-2335,0,0,80:70:60:50:40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_LIGHTNINGWALK#Lightning Walk#
+2335,0,0,80:70:60:50:40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_LIGHTNINGWALK#Lightning Walk#
 2336,0,0,10:15:20:25:30,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_KNUCKLEARROW#Knuckle Arrow#
 2337,0,0,45,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_WINDMILL#Windmill#
 2338,0,0,120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//SR_RAISINGDRAGON#Raising Dragon#
@@ -903,7 +903,7 @@
 2561,0,0,10:15:20:25:30,0,0,0,17,3,5,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_FIREDANCE#Fire Dance#
 2562,0,0,45:50:55:60:65,0,0,0,21,0,0,none,0,0,7664,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_H_MINE#Howling Mine#
 2563,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13201	//RL_P_ALTER#Platinum Alter#
-2564,0,0,90,0,0,0,17,3,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_FALLEN_ANGEL#Fallen Angel#
+2564,0,0,90,0,0,0,17,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_FALLEN_ANGEL#Fallen Angel#
 2565,0,0,40:45:50:55:60,0,0,0,19,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_R_TRIP#Round Trip#
 2566,0,0,60:70:80:90:100,0,0,0,21,5,1,none,0,0,7665,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_D_TAIL#Dragon Tail#
 2567,0,0,70,0,0,0,19,3,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_FIRE_RAIN#Fire Rain#

+ 11 - 3
doc/atcommands.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20140123
+//= 20140126
 //===== Description: =========================================
 //= List of available atcommands and their functions.
 //============================================================
@@ -298,6 +298,13 @@ prontera (x= 165, y= 198) 01 00 00 00 00
 
 ---------------------------------------
 
+@showrate
+
+When VIP is enabled, the rate information always be shown when every player load map.
+Use this command to disable or enable that rate information.
+
+---------------------------------------
+
 ========================
 | 2. Database Commands |
 ========================
@@ -779,9 +786,10 @@ Warps to your save point.
 
 ---------------------------------------
 
-@jump
+@jump {<x> <y>}
 
-Warps to a random coordinate on the current map.
+Warps to the given coordinates on the current map.
+If no coordinates are entered, a random location will be chosen.
 
 ---------------------------------------
 

+ 2 - 1
doc/item_bonus.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20140110
+//= 20140124
 //===== Description: =========================================
 //= List of script instructions used in item bonuses.
 //============================================================
@@ -121,6 +121,7 @@ bonus bSpeedAddRate,n;			Movement speed + n%
 bonus bAspd,n;        			Attack speed + n
 bonus bAspdRate,n;    			Attack speed + n%
 bonus bAtkRange,n;    			Attack range + n
+bonus bAddMaxWeight,n;			MaxWeight + n (in units of 0.1)
 
 =======================
 | 2. Extended Bonuses |

+ 10 - 10
doc/item_group.txt

@@ -13,25 +13,25 @@ and 'getgroupitem' script commands. The table below explains which fields are
 accessed in each.
 
 +===============+====================+================+
-| Field			| 'getrandgroupitem' | 'getgroupitem' |
+| Field         | 'getrandgroupitem' | 'getgroupitem' |
 +===============+====================+================+
-| GroupID		|		YES			 |		YES		  |
+| GroupID       |       YES          |      YES       |
 +===============+====================+================+
-| ItemID		|		YES			 |		YES		  |
+| ItemID        |       YES          |      YES       |
 +===============+====================+================+
-| Rate			|		YES			 |		YES		  |
+| Rate          |       YES          |      YES       |
 +===============+====================+================+
-| Amount		|		no			 |		YES		  |
+| Amount        |       no           |      YES       |
 +===============+====================+================+
-| Random		|		no			 |		YES		  |
+| Random        |       no           |      YES       |
 +===============+====================+================+
-| isAnnounced	|		no			 |		YES		  |
+| isAnnounced   |       no           |      YES       |
 +===============+====================+================+
-| Duration		|		no			 |		YES		  |
+| Duration      |       no           |      YES       |
 +===============+====================+================+
-| isNamed		|		no			 |		YES		  |
+| isNamed       |       no           |      YES       |
 +===============+====================+================+
-| isBound		|		no			 |		YES		  |
+| isBound       |       no           |      YES       |
 +===============+====================+================+
 
 ---------------------------------------

+ 27 - 11
doc/md5_hashcheck.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20120921
+//= 20140208
 //===== Description: =========================================
 //= This file outlines the login server's MD5 hash check.
 //============================================================
@@ -14,25 +14,41 @@ the client is the one specific to your server.
 
 The client can only send the correct MD5 hash to the server on certain
 server types, so a client diff is required to ensure the hash is sent.
-A link containing the required WeeDiffGen plugin can be found at:
+Please refer to your client diff tool manual for the appropriate patch,
+called "Force Send Client Hash Packet" or a similar name. A link
+containing the WeeDiffGen plugin can be found at:
 http://rathena.org/board/topic/70841-r16771-client-md5-hash-check/
 
-The settings for the hash check are located in conf\login_athena.conf:
+The server-side settings for the hash check are located in
+'conf\login_athena.conf':
 
 // Client MD5 hash check
 // If turned on, the login server will check if the client's hash matches
 // the value below, and will not connect tampered clients.
-// Note: see doc\md5_hashcheck.txt for more details.
+// Note: see 'doc/md5_hashcheck.txt' for more details.
 client_hash_check: off
 
 // Client MD5 hashes
-// A player can login with a client hash at or below the account group_id.
+// The client with the specified hash can be used to log in by players with
+// a group_id equal to or greater than the given value.
+// If you specify 'disabled' as hash, players with a group_id greater than or
+// equal to the given value will be able to log in regardless of hash (and even
+// if their client does not send a hash at all.)
 // Format: group_id, hash
+// Note: see 'doc/md5_hashcheck.txt' for more details.
 client_hash: 0, 113e195e6c051bb1cfb12a644bb084c5
-client_hash: 99, cb1ea78023d337c38e8ba5124e2338ae
+client_hash: 10, cb1ea78023d337c38e8ba5124e2338ae
+client_hash: 99, disabled
 
-To enable MD5 hash checks, set 'client_hash_check' to 'on'.
-The 'client_hash' group_id can be any of the groups in conf\groups.conf,
-and is particularly useful if you wanted to allow GMs a different client
-than normal players; for example, a GM client could be hexed differently
-with dual-clienting enabled and chat flood disabled.
+To enable MD5 hash checks, set 'client_hash_check' to 'on' and add one
+'client_hash' entry for each client you want to use.
+The group_id can be any of the groups in 'conf/groups.conf', and it is
+useful in case if you want to allow GMs to use a different client
+than normal players; for example, a GM client could be hexed
+differently, perhaps with dual-clienting enabled and chat flood
+disabled.
+You will need to replace the example MD5 hashes with the actual hash of
+your client. You can use any MD5 hash tools to generate it, e.g.:
+- md5sum (command line) on linux
+- WinMD5 on Windows
+- md5 (command line) on Mac OS X

+ 56 - 43
doc/sample/bank_test.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20070315
+//= 20140208
 //===== Description: ========================================= 
 //= Contains commands needed for a basic bank.
 //============================================================
@@ -16,51 +16,64 @@ prontera,162,188,1	script	Bank Test	112,{
 	mes "You can only deposit a minimal of";
 	mes "1000z. What do you want to do?";
 	next;
-	menu "Deposit",BANK_IN,"Withdraw",BANK_OUT,"Exit",B_EXIT2;
-BANK_IN:
-	mes "[Bank Test]";
-	mes "You must deposit the same of less";
-	mes "amount of zeny that you carry.";
-	mes "How much do you want to deposit?";
-	next;
-	input @kafrabank;
-
-	if(@kafrabank<1000) goto B_EXIT2;
-	set @kafrabank2,@kafrabank*1/100;
-	if(@kafrabank+@kafrabank2>Zeny) goto BANK_F;
-	set Zeny,Zeny-@kafrabank-@kafrabank2;
-	set #kafrabank,#kafrabank+@kafrabank;
-	mes "You now have: ^135445" + @kafrabank2 + "z^000000";
+	switch (select("Deposit","Withdraw","Exit")) {
+	case 1:
+		mes "[Bank Test]";
+		mes "How much do you want to deposit?";
+		next;
+		input .@kafrabank;
 
-	goto B_EXIT;
-BANK_OUT:
-	if(#kafrabank==0) goto BANK_F2;
-	mes "[Bank Test]";
-	mes "You can only withdraw equally or below this quantity:";
-	mes "^135445" + #kafrabank + "^000000z";
-	mes "How much do you want to withdraw?";
-	next;
-	input @kafrabank;
+		if (.@kafrabank < 1000) {
+			mes "[Bank Test]";
+			mes "The minimum deposit is 1000z";
+			next;
+			break;
+		}
+		if (.@kafrabank > Zeny) {
+			mes "[Bank Test]";
+			mes "You don't have enough money.";
+			next;
+			break;
+		}
+		Zeny -= .@kafrabank;
+		#kafrabank += .@kafrabank;
+		mes "[Bank Test]";
+		mes "You now have ^135445" + Zeny + "z^000000";
+		mes "and your bank account ^135445" + #kafrabank + "z^000000";
+		next;
+		break;
+	case 2:
+		if (#kafrabank == 0) {
+			mes "[Bank Test]";
+			mes "Your bank account is currently empty, you can't withdraw.";
+			next;
+			break;
+		}
+		mes "[Bank Test]";
+		mes "Current balance: ^135445" + #kafrabank + "^000000z";
+		mes "How much do you want to withdraw?";
+		next;
+		input .@kafrabank;
 
-	if(@kafrabank<1) goto B_EXIT2;
-	if(@kafrabank>#kafrabank) goto BANK_F;
-	set #kafrabank,#kafrabank-@kafrabank;
-	set Zeny,Zeny+@kafrabank;
-
-	goto B_EXIT;
-
-BANK_F:
-	mes "[Bank Test]";
-	mes "You can't withdraw more than ^135445"+ #kafrabank + "^000000z.";
-	goto B_EXIT2;
-BANK_F2:
-	mes "[Bank Test]";
-	mes "Your account is empty, you may not withdraw at this time.";
-	goto B_EXIT2;
+		if (.@kafrabank < 1)
+			break;
+		if (.@kafrabank > #kafrabank) {
+			mes "[Bank Test]";
+			mes "You can't withdraw more than ^135445"+ #kafrabank + "^000000z.";
+			next;
+			break;
+		}
+		#kafrabank -= .@kafrabank;
+		Zeny += .@kafrabank;
+		mes "[Bank Test]";
+		mes "You now have ^135445" + Zeny + "z^000000";
+		mes "and your bank account ^135445" + #kafrabank + "z^000000";
+		next;
+		break;
+	case 3:
+		break;
+	}
 
-B_EXIT:
-	mes "Thanks for using depositing";
-B_EXIT2:
 	mes "Good bye!";
 	cutin "kafra_06",255;
 	close;

+ 6 - 4
doc/sample/checkoption.txt

@@ -3,15 +3,17 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20070315
+//= 20140208
 //===== Description: ========================================= 
 //= Demonstrates the 'checkoption' command.
 //============================================================
 
 prontera,156,89,6	script	test_checkoption	117,{
 	mes "Please enter a value of type!";
-	input @value;
-	if(checkoption(@value) == 1) mes "True!";
-	else if(checkoption(@value) == 0) mes "False!";
+	input .@value;
+	if (checkoption(.@value) == 1)
+		mes "True!";
+	else if (checkoption(.@value) == 0)
+		mes "False!";
 	close;
 }

+ 12 - 12
doc/sample/delitem2.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20070315
+//= 20140208
 //===== Description: ========================================= 
 //= Demonstrates the 'delitem2' command.
 //============================================================
@@ -11,29 +11,29 @@
 prontera,160,182,5	script	Delitem2	51,{
 	mes "Item ID?";
 	next;
-	input @nameid;
+	input .@nameid;
 	mes "Amount?";
 	next;
-	input @amount;
+	input .@amount;
 	mes "Identified? (0:no, 1:yes)";
 	next;
-	input @iden;
+	input .@iden;
 	mes "Refined how many times?";
 	next;
-	input @ref;
+	input .@ref;
 	mes "Attribute? (0:normal, 1:broken)";
 	next;
-	input @attr;
+	input .@attr;
 	mes "4 cards (one after another)...";
 	next;
-	input @c1;
-	input @c2;
-	input @c3;
-	input @c4;
+	input .@c1;
+	input .@c2;
+	input .@c3;
+	input .@c4;
 	mes "Your command is:";
-	mes "delitem2 "+@nameid+","+@amount+","+@iden+","+@ref+","+@attr+","+@c1+","+@c2+","+@c3+","+@c4;
+	mes "delitem2 "+.@nameid+","+.@amount+","+.@iden+","+.@ref+","+.@attr+","+.@c1+","+.@c2+","+.@c3+","+.@c4;
 	next;
-	delitem2 @nameid,@amount,@iden,@ref,@attr,@c1,@c2,@c3,@c4;
+	delitem2 .@nameid,.@amount,.@iden,.@ref,.@attr,.@c1,.@c2,.@c3,.@c4;
 	mes "And here is the moment when your item should disappear! :P";
 	close;
 }

+ 8 - 7
doc/sample/getequipcardid.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Lupus
 //===== Last Updated: ========================================
-//= 20121003
+//= 20140208
 //===== Description: ========================================= 
 //= Demonstrates the 'getequipcardid' command.
 //============================================================
@@ -11,12 +11,13 @@
 prontera,155,177,4	script	Check My Hat	810,{
 	mes "Checking your head...";
 	if (getequipisequiped(1)) {
-		set @id,getequipid(1);
-		set @ref,getequiprefinerycnt(1);
-		mes "Your hat is... "+getitemname(@id)+"...";
-		if(@ref) mes "It has been refined "+@ref+" times.";
-		mes "Card Slot 0:"+getequipcardid(1,0)+" 1:"+getequipcardid(1,1);
-		mes "Card Slot 2:"+getequipcardid(1,2)+" 3:"+getequipcardid(1,3);
+		.@id = getequipid(1);
+		.@ref = getequiprefinerycnt(1);
+		mes "Your hat is... " + getitemname(.@id) + "...";
+		if (.@ref)
+			mes "It has been refined " + .@ref + " times.";
+		mes "Card Slot 0:" + getequipcardid(1,0) + " 1:" + getequipcardid(1,1);
+		mes "Card Slot 2:" + getequipcardid(1,2) + " 3:" + getequipcardid(1,3);
 		close;
 	}
 	mes "Nothing?";

+ 4 - 5
doc/sample/getequipid.txt

@@ -3,14 +3,13 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20121003
+//= 20140208
 //===== Description: ========================================= 
 //= Demonstrates the 'getequipid' command.
 //============================================================
 
-prontera,161,181,6	script	GetEquipID Sample	105,{
-	mes "[GetEquipID Sample]";
-	for(set .@i,1; .@i<11; set .@i,.@i+1)
-		mes "GetEquipID(" + .@i + ") : " + getequipid(1);
+prontera,161,181,6	script	getequipid sample	105,{
+	for (.@i = 1; .@i < 11; .@i++)
+		mes "getequipid(" + .@i + ") : " + getequipid(.@i);
 	close;
 }

+ 4 - 4
doc/sample/getiteminfo.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Lupus
 //===== Last Updated: ========================================
-//= 20121003
+//= 20140208
 //===== Description: ========================================= 
 //= Demonstrates the 'getiteminfo' command.
 //============================================================
@@ -14,10 +14,10 @@ prontera,156,179,6	script	test_getiteminfo	117,{
 
 	// This line uses an INTERNAL function of your client to show item name by its ID!
 	// ^nItemID^XXXX -> Item Name
-	mes "Item ID: "+.@value+" ^nItemID^"+.@value;
+	mes "Item ID: " + .@value + " ^nItemID^" + .@value;
 
 	mes "Current item info:";
-	for(set .@id,0; .@id<14; set .@id,.@id+1)
-		mes " getiteminfo("+.@value+","+.@id+") = "+getiteminfo(.@value,.@id);
+	for(.@id = 0; .@id < 14; .@id++)
+		mes " getiteminfo(" + .@value + "," + .@id + ") = " + getiteminfo(.@value,.@id);
 	close;
 }

+ 2 - 2
doc/sample/getmonsterinfo.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Lupus
 //===== Last Updated: ========================================
-//= 20131106
+//= 20140208
 //===== Description: ========================================= 
 //= Demonstrates the 'getmonsterinfo' command.
 //============================================================
@@ -17,7 +17,7 @@ prontera,156,179,6	script	test_getmonsterinfo	117,{
 	}
 	mes "Monster ID: "+.@value+" '"+getmonsterinfo(.@value,MOB_NAME)+"'";
 	mes "Current Monster info:";
-	for(set .@i,0; .@i<23; set .@i,.@i+1)
+	for (.@i = 0; .@i < 23; .@i++)
 		mes " getmonsterinfo("+.@value+","+.@i+") = "+getmonsterinfo(.@value,.@i);
 	close;
 }

+ 16 - 24
doc/sample/gstorage_test.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20130325
+//= 20140208
 //===== Description: ========================================= 
 //= Contains commands needed for a guild warehouse NPC.
 //============================================================
@@ -15,30 +15,22 @@ prontera,165,188,4	script	Guild Warehouse	112,{
 	mes "This is the guild warehouse coupler service."; 
 	mes "You will not receive zeny for this is a test.";
 	next;
-	menu "Access Guild Warehouse", GS_OPEN, "Exit", GS_EXIT3;
+	if (select("Access Guild Warehouse","Exit") != 1) {
+		mes "[Guild Warehouser]";
+		mes "Come back whenever you want.";
+		cutin "kafra_06", 255;
+		close;
+	}
 
-GS_OPEN:
-	set @flag,guildopenstorage();
-	if(@flag == 1) goto GS_EXIT1;
-	if(@flag == 2) goto GS_EXIT2;
-	goto GS_EXIT4;
-
-GS_EXIT1:
-	mes "[Guild Warehouse]";
-	mes "The guild warehouse is being used right now.";
-	mes "Please wait a while, then come back.";
-	goto GS_EXIT4;
-
-GS_EXIT2:
-	mes "[Guild Warehouse]";
-	mes "You can't use this service if you're not in a guild!";
-	goto GS_EXIT4;
-
-GS_EXIT3:
-	mes "[Guild Warehouser]";
-	mes "Come back whenever you want.";
-
-GS_EXIT4:
+	.@flag = guildopenstorage;
+	if (.@flag == 1) {
+		mes "[Guild Warehouse]";
+		mes "The guild warehouse is being used right now.";
+		mes "Please wait a while, then come back.";
+	} else if (.@flag == 2) {
+		mes "[Guild Warehouse]";
+		mes "You can't use this service if you're not in a guild!";
+	}
 	cutin "kafra_06",255;
 	close;
 }

+ 202 - 0
doc/sample/instancing.txt

@@ -0,0 +1,202 @@
+//===== rAthena Script =======================================
+//= Sample: Instancing
+//===== By: ==================================================
+//= Euphy
+//===== Last Updated: ========================================
+//= 20140129
+//===== Description: ========================================= 
+//= Contains elements of a basic instance script.
+//============================================================
+
+// Before running this script, add the entry below to
+// 'db/(pre-)re/instance_db.txt':
+// 12,Abyss Lake Instance,3600,abyss_03,160,155,abyss_03
+
+// Instance Creation
+//============================================================
+prontera,151,190,6	script	Sample Instance	101,{
+	.@instance$ = "Abyss Lake Instance";
+
+	if (instance_id()) {  // ignore the console debug message (harmless)
+		mes "[Sample Instance]";
+		mes "You are already part of an instance.";
+		next;
+		switch(select("Enter Instance.:Cancel.")) {
+		case 1:
+			break;
+		case 2:
+			mes "[Sample Instance]";
+			mes "You don't want to try again?";
+			emotion e_sob;
+			close;
+		}
+	} else {
+		mes "[Sample Instance]";
+		mes "Would you like to try the sample instance in Abyss Lake 3?";
+		next;
+		switch(select("Create Instance.:Cancel.")) {
+		case 1:
+			.@create = instance_create(.@instance$);
+			if (.@create < 0) {
+				mes "[Sample Instance]";
+				switch (.@create) {
+					case -1: mes "ERROR: Invalid type."; break;
+					case -2: mes "ERROR: Party not found."; break;
+					case -3: mes "ERROR: Instance already exists."; break;
+					case -4: mes "ERROR: No free instances."; break;
+				}
+				mes " ";
+				mes "Instance creation ^FF0000failed^000000.";
+				emotion e_omg;
+				close;
+			}
+			mes "[Sample Instance]";
+			mes "Instance created.";
+			mes " ";
+			mes "Now entering the instance...";
+			next;
+			break;
+		case 2:
+			mes "[Sample Instance]";
+			mes "Okay. Maybe next time!";
+			close;
+		}
+	}
+	.@enter = instance_enter(.@instance$);
+	if (.@enter != 0) {
+		mes "[Sample Instance]";
+		switch (.@enter) {
+			case 1: mes "ERROR: Party not found."; break;
+			case 2: mes "ERROR: Party does not have an instance."; break;
+			case 3: mes "ERROR: Unknown error."; break;
+		}
+		mes " ";
+		mes "Instance entry ^FF0000failed^000000.";
+		emotion e_omg;
+		close;
+	}
+	close;
+}
+
+// Instance Scripts
+//============================================================
+abyss_03,154,159,6	script	Instance NPC#start	101,{
+	mes "[Instance NPC]";
+	mes "Are you ready to begin?";
+	next;
+	switch(select("Yes.:No.")) {
+	case 1:
+		mes "[Instance NPC]";
+		mes "Good luck.";
+		close2;
+		donpcevent instance_npcname("#ins_abyss03_mobs")+"::OnEnable";
+		delwaitingroom;
+		disablenpc instance_npcname(strnpcinfo(0));
+		end;
+	case 2:
+		mes "[Instance NPC]";
+		mes "Take your time.";
+		close;
+	}
+	end;
+
+OnInit:  // hide the NPC on the normal map
+	disablenpc strnpcinfo(0);
+	end;
+OnInstanceInit:  // initialize the NPC when the instance is created
+	disablenpc instance_npcname("abysslakedunwarp004");  // disable original warp portal (currently buggy)
+	waitingroom "Click here to start!",0;
+	end;
+}
+
+abyss_03,0,0,0	script	#ins_abyss03_mobs	-1,{
+	end;
+OnEnable:
+	initnpctimer;
+	end;
+OnTimer1000:  //strnpcinfo(4) will retrieve the instanced map name
+	mapannounce strnpcinfo(4),"Instance NPC: The Abyss Lake instance has begun.",bc_all;
+	end;
+OnTimer4000:
+	mapannounce strnpcinfo(4),"Instance NPC: Smash the Treasure Chest in the center of the map for a prize.",bc_all;
+	end;
+OnTimer5000:
+	stopnpctimer;
+
+	// spawn mobs
+	.@map$        = instance_mapname("abyss_03");
+	.@label$      = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
+	.@label_boss$ = instance_npcname(strnpcinfo(0))+"::OnMyBossDead";
+	monster .@map$,0,0,"Huge Poring",1002,20,.@label$,2;
+	monster .@map$,0,0,"Huge Drops",1113,15,.@label$,2;
+	monster .@map$,0,0,"Huge Poporing",1031,10,.@label$,2;
+	monster .@map$,0,0,"Huge Marin",1242,10,.@label$,2;
+	monster .@map$,0,0,"Tiny Zombie",1015,30,.@label$,1;
+	monster .@map$,0,0,"Huge Mime Monkey",1585,2,.@label$,2;
+	monster .@map$,97,102,"Treasure Chest",1732,1,.@label_boss$,2;
+	end;
+OnMyMobDead:  // normal mobs
+	dispbottom "What am I doing? I should be attacking the Treasure Chest!";
+	viewpoint 0,97,102,0,0xFF0000;
+	switch (rand(6)) {  // for fun (:
+		case 0: sc_start SC_STONE,5000,0; break;
+		case 1: sc_start SC_FREEZE,5000,0; break;
+		case 2: sc_start SC_STUN,5000,0; break;
+		case 3: sc_start SC_SLEEP,5000,0; break;
+		case 4: sc_start SC_CONFUSION,5000,0; break;
+		case 5: sc_start SC_BLIND,5000,0; break;
+	}
+	end;
+OnMyBossDead:  // treasure chest
+	specialeffect2 EF_MVP;
+	getitem 512,1; //Apple
+
+	// trigger other events
+	.@map$   = instance_mapname("abyss_03");
+	.@label$ = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
+	killmonster .@map$,.@label$;
+	mapannounce .@map$,"Instance NPC: Good work! Please speak to me as soon as possible.",bc_all;
+	donpcevent instance_npcname("Instance NPC#finish")+"::OnEnable";
+	end;
+}
+
+abyss_03,97,102,4	script	Instance NPC#finish	101,{
+	mes "[Instance NPC]";
+	mes "Congratulations! You've finished the instance.";
+	mes "I'll send you back to town now.";
+	emotion e_no1;
+	close2;
+	warp "prontera",156,191;
+	instance_destroy();
+	end;
+
+OnInit:
+	disablenpc strnpcinfo(0);
+	end;
+OnInstanceInit:
+	disablenpc instance_npcname(strnpcinfo(0));
+	end;
+OnEnable:
+	enablenpc instance_npcname(strnpcinfo(0));
+	specialeffect EF_HIDING;
+	end;
+}
+
+abyss_03,115,26,0	script	#ins_abyss03_warp	45,5,5,{
+	end;
+OnTouch:
+	mes "Are you sure you want to leave?";
+	next;
+	switch(select("Leave.:Stay.")) {
+	case 1:
+		warp "prontera",156,191;
+		break;
+	case 2:
+		warp strnpcinfo(4),160,155;
+		break;
+	}
+	close;
+OnInit:
+	disablenpc strnpcinfo(0);
+	end;
+}

+ 28 - 29
doc/sample/localized_npc.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20070315
+//= 20140208
 //===== Description: ========================================= 
 //= Example of a localized NPC.
 //= 
@@ -37,7 +37,7 @@
 /// Sets the language of the player account.
 /// @param langid	Languange identifier (0 for default)
 function	script	setlang	{
-	set ##_langid_, getarg(0);
+	##_langid_ = getarg(0);
 	return;
 }
 
@@ -54,15 +54,15 @@ function	script	getlang	{
 /// @param langid	Language identifier (0 for default)
 /// @param text	Text message
 function	script	setmes2	{
-	set $@mes2_name$, getarg(0);
-	set $@mes2_langid, getarg(1);
-	set $@mes2_text$, getarg(2);
-	set $@mes2_var$, "$@__"+ $@mes2_name$ +"_"+ $@mes2_langid +"$";
+	.@mes2_name$  = getarg(0);
+	.@mes2_langid = getarg(1);
+	.@mes2_text$  = getarg(2);
+	.@mes2_var$   = "$@__"+ .@mes2_name$ +"_"+ .@mes2_langid +"$";
 
-	//debugmes "setmes2 \""+ $@mes2_var$ +"\", \""+ $@mes2_text$ +"\";";
+	//debugmes "setmes2 \""+ .@mes2_var$ +"\", \""+ .@mes2_text$ +"\";";
 
 	// set the localized text
-	setd $@mes2_var$, $@mes2_text$;
+	setd .@mes2_var$, .@mes2_text$;
 	return;
 }
 
@@ -73,14 +73,14 @@ function	script	setmes2	{
 /// @param langid	Language identifier (0 for default)
 /// @return	Text message
 function	script	getmes2	{
-	set $@mes2_name$, getarg(0);
-	set $@mes2_langid, getarg(1);
-	set $@mes2_var$, "$@__"+ $@mes2_name$ +"_"+ $@mes2_langid +"$";
-	set $@mes2_text$, getd($@mes2_var$);
+	.@mes2_name$  = getarg(0);
+	.@mes2_langid = getarg(1);
+	.@mes2_var$   = "$@__"+ .@mes2_name$ +"_"+ .@mes2_langid +"$";
+	.@mes2_text$  = getd(.@mes2_var$);
 
-	//debugmes "getmes2(\""+ $@mes2_var$ +"\")=\""+ $@mes2_text$ +"\"";
+	//debugmes "getmes2(\""+ .@mes2_var$ +"\")=\""+ .@mes2_text$ +"\"";
 
-	return $@mes2_text$;
+	return .@mes2_text$;
 }
 
 //////////////////////////////////////////////////////////////
@@ -89,23 +89,22 @@ function	script	getmes2	{
 /// that are valis as a variable name
 /// @param index	Message identifier
 function	script	mes2	{
-	set @mes2_index$, getarg(0);
+	.@mes2_index$ = getarg(0);
 
-	if( getstrlen(@mes2_index$) == 0 )
+	if( getstrlen(.@mes2_index$) == 0 )
 		return; // invalid index
 
 	// print localized text
-	set @mes2_text$, callfunc("getmes2",@mes2_index$,##_langid_);
-	if( getstrlen(@mes2_text$) == 0 )
-	{
-		if( ##_langid_ != 0 )
-		{// revert to default language
-			set @mes2_text$, callfunc("getmes2",@mes2_index$,0);
-			if( getstrlen(@mes2_text$) != 0 )
-				mes @mes2_text$; // default text
+	.@mes2_text$ = callfunc("getmes2",.@mes2_index$,##_langid_);
+	if( getstrlen(.@mes2_text$) == 0 ) {
+		if( ##_langid_ != 0 ) {
+			// revert to default language
+			.@mes2_text$ = callfunc("getmes2",.@mes2_index$,0);
+			if( getstrlen(.@mes2_text$) != 0 )
+				mes .@mes2_text$; // default text
 		}
 	} else
-		mes @mes2_text$; // localized text
+		mes .@mes2_text$; // localized text
 	return;
 }
 
@@ -113,8 +112,8 @@ function	script	mes2	{
 /// Sample localized NPC
 prontera,155,183,4	script	LocalizedNPC	705,{
 	// Get text for specific languages
-	set @menu1$, callfunc("getmes2","LNPC_lang",0);
-	set @menu2$, callfunc("getmes2","LNPC_lang",1);
+	.@menu1$ = callfunc("getmes2","LNPC_lang",0);
+	.@menu2$ = callfunc("getmes2","LNPC_lang",1);
 	do {
 		// get text that fallbacks to language 0
 		callfunc "mes2", "LNPC_name";
@@ -123,7 +122,7 @@ prontera,155,183,4	script	LocalizedNPC	705,{
 		callfunc "mes2", "LNPC_text";
 		next;
 
-		switch(select(@menu1$,@menu2$,"Cancel"))
+		switch(select(.@menu1$,.@menu2$,"Cancel"))
 		{
 			case 1:
 			case 2:
@@ -144,6 +143,6 @@ OnInterIfInitOnce:
 	callfunc "setmes2", "LNPC_lang", 0, "EN";
 	callfunc "setmes2", "LNPC_lang", 1, "PT";
 	callfunc "setmes2", "LNPC_text", 0, "Something in english";
-	callfunc "setmes2", "LNPC_text", 1, "Algo em portugus";
+	callfunc "setmes2", "LNPC_text", 1, "Algo em português";
 	end;
 }

+ 34 - 36
doc/sample/npc_dynamic_shop.txt

@@ -1,9 +1,9 @@
 //===== rAthena Script =======================================
 //= Sample: Dynamic Shop
 //===== By: ==================================================
-//= rAthena Dev Team
+//= Lance
 //===== Last Updated: ========================================
-//= 20101219
+//= 20140208
 //===== Description: ========================================= 
 //= Contains commands needed for a dynamic shop.
 //============================================================
@@ -17,23 +17,21 @@ prontera,181,200,4	script	Dynamic Shop	123,{
 	end;
 
 OnSellItem:
-	for(set @i, 0; @i < getarraysize(@sold_nameid); set @i, @i + 1){
-		if(countitem(@sold_nameid[@i]) < @sold_quantity[@i] || @sold_quantity[@i] <= 0){
+	for (.@i = 0; .@i < getarraysize(@sold_nameid); .@i++) {
+		if (countitem(@sold_nameid[.@i]) < @sold_quantity[.@i] || @sold_quantity[.@i] <= 0) {
 			mes "omgh4x!";
 			close;
-		} else if(@sold_nameid[@i] == 501){
-			delitem 501, @sold_quantity[@i];
-			set $@rpotsleft, $@rpotsleft + @sold_quantity[@i];
-			set Zeny, Zeny + @sold_quantity[@i]*20;
+		} else if (@sold_nameid[.@i] == 501){
+			delitem 501, @sold_quantity[.@i];
+			set $@rpotsleft, $@rpotsleft + @sold_quantity[.@i];
+			set Zeny, Zeny + @sold_quantity[.@i]*20;
+		} else if (@sold_nameid[.@i] == 502){
+			delitem 502, @sold_quantity[.@i];
+			$@opotsleft += @sold_quantity[.@i];
+			set Zeny, Zeny + @sold_quantity[.@i]*100;
 		} else {
-			if(@sold_nameid[@i] == 502){
-				delitem 502, @sold_quantity[@i];
-				set $@opotsleft, $@opotsleft + @sold_quantity[@i];
-				set Zeny, Zeny + @sold_quantity[@i]*100;
-			} else {
-				mes "Sorry, I don't need your items.";
-				close;
-			}
+			mes "Sorry, I don't need your items.";
+			close;
 		}
 	}
 	deletearray @sold_quantity, getarraysize(@sold_quantity);
@@ -42,40 +40,40 @@ OnSellItem:
 	close;
 
 OnBuyItem:
-	for(set @i, 0; @i < getarraysize(@bought_nameid); set @i, @i + 1){
-		if(@bought_quantity[@i] <= 0){
+	for (.@i = 0; .@i < getarraysize(@bought_nameid); .@i++){
+		if (@bought_quantity[.@i] <= 0){
 			mes "omgh4x!";
 			close;
-		} else if(@bought_nameid[@i] == 501){
-			if(@bought_quantity[@i] > $@rpotsleft){
-				if($@rpotsleft > 0){
-					set @bought_quantity[@i], $@rpotsleft;
+		} else if (@bought_nameid[.@i] == 501){
+			if (@bought_quantity[.@i] > $@rpotsleft){
+				if ($@rpotsleft > 0){
+					@bought_quantity[.@i] = $@rpotsleft;
 				} else {
 					mes "We are out of red potions!";
 					close;
 				}
 			}
-			if(Zeny >= 40*@bought_quantity[@i]){
-				set Zeny, Zeny - 40*@bought_quantity[@i];
-				getitem 501, @bought_quantity[@i];
-				set $@rpotsleft, $@rpotsleft - @bought_quantity[@i];
+			if (Zeny >= 40*@bought_quantity[.@i]){
+				set Zeny, Zeny - 40*@bought_quantity[.@i];
+				getitem 501, @bought_quantity[.@i];
+				$@rpotsleft -= @bought_quantity[.@i];
 			} else {
 				mes "You have insufficient cash.";
 				close;
 			}
-		} else {
-			if(@bought_quantity[@i] > $@opotsleft){
-				if($@opotsleft > 0){
-					set @bought_quantity[@i], $@opotsleft;
+		} else /*if (@bought_nameid[.@i] == 502)*/ {
+			if (@bought_quantity[.@i] > $@opotsleft){
+				if ($@opotsleft > 0){
+					@bought_quantity[.@i] = $@opotsleft;
 				} else {
 					mes "We are out of orange potions!";
 					close;
 				}
 			}
-			if(Zeny >= 200*@bought_quantity[@i]){
-				set Zeny, Zeny - 200*@bought_quantity[@i];
-				getitem 502, @bought_quantity[@i];
-				set $@opotsleft, $@opotsleft - @bought_quantity[@i];
+			if (Zeny >= 200*@bought_quantity[.@i]){
+				set Zeny, Zeny - 200*@bought_quantity[.@i];
+				getitem 502, @bought_quantity[.@i];
+				$@opotsleft -= @bought_quantity[.@i];
 			} else {
 				mes "You have insufficient cash.";
 				close;
@@ -89,7 +87,7 @@ OnBuyItem:
 
 OnInit:
 	npcshopitem "dyn_shop1", 501,40,502,200;
-	set $@rpotsleft, 10;
-	set $@opotsleft, 10;
+	$@rpotsleft = 10;
+	$@opotsleft = 10;
 	end;
 }

+ 12 - 13
doc/sample/npc_live_dialogues.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Lupus
 //===== Last Updated: ========================================
-//= 20130905
+//= 20140208
 //===== Description: ========================================= 
 //= An example of an NPC with live dialogue.
 //= Note: This relies on Global_Functions.txt to run.
@@ -20,11 +20,16 @@ prontera,167,177,5	script	Luppy	1107,{
 	mes callfunc("F_Sex","What a beautiful lady!","What a handsome man!");
 
 	// Add some random greeting and goodbye into the menu
-	menu callfunc("F_Hi"),-, callfunc("F_Bye"),M_BYE;
+	if (select(callfunc("F_Hi"), callfunc("F_Bye")) != 1) {
+		mes "[Luppy]";
+		// Add some random goodbye from Global_Functions.txt
+		mes callfunc("F_Bye");
+		close;
+	}
 
 	mes "[Luppy]";
 	// Give a random prize from set list of items
-	if(@gotstuff){
+	if (@gotstuff){
 		// Again, say stuff according to player's gender
 		mes "I like "+callfunc("F_Sex","smiling ladies!","bloody pirates!");
 
@@ -34,21 +39,15 @@ prontera,167,177,5	script	Luppy	1107,{
 	}
 
 	// We set a temp var to give present just once. Player can get more by relogging.
-	set @gotstuff,1;
+	@gotstuff = 1;
 
 	// Get item ID from the list of presents: Apple, Mastela Fruit, Yggdrasil Seed or Orange Juice
-	set @itemIDfromList, callfunc("F_Rand",512,522,608,620);
+	.@itemIDfromList = callfunc("F_Rand",512,522,608,620);
 
 	// Again, say stuff according to player's gender
-	mes "Hey, "+callfunc("F_Sex","sister!","brother!")+" I have "+getitemname(@itemIDfromList)+" for you!";
+	mes "Hey, "+callfunc("F_Sex","sister!","brother!")+" I have "+getitemname(.@itemIDfromList)+" for you!";
 
 	// Get the item from the list
-	getitem @itemIDfromList,1;
-	close;
-
-M_BYE:
-	mes "[Luppy]";
-	// Add some random goodbye from Global_Functions.txt
-	mes callfunc("F_Bye");
+	getitem .@itemIDfromList,1;
 	close;
 }

+ 1 - 1
doc/sample/npc_test_pcre.txt

@@ -1,7 +1,7 @@
 //===== rAthena Script =======================================
 //= Sample: PCRE
 //===== By: ==================================================
-//= rAthena Dev Team
+//= MouseJstr
 //===== Last Updated: ========================================
 //= 20100108
 //===== Description: ========================================= 

+ 1 - 1
doc/sample/npc_test_quest.txt

@@ -1,7 +1,7 @@
 //===== rAthena Script =======================================
 //= Sample: Quest Test
 //===== By: ==================================================
-//= rAthena Dev Team
+//= Akkarin
 //===== Last Updated: ========================================
 //= 20121227
 //===== Description: ========================================= 

+ 32 - 37
doc/sample/npc_test_setitemx.txt

@@ -3,47 +3,42 @@
 //===== By: ==================================================
 //= Lupus
 //===== Last Updated: ========================================
-//= 20121003
+//= 20140208
 //===== Description: ========================================= 
 //= Demonstrates 'setiteminfo' and 'setitemscript' commands.
 //============================================================
 
 prontera,164,161,5	script	Lupus	1013,{
-	menu
-	  "Make Knife[3] Edible",M_1,
-	  "Make Apple Equippable",M_2,
-	  "Edible Knife = Full SP",M_3,
-	  "Knife = Weapon + 3 Notes",M_4;
-	close;
-
-M_1:
-	mes "Ok. We made Knife[3] edible.";
-	setiteminfo(1201,2,0); //type = 0 : potion
-	setitemscript(1201,"{dispbottom \"* You used Knife[3]\";}");
-	close;
-
-M_2:
-	mes "Ok. We made Apple equippable.";
-	setiteminfo(512,2,5); //item type -> headgear (type = 5)
-	setiteminfo(512,5,512); //where to equip to (equip = 512)
-	setiteminfo(512,11,256); //set as headgear location (loc = 256)
-	setiteminfo(512,14,85); //set Headgear Sprite ID (view id = 85)
-	setitemscript(512,"{dispbottom \"* Other item's changed\";}",0);
-	setitemscript(512,"{dispbottom \"* Equipped\";}",1);
-	setitemscript(512,"{dispbottom \"* Unequipped\";}",2);
-	close;
-
-M_3:
-	mes "Ok. Now edible Knife[3] restores your SP.";
-	setitemscript(1201,2,0);
-	setitemscript(1201,"{dispbottom \"* You ate Knife[3] + Full SP\"; percentheal 0,100;}");
-	close;
-
-M_4:
-	mes "Ok. We made Knife a weapon, but added 3 notes.";
-	setiteminfo(1201,2,4); //type = 4 : weapon again
-	setitemscript(1201,"{dispbottom \"* 1 Used\";}",0);
-	setitemscript(1201,"{dispbottom \"* 2 Equipped\";}",1);
-	setitemscript(1201,"{dispbottom \"* 3 Unequipped\";}",2);
+	mes "Please choose an option:";
+	next;
+	switch (select("Make Knife[3] Edible", "Make Apple Equippable", "Edible Knife = Full SP", "Knife = Weapon + 3 Notes")) {
+	case 1:
+		mes "Ok. We made Knife[3] edible.";
+		setiteminfo(Knife, 2, IT_HEALING); //type = 0 : potion
+		setitemscript(Knife, "{dispbottom \"* You used Knife[3]\";}");
+		break;
+	case 2:
+		mes "Ok. We made Apple equippable.";
+		setiteminfo(Apple, 2, IT_ARMOR); //item type -> headgear (type = 5 -> IT_ARMOR)
+		setiteminfo(Apple, 5, 512); //where to equip to (equip = 512)
+		setiteminfo(Apple, 11, 256); //set as headgear location (loc = 256)
+		setiteminfo(Apple, 14, 85); //set Headgear Sprite ID (view id = 85)
+		setitemscript(Apple, "{dispbottom \"* Other item's changed\";}", 0);
+		setitemscript(Apple, "{dispbottom \"* Equipped\";}", 1);
+		setitemscript(Apple, "{dispbottom \"* Unequipped\";}", 2);
+		break;
+	case 3:
+		mes "Ok. Now edible Knife[3] restores your SP.";
+		setitemscript(Knife, 2, 0);
+		setitemscript(Knife, "{dispbottom \"* You ate Knife[3] + Full SP\"; percentheal 0,100;}");
+		break;
+	case 4:
+		mes "Ok. We made Knife a weapon, but added 3 notes.";
+		setiteminfo(Knife, 2, IT_WEAPON); //type = 4 -> IT_WEAPON
+		setitemscript(Knife, "{dispbottom \"* 1 Used\";}", 0);
+		setitemscript(Knife, "{dispbottom \"* 2 Equipped\";}", 1);
+		setitemscript(Knife, "{dispbottom \"* 3 Unequipped\";}", 2);
+		break;
+	}
 	close;
 }

+ 8 - 7
doc/sample/npc_test_setmapflag.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Jbain
 //===== Last Updated: ========================================
-//= 20121003
+//= 20140208
 //===== Description: ========================================= 
 //= Demonstrates mapflag commands.
 //============================================================
@@ -11,22 +11,23 @@
 prontera,165,145,0	script	EXPflagtest	123,{
 	mes "[EXPflagtest]";
 	mes "Set up the map rates:";
+	next;
 	switch(select("Job EXP:Base EXP:PVP on:Reset all flags")) {
 	case 1:
 		input .@rate;
-		setmapflag "prontera",MF_JEXP,.@rate;
+		setmapflag "prontera",mf_jexp,.@rate;
 		close;
 	case 2:
 		input .@rate;
-		setmapflag "prontera",MF_BEXP,.@rate;
+		setmapflag "prontera",mf_bexp,.@rate;
 		close;
 	case 3:
-		setmapflag "prontera",MF_PVP;
+		setmapflag "prontera",mf_pvp;
 		close;
 	case 4:
-		removemapflag "prontera",MF_BEXP;
-		removemapflag "prontera",MF_JEXP;
-		removemapflag "prontera",MF_PVP;
+		removemapflag "prontera",mf_bexp;
+		removemapflag "prontera",mf_jexp;
+		removemapflag "prontera",mf_pvp;
 		close;
 	}
 }

+ 5 - 4
doc/sample/npc_test_skill.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20121003
+//= 20140208
 //===== Description: ========================================= 
 //= Demonstrates the 'skill' command.
 //============================================================
@@ -17,15 +17,16 @@
 
 prontera,157,182,0	script	Skills	116,{
 	mes "What skill would you like?";
+	next;
 	switch(select("First Aid:Play Dead:Heal:None")) {
 	case 1:
-		skill 142,1,0;	// Permanently gives player level 1 First Aid
+		skill "NV_FIRSTAID",1,0;	// Permanently gives player level 1 First Aid
 		close;
 	case 2:
-		skill 143,1,0;	// Permanently gives player level 1 Play Dead
+		skill "NV_TRICKDEAD",1,0;	// Permanently gives player level 1 Play Dead
 		close;
 	case 3:
-		skill 28,3,1;	// Temporarily gives player level 3 Heal
+		skill "AL_HEAL",3,1;	// Temporarily gives player level 3 Heal
 		close;
 	case 4:
 		close;

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 288 - 284
doc/script_commands.txt


+ 2 - 1
npc/cities/rachel.txt

@@ -310,7 +310,8 @@ rachel,206,30,3	script	Freya's Priest#play	920,{
 	close2;
 	set .@play,rand(1,10);
 	if (.@play < 3)
-		consumeitem 601; //Wing_Of_Fly
+		//consumeitem 601; //Wing_Of_Fly
+		warp "Random",0,0;
 	else if (.@play < 5)
 		consumeitem 12016; //Speed_Up_Potion
 	else

+ 148 - 0
npc/custom/battleground/bg_emp.txt

@@ -0,0 +1,148 @@
+//===== rAthena Script =======================================
+//= Battleground: Emperium
+//===== By: ==================================================
+//= AnnieRuru
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Description: =========================================
+//= A simple battleground script:
+//= Destroy the opponent's Emperium to win the match.
+//===== Additional Comments: =================================
+//= 1.0 First version, edited. [Euphy]
+//============================================================
+
+-	script	bg_emp#control	-1,{
+OnInit:
+	.minplayer2start = 1;      // minimum players to start (ex. if 3vs3, set to 3)
+	.eventlasting    = 20*60;  // event duration before auto-reset (20 minutes * seconds)
+	setarray .rewarditem[0],   // rewards for the winning team: <item>,<amount>,...
+		501, 10;
+
+	.team1name$ = "Red";
+	.team2name$ = "Blue";
+	end;
+OnStart:
+	if ( getwaitingroomstate( 0, .rednpcname$ ) < .minplayer2start || getwaitingroomstate( 0, .bluenpcname$ ) < .minplayer2start )
+		end;
+
+	// create Battleground and teams
+	.red = waitingroom2bg( "bat_a01", 157,347, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ );
+	copyarray .team1aid, $@arenamembers, $@arenamembersnum;
+	.team1count = .minplayer2start;
+	.blue = waitingroom2bg( "bat_a01", 142,51, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ );
+	copyarray .team2aid, $@arenamembers, $@arenamembersnum;
+	.team2count = .minplayer2start;
+	delwaitingroom .rednpcname$;
+	delwaitingroom .bluenpcname$;
+	disablenpc .rednpcname$;
+	disablenpc .bluenpcname$;
+	setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";
+	setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue";
+	bg_warp .red, "bat_a01", 171,346;
+	bg_warp .blue, "bat_a01", 162,50;
+	bg_updatescore "bat_a01", 0, 0;
+
+	// delay before match begins
+	sleep 6000;
+	mapannounce "bat_a01", "The rules are simple. The first team to break the opponent's Emperium wins!", bc_map;
+	sleep 3000;
+	for ( .@i = 5; .@i > 0; .@i-- ) {
+		mapannounce "bat_a01", "["+ .@i +"]", bc_map;
+		sleep 1000;
+	}
+	mapannounce "bat_a01", "Start!", bc_map;
+
+	// spawn Emperiums
+	bg_monster .red,"bat_a01",171,346, "--ja--",1915, strnpcinfo(3)+"::OnRedDown";
+	bg_monster .blue,"bat_a01",162,50, "--ja--",1914, strnpcinfo(3)+"::OnBlueDown";
+	delwall "bg_emp_town_red";
+	delwall "bg_emp_town_blue";
+
+	// match duration
+	sleep .eventlasting * 1000;
+
+	// end match, destroy Battleground, reset NPCs
+	killmonster "bat_a01", strnpcinfo(3)+"::OnRedDown";
+	killmonster "bat_a01", strnpcinfo(3)+"::OnBlueDown";
+	if ( .winside ) {
+		mapannounce "bat_a01", "- "+ getd( ".team"+ .winside +"name$" ) +" Team is victorious! -", bc_map;
+		for ( .@i = 0; .@i < getd(".team"+ .winside +"count"); .@i++ )
+			getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .winside +"aid["+ .@i +"]" );
+	} else
+		mapannounce "bat_a01", "- The match has ended in a draw! -", bc_map;
+	sleep 5000;
+	bg_warp .red, "prontera", 155,182;
+	bg_warp .blue, "prontera", 158,182;
+	bg_destroy .red;
+	bg_destroy .blue;
+	delwall "bg_emp_town_red";
+	delwall "bg_emp_town_blue";
+	deletearray .team1aid;
+	deletearray .team2aid;
+	.winside = .team1count = .team2count = 0;
+	enablenpc .rednpcname$;
+	enablenpc .bluenpcname$;
+	donpcevent .rednpcname$ +"::OnStart";
+	donpcevent .bluenpcname$ +"::OnStart";
+	end;
+
+// Emperium destroyed
+OnRedDown:  callsub L_EmpDown, 1, 2;
+OnBlueDown: callsub L_EmpDown, 2, 1;
+L_EmpDown:
+	mapannounce "bat_a01", strcharinfo(0) +" has destroyed "+ getd( ".team"+ getarg(0) +"name$" ) +" Team's Emperium.", bc_map;
+	.winside = getarg(1);
+	awake strnpcinfo(0);
+	end;
+
+// "OnDeath" event
+OnRedDead:
+OnBlueDead:
+	sleep2 1250;
+	percentheal 100,100;
+	end;
+
+// "OnQuit" event
+OnRedQuit:  callsub L_Quit, 1, 2;
+OnBlueQuit: callsub L_Quit, 2, 1;
+L_Quit:
+	percentheal 100, 100;
+	while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++;
+	deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1;
+	setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1;
+	if ( getd(".team"+ getarg(0) +"count") ) end;
+	mapannounce "bat_a01", "All "+ getd( ".team"+ getarg(0) +"name$" ) +" team members have quit!", bc_map, 0xff3333;
+	end;
+}
+
+prontera,155,182,5	script	Red Team#bg_emp	733,{
+	end;
+OnInit:
+	sleep 1;
+	set getvariableofnpc( .rednpcname$, "bg_emp#control" ), strnpcinfo(0);
+OnStart:
+	waitingroom "Red Team", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
+	end;
+}
+
+prontera,158,182,5	script	Blue Team#bg_emp	734,{
+	end;
+OnInit:
+	sleep 1;
+	set getvariableofnpc( .bluenpcname$, "bg_emp#control" ), strnpcinfo(0);
+OnStart:
+	waitingroom "Blue Team", getvariableofnpc( .minplayer2start, "bg_emp#control" ) +1, "bg_emp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_emp#control" );
+	end;
+}
+
+bat_a01	mapflag	battleground
+bat_a01	mapflag	nosave	SavePoint
+bat_a01	mapflag	nowarp
+bat_a01	mapflag	nowarpto
+bat_a01	mapflag	noteleport
+bat_a01	mapflag	nomemo
+bat_a01	mapflag	nopenalty
+bat_a01	mapflag	nobranch
+bat_a01	mapflag	noicewall

+ 127 - 0
npc/custom/battleground/bg_pvp.txt

@@ -0,0 +1,127 @@
+//===== rAthena Script =======================================
+//= Battleground: PVP
+//===== By: ==================================================
+//= AnnieRuru
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Description: =========================================
+//= A simple battleground script:
+//= Kill players from the other team.
+//===== Additional Comments: =================================
+//= 1.0 First version, edited. [Euphy]
+//============================================================
+
+-	script	bg_pvp#control	-1,{
+OnInit:
+	.minplayer2start = 2;      // minimum players to start (ex. if 3vs3, set to 3)
+	.eventlasting    = 20*60;  // event duration before auto-reset (20 minutes * seconds)
+	setarray .rewarditem[0],   // rewards for the winning team: <item>,<amount>,...
+		501, 10;
+	end;
+OnStart:
+	if ( getwaitingroomstate( 0, .rednpcname$ ) < .minplayer2start || getwaitingroomstate( 0, .bluenpcname$ ) < .minplayer2start )
+		end;
+
+	// create Battleground and teams
+	.red = waitingroom2bg( "guild_vs3", 13,50, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ );
+	copyarray .team1aid, $@arenamembers, $@arenamembersnum;
+	.team1count = .minplayer2start;
+	.blue = waitingroom2bg( "guild_vs3", 86,50, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ );
+	copyarray .team2aid, $@arenamembers, $@arenamembersnum;
+	.team2count = .minplayer2start;
+	delwaitingroom .rednpcname$;
+	delwaitingroom .bluenpcname$;
+	bg_warp .red, "guild_vs3", 13,50;
+	bg_warp .blue, "guild_vs3", 86,50;
+	.score[1] = .score[2] = .minplayer2start;
+	bg_updatescore "guild_vs3", .score[1], .score[2];
+
+	// match duration
+	sleep .eventlasting * 1000;
+
+	// end match, destroy Battleground, reset NPCs
+	if ( .score[1] > .score[2] ) {
+		mapannounce "guild_vs3", "- Red Team is victorious! -", bc_map;
+		callsub L_Reward, 1;
+	}
+	else if ( .score[1] < .score[2] ) {
+		mapannounce "guild_vs3", "- Blue Team is victorious! -", bc_map;
+		callsub L_Reward, 2;
+	}
+	else
+		mapannounce "guild_vs3", "- The match has ended in a draw! -", bc_map;
+	bg_warp .red, "prontera",152,178;
+	bg_warp .blue, "prontera",154,178;
+	bg_destroy .red;
+	bg_destroy .blue;
+	donpcevent .rednpcname$ +"::OnStart";
+	donpcevent .bluenpcname$ +"::OnStart";
+	end;
+
+L_Reward:
+	for ( .@i = 0; .@i < getd(".team"+ getarg(0) +"count"); .@i++ )
+		getitem .rewarditem[0], .rewarditem[1], getd(".team"+ getarg(0) +"aid["+ .@i +"]" );
+	return;
+
+// "OnDeath" event
+OnRedDead:  callsub L_Dead, 1;
+OnBlueDead: callsub L_Dead, 2;
+L_Dead:
+	.score[ getarg(0) ]--;
+	bg_updatescore "guild_vs3", .score[1], .score[2];
+	while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++;
+	deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1;
+	setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1;
+	bg_leave;
+	if ( !.score[ getarg(0) ] )
+		awake strnpcinfo(0);
+	sleep2 1250;
+	percentheal 100,100;
+	end;
+
+// "OnQuit" event
+OnRedQuit:  callsub L_Quit, 1;
+OnBlueQuit: callsub L_Quit, 2;
+L_Quit:
+	.score[ getarg(0) ]--;
+	bg_updatescore "guild_vs3", .score[1], .score[2];
+	percentheal 100, 100;
+	while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++;
+	deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1;
+	setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1;
+	if ( !.score[ getarg(0) ] )
+		awake strnpcinfo(0);
+	end;
+}
+
+prontera,152,178,5	script	Red Team#bg_pvp	733,{
+	end;
+OnInit:
+	sleep 1;
+	set getvariableofnpc( .rednpcname$, "bg_pvp#control" ), strnpcinfo(0);
+OnStart:
+	waitingroom "Red Team", getvariableofnpc( .minplayer2start, "bg_pvp#control" ) +1, "bg_pvp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_pvp#control" );
+	end;
+}
+
+prontera,154,178,5	script	Blue Team#bg_pvp	734,{
+	end;
+OnInit:
+	sleep 1;
+	set getvariableofnpc( .bluenpcname$, "bg_pvp#control" ), strnpcinfo(0);
+OnStart:
+	waitingroom "Blue Team", getvariableofnpc( .minplayer2start, "bg_pvp#control" ) +1, "bg_pvp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_pvp#control" );
+	end;
+}
+
+guild_vs3	mapflag	battleground	2
+guild_vs3	mapflag	nosave	SavePoint
+guild_vs3	mapflag	nowarp
+guild_vs3	mapflag	nowarpto
+guild_vs3	mapflag	noteleport
+guild_vs3	mapflag	nomemo
+guild_vs3	mapflag	nopenalty
+guild_vs3	mapflag	nobranch
+guild_vs3	mapflag	noicewall

+ 0 - 0
npc/custom/battleground/bg_common.txt → npc/custom/battleground/unofficial/bg_common.txt


+ 0 - 0
npc/custom/battleground/bg_flavius_01.txt → npc/custom/battleground/unofficial/bg_flavius_01.txt


+ 0 - 0
npc/custom/battleground/bg_flavius_02.txt → npc/custom/battleground/unofficial/bg_flavius_02.txt


+ 0 - 0
npc/custom/battleground/bg_kvm01.txt → npc/custom/battleground/unofficial/bg_kvm01.txt


+ 0 - 0
npc/custom/battleground/bg_kvm02.txt → npc/custom/battleground/unofficial/bg_kvm02.txt


+ 0 - 0
npc/custom/battleground/bg_kvm03.txt → npc/custom/battleground/unofficial/bg_kvm03.txt


+ 0 - 0
npc/custom/battleground/bg_tierra_01.txt → npc/custom/battleground/unofficial/bg_tierra_01.txt


+ 0 - 0
npc/custom/battleground/bg_tierra_02.txt → npc/custom/battleground/unofficial/bg_tierra_02.txt


+ 72 - 0
npc/custom/card_seller.txt

@@ -0,0 +1,72 @@
+//===== rAthena Script =======================================
+//= Card Seller A-Z
+//===== By: ==================================================
+//= AnnieRuru
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Description: =========================================
+//= Sells all cards dropped by mobs, grouped alphabetically.
+//= MVP cards are excluded from the list.
+//=
+//= NOTE: Requires SQL item and mob databases.
+//===== Additional Comments: =================================
+//= 1.0 First version, edited. [Euphy]
+//============================================================
+
+prontera,155,177,5	script	Card Seller	100,{
+	mes "[Card Seller]";
+	mes "Welcome!";
+	mes "I can sell you any normal monster card in the game. Would you like to have a look?";
+	next;
+	.@s = select( .alphabet_menu$ ) -1;
+	close2;
+	callshop "card_mob#"+ .alphabet$[.@s], 1;
+	end;
+OnInit:
+	if (checkre(0)) {
+		.@mob_db$  = "mob_db_re";
+		.@item_db$ = "item_db_re";
+	} else {
+		.@mob_db$  = "mob_db";
+		.@item_db$ = "item_db";
+	}
+	freeloop 1;
+	.@total = query_sql( "SELECT DISTINCT LEFT( `name_japanese`, 1 ) AS alphabets FROM `"+ .@item_db$ +"` RIGHT JOIN `"+ .@mob_db$ +"` ON `"+ .@item_db$ +"`.`id` = `"+ .@mob_db$ +"`.`dropcardid` WHERE ~(`MODE`) & 32 AND `type` = 6 GROUP BY `name_japanese` ORDER BY alphabets;", .alphabet$ );
+	for ( .@i = 0; .@i < .@total; .@i++ ) {
+		.alphabet_menu$ = .alphabet_menu$ + .alphabet$[.@i] +" Cards:";
+		.@nb = query_sql( "SELECT `"+ .@item_db$ +"`.`id` FROM `"+ .@item_db$ +"` RIGHT JOIN `"+ .@mob_db$ +"` ON `"+ .@item_db$ +"`.`id` = `"+ .@mob_db$ +"`.`dropcardid` WHERE ~(`MODE`) & 32 AND `type` = 6 AND LEFT( `name_japanese`, 1 ) = '"+ .alphabet$[.@i] +"' GROUP BY `name_japanese` ORDER BY `name_japanese` LIMIT 128;", .@id );
+		npcshopdelitem "card_mob#"+ .alphabet$[.@i], 501;
+		for ( .@j = 0; .@j < .@nb; .@j++ )
+			npcshopadditem "card_mob#"+ .alphabet$[.@i], .@id[.@j], 1000000;
+	}
+	freeloop 0;
+	end;
+}
+-	shop	card_mob#A	-1,501:1000
+-	shop	card_mob#B	-1,501:1000
+-	shop	card_mob#C	-1,501:1000
+-	shop	card_mob#D	-1,501:1000
+-	shop	card_mob#E	-1,501:1000
+-	shop	card_mob#F	-1,501:1000
+-	shop	card_mob#G	-1,501:1000
+-	shop	card_mob#H	-1,501:1000
+-	shop	card_mob#I	-1,501:1000
+-	shop	card_mob#J	-1,501:1000
+-	shop	card_mob#K	-1,501:1000
+-	shop	card_mob#L	-1,501:1000
+-	shop	card_mob#M	-1,501:1000
+-	shop	card_mob#N	-1,501:1000
+-	shop	card_mob#O	-1,501:1000
+-	shop	card_mob#P	-1,501:1000
+-	shop	card_mob#Q	-1,501:1000
+-	shop	card_mob#R	-1,501:1000
+-	shop	card_mob#S	-1,501:1000
+-	shop	card_mob#T	-1,501:1000
+-	shop	card_mob#U	-1,501:1000
+-	shop	card_mob#V	-1,501:1000
+-	shop	card_mob#W	-1,501:1000
+-	shop	card_mob#X	-1,501:1000
+-	shop	card_mob#Y	-1,501:1000
+-	shop	card_mob#Z	-1,501:1000

+ 188 - 0
npc/custom/etc/autopot.txt

@@ -0,0 +1,188 @@
+//===== rAthena Script =======================================
+//= Auto-Potion
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Description: =========================================
+//= Provides an @autopot command to automatically use potions
+//= when hit (i.e. 'autobonus2').
+//===== Additional Comments: =================================
+//= 1.0 First version. [Euphy]
+//============================================================
+
+-	script	#autopot	-1,{
+OnInit:
+	bindatcmd("autopot",strnpcinfo(0)+"::OnCommand");
+	end;
+
+L_Help:
+	dispbottom "Available commands:";
+	dispbottom "    @autopot <item id> {<min hp % [1..100]> {<delay [50..1000]>}}";
+	dispbottom "    @autopot <on|off>";
+	dispbottom "    @autopot list";
+	dispbottom "    @autopot info";
+	dispbottom "    @autopot help";
+	return;
+
+L_Info:
+	dispbottom "------ Auto-Potion Information ------";
+	dispbottom "POTION:  " + getitemname(@autopot_id) + " (" + @autopot_id + ")";
+	dispbottom "MIN HP:   " + @autopot_min + " %";
+	dispbottom "DELAY:    " + @autopot_delay + " ms";
+	dispbottom "---------------------------------------------";
+	return;
+
+L_Start:
+	.@potion = getarg(0);
+	.@min    = getarg(1);
+	.@delay  = getarg(2);
+	if (.@min   < 1  || .@min   > 100)  .@min   = 90;
+	if (.@delay < 50 || .@delay > 1000) .@delay = 50;  // lower values will increase server strain
+	switch (.@potion) {
+		case 501:
+		case 507:
+		case 545:
+		case 569: .@effect = EF_POTION1; break;
+		case 502: .@effect = EF_POTION2; break;
+		case 503:
+		case 508:
+		case 546:
+		case 579:
+		case 11500: .@effect = EF_POTION3; break;
+		case 504:
+		case 509:
+		case 547:
+		case 11501:
+		case 11503:
+		case 11548: .@effect = EF_POTION4; break;
+		case 512:
+		case 513:
+		case 515:
+		case 516:
+		case 548:
+		case 549:
+		case 550:
+		case 582:
+		case 607: .@effect = EF_POTION7; break;
+		default: .@effect = EF_EXIT; break;
+	}
+
+	if (BaseLevel < getiteminfo(.@potion,12)) {
+		message strcharinfo(0), "Your base level is too low to use '" + getitemname(.@potion) + "'.";
+		end;
+	}
+
+	@autopot_id    = .@potion;
+	@autopot_min   = .@min;
+	@autopot_delay = .@delay;
+	@autopot_eff   = .@effect;
+	@autopot_none  = 0;
+	bonus_script "{ callfunc \"start_autopot\"; }",86400,8,0,SI_INCHEALRATE;
+
+	message strcharinfo(0), "Auto-Potion started.";
+	callsub L_Info;
+	return;
+
+OnCommand:
+	if (!getarraysize(.@atcmd_parameters$)) {
+		message strcharinfo(0), "Invalid syntax.";
+		callsub L_Help;
+		end;
+	}
+
+	.@command$ = strtolower(.@atcmd_parameters$[0]);
+
+	if (.@command$ == "on") {
+		if (@autopot_min)
+			message strcharinfo(0), "Auto-Potion is already on.";
+		else if (@autopot_min_) {
+			@autopot_min  = @autopot_min_;
+			@autopot_min_ = 0;
+			message strcharinfo(0), "Auto-Potion enabled.";
+			callsub L_Info;
+		} else {
+			message strcharinfo(0), "Auto-Potion has not been set.";
+			callsub L_Help;
+		}
+		end;
+	} else if (.@command$ == "off") {
+		if (!@autopot_min)
+			message strcharinfo(0), "Auto-Potion is already off.";
+		else {
+			@autopot_min_ = @autopot_min;
+			@autopot_min  = 0;
+			message strcharinfo(0), "Auto-Potion disabled.";
+		}
+		end;
+	} else if (.@command$ == "list") {  // credits to AnnieRuru
+		getinventorylist;
+		for (; .@i < @inventorylist_count; .@i++) {
+			if (getiteminfo(@inventorylist_id[.@i],2) == IT_HEALING) {
+				.@items[.@count] = @inventorylist_id[.@i];
+				.@menu$ = .@menu$ + sprintf("~ ^0055FF%s^000000 (%dx):", getitemname(@inventorylist_id[.@i]), countitem(@inventorylist_id[.@i]));
+				.@count++;
+			}
+		}
+		if (.@count) {	// 'mes' window needed if player is hit during selection
+			mes "[ Auto-Potion ]";
+			mes "Select a healing item.";
+			.@select = select(.@menu$ + "   ^777777Cancel^000000") - 1;
+			if (.@select != .@count)
+				callsub L_Start, .@items[.@select], 0, 0;
+			close2;
+		} else
+			message strcharinfo(0), "There are no healing items in your inventory.";
+		end;
+	} else if (.@command$ == "info") {
+		if (@autopot_min) {
+			message strcharinfo(0), "Auto-Potion information is displayed below.";
+			callsub L_Info;
+		} else
+			message strcharinfo(0), "Auto-Potion is not enabled.";
+		end;
+	} else if (.@command$ == "help") {
+		message strcharinfo(0), "List of commands is displayed below.";
+		callsub L_Help;
+		end;
+	} else {
+		.@potion = atoi(.@atcmd_parameters$[0]);
+		if (getiteminfo(.@potion,2) != IT_HEALING) {
+			message strcharinfo(0), getitemname(.@potion) + " is not a healing item.";
+			end;
+		}
+		callsub L_Start, .@potion, atoi(.@atcmd_parameters$[1]), atoi(.@atcmd_parameters$[2]);
+		end;
+	}
+}
+
+function	script	start_autopot	{
+	if (@autopot_active) end;
+	@autopot_active = 1;
+	while (Hp && Hp * 100 / MaxHp < @autopot_min) {
+		if (!countitem(@autopot_id)) {
+			if (@autopot_none <= gettimetick(2)) {
+				@autopot_none = gettimetick(2) + 10;
+				dispbottom "There are no '" + getitemname(@autopot_id) + "' in your inventory.";
+			}
+			break;
+		}
+		if (getstatus(SC_BERSERK) || getstatus(SC_SATURDAYNIGHTFEVER) || getstatus(SC_GRAVITATION) ||
+		    getstatus(SC_TRICKDEAD) || getstatus(SC_HIDING) || getstatus(SC__SHADOWFORM) || getstatus(SC__INVISIBILITY) ||
+		    getstatus(SC__MANHOLE) || getstatus(SC_KAGEHUMI) || getstatus(SC_HEAT_BARREL_AFTER))
+			break;
+		if (getstatus(SC_STONE) || getstatus(SC_FREEZE) || getstatus(SC_STUN) || getstatus(SC_SLEEP))
+			;
+		else {
+			delitem @autopot_id,1;
+			consumeitem @autopot_id;
+			specialeffect2 @autopot_eff;
+		}
+		sleep2 @autopot_delay;
+	}
+	@autopot_active = 0;
+	autobonus2 "{}",10000,1,BF_WEAPON|BF_MAGIC;
+	end;
+}

+ 401 - 0
npc/custom/etc/mvp_room.txt

@@ -0,0 +1,401 @@
+//===== rAthena Script =======================================
+//= Private MVP & Branch Room
+//===== By: ==================================================
+//= AnnieRuru
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Description: =========================================
+//= Allows players to rent an MVP room for personal use,
+//= or for a party or guild.
+//===== Additional Comments: =================================
+//= 1.0 First version, edited. [Euphy]
+//============================================================
+
+prontera,148,174,5	script	Private MVP Room	100,{
+	mes "[Private MVP Room]";
+	mes "Please select a private MVP room.";
+	if ( getvariableofnpc( .rentcost, "MVP Summoner" ) )
+		mes "The cost to rent a room for "+ getvariableofnpc( .timeout, "MVP Summoner" ) +" minutes is "+ callfunc("F_InsertComma", getvariableofnpc( .rentcost, "MVP Summoner" ) ) +" zeny.";
+	else
+		mes "You can only use the room for only "+ getvariableofnpc( .timeout, "MVP Summoner" ) +" minutes.";
+	mes " ";
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		if ( getvariableofnpc( .renttime[.@i], "MVP Summoner" ) )
+			mes "Room #"+ .@i +" = "+ .color$[ .type[.@i] ] + .whoinuse$[.@i] +"^000000";
+	next;
+	.@room = select(
+		"MVP Room 1 ["+ getmapusers("06guild_01") +"]",
+		"MVP Room 2 ["+ getmapusers("06guild_02") +"]",
+		"MVP Room 3 ["+ getmapusers("06guild_03") +"]",
+		"MVP Room 4 ["+ getmapusers("06guild_04") +"]",
+		"MVP Room 5 ["+ getmapusers("06guild_05") +"]",
+		"MVP Room 6 ["+ getmapusers("06guild_06") +"]",
+		"MVP Room 7 ["+ getmapusers("06guild_07") +"]",
+		"MVP Room 8 ["+ getmapusers("06guild_08") +"]");
+	if ( getvariableofnpc( .renttime[.@room], "MVP Summoner" ) ) {
+		if ( .inuseid[.@room] == getcharid( .type[.@room] ) ) {
+			warp "06guild_0"+ .@room, 0,0;
+			close;
+		} else {
+			mes "[Private MVP Room]";
+			mes "This room is reserved for ";
+			mes .color$[ .type[.@room] ] + .whoinuse$[.@room] +"^000000.";
+			mes "Please select another.";
+			close;
+		}
+	}
+	mes "[Private MVP Room]";
+	mes "Reserve this room for...";
+	next;
+	set .@type, select( "For my party members", "For my guild members", "For personal account use" );
+	if ( !getcharid(.@type) ) {
+		mes "[Private MVP Room]";
+		mes "You do not own a "+( ( .@type == 1 )? "Party" : "Guild" )+".";
+		close;
+	}
+	else if ( Zeny < getvariableofnpc( .rentcost, "MVP Summoner" ) ) {
+		mes "You don't have enough zeny to rent a room.";
+		close;
+	}
+	else if ( getvariableofnpc( .renttime[.@room], "MVP Summoner" ) ) {
+		mes "[Private MVP Room]";
+		mes "I'm sorry, somebody else has already registered this room faster than you.";
+		close;
+	}
+	for ( .@i = 1; .@i <= 8; .@i++ ) {
+		if ( ( getvariableofnpc( .renttime[.@i], "MVP Summoner" ) ) && .@type == .type[.@i] && getcharid(.@type) == .inuseid[.@i] ) {
+			mes "[Private MVP Room]";
+			mes "You already rented Room#"+ .@i +". Use that room instead.";
+			close;
+		}
+	}
+	set .type[.@room], .@type;
+	set .inuseid[.@room], getcharid(.@type);
+	set .whoinuse$[.@room], strcharinfo( ( .@type == 3 )? 0 : .@type );
+	Zeny -= getvariableofnpc( .rentcost, "MVP Summoner" );
+	warp "06guild_0"+ .@room, 0,0;
+	killmonsterall "06guild_0"+ .@room;
+	donpcevent "MVP Summoner#"+ .@room +"::OnEnterMap";
+	close;
+OnInit:
+	.color$[1] =  "^EE8800"; // party color
+	.color$[2] =  "^70CC11"; // guild color
+	.color$[3] =  "^0000FF"; // account color
+	end;
+}
+
+-	script	MVP Summoner	-1,{
+	mes "[MVP Summoner]";
+	mes "Time left: " + callfunc( "Time2Str", .renttime[ atoi( strnpcinfo(2) ) ] + .timeout * 60 );
+	mes "Hi, what can I do for you?";
+	next;
+	switch ( select(.menu$) ) {
+	case 1:
+		mes "[MVP Summoner]";
+		if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) ) {
+			mes "I cannot offer heal service when there are monsters around.";
+			close;
+		}
+		sc_end SC_STONE;
+		sc_end SC_SLOWDOWN;
+		sc_end SC_FREEZE;
+		sc_end SC_SLEEP;
+		sc_end SC_CURSE;
+		sc_end SC_SILENCE;
+		sc_end SC_CONFUSION;
+		sc_end SC_BLIND;
+		sc_end SC_BLEEDING;
+		sc_end SC_DECREASEAGI;
+		sc_end SC_POISON;
+		sc_end SC_HALLUCINATION;
+		sc_end SC_STRIPWEAPON;
+		sc_end SC_STRIPARMOR;
+		sc_end SC_STRIPHELM;
+		sc_end SC_STRIPSHIELD;
+		sc_end SC_CHANGEUNDEAD;
+		sc_end SC_ORCISH;
+		sc_end SC_BERSERK;
+		sc_end SC_SKE;
+		sc_end SC_SWOO;
+		sc_end SC_SKA;
+		percentheal 100,100;
+		specialeffect2 EF_HEAL;
+		mes "You are completely healed.";
+		close;
+	case 2:
+		if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) ) {
+			mes "[MVP Summoner]";
+			mes "I cannot summon another MVP when there are monsters around.";
+			close;
+		} else if ( .mvpcost ) {
+			mes "[MVP Summoner]";
+			mes "The cost to summon an MVP is "+ callfunc( "F_InsertComma", .mvpcost ) +" zeny.";
+			next;
+			set .@menu, select(.mvpid_menu$) -1;
+			mes "[MVP Summoner]";
+			if ( Zeny < .mvpcost ) {
+				mes "You don't have enough zeny to summon an MVP.";
+				close;
+			}
+		} else {
+			set .@menu, select(.mvpid_menu$) -1;
+			mes "[MVP Summoner]";
+		}
+		mes "Please get ready.";
+		close2;
+		if ( Zeny < .mvpcost ) end;
+		Zeny -= .mvpcost;
+		monster "this", 0, 0, "--ja--", .mvpid[.@menu], 1, strnpcinfo(3)+"::OnMobDead";
+		end;
+	case 3:
+		if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) ) {
+			mes "[MVP Summoner]";
+			mes "I cannot summon another mini-boss when there are monsters around.";
+			close;
+		} else if ( .bosscost ) {
+			mes "[MVP Summoner]";
+			mes "The cost to summon a mini-boss is "+ callfunc( "F_InsertComma", .bosscost ) +" zeny.";
+			next;
+			set .@menu, select(.bossid_menu$) -1;
+			mes "[MVP Summoner]";
+			if ( Zeny < .bosscost ) {
+				mes "You doesn't have enough zeny to summon a mini-boss.";
+				close;
+			}
+		} else {
+			set .@menu, select(.bossid_menu$) -1;
+			mes "[MVP Summoner]";
+		}
+		mes "Please get ready.";
+		close2;
+		if ( Zeny < .bosscost ) end;
+		Zeny -= .bosscost;
+		monster "this", 0, 0, "--ja--", .bossid[.@menu], 1, strnpcinfo(3)+"::OnMobDead";
+		end;
+	case 4:
+		if ( mobcount( "this", strnpcinfo(3)+"::OnMobDead" ) > 0 ) {
+			mes "[MVP Summoner]";
+			mes "I cannot offer this service when there are monsters around.";
+			close;
+		}
+		close2;
+		callshop "MVP room#branch", 1;
+		end;
+	case 5:
+		mes "[MVP Summoner]";
+		mes "Are you sure you want to leave this room?";
+		next;
+		if ( select( "Yes:No") == 1 )
+			warp .respawnmap$, .respawnx, .respawny;
+		close;
+	case 6:
+		mes "[MVP Summoner]";
+		if ( getmapusers( strcharinfo(3) ) > 1 ) {
+			mes "There are still some players in this room. Make sure you are the last member in this room to use this option.";
+			close;
+		}
+		mes "Are you sure you want to give up this room?";
+		if ( .rentcost )
+			mes "You will need to pay again to enter this room.";
+		next;
+		if ( select( "Yes", "No" ) == 2 ) close;
+		awake strnpcinfo(0);
+		end;
+	}
+	close;
+
+OnMobDead:
+	end;
+
+OnEnterMap:
+	.@id = atoi( strnpcinfo(2) );
+	.renttime[.@id] = gettimetick(2);
+	sleep .timeout * 60000;
+	mapwarp strnpcinfo(4), .respawnmap$, .respawnx, .respawny;
+	.renttime[.@id] = 0;
+	killmonsterall strnpcinfo(4);
+	end;
+
+OnInit:
+	if ( !getstrlen( strnpcinfo(2) ) ) {
+
+//	Config ---------------------------------------------------------------------------------------
+
+	// Room rental time, in minutes.
+	// When time runs out, all players inside the room will be kicked out.
+	// Do NOT set this to zero!
+	set .timeout, 60;
+
+	set .rentcost, 100000;	// Zeny cost for renting a room (0 = free)
+	set .mvpcost, 100000;	// Zeny cost to summon an MVP (0 = free)
+	set .bosscost, 50000;	// Zeny cost to summon a boss monster (0 = free)
+
+	//	Options setting inside MVP room
+	set .@menu[1], 1;	// Turn Heal option On/Off
+	set .@menu[2], 1;	// Turn MVP Summoning On/Off
+	set .@menu[3], 1;	// Turn Mini boss Summoning On/Off
+	set .@menu[4], 0;	// Sell items (branches) On/Off (see shop below, before the mapflags)
+
+	// Respawn point when players leave the room
+	set .respawnmap$, "prontera";
+	set .respawnx, 150;
+	set .respawny, 174;
+
+	setarray .mvpid[0],
+		1511,//	Amon Ra
+		1647,// Assassin Cross Eremes
+		1785,//	Atroce
+		1630,//	Bacsojin
+		1039,//	Baphomet
+		1874,//	Beelzebub
+		1272,//	Dark Lord
+		1719,//	Datale
+		1046,//	Doppelgangger
+		1389,//	Dracula
+		1112,//	Drake
+		1115,//	Eddga
+		1418,//	Evil Snake Lord
+		1871,//	Fallen Bishop
+		1252,//	Garm
+		1768,//	Gloom Under Night
+		1086,//	Golden Thief Bug
+		1885,//	Gopinich
+		1649,// High Priest Magaleta
+		1651,// High Wizard Katrinn
+		1832,//	Ifrit
+		1492,//	Incantation Samurai
+		1734,//	Kiel D-01
+		1251,//	Knight of Windstorm
+		1779,//	Ktullanux
+		1688,//	Lady Tanee
+		1646,// Lord Knight Seyren
+		1373,//	Lord of Death
+		1147,//	Maya
+		1059,//	Mistress
+		1150,//	Moonlight Flower
+		1087,//	Orc Hero
+		1190,//	Orc Lord
+		1038,//	Osiris
+		1157,//	Pharaoh
+		1159,//	Phreeoni
+		1623,//	RSX 0806
+		1650,// Sniper Shecil
+		1583,//	Tao Gunka
+		1708,//	Thanatos
+		1312,//	Turtle General
+		1751,//	Valkyrie Randgris
+		1685,// Vesper
+		1648,// Whitesmith Harword
+		1917,// Wounded Morroc
+		1658;//	Ygnizem
+
+	setarray .bossid[0],
+		1096,// Angeling
+		1388,// Archangeling
+		1795,// Bloody Knight
+		1830,// Bow Guardian
+		1839,// Byorgue
+		1309,// Cat O' Nine Tail
+		1283,// Chimera
+		1302,// Dark Illusion
+		1198,// Dark Priest
+		1582,// Deviling
+		1091,// Dragon Fly
+		1093,// Eclipse
+		1205,// Executioner
+		1783,// Galion
+		1592,// Gangster
+		1120,// Ghostring
+		1259,// Gryphon
+		1720,// Hydro
+		1090,// Mastering
+		1289,// Maya Purple
+		1262,// Mutant Dragon
+		1203,// Mysteltainn
+		1870,// Necromancer
+		1295,// Owl Baron
+		1829,// Sword Guardian
+		1204,// Tirfing
+		1089,// Toad
+		1092,// Vagabond Wolf
+		1765;// Valkyrie
+
+//	Config Ends ------------------------------------------------------------------------
+
+		if ( !.timeout ) set .timeout, 60;
+		.menu$ = ( .@menu[1] ? "Heal" : "" ) +":" ;
+		.menu$ = .menu$ + ( .@menu[2] ? "Summon MVP" : "" ) +":";
+		.menu$ = .menu$ + ( .@menu[3] ? "Summon Mini-boss" : "" ) +":";
+		.menu$ = .menu$ + ( .@menu[4] ? "Buy branches" : "" ) +":";
+		.menu$ = .menu$ + "Leave this room:Give up this room";
+		if ( .@menu[2] ) {
+			.@size = getarraysize( .mvpid );
+			for ( .@i = 0; .@i < .@size; .@i++ )
+				.mvpid_menu$ = .mvpid_menu$ + getmonsterinfo( .mvpid[.@i], MOB_NAME ) +":";
+		}
+		if ( .@menu[3] ) {
+			.@size = getarraysize( .bossid );
+			for ( .@i = 0; .@i < .@size; .@i++ )
+				.bossid_menu$ = .bossid_menu$ + getmonsterinfo( .bossid[.@i], MOB_NAME ) +":";
+		}
+	}
+	else {
+		mapannounce strnpcinfo(4), "An administrator has refreshed the server. Please re-register this room.", bc_map;
+		mapwarp strnpcinfo(4), .respawnmap$, .respawnx, .respawny;
+	}
+	end;
+}
+
+-	shop	MVP room#branch	-1,604:100000,12103:1000000
+
+06guild_01,49,49,4	duplicate(MVP Summoner)	MVP Summoner#1	116
+06guild_02,49,49,4	duplicate(MVP Summoner)	MVP Summoner#2	116
+06guild_03,49,49,4	duplicate(MVP Summoner)	MVP Summoner#3	116
+06guild_04,49,49,4	duplicate(MVP Summoner)	MVP Summoner#4	116
+06guild_05,49,49,4	duplicate(MVP Summoner)	MVP Summoner#5	116
+06guild_06,49,49,4	duplicate(MVP Summoner)	MVP Summoner#6	116
+06guild_07,49,49,4	duplicate(MVP Summoner)	MVP Summoner#7	116
+06guild_08,49,49,4	duplicate(MVP Summoner)	MVP Summoner#8	116
+
+06guild_01	mapflag	nowarpto
+06guild_02	mapflag	nowarpto
+06guild_03	mapflag	nowarpto
+06guild_04	mapflag	nowarpto
+06guild_05	mapflag	nowarpto
+06guild_06	mapflag	nowarpto
+06guild_07	mapflag	nowarpto
+06guild_08	mapflag	nowarpto
+06guild_01	mapflag	nomemo
+06guild_02	mapflag	nomemo
+06guild_03	mapflag	nomemo
+06guild_04	mapflag	nomemo
+06guild_05	mapflag	nomemo
+06guild_06	mapflag	nomemo
+06guild_07	mapflag	nomemo
+06guild_08	mapflag	nomemo
+06guild_01	mapflag	noteleport
+06guild_02	mapflag	noteleport
+06guild_03	mapflag	noteleport
+06guild_04	mapflag	noteleport
+06guild_05	mapflag	noteleport
+06guild_06	mapflag	noteleport
+06guild_07	mapflag	noteleport
+06guild_08	mapflag	noteleport
+06guild_01	mapflag	nosave	SavePoint
+06guild_02	mapflag	nosave	SavePoint
+06guild_03	mapflag	nosave	SavePoint
+06guild_04	mapflag	nosave	SavePoint
+06guild_05	mapflag	nosave	SavePoint
+06guild_06	mapflag	nosave	SavePoint
+06guild_07	mapflag	nosave	SavePoint
+06guild_08	mapflag	nosave	SavePoint
+06guild_01	mapflag	nopenalty
+06guild_02	mapflag	nopenalty
+06guild_03	mapflag	nopenalty
+06guild_04	mapflag	nopenalty
+06guild_05	mapflag	nopenalty
+06guild_06	mapflag	nopenalty
+06guild_07	mapflag	nopenalty
+06guild_08	mapflag	nopenalty

+ 235 - 0
npc/custom/events/devil_square.txt

@@ -0,0 +1,235 @@
+//===== rAthena Script =======================================
+//= Devil Square
+//===== By: ==================================================
+//= Kirlein, Stillhard (translation), AnnieRuru (rewrite)
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Description: =========================================
+//= Devil Square, based on the event in MU Online.
+//= Defeat three waves of monsters for treasure.
+//===== Additional Comments: =================================
+//= 1.0 First version, edited. [Euphy]
+//============================================================
+
+prontera,156,185,5	script	Devil Square Guardian#1	406,{
+	set .@gm_level, 99; // GM level required to start/stop the event
+
+	mes "[Devil Square Guardian]";
+	mes "This is the entrance to ^FF0000Devil Square^000000.";
+	mes "If you fail or die, the door will close and you must wait until the event starts again to re-enter.";
+	next;
+	switch(select("Enter.:Information.:" + ((getgmlevel() >= .@gm_level) ? "GM Menu." : "") + ":Cancel.")) {
+	case 1:
+		if (.start != 1) { // registration period
+			mes "[Devil Square Guardian]";
+			mes "Devil Square is now closed.";
+			mes "It will open at these times:";
+			mes "00:00 , 02:00 , 04:00 , 06:00"; // display your times here
+			mes "08:00 , 10:00 , 12:00 , 14:00";
+			mes "16:00 , 18:00 , 20:00 , 22:00";
+			close;
+		}
+		if (BaseLevel < 70 || Zeny < 20000) { // requirements
+			mes "[Devil Square Guardian]";
+			mes "You do not meet the requirements to enter Devil Square.";
+			mes " ";
+			mes "Requirements:";
+			mes " - Base Level 70";
+			mes " - Registration fee 20,000z";
+			close;
+		}
+		Zeny -= 20000;
+		announce strcharinfo(0)+" has entered Devil Square.", bc_npc;
+		percentheal 100,100;
+		warp "ordeal_1-1",183,182;
+		close;
+	case 2:
+		mes "[Devil Square Guardian]";
+		mes "Inside, you will encounter 3 waves of monsters. The monsters will grow stronger with each wave.";
+		next;
+		mes "[Devil Square Guardian]";
+		mes "If you defeat all the enemies, you will be given the opportunity to open 10 Treasure Chests with items, equipment, and rare cards inside!";
+		close;
+	case 3:
+		mes "[Devil Square Guardian]";
+		switch (.start) { // event states
+			case 0: mes "Devil Square has not yet started."; break;
+			case 1: mes "Devil Square is currently accepting participants."; break;
+			case 2: mes "Devil Square Event is currently running on Round "+ .round +" with "+ .mob +" monsters remaining."; break;
+		}
+		next;
+		switch(select("Start event.:Stop event.:Cancel.")) {
+		case 1:
+			mes "[Devil Square Guardian]";
+			if (.start)
+				mes "Devil Square has already started.";
+			else {
+				mes "Starting Devil Square...";
+				donpcevent strnpcinfo(0)+"::OnStartEvent";
+			}
+			close;
+		case 2:
+			mes "[Devil Square Guardian]";
+			if (!.start)
+				mes "Devil Square has not yet started.";
+			else {
+				mes "Stopping Devil Square...";
+				donpcevent strnpcinfo(0)+"::OnStopEvent";
+			}
+			close;
+		case 3:
+			break;
+		}
+		break;
+	case 4:
+		break;
+	}
+	mes "[Devil Square Guardian]";
+	mes "Farewell.";
+	close;
+
+OnStartEvent:
+OnClock0000:
+OnClock0200:
+OnClock0400:
+OnClock0600:
+OnClock0800:
+OnClock1000:
+OnClock1200:
+OnClock1400:
+OnClock1600:
+OnClock1800:
+OnClock2000:
+OnClock2200:
+	.start = 1;
+	disablenpc "ord11-12"; //from npc/warps/pvp.txt
+	disablenpc "Devil Square Guardian#2";
+	mapannounce "ordeal_1-1","Devil Square is now closed.", bc_map;
+	getmapxy .@map$, .@x, .@y, 1;
+	mapwarp "ordeal_1-1", .@map$, .@x, .@y;
+	killmonsterall "ordeal_1-1";
+	announce "Devil Square is OPEN. The event will begin in 5 minutes.", bc_all;
+	sleep 60000;
+	announce "Devil Square will begin in 4 minutes.", bc_all;
+	sleep 60000;
+	announce "Devil Square will begin in 3 minutes.", bc_all;
+	sleep 60000;
+	announce "Devil Square will begin in 2 minutes.", bc_all;
+	sleep 60000;
+	announce "Devil Square will begin in 1 minute.", bc_all;
+	sleep 60000;
+	announce "Devil Square has STARTED!", bc_all;
+	if ( !getmapusers("ordeal_1-1") )
+		goto OnStopEvent;
+	.start = 2;
+	.round = 1;
+	.mob = 75;
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] SOLDIER SKELETON",1028,10,strnpcinfo(0)+"::OnDevilDead";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] ORC ARCHER",1189,15,strnpcinfo(0)+"::OnDevilDead";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] SANDMAN",1165,10,strnpcinfo(0)+"::OnDevilDead";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] ARCHER SKELETON",1016,15,strnpcinfo(0)+"::OnDevilDead";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] MINOROUS",1149,15,strnpcinfo(0)+"::OnDevilDead";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] REQUIEM",1164,10,strnpcinfo(0)+"::OnDevilDead";
+	end;
+
+OnDevilDead:
+	.mob--;
+	if ( .mob == 25 || .mob == 5 )
+		announce "Devil Square : "+ .mob +" monsters remaining in round 1.", bc_map;
+	else if ( .mob <= 0 ) {
+		announce "Devil Square is entering round 2...", bc_map;
+		goto OnDevil2;
+	}
+	end;
+
+OnDevil2:
+	.round = 2;
+	.mob = 70;
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] GARGOYLE",1253,15,strnpcinfo(0)+"::OnDevilDead2";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] ALARM",1193,10,strnpcinfo(0)+"::OnDevilDead2";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH ORC",1213,10,strnpcinfo(0)+"::OnDevilDead2";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] INJUSTICE",1257,10,strnpcinfo(0)+"::OnDevilDead2";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] MIMIC",1191,15,strnpcinfo(0)+"::OnDevilDead2";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] WRAITH",1192,10,strnpcinfo(0)+"::OnDevilDead2";
+	end;
+
+OnDevilDead2:
+	.mob--;
+	if ( .mob == 25 || .mob == 5 )
+		announce "Devil Square : "+ .mob +" monsters remaining in round 2.", bc_map;
+	else if ( .mob <= 0 ) {
+		announce "Devil Square is entering round 3...", bc_map;
+		goto OnDevil3;
+	}
+	end;
+
+OnDevil3:
+	.round = 3;
+	.mob = 58;
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] ANOLIAN",1206,15,strnpcinfo(0)+"::OnDevilDead3";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] WANDERER",1208,15,strnpcinfo(0)+"::OnDevilDead3";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] DEVIRUCHI",1109,10,strnpcinfo(0)+"::OnDevilDead3";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] JOKER",1131,15,strnpcinfo(0)+"::OnDevilDead3";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] MOONLIGHT",1150,2,strnpcinfo(0)+"::OnDevilDead3";
+	areamonster "ordeal_1-1",183,182,246,244,"[DS] DARK ILLUSION",1302,1,strnpcinfo(0)+"::OnDevilDead3";
+	end;
+
+OnDevilDead3:
+	.mob--;
+	if ( .mob == 25 || .mob == 5 )
+		announce "Devil Square : "+ .mob +" monsters remaining in the final round.", bc_map;
+	else if ( .mob <= 0 ) {
+		announce "Devil Square : CONGRATULATIONS. These 10 Treasure Chests are yours.", bc_map;
+		goto OnDevil4;
+	}
+	end;
+
+OnDevil4:
+	.round = 4;
+	.mob = 10;
+	monster "ordeal_1-1",231,250,"Treasure Chest",1324,1,strnpcinfo(0)+"::OnTreasureDead";
+	monster "ordeal_1-1",234,247,"Treasure Chest",1328,1,strnpcinfo(0)+"::OnTreasureDead";
+	monster "ordeal_1-1",237,244,"Treasure Chest",1332,1,strnpcinfo(0)+"::OnTreasureDead";
+	monster "ordeal_1-1",240,241,"Treasure Chest",1336,1,strnpcinfo(0)+"::OnTreasureDead";
+	monster "ordeal_1-1",243,238,"Treasure Chest",1340,1,strnpcinfo(0)+"::OnTreasureDead";
+	monster "ordeal_1-1",246,235,"Treasure Chest",1344,1,strnpcinfo(0)+"::OnTreasureDead";
+	monster "ordeal_1-1",249,232,"Treasure Chest",1348,1,strnpcinfo(0)+"::OnTreasureDead";
+	monster "ordeal_1-1",252,229,"Treasure Chest",1352,1,strnpcinfo(0)+"::OnTreasureDead";
+	monster "ordeal_1-1",249,241,"Treasure Chest",1356,1,strnpcinfo(0)+"::OnTreasureDead";
+	monster "ordeal_1-1",240,249,"Treasure Chest",1360,1,strnpcinfo(0)+"::OnTreasureDead";
+	end;
+
+OnTreasureDead:
+	.mob--;
+	announce "Devil Square : "+ strcharinfo(0) +" has opened the Treasure Chest at Devil Square.", bc_all;
+	if ( .mob <= 0 )
+		goto OnStopEvent;
+	end;
+
+OnStopEvent:
+	killmonsterall "ordeal_1-1";
+	enablenpc "ord11-12"; //from npc/warps/pvp.txt
+	enablenpc "Devil Square Guardian#2";
+	.start = .round = .mob = 0;
+	end;
+}
+
+ordeal_1-1,246,245,7	script	Devil Square Guardian#2	406,{
+	mes "[Exit]";
+	mes "Farewell.";
+	close2;
+	warp "SavePoint",0,0;
+	end;
+}
+
+ordeal_1-1	mapflag	nowarp
+ordeal_1-1	mapflag	nowarpto
+ordeal_1-1	mapflag	noteleport
+ordeal_1-1	mapflag	monster_noteleport
+ordeal_1-1	mapflag	nosave	SavePoint
+ordeal_1-1	mapflag	nomemo
+ordeal_1-1	mapflag	nobranch
+ordeal_1-1	mapflag	nopenalty
+ordeal_1-1	mapflag	noicewall

+ 6 - 3
npc/custom/events/disguise.txt

@@ -4,10 +4,13 @@
 //= GmOcean
 //===== Current Version: =====================================
 //= 5.1
-//===== Compatible With: ===================================== 
+//===== Compatible With: =====================================
 //= rAthena Project
-//===== Additional Comments: =================================  
-//= Note: This script requires PCRE to run properly.
+//===== Description: =========================================
+//= Guess a monster name correctly for prizes.
+//= 
+//= NOTE: Requires PCRE library installed.
+//===== Additional Comments: =================================
 //= 5.0 Last update by GmOcean.
 //= 5.1 Cleaned and standardized, mostly. [Euphy]
 //============================================================

+ 0 - 0
npc/custom/events/hallow06.txt → npc/custom/events/holiday/hallow06.txt


+ 0 - 0
npc/custom/events/uneasy_cemetery.txt → npc/custom/events/holiday/uneasy_cemetery.txt


+ 0 - 0
npc/custom/events/valentinesdayexp.txt → npc/custom/events/holiday/valentinesdayexp.txt


+ 0 - 0
npc/custom/events/xmas_rings_event.txt → npc/custom/events/holiday/xmas_rings_event.txt


+ 319 - 0
npc/custom/events/mvp_ladder.txt

@@ -0,0 +1,319 @@
+//===== rAthena Script =======================================
+//= MVP Ladder Game
+//===== By: ==================================================
+//= aftermath, AnnieRuru (rewrite)
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Description: =========================================
+//= Gather a party and kill every MVP in ascending order.
+//===== Additional Comments: =================================
+//= 1.0 First version, edited. [Euphy]
+//============================================================
+
+prontera,164,171,3	script	MvP Ladder Warper	56,{
+	mes "[MvP Ladder Warper]";
+	mes "Say... do you want to play the MvP Ladder game?";
+	next;
+	switch(select("Yes, let's get it on!:Information.:Show me the best record.:No.")) {
+	case 1:
+		break;
+	case 2:
+		mes "[MvP Ladder Warper]";
+		mes "In this game, your party has to kill every single MvP monster in ascending order, from the weakest to strongest.";
+		if ( .finish_item_amount )
+			mes "If your party can finish the MVP ladder game, each member will earn "+ callfunc("F_InsertPlural", .finish_item_amount, getitemname( .finish_item_id )) +".";
+		if ( .register_cost )
+			mes "But the entrance fee is "+ callfunc( "F_InsertComma", .register_cost ) +" zeny.";
+		next;
+		mes "[MvP Ladder Warper]";
+		mes "You lose the game if you can't finish in "+ .timeout +" minutes, or if your entire party is killed.";
+		mes "Good luck!";
+		close;
+	case 3:
+		mes "[MvP Ladder Warper]";
+		if ( !$mvpladdderparty_time ) {
+			mes "Nobody has finished this game yet.";
+			close;
+		}
+		mes "The best record is";
+		mes "[ "+( $mvpladdderparty_time / 60 )+" min "+( $mvpladdderparty_time % 60 )+" sec ]";
+		mes "By the party ^FF0000"+ $mvpladdderparty_name$ +"^000000.";
+		.@size = getarraysize( $mvpladderparty_member$ );
+		for ( .@i = 0; .@i < .@size; .@i++ )
+			mes "^000000"+ ( .@i +1 ) +". ^0000FF"+ $mvpladderparty_member$[.@i];
+		if ( getgmlevel() < .gmlvlreset ) close;
+		next;
+		if ( select( "Close.", "Reset the record." ) == 1 ) close;
+		if ( select( "Never mind.", "I really want to reset it." ) == 1 ) close;
+		$mvpladdderparty_time = 0;
+		$mvpladdderparty_name$ = "";
+		deletearray $mvpladderparty_member$[.@i];
+		mes "[MvP Ladder Warper]";
+		mes "Record reset successfully.";
+		close;
+	case 4:
+		mes "[MvP Ladder Warper]";
+		mes "When you are strong enough to complete the game, please come back.";
+		close;
+	}
+	if ( !getcharid(1) ) {
+		mes "[MvP Ladder Warper]";
+		mes "You have to form a party to play.";
+		close;
+	}
+	if ( getpartyleader( getcharid(1), 2 ) != getcharid(0) ) {
+		mes "[MvP Ladder Warper]";
+		mes "Only the party leader can register.";
+		close;
+	}
+	.@origin = getcharid(3);
+	getpartymember getcharid(1), 1;
+	getpartymember getcharid(1), 2;
+	for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
+		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
+			attachrid $@partymemberaid[.@i];
+			if ( strcharinfo(3) == strnpcinfo(4) )
+				.@online++;
+		}
+	}
+	attachrid .@origin;
+	if ( $@partymembercount != .register_min ) {
+		mes "[MvP Ladder Warper]";
+		mes "You have to form a party with exactly "+ .register_min +" members to play.";
+		close;
+	}
+	else if ( .@online != .register_min )  {
+		mes "[MvP Ladder Warper]";
+		mes "Your party must have "+ .register_min +" members online on map '"+ strnpcinfo(4) +"'.";
+		close;
+	}
+	else if ( .register_cost && Zeny < .register_cost ) {
+		mes "[MvP Ladder Warper]";
+		mes "You don't have enough zeny. Please come back when you do.";
+		close;
+	}
+	else if ( .party_id ) {
+		mes "[MvP Ladder Warper]";
+		mes "I'm sorry, but a party is currently playing the game. Please standby until the party is finished.";
+		mes "Thank you.";
+		close;
+	}
+	Zeny -= .register_cost;
+	announce "The party ["+ strcharinfo(1) +"] has started the MvP ladder game.", bc_all;
+	set .party_id, getcharid(1);
+	set .@time_enter, gettimetick(2);
+	for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
+		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
+			attachrid $@partymemberaid[.@i];
+			if ( strcharinfo(3) == strnpcinfo(4) ) {
+				announce "You have "+ .timeout +" minutes to complete "+ .totalround +" rounds.", bc_self;
+				.@name$[.@c] = strcharinfo(0);
+				.@c++;
+			}
+		}
+	}
+	cleanmap .eventmap$;
+	warpparty .eventmap$, 0,0, .party_id, strnpcinfo(4);
+	donpcevent strnpcinfo(0)+"::OnMvpDead";
+	sleep .timeout * 60000;
+	if ( .round == .totalround +1 ) {
+		getpartymember .party_id, 1;
+		getpartymember .party_id, 2;
+		mapannounce .eventmap$, "Congratulations... You were able to defeat all the MVPs!", bc_map;
+		for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
+			if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
+				attachrid $@partymemberaid[.@i];
+				if ( strcharinfo(3) == .eventmap$ )
+					getitem .finish_item_id, .finish_item_amount;
+			}
+		}
+		set .@timeused, gettimetick(2) - .@time_enter;
+		if ( .bonus_item_amount && .@timeused < .bonus_time * 60 ) {
+			mapannounce .eventmap$, "You are rewarded a bonus item for completing the ladder within "+ .bonus_time +" minutes.", bc_map;
+			for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
+				if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
+					attachrid $@partymemberaid[.@i];
+					if ( strcharinfo(3) == .eventmap$ )
+						getitem .bonus_item_id, .bonus_item_amount;
+				}
+			}
+		}
+
+		if ( !$mvpladdderparty_time || .@timeused < $mvpladdderparty_time ) {
+			mapannounce .eventmap$, "And you broke the record! [ "+( .@timeused / 60 )+" min "+( .@timeused % 60 )+" sec ]", bc_map;
+			set $mvpladdderparty_time, .@timeused;
+			set $mvpladdderparty_name$, getpartyname( .party_id );
+			copyarray $mvpladderparty_member$, .@name$, .register_min;
+		}
+		else
+			mapannounce .eventmap$, "Time used [ "+( .@timeused / 60 )+" min "+( .@timeused % 60 )+" sec ]", bc_map;
+		sleep 10000;
+		announce "The party ["+ getpartyname( .party_id ) +"] has finished the MvP ladder game!", bc_all;
+	}
+	else
+		announce "The party ["+ getpartyname( .party_id ) +"] has failed to finish the MvP ladder game.", bc_all;
+	mapwarp .eventmap$, .map$, .x, .y;
+	killmonsterall .eventmap$;
+	.party_id = .round = 0;
+	end;
+
+OnMvpDead:
+	.round++;
+	if ( .round >= 2 && .round != .totalround +1 && .round_item_amount ) {
+		for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
+			if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
+				attachrid $@partymemberaid[.@i];
+				if ( strcharinfo(3) == .eventmap$ )
+					getitem .round_item_id, .round_item_amount;
+			}
+		}
+	}
+	if ( .round == .totalround +1 ) {
+		awake strnpcinfo(0);
+		end;
+	}
+	else if ( .round == .totalround )
+		mapannounce .eventmap$, "The final Round will begin in "+ .delay +" seconds...", bc_map;
+	else
+		mapannounce .eventmap$, "Starting round "+ .round +" in "+ .delay +" seconds...", bc_map;
+	sleep .delay * 1000;
+	if ( .mvpid[.round] == 1646 )  // pick random Bio3 MVP
+		.mvpid[.round] = rand(1646,1651);
+	monster .eventmap$,0,0, "--ja--", .mvpid[.round], 1, strnpcinfo(0)+"::OnMvpDead";
+	mapannounce .eventmap$, getmonsterinfo( .mvpid[.round], MOB_NAME ) +" has spawned!", bc_map|bc_blue;
+	end;
+
+OnPCLogoutEvent:
+	if ( hp > 0 )
+		.@less_one = 1;
+	else
+		end;
+OnPCDieEvent:
+	if ( strcharinfo(3) != .eventmap$ || !getcharid(1) ) end;
+	if ( getcharid(1) != .party_id ) end;
+	getpartymember .party_id, 1;
+	getpartymember .party_id, 2;
+	for ( .@i = 0; .@i < $@partymembercount; .@i++ ) {
+		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
+			attachrid $@partymemberaid[.@i];
+			if ( strcharinfo(3) == .eventmap$ && hp > 0 )
+				.@alive++;
+		}
+	}
+	if ( .@less_one )
+		.@alive--;
+	if ( !.@alive ) {
+		mapannounce .eventmap$, "Party wiped!", bc_map;
+		sleep 10000;
+		awake strnpcinfo(0);
+	}
+	end;
+
+OnInit:
+//	Configurations -----------------------------------------------------
+
+	// Time limit (in minutes)
+	// When time runs out, all players inside the room will be kicked out.
+	// Do NOT set this to zero!
+	set .timeout, 60;
+
+	// entrance fee (in Zeny)
+	set .register_cost, 100000;
+
+	// exact amount of party members needed to start the game
+	set .register_min, 2;
+
+	// id of each mvp. you can add more
+	setarray .mvpid[1],
+		1086,//	Golden Thief Bug	64
+		1115,//	Eddga				65
+		1150,//	Moonlight Flower	67
+		1159,//	Phreeoni			69
+		1112,//	Drake				70
+		1583,//	Tao Gunka			70
+		1492,//	Incantation Samurai	71
+		1046,//	Doppelgangger		72
+		1252,//	Garm				73
+		1418,//	Evil Snake Lord		73
+		1059,//	Mistress			74
+		1190,//	Orc Lord			74
+		1087,//	Orc Hero			77
+		1251,//	Knight of Windstorm	77
+		1038,//	Osiris				78
+		1658,//	Ygnizem				79
+		1272,//	Dark Lord			80
+		1871,//	Fallen Bishop		80
+		1039,//	Baphomet			81
+		1147,//	Maya				81
+		1785,//	Atroce				82
+		1389,//	Dracula				85
+		1630,//	Bacsojin			85
+		1885,//	Gorynych			85
+		1623,//	RSX 0806			86
+		1511,//	Amon Ra				88
+		1688,//	Lady Tanee			89
+		1768,//	Gloom Under Night	89
+		1719,//	Datale				90
+		1734,//	Kiel D-01			90
+		1157,//	Pharaoh				93
+		1373,//	Lord of Death		94
+		1312,//	Turtle General		97
+		1779,//	Ktullanux			98
+		1874,//	Beelzebub			98
+		1646,// Bio3 placeholder    99
+		1708,//	Thanatos			99
+		1751,//	Valkyrie Randgris	99
+		1832;//	Ifrit				99
+
+	// number of rounds (default: 39)
+	set .totalround, getarraysize(.mvpid) -1;
+
+	// item reward for completing each round
+	set .round_item_id, 512;
+	set .round_item_amount, 1;
+
+	// item reward for completing the entire ladder
+	set .finish_item_id, 501;
+	set .finish_item_amount, 10;
+
+	// bonus reward if ladder completed within a certain time (in minutes)
+	set .bonus_time, 45; // if completed within 45 minutes, this reward is given
+	set .bonus_item_id, 504;
+	set .bonus_item_amount, 10;
+
+	// time delay between rounds, in seconds (default: 3)
+	set .delay, 5;
+
+	// minimum GM level to reset the best record
+	set .gmlvlreset, 99;
+
+	// event map
+	set .eventmap$, "guild_vs2-2";
+
+	// mapflag configuration
+	setarray .@mapflag,
+		mf_nowarp,
+		mf_nowarpto,
+		mf_nosave,
+		mf_nomemo,
+		mf_noteleport,
+//		mf_nopenalty, // disable exp loss
+		mf_noreturn,
+//		mf_nobranch,
+//		mf_nomobloot, // disable monster drop loots,
+//		mf_nomvploot, // 2 of these
+		mf_partylock;
+
+//	Config Ends --------------------------------------------------------------
+
+	mapannounce .eventmap$, "An administrator has refreshed the server. Please re-register. We apologize for the inconvenience.", bc_map;
+	getmapxy .map$, .x, .y, 1;
+	mapwarp .eventmap$, .map$, .x, .y;
+	killmonsterall .eventmap$;
+	.@size = getarraysize( .@mapflag );
+	for ( .@i = 0; .@i < .@size; .@i++ )
+		setmapflag .eventmap$, .@mapflag[.@i];
+	end;
+}

+ 5 - 1
npc/custom/quests/hunting_missions.txt

@@ -9,6 +9,8 @@
 //===== Description: =========================================
 //= Random hunting missions.
 //= Rewards are based on quest difficulty.
+//= 
+//= NOTE: Requires SQL mob database.
 //===== Additional Comments: =================================
 //= 1.0 Initial script.
 //= 1.1 Small improvements and fixes.
@@ -54,7 +56,7 @@ function Chk;
 			close;
 		}
 		mes "You must hunt:";
-		query_sql("SELECT ID FROM `mob_db` WHERE left(Sprite, 4) != 'meta' AND left(Sprite, 2) != 'E_' AND ~Mode & 32 AND EXP > 0 AND MVP1id = 0 AND DropCardid > 4000 AND DropCardid < 5000 AND ID < 2000 AND instr('"+.Blacklist$+"',ID) = 0 ORDER BY rand() LIMIT "+.Quests, .@mob);
+		query_sql("SELECT ID FROM `" + .mob_db$ + "` WHERE left(Sprite, 4) != 'meta' AND left(Sprite, 2) != 'E_' AND ~Mode & 32 AND EXP > 0 AND MVP1id = 0 AND DropCardid > 4000 AND DropCardid < 5000 AND ID < 2000 AND instr('"+.Blacklist$+"',ID) = 0 ORDER BY rand() LIMIT "+.Quests, .@mob);
 		for (set .@i,0; .@i<.Quests; set .@i,.@i+1) {
 			setd "Mission"+.@i, .@mob[.@i];
 			setd "Mission"+.@i +"_",0;
@@ -279,6 +281,8 @@ OnInit:
 		40,70;
 	setarray .Modifier[0],	// Multipliers for Base Exp, Job Exp, and Zeny rewards.
 		getbattleflag("base_exp_rate")/100,getbattleflag("job_exp_rate")/100,60;
+	set .mob_db$,		// Table name of SQL mob database
+		(checkre(0))?"mob_db_re":"mob_db";
 	setarray .Shop[0],	// Reward items: <ID>,<point cost> (about 10~20 points per hunt).
 		512,1,513,1,514,1,538,5,539,5,558,10,561,10;
 	set .Blacklist$,	// Blacklisted mob IDs.

+ 1711 - 0
npc/events/christmas_2013.txt

@@ -0,0 +1,1711 @@
+//===== rAthena Script =======================================
+//= iRO/kRO 2013 Christmas Event
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Description: =========================================
+//= [Official Conversion]
+//= Join the Singles Union Army to break up couples and hunt
+//= raccoons for rewards.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Euphy]
+//============================================================
+
+// Main Quest :: 2013_xmas_en
+//============================================================
+xmas,10,1,5	script	2013questreset2#xmas	10086,{
+	if (callfunc("F_GM_NPC",1854,0) == 1) {
+		setarray .@quests[0], 15055,15056,15057,15059,15060,15061,15062,15063,15064;
+		for (set .@i,0; .@i<=getarraysize(.@quests); set .@i,.@i+1)
+			if (isbegin_quest(.@i)) erasequest .@i;
+	}
+	end;
+}
+
+xmas,150,134,3	script	Union Commander Cliff	10086,{
+	if (BaseLevel < 40) {
+		mes "[Union Commander Cliff]";
+		mes "No words for noob!! Level 40 below cannot join Singles Union Army!";
+		close;
+	}
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 1) {
+		mes "^ff0000You are overweight. Check your inventory and speak to me later.^000000";
+		close;
+	}
+	set .@playtime, checkquest(15059,PLAYTIME);
+	if (.@playtime == 0 || .@playtime == 1) {
+		mes "- You can repeat this quest after 24 hours.";
+		close;
+	} else if (checkquest(15059,PLAYTIME) > 1) {
+		erasequest 15059;
+		set xmas2013_01,0;
+	}
+	set .@que_allmem, isbegin_quest(15060) + isbegin_quest(15061) + isbegin_quest(15062) + isbegin_quest(15063) + isbegin_quest(15064);
+	if (isbegin_quest(15057) == 1) {
+		if (countitem(7909) < 10 || countitem(7910) < 10 || countitem(6682) < 10) {
+			mes "[Union Commander Cliff]";
+			mes "We need more materials to hold a Christmas party for the Singles Union Army!";
+			next;
+			mes "[Union Commander Cliff]";
+			mes "Bring ^ff000010 Stolen Cookie, 10 Stolen Candy, and 10 Bag Of Selling Goods^000000 from those damn raccoons!";
+			close;
+		}
+		mes "[Union Commander Cliff]";
+		mes "Did you kick the ass of the Raccoon Hooray team? Oh! You've brought all the items we need. We will be able to feel some Christmas mood with it!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "I will take ALL the items you brought. For that, I'll give you an exclusive reward only for Singles Union Army. You-must-open-it-ALONE!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Seize the holiday!";
+		mes "Glory to the Singles Union Army! hihihi HAHAHAHA!!";
+		delitem 7909, countitem(7909); //Stolen_Cookie
+		delitem 7910, countitem(7910); //Stolen_Candy
+		delitem 6682, countitem(6682); //Bag_Of_Selling_Goods
+		erasequest 15057;
+		setquest 15059;
+		getitem 22685,1; //Solo_Christmas_Gift
+		specialeffect2 EF_MAGICALATTHIT;
+		specialeffect2 EF_POTION2;
+		specialeffect2 EF_ANGEL2;
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 < 5) {
+		mes "[Union Commander Cliff]";
+		mes "You have a total of " + xmas2013_01 + " couple breaking points.";
+		mes "Break up at least 5 couples and come back to me!";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 > 4) {
+		mes "[Union Commander Cliff]";
+		mes "Yes! You did it!! More and more are joining the Singles Union Army!! hihihi HAHAHA-HAK! Victory is ours!!";
+		erasequest 15056;
+		setquest 15057;
+		getitem 22686,5; //Solo_Cookie
+		next;
+		mes "[Union Commander Cliff]";
+		mes "BUT!!! While we're busy breaking up couples, those damn Raccoon Hooray brats stole most of our items. Without it, we cannot get the feel of Christmas mood.";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "It's time to punish them and reclaim the items for the Singles Union Army!!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "^ff0000>10 Stolen Cookie, 10 Stolen Candy and 10 Bag Of Selling Goods^000000 should be enough for the party. Find the raccoons on field maps and dungeons!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "It doesn't matter if you brought more, I will take them ALL!!";
+		close;
+	} else if (isbegin_quest(15055) == 0) {
+		mes "[Union Commander Cliff]";
+		mes "Hey you!! Yes! You right there! You!!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Let me ask you bluntly.";
+		mes "You must be single. I've got a feeling. Right?!??";
+		next;
+		if(select("- ...maybe...?:WHAT! I'm in a relationship!!") == 2) {
+			mes "[Union Commander Cliff]";
+			mes "What? ...in a relationship?!!";
+			mes "...Not single, but a couple...";
+			mes "......";
+			mes "Damn you! Taste the wrath of the Singles Union Army!!!";
+			close2;
+			specialeffect2 EF_MAGICALATTHIT;
+			specialeffect2 EF_POTION2;
+			specialeffect2 EF_CRASHEARTH;
+			specialeffect2 EF_COIN;
+			end;
+		}
+		mes "[Union Commander Cliff]";
+		mes "hihihi HAHAHA-HAK!";
+		mes "I knew it! First glance I can tell!";
+		mes "Don't underestimate me, I've been single all my life! hihihi HAHAHA-HAK!";
+		mes "My name is Union Commander Cliff!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Anyway, this December, the day is coming....";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Christmas songs everywhere, bright colored lights, pouring white snow, and couples seeing each other with smile on their faces...couples...COUPPPLEEES...!!!!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "In the beginning was a celebration of the birth of our Lord! Then, why...how...when did it became a day for couples??!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "I can't stand this....";
+		mes "I will not forgive them for the happiness they bring only for themselves!!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Christmas for couples?";
+		mes "No way! This Christmas will be a day for singles!!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "However, I will need members to stand against them. Its name would be, Singles Union Army!!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "What do you think? Would you join my Singles Union Army and make Christmas day for singles?";
+		next;
+		select("Count me in!:I'll help.:I can't say no, can I?");
+		mes "[Union Commander Cliff]";
+		mes "Yeah! That's it! but we need more members to stand against couples.";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Here is your first mission!";
+		mes "Go find someone in Lutie and make them join us. 5 singles should be enough, now gogogo~!";
+		mes "hihihi HAHAHA-HAK!";
+		close2;
+		setquest 15055;
+		end;
+	} else if (isbegin_quest(15055) == 1 && .@que_allmem < 10) {
+		mes "[Union Commander Cliff]";
+		mes "No time to waste!";
+		mes "Go find 5 singles in Lutie and make them join!";
+		close;
+	} else if (isbegin_quest(15055) == 1 && .@que_allmem > 9) {
+		mes "[Union Commander Cliff]";
+		mes "Good job! I've met them all! They are worthy to join our cause hihihi HAHAHA-HAK!!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "While you were gathering more Singles Union Army members, I've made badges..";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "It might not be useful but this kind of small token can make our bonds solid and strong!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Well, take this! Now you are the proud member of Singles Union Army!!";
+		set xmas2013_01,0;
+		completequest 15055;
+		getitem 6821,1; //Solo_Troops_Badge
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Now it is time to show our power to couples as we've got enough members!!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "On to the second mission!";
+		mes "Go to Lutie and make couples separate. Doesn't matter how you do it, just them break up!!";
+		mes "hihihi HAHAHA-HAK!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Well there is one more thing...";
+		mes "When you disturb couple, if they broke up, you will gain 2 point, in case of just simple argument will grant you 1 point.";
+		mes "But if they become more into each others, your score will be minus 1 point. So when you got 5 points and come here for report, it means mission accomplished.";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Surely you won't have minus score so don't worry.";
+		setquest 15056;
+		close;
+	} else if (isbegin_quest(15055) == 2) {
+		mes "[Union Commander Cliff]";
+		mes "Now it is time to show our power to couples as we've got enough troops!!";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Let's go for second mission!";
+		mes "Go to Lutie and make couples separated. Whatever they are just make them break up!! ";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Well there is one more thing...";
+		mes "When you disturb couple, if they broke up, you will gain 2 point, in case of just simple argument will grant you 1 point. ";
+		mes "But if they become more into each others, your score will be minus 1 point. So when you got 5 points and come here for report, it means mission accomplished.";
+		next;
+		mes "[Union Commander Cliff]";
+		mes "Surely you won't have minus score so don't worry.";
+		setquest 15056;
+		close;
+	}
+	end;
+}
+
+xmas,172,126,3	script	Lonely Kwami#xmas	10089,{
+	if (isbegin_quest(15055) == 0) {
+		mes "[Kwami]";
+		mes "Haa.....breaking up right before Christmas....I'm alone...a single! ...AM I??!!";
+		close;
+	} else if (isbegin_quest(15055) == 1 && isbegin_quest(15060) == 0) {
+		mes "[Kwami]";
+		mes "Haa.....breaking up right before Christmas....I'm alone...a single! ...AM I??!!";
+		next;
+		mes "[Kwami]";
+		mes "Who are you!?";
+		mes "What's your business with me?";
+		next;
+		select("- Singles Union Army has come to you. -");
+		mes "[Kwami]";
+		mes "err? Singles Union Army? What is that?";
+		next;
+		select("- Explain about the club -");
+		mes "[Kwami]";
+		mes "...yeah. You're right!";
+		next;
+		mes "[Kwami]";
+		mes "As I'm single! I'd never let couples enjoy this Christmas!!";
+		next;
+		mes "[Kwami]";
+		mes "I will join to the Singles Union Army!!";
+		next;
+		mes "- Kwami has become a member of Singles Union Army. -";
+		setquest 15060;
+		completequest 15060;
+		close;
+	} else {
+		mes "[Singles Union Kwami]";
+		mes "First of all, I've got to have revenge on my ex...No?";
+		close;
+	}
+}
+
+xmas,113,161,5	script	Lonely Willer#xmas	10090,{
+	if (isbegin_quest(15055) == 0) {
+		mes "[Willer]";
+		mes "Hoooooo... it is so boring to play alone....";
+		close;
+	} else if (isbegin_quest(15055) == 1 && isbegin_quest(15061) == 0) {
+		mes "[Willer]";
+		mes "Hoooooo... it is so boring to play alone....";
+		next;
+		mes "[Willer]";
+		mes "Isn't there anything exciting?";
+		mes "...hey, would you play with me??";
+		next;
+		select("- Singles Union Army has come to you. -");
+		mes "[Willer]";
+		mes "Singles Union what? Why come to me?";
+		next;
+		select("- Explain about the club -");
+		mes "[Willer]";
+		mes "Sooo...";
+		mes "Break up couples and make Christmas party only for singles?";
+		next;
+		mes "[Willer]";
+		mes "That must be fun! I don't understand exactly but I will join, I'm in!!";
+		next;
+		mes "- Willer has become a member of Singles Union Army. -";
+		setquest 15061;
+		completequest 15061;
+		close;
+	} else {
+		mes "[Singles Union Willer]";
+		mes "Break up couples...this should be fun!!";
+		close;
+	}
+}
+
+xmas,131,97,5	script	Lonely Rinka#xmas	10091,{
+	if (isbegin_quest(15055) == 0) {
+		mes "[Rinka]";
+		mes "Ewww! darn... what kind of friend would only boast about her boyfriend, disgusting! Does she really think that I can't have one?!?";
+		close;
+	} else if (isbegin_quest(15055) == 1 && isbegin_quest(15062) == 0) {
+		mes "[Rinka]";
+		mes "Ewww! Darn... what kind of friend would only boast about her boyfriend, disgusting! Does she really think that I can't have one?!?";
+		next;
+		mes "[Rinka]";
+		mes "- sobbing -";
+		next;
+		mes "[Rinka]";
+		mes "I can't... in fact, there is no one... I have no one!!!!!!!!!!!!!!";
+		next;
+		select("- Singles Union Army has come to you. -");
+		mes "[Rinka]";
+		mes "EEeepp! Wow!!";
+		mes "You surprised me. What are you talking about, what is that?!";
+		next;
+		select("- Explain about the club -");
+		mes "[Rinka]";
+		mes "Hoho...there's something like that?";
+		mes "Breaking up couples...";
+		mes "Okay! Let me join!";
+		next;
+		mes "[Rinka]";
+		mes "Is there room for another member?";
+		mes "...soon another member will join!";
+		mes "Wait for it~ my friend!! ...";
+		next;
+		mes "- Rinka has become a member of Singles Union Army. -";
+		setquest 15062;
+		completequest 15062;
+		close;
+	} else {
+		mes "[Singles Union Rinka]";
+		mes "Wait for it~ my friend!! You will... join soon!!";
+		close;
+	}
+}
+
+xmas,121,127,5	script	Lonely Jee#xmas	10088,{
+	if (isbegin_quest(15055) == 0) {
+		mes "[Jee]";
+		mes "How beautiful to be single...";
+		close;
+	} else if ((isbegin_quest(15055) == 1) && (isbegin_quest(15063) == 0)) {
+		mes "[Jee]";
+		mes "How beautiful to be single...";
+		next;
+		mes "[Jee]";
+		mes "There is no one to bother you. No one to take care of. No more extra work from others. More time to spend it alone.";
+		next;
+		mes "[Jee]";
+		mes "Why are people giving up this advantage and want to be couples??";
+		next;
+		select("- Singles Union Army has come to you. -");
+		mes "[Jee]";
+		mes "Yeah, I've heard of it recently. I knew that you would come to me.";
+		next;
+		mes "[Jee]";
+		mes "No more words necessary. I will spread the advantage of being single!";
+		next;
+		mes "- Jee has become a member of Singles Union Army. -";
+		setquest 15063;
+		completequest 15063;
+		close;
+	} else {
+		mes "[Singles Union Jee]";
+		mes "I will spread the advantage of being single!";
+		close;
+	}
+}
+
+xmas,150,169,3	script	Lonely Marty#xmas	10087,{
+	if (isbegin_quest(15055) == 0) {
+		mes "[Marty]";
+		mes "umm... Zzz ... nyam-nyam...";
+		close;
+	} else if (isbegin_quest(15055) == 1 && isbegin_quest(15064) == 0) {
+		mes "[Marty]";
+		mes "umm... Zzz ... nyamnyam...";
+		next;
+		select("- Singles Union Army has come to you. -");
+		mes "[Marty]";
+		mes "nyam.... nyamnyam... Grrr... Zzz";
+		next;
+		select("- Explain about the club -");
+		mes "[Marty]";
+		mes "Huum... nyaaa.... Zzz";
+		next;
+		mes "- ...you may consider him to agree to join. -";
+		next;
+		mes "- Marty has become a member of Singles Union Army. -";
+		setquest 15064;
+		completequest 15064;
+		close;
+	} else {
+		mes "[Singles Union Marty]";
+		mes "nyam.... nyamnyam... Grrrr... Zzz";
+		close;
+	}
+}
+
+xmas,108,149,5	script	Drop Machine#xmas	562,{
+	if (isbegin_quest(15056) == 0) {
+		mes "[Drop Machine]";
+		mes "Dingding dong Ding!~";
+		emotion e_lv;
+		next;
+		mes "[Slot Machine]";
+		mes "!~";
+		emotion e_lv,0,"Slot Machine#xmas";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 < 5) {
+		mes "[Drop Machine]";
+		mes "Dingdingding ding!~";
+		emotion e_lv;
+		next;
+		mes "[Slot Machine]";
+		mes "Charrrrr Sharrrrrrrr Ding!~";
+		emotion e_lv,0,"Slot Machine#xmas";
+		next;
+		mes "- Oh no, another couple!";
+		mes "- Even though they're just machines...";
+		mes "- I cannot bear to see this!";
+		next;
+		select("- Run the machine to full power. -");
+		mes "[Drop Machine]";
+		mes "Ding ding ding dong ding ding ding dong Ding ding ding dong ding ding ding dong";
+		next;
+		mes "[Slot Machine]";
+		mes "Krrrrrrrrrr Dingding dong Krrrrrr Dingding Krrrrrrrrrrr ding Krrrrrrrrr";
+		next;
+		set .@cu_bre, rand(1,10);
+		if (.@cu_bre < 3) {
+			mes "- I...";
+			mes "- I think I broke them both!";
+			mes "- Successfully broke up a couple!";
+			mes "- 2 Points for a great job!";
+			set xmas2013_01, xmas2013_01 + 2;
+		} else if (.@cu_bre > 7) {
+			mes "- I ran the machine for a while";
+			mes "- But the sound of the machine";
+			mes "- seems to grow louder.";
+			mes "- Failed to break them, minus 1 point!";
+			if (xmas2013_01 > 0)
+				set xmas2013_01, xmas2013_01 - 1;
+		} else {
+			mes "- After running the machine for a while";
+			mes "- I think I finally broke one of them!";
+			mes "- Here's 1 point for a good job!";
+			set xmas2013_01, xmas2013_01 + 1;
+		}
+		mes "- Current couple breaking point is " + xmas2013_01 + ".";
+		hideonnpc "Drop Machine#xmas";
+		hideonnpc "Slot Machine#xmas";
+		initnpctimer;
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 > 4) {
+		mes "- Couple breaking point";
+		mes "- is now more than 5.";
+		mes "- I should go back to Union Commander Cliff.";
+		close;
+	}
+	end;
+OnTimer100000:
+	hideoffnpc "Drop Machine#xmas";
+	hideoffnpc "Slot Machine#xmas";
+	stopnpctimer;
+	end;
+}
+xmas,111,149,3	script	Slot Machine#xmas	563,{ end; }
+
+xmas,181,150,5	script	Frightened Man#xmas	711,{
+	if (isbegin_quest(15056) == 0) {
+		mes "[Frightened Man]";
+		mes "It's my fault, I'm sorry. Please don't be mad.";
+		emotion e_sry;
+		next;
+		mes "[Angry Woman]";
+		mes "You're sorry? Do you know what you did? Do you have any idea why I'm mad?";
+		emotion e_an,0,"Angry Woman#xmas";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 < 5) {
+		mes "[Frightened Man]";
+		mes "It's my bad, I'm sorry. Please don't be mad";
+		emotion e_sry;
+		next;
+		mes "[Angry Woman]";
+		mes "You're sorry? Do you know what you did? Do you have any idea why I'm mad?";
+		emotion e_an,0,"Angry Woman#xmas";
+		next;
+		mes "[Frightened Man]";
+		mes "Well, I just feel like everything's my fault";
+		next;
+		mes "[Angry Woman]";
+		mes "You're always like this!";
+		mes "You never know what you should apologize for!!";
+		next;
+		mes "[Frightened Man]";
+		mes "Ah... What should I do?";
+		mes "Hey, what do you think I should say to my girlfriend?";
+		next;
+		select("- Tell her 'We should stop seeing each other'!");
+		mes "[Frightened Man]";
+		mes "Maybe we.. should stop seeing each other?";
+		mes "Oh no, I just said it out loud!";
+		next;
+		set .@cu_bre, rand(1,10);
+		if (.@cu_bre < 3) {
+			mes "[Angry Woman]";
+			mes "What? What did you just say? We should stop seeing each other? How could you say that to me?! You're the one who's done everything wrong! Okay, you know what? Let's just break up! I'm sick of all this!";
+			set xmas2013_01, xmas2013_01 + 2;
+			hideonnpc "Frightened Man#xmas";
+			hideonnpc "Angry Woman#xmas";
+			initnpctimer;
+			next;
+			mes "[Frightened Man]";
+			mes "No, that's not what I... okay, that's it! I'm sick of this too, sick of you whining all the time! Let's just end this today!!";
+			next;
+			mes "- Successfully broke up a couple!!";
+			mes "- 2 Points!";
+		} else if (.@cu_bre > 7) {
+			mes "[Angry Woman]";
+			mes "What? ...What did you just say? We should stop seeing each other?";
+			if (xmas2013_01 > 0)
+				set xmas2013_01, xmas2013_01 - 1;
+			hideonnpc "Frightened Man#xmas";
+			hideonnpc "Angry Woman#xmas";
+			initnpctimer;
+			next;
+			mes "[Angry Woman]";
+			mes "I can't believe you can be such a hot, tough guy! It's like I'm falling in love all over again!";
+			next;
+			mes "[Angry Woman]";
+			mes "Honey, can you say that again, more in a rough way?";
+			next;
+			mes "[Frightened Man]";
+			mes "Huh? sure... Let's... let's just end this!!!";
+			next;
+			mes "[Angry Woman]";
+			mes "Hahahaha! You're awesome! Awesome! Say it again! Say it!";
+			next;
+			mes "[Frightened Man]";
+			mes "Let's just break up! I'm leaving you!!";
+			next;
+			mes "[Angry Woman]";
+			mes "Hahahahahahaha! Yay! You're the best!";
+			next;
+			mes "- ...These people aren't normal.";
+			mes "- minus 1 point for the failure!";
+		} else {
+			set xmas2013_01, xmas2013_01 + 1;
+			hideonnpc "Frightened Man#xmas";
+			hideonnpc "Angry Woman#xmas";
+			initnpctimer;
+			mes "[Angry Woman]";
+			mes "What? ...What did you just say? We should stop seeing each other?";
+			next;
+			mes "[Angry Woman]";
+			mes "...I think we're both too upset now. Let's just talk about it later...";
+			next;
+			mes "[Frightened Man]";
+			mes "Hmm?... ah, yes, you're right... Goodbye, get home safely...";
+			next;
+			mes "- Here's 1 point for ruining their date!";
+		}
+		mes "- Current couple breaking point is " + xmas2013_01 + ".";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 > 4) {
+		mes "- Couple breaking point";
+		mes "- is now more than 5.";
+		mes "- I should go back to Union Commander Cliff.";
+		close;
+	}
+	end;
+OnTimer100000:
+	hideoffnpc "Frightened Man#xmas";
+	hideoffnpc "Angry Woman#xmas";
+	stopnpctimer;
+	end;
+}
+xmas,183,150,3	script	Angry Woman#xmas	714,{ end; }
+
+xmas_in,32,99,5	script	Singles Union Kwami	10089,{
+	if (isbegin_quest(15056) == 0) {
+		mes "[Singles Union Kwami]";
+		mes "Rinka. It's a huge mystery how such a pretty girl like you ended up in this Singles Union Army.";
+		emotion e_lv;
+		next;
+		mes "[Singles Union Rinka]";
+		mes "You think I'm pretty? hoho... It's mystery for me too, that a handsome man like you joined the Singles Union Army.";
+		emotion e_lv,0,"Singles Union Rinka";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 < 5) {
+		mes "[Singles Union Kwami]";
+		mes "Rinka. It's a huge mystery how such a pretty girl like you ended up in this Singles Union Army.";
+		emotion e_lv;
+		next;
+		mes "[Singles Union Rinka]";
+		mes "You think I'm pretty? hoho... It's mystery for me too, that a handsome man like you joined the Singles Union Army.";
+		emotion e_lv,0,"Singles Union Rinka";
+		next;
+		mes "[Singles Union Kwami]";
+		mes "Well, isn't it a shame we should spend Christmas alone? What do you say, Rinka, you and me...";
+		next;
+		select("- To be a couple is to be a betrayer! You betray us, you die!!!");
+		set xmas2013_01, xmas2013_01 + 1;
+		hideonnpc "Singles Union Kwami";
+		hideonnpc "Singles Union Rinka";
+		initnpctimer;
+		mes "[Singles Union Rinka]";
+		mes "Argh!!!!! Who is this?!";
+		mes "Isn't this the one who dragged us to the Singles Union Army?!";
+		next;
+		mes "[Singles Union Kwami]";
+		mes "Were you.. eavesdropping?!";
+		mes "I just wanted to say we should find more members for the Club! Hahahahaha!";
+		next;
+		mes "[Singles Union Kwami]";
+		mes "I'll see you later, Rinka. I am going out to hunt down more couples. Don't tell the boss!";
+		next;
+		mes "[Singles Union Rinka]";
+		mes "Hmm, I guess I should get going to. See you later Kwami, goodbye to you too~";
+		next;
+		mes "- Successfully stopped a couple from forming!";
+		mes "- 1 Point for the good job!";
+		mes "- Current couple breaking point is " + xmas2013_01 + ".";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 > 4) {
+		mes "- Couple breaking point";
+		mes "- is now more than 5.";
+		mes "- I should go back to Union Commander Cliff.";
+		close;
+	}
+	end;
+OnTimer300000:
+	hideoffnpc "Singles Union Kwami";
+	hideoffnpc "Singles Union Rinka";
+	stopnpctimer;
+	end;
+}
+xmas_in,34,99,3	script	Singles Union Rinka	10091,{ end; }
+
+xmas,156,109,5	script	Poor Alchemist#xmas	749,{
+	if (isbegin_quest(15056) == 0) {
+		mes "[Poor Alchemist]";
+		mes "Oh, hello.";
+		emotion e_swt2;
+		next;
+		mes "[Florist]";
+		mes "Hello, Mr. Alchemist.";
+		mes "Are you working today, too?";
+		emotion e_ho,0,"Florist#xmas";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 < 5) {
+		mes "[Poor Alchemist]";
+		mes "Oh, hello.";
+		emotion e_swt2;
+		next;
+		mes "[Florist]";
+		mes "Hello, Mr. Alchemist.";
+		mes "Are you working today, too?";
+		emotion e_ho,0,"Florist#xmas";
+		next;
+		mes "[Poor Alchemist]";
+		mes "Actually, I have something to tell you.";
+		mes "It's very important so please listen carefully.";
+		next;
+		mes "[Florist]";
+		mes "Oh, sure, please speak freely.";
+		next;
+		mes "[Poor Alchemist]";
+		mes "Biologically speaking, limbic system in the cerebrum enables us to be sociable, to communicate with people, to entertain etc.";
+		next;
+		mes "[Poor Alchemist]";
+		mes "So when you see a beautiful woman, the information such as her appearance, her scent, the tone of her voice etc. goes to the limbic area.";
+		next;
+		mes "[Poor Alchemist]";
+		mes "The limbic system then evaluates the information, to see if this lady is friendly, agressive, or charming, etc.";
+		next;
+		mes "[Poor Alchemist]";
+		mes "When the evaluation is done, the limbic system immediately begins to secrete the chemicals.";
+		next;
+		mes "[Poor Alchemist]";
+		mes "So if you're attracted to this lady, a hormone calls Dopamine is secreted and it makes you feel slightly happy.";
+		next;
+		mes "[Poor Alchemist]";
+		mes "When that stage ends, you get the Adrenaline pumping, then you become more direct and enthusiastic.";
+		next;
+		mes "[Poor Alchemist]";
+		mes "I'm in that stage now towards you! In other word, I am very...!!";
+		next;
+		select("- Very hungry, right?!");
+		mes "[Florist]";
+		mes "Huh? Is that right?";
+		mes "Are you hungry now, Mr. Alchemist?";
+		next;
+		mes "[Poor Alchemist]";
+		mes "Ah.. yes.. I think I am...";
+		mes "...very hungry..";
+		next;
+		set .@cu_bre, rand(1,10);
+		if (.@cu_bre < 3) {
+			mes "[Florist]";
+			mes "There's a nice restaurant near here. Why don't you go there and have a meal?";
+			set xmas2013_01, xmas2013_01 + 2;
+			hideonnpc "Poor Alchemist#xmas";
+			hideonnpc "Florist#xmas";
+			initnpctimer;
+			next;
+			mes "[Poor Alchemist]";
+			mes "...Sure, thank you. Have a good day...";
+			next;
+			mes "- Successfully stopped a couple from forming!";
+			mes "- 2 points for the great job!";
+		} else if (.@cu_bre > 7) {
+			mes "[Florist]";
+			mes "I see. I understand what you mean.";
+			if (xmas2013_01 > 0)
+				set xmas2013_01, xmas2013_01 - 1;
+			hideonnpc "Poor Alchemist#xmas";
+			hideonnpc "Florist#xmas";
+			initnpctimer;
+			next;
+			mes "[Florist]";
+			mes "Can I cook some nice meal for you, then?";
+			next;
+			mes "[Florist]";
+			mes "...For the rest of my life, if you want...";
+			next;
+			mes "[Poor Alchemist]";
+			mes "Okay...";
+			mes "......";
+			mes "Wait, what?????";
+			next;
+			mes "[Poor Alchemist]";
+			mes "......";
+			mes "...... Yes! I want!!!!!!!!";
+			next;
+			mes "- Failed to break up a couple";
+			mes "- minus 1 point for the failure!";
+		} else {
+			set xmas2013_01, xmas2013_01 + 1;
+			hideonnpc "Poor Alchemist#xmas";
+			hideonnpc "Florist#xmas";
+			initnpctimer;
+			mes "[Florist]";
+			mes "There's some food in the store, please come in.";
+			next;
+			mes "[Poor Alchemist]";
+			mes "Ah... yes, thank you.";
+			next;
+			mes "- You did interrupt the couple in a way. Here's 1 point for you!";
+		}
+		mes "- Current couple breaking point is " + xmas2013_01 + ".";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 > 4) {
+		mes "- Couple breaking point";
+		mes "- is now more than 5.";
+		mes "- I should go back to Union Commander Cliff.";
+		close;
+	}
+	end;
+OnTimer100000:
+	hideoffnpc "Poor Alchemist#xmas";
+	hideoffnpc "Florist#xmas";
+	stopnpctimer;
+	end;
+}
+xmas,158,109,3	script	Florist#xmas	91,{ end; }
+
+xmas,166,164,5	script	Raffini Boy#xmas	443,{
+	if (isbegin_quest(15056) == 0) {
+		mes "[Raffini Boy]";
+		mes "This is Lutie village...";
+		emotion e_no;
+		next;
+		mes "[Raffini Girl]";
+		mes "So much beautiful white snow flakes.";
+		mes "But it's too cold here...";
+		emotion e_sob,0,"Raffini Girl#xmas";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 < 5) {
+		mes "[Raffini Boy]";
+		mes "This is Lutie village...";
+		emotion e_no;
+		next;
+		mes "[Raffini Girl]";
+		mes "So much beautiful white snow flakes.";
+		mes "But it's too cold here...";
+		emotion e_sob,0,"Raffini Girl#xmas";
+		next;
+		mes "[Raffini Boy]";
+		mes "But it's you who wanted to see the snow this Christmas.";
+		next;
+		mes "[Raffini Girl]";
+		mes "Oh but I didn't know how much cold it is...oops...";
+		next;
+		mes "[Raffini Boy]";
+		mes "Well, ok I see...Just come closer to me.";
+		next;
+		mes "[Raffini Girl]";
+		mes "What? I cannot hear you. What were you saying?";
+		next;
+		mes "[Raffini Boy]";
+		mes "...Come closer to me. To my side.";
+		next;
+		mes "[Raffini Girl]";
+		mes "Ohh ok...";
+		next;
+		mes "- Hmm...there is no space at all";
+		mes "- for me to interrupt...";
+		next;
+		hideonnpc "Raffini Boy#xmas";
+		hideonnpc "Raffini Girl#xmas";
+		initnpctimer;
+		set .@cu_bre, rand(1,10);
+		if (.@cu_bre < 6) {
+			set xmas2013_01, xmas2013_01 + 1;
+			mes "[Raffini Girl]";
+			mes "....But it's still too cold! I don't want to be here any more.";
+			next;
+			mes "[Raffini Girl]";
+			mes "I want to go back to Eclage!";
+			next;
+			mes "[Raffini Boy]";
+			mes "Oh? Hey...we finally just got here, but you will go back right now?";
+			next;
+			mes "[Raffini Boy]";
+			mes "Hey! Let's go together!!";
+			next;
+			mes "- No sweat at all, but everything is going alright.";
+			mes "- Get 1 score point!";
+		} else {
+			if (xmas2013_01 > 0)
+				set xmas2013_01, xmas2013_01 - 1;
+			mes "[Raffini Girl]";
+			mes "Oh! It's much warmer than before...hehe";
+			next;
+			mes "[Raffini Boy]";
+			mes "D..don't be too close to me!";
+			next;
+			mes "[Raffini Girl]";
+			mes "Why not? Who cares. Let's go to grab something yummy.";
+			next;
+			mes "[Raffini Boy]";
+			mes "You're too close too me! I, I can feel your..um..hey!";
+			next;
+			mes "- Oops, I was attacked by that couple even without doing anything.";
+			mes "- Failed, got -1 score point!";
+		}
+		mes "- Current couple breaking point is " + xmas2013_01 + ".";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 > 4) {
+		mes "- Couple breaking point";
+		mes "- is now more than 5.";
+		mes "- I should go back to Union Commander Cliff.";
+		close;
+	}
+	end;
+OnTimer100000:
+	hideoffnpc "Raffini Boy#xmas";
+	hideoffnpc "Raffini Girl#xmas";
+	stopnpctimer;
+	end;
+}
+xmas,168,164,3	script	Raffini Girl#xmas	438,{ end; }
+
+xmas,147,123,5	script	Angeling#xmas	948,{
+	if (isbegin_quest(15056) == 0) {
+		mes "[Angeling]";
+		mes "Kkuing~";
+		emotion e_lv;
+		next;
+		mes "[Arc Angeling]";
+		mes "Kkuing Kkuing~";
+		emotion e_lv,0,"Arc Angeling#xmas";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 < 5) {
+		mes "[Angeling]";
+		mes "Kkuing~";
+		emotion e_lv;
+		next;
+		mes "[Arc Angeling]";
+		mes "Kkuing Kkuing~";
+		emotion e_lv,0,"Arc Angeling#xmas";
+		next;
+		mes "- I cannot bother them though.";
+		mes "- Can't even talk to them,";
+		mes "- oh well.";
+		next;
+		mes "- Just hunt them?";
+		mes "- ......No way.";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 > 4) {
+		mes "- Couple breaking point";
+		mes "- is now more than 5.";
+		mes "- I should go back to Union Commander Cliff.";
+		close;
+	}
+	end;
+}
+xmas,149,123,3	script	Arc Angeling#xmas	949,{ end; }
+
+xmas,129,115,5	script	Prenetan#xmas	783,{
+	if (isbegin_quest(15056) == 0) {
+		mes "[Prenetan]";
+		mes "Umba~ Umba Umba!";
+		mes "Umba Umumumum!";
+		next;
+		mes "[Prenetan]";
+		mes "Finally got you, huh? You are cheating on me until now and even made me chase after you? I'll kill you boy!";
+		emotion e_an;
+		next;
+		mes "[Umpoucoriotan]";
+		mes "Ooohh... my wife is too violent. Ohh...it hurts!";
+		emotion e_sob,0,"Umpoucoriotan#xmas";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 < 5) {
+		mes "[Prenetan]";
+		mes "Umba~ Umba umba!";
+		mes "Umba umumumum!";
+		next;
+		mes "[Prenetan]";
+		mes "Finally got you, huh? You are cheating on me until now and even made me chase after you? I'll kill you boy!";
+		emotion e_an;
+		next;
+		mes "[Umpoucoriotan]";
+		mes "Ooohh... my wife is too violent. Ohh...it hurts!";
+		emotion e_sob,0,"Umpoucoriotan#xmas";
+		next;
+		mes "[Umpoucoriotan]";
+		mes "Wenathan, berzthan, Chabimathan";
+		mes "Oooh... The girls of Umbala are here... They're waiting for me now....Arg! Don't touch me!";
+		next;
+		mes "[Prenetan]";
+		mes "How stupid you are!";
+		mes "Those girls never wanted to see you and that's just a lie that they would come here!!";
+		next;
+		select("- No. They are all here!");
+		hideonnpc "Prenetan#xmas";
+		hideonnpc "Umpoucoriotan#xmas";
+		initnpctimer;
+		set .@cu_bre, rand(1,10);
+		if (.@cu_bre < 6) {
+			set xmas2013_01, xmas2013_01 + 1;
+			mes "[Umpoucoriotan]";
+			mes "Umm...yeah I know..Is it true those girls are here?";
+			next;
+			mes "[Umpoucoriotan]";
+			mes "...Oh I got a stomachache... Did I have something wrong... Darling, just a second. I'll be right back soon to go to the restroom! Just wait for a while here!";
+			next;
+			mes "[Prenetan]";
+			mes "Hey you idiot! Stop right there! Stop! ...STOP!!!";
+			next;
+			mes "- Well, things are quite easy. Got 1 score point!";
+		} else {
+			set xmas2013_01, xmas2013_01 + 1;
+			mes "[Prenetan]";
+			mes "Who's there? You want to be killed, too?";
+			next;
+			mes "- Oops";
+			next;
+			mes "[Prenetan]";
+			mes "You still don't understand anything. Come here, I'm taking you back to Umbala!";
+			next;
+			mes "[Umpoucoriotan]";
+			mes "ARG! ....Arrrrrrrrg!! It hurts! Noooo!!! They're waiting for me!!!";
+			next;
+			mes "- Well, he just made it harder for himself. Got 1 score point!";
+		}
+		mes "- Current couple breaking point is " + xmas2013_01 + ".";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 > 4) {
+		mes "- Couple breaking point";
+		mes "- is now more than 5.";
+		mes "- I should go back to Union Commander Cliff.";
+		close;
+	}
+	end;
+OnTimer100000:
+	hideoffnpc "Prenetan#xmas";
+	hideoffnpc "Umpoucoriotan#xmas";
+	stopnpctimer;
+	end;
+}
+xmas,131,115,3	script	Umpoucoriotan#xmas	789,{ end; }
+
+xmas,138,174,5	script	Dark Lord#xmas	737,{
+	if (isbegin_quest(15056) == 0) {
+		mes "[Dark Lord]";
+		mes "Whahahahaha the world will turn into darkness soon and everyone will kneel down before me!!";
+		emotion e_gasp;
+		next;
+		mes "[Succubus]";
+		mes "My master. All worlds will follow your will.";
+		emotion e_lv,0,"Succubus#xmas";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 < 5) {
+		mes "[Dark Lord]";
+		mes "Whahahahaha the world will turn into darkness soon and everyone will kneel down before me!!";
+		emotion e_gasp;
+		next;
+		mes "[Succubus]";
+		mes "My master. All worlds will follow your will.";
+		emotion e_lv,0,"Succubus#xmas";
+		next;
+		mes "[Dark Lord]";
+		mes "You've been loyal to me even though I've been giving difficult orders. You deserve a reward. What do you want for now? I'll definitely make it for you. I can even give you more power!";
+		next;
+		mes "[Succubus]";
+		mes "......";
+		mes "Could you really give me anything that I want...?";
+		next;
+		mes "[Succubus]";
+		mes "What I really need is...";
+		mes "......";
+		mes "Only you, my master.";
+		next;
+		mes "[Dark Lord]";
+		mes "......";
+		mes "?!!!!!";
+		next;
+		mes "[Succubus]";
+		mes "I've been in love with you...";
+		mes "for a very long time...";
+		next;
+		mes "[Dark Lord]";
+		mes "......";
+		next;
+		mes "[Dark Lord]";
+		mes "It's not that I didn't know about that.";
+		next;
+		mes "[Dark Lord]";
+		mes "I also...";
+		next;
+		mes "[Dark Lord]";
+		mes "...But we're demons. Demons choosing a path towards love?! Ridiculous, the dark world will never forgive us! We will be hiding for the rest of our lives!";
+		next;
+		mes "[Succubus]";
+		mes "It doesn't matter as long as I am with you, my master...";
+		next;
+		select("- I'm sorry to bother you... but weren't you discussing about conquering the world?");
+		hideonnpc "Dark Lord#xmas";
+		hideonnpc "Succubus#xmas";
+		initnpctimer;
+		set .@cu_bre, rand(1,10);
+		if (.@cu_bre < 5) {
+			set xmas2013_01, xmas2013_01 + 2;
+			mes "[Dark Lord]";
+			mes "Ye..yes. That's right, succubus! We've already had such a high goal!";
+			next;
+			mes "[Dark Lord]";
+			mes "I appreciated the thought but know your place! Just be my subordinate as you already are.";
+			next;
+			mes "[Succubus]";
+			mes "Oh yes...my master, please forgive me. I'll try my best to make your the world yours.";
+			next;
+			mes "[Dark Lord]";
+			mes "Yes! There is nothing better than turning this world into darkness. Everyone will kneel down before me. Hahahahahahahahah!!!";
+			next;
+			mes "- Even though the world will";
+			mes "- be engulfed in darkness soon...";
+			mes "- I got a big success to break up a couple!";
+			mes "- 2 score points!";
+		} else {
+			if (xmas2013_01 > 0)
+				set xmas2013_01, xmas2013_01 - 1;
+			mes "[Dark Lord]";
+			mes "Conquering the world... It's useless compared to what we've feeling right now.";
+			mes "Dear Succubus, can you really overcome any kind of agony if you are with me?";
+			next;
+			mes "[Succubus]";
+			mes "...Master!";
+			next;
+			mes "[Succubus]";
+			mes "Of course, I'm prepared and will keep going... I'll follow you forever even if I shall be in any kind of agony.";
+			next;
+			mes "[Succubus]";
+			mes "I'll be yours forever!";
+			next;
+			mes "[Dark Lord]";
+			mes "I see...I can feel your heart now. Ok, let's go together... no matter how hard it will be!!";
+			next;
+			mes "- I saved this world from darkess.";
+			mes "- though a couple was formed!";
+			mes "- very sad...";
+			mes "- Failed, -1 score point!";
+		}
+		mes "- Current couple breaking point is " + xmas2013_01 + ".";
+		close;
+	} else if (isbegin_quest(15056) == 1 && xmas2013_01 > 4) {
+		mes "- Couple breaking point";
+		mes "- is now more than 5.";
+		mes "- I should go back to Union Commander Cliff.";
+		close;
+	}
+	end;
+OnTimer100000:
+	hideoffnpc "Dark Lord#xmas";
+	hideoffnpc "Succubus#xmas";
+	stopnpctimer;
+	end;
+}
+xmas,141,174,3	script	Succubus#xmas	1370,{ end; }
+
+// Monster Spawns :: EventMonster-131209_xmas
+//============================================================
+gld_dun01_2,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gld_dun02_2,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gld_dun03_2,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gld_dun04_2,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gld2_ald,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gld2_gef,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gld2_pay,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gld2_prt,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lhz_dun04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+iz_dun05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mal_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+dic_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+dew_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+dew_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+dew_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mal_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+iz_dun05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+man_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+man_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+spl_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+spl_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+man_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+spl_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+nyd_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+bra_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+bra_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+bra_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+dic_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+dic_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+dic_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+dic_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+bif_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+bif_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+abbey01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+abbey02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+abbey03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+abyss_01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+abyss_02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+abyss_03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+alde_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+alde_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+alde_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+alde_dun04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ama_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ama_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ama_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ama_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+anthell01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+anthell02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ayo_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ayo_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ayo_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ayo_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+beach_dun,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+beach_dun2,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+beach_dun3,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+c_tower1,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+c_tower2,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+c_tower3,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+c_tower4,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+cmd_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+cmd_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+cmd_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+cmd_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+cmd_fild06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+cmd_fild07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+cmd_fild08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+cmd_fild09,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ein_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ein_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ein_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ein_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ein_fild05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ein_fild06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ein_fild07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ein_fild08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ein_fild09,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_dun00,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild00,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild09,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild10,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild11,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gef_fild13,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gefenia01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gefenia02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gefenia03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gefenia04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_cas01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_cas02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_church,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_chyard,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_in01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_knt01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_knt02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_prison,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_prison1,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_sew01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_sew02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_sew03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_sew04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_step,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+glast_01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gon_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gon_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gon_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gon_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+hu_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+hu_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+hu_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+hu_fild05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+hu_fild06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ice_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ice_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ice_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+in_sphinx1,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+in_sphinx2,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+in_sphinx3,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+in_sphinx4,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+in_sphinx5,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+iz_dun00,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+iz_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+iz_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+iz_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+iz_dun04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+jupe_core,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+juperos_01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+juperos_02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+kh_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+kh_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lhz_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lhz_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lhz_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lhz_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lhz_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lhz_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lou_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lou_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lou_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+lou_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mag_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mag_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+man_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjo_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjo_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjo_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_09,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_10,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_11,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+mjolnir_12,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild09,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild10,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild11,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild12,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild13,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild14,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild15,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild16,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild17,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_fild18,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_pryd01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_pryd02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_pryd03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_pryd04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_pryd05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_pryd06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+nameless_n,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+nif_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+nif_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+nyd_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+odin_tem01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+odin_tem02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+odin_tem03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+orcsdun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+orcsdun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_dun00,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_dun04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_fild06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_fild07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_fild08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_fild09,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+pay_fild10,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild00,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild09,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild10,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild11,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_maze01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_maze02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_maze03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_sewb1,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_sewb2,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_sewb3,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_fild05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_fild06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_fild08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_fild12,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_san01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_san02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_san03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_san04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ra_san05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+spl_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t09,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t10,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t11,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tha_t12,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+thor_v01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+thor_v02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+thor_v03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+treasure01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+treasure02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tur_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tur_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tur_dun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+tur_dun04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+um_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+um_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+um_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+um_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ve_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ve_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ve_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ve_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ve_fild05,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ve_fild07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+xmas_dun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+xmas_dun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+xmas_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild06,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild07,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild08,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild09,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild10,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+yuno_fild12,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gld_dun01_2,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gld_dun02_2,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gld_dun03_2,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gld_dun04_2,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gld2_ald,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gld2_gef,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gld2_pay,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gld2_prt,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lhz_dun04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+iz_dun05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mal_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+dic_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+dew_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+dew_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+dew_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mal_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+iz_dun05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+man_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+man_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+spl_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+spl_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+man_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+spl_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+nyd_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+bra_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+bra_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+bra_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+dic_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+dic_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+dic_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+dic_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+bif_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+bif_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+abbey01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+abbey02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+abbey03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+abyss_01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+abyss_02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+abyss_03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+alde_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+alde_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+alde_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+alde_dun04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ama_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ama_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ama_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ama_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+anthell01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+anthell02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ayo_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ayo_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ayo_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ayo_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+beach_dun,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+beach_dun2,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+beach_dun3,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+c_tower1,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+c_tower2,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+c_tower3,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+c_tower4,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+cmd_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+cmd_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+cmd_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+cmd_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+cmd_fild06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+cmd_fild07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+cmd_fild08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+cmd_fild09,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ein_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ein_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ein_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ein_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ein_fild05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ein_fild06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ein_fild07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ein_fild08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ein_fild09,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_dun00,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild00,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild09,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild10,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild11,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gef_fild13,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gefenia01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gefenia02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gefenia03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gefenia04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_cas01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_cas02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_church,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_chyard,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_in01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_knt01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_knt02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_prison,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_prison1,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_sew01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_sew02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_sew03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_sew04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_step,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+glast_01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gon_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gon_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gon_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gon_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+hu_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+hu_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+hu_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+hu_fild05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+hu_fild06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ice_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ice_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ice_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+in_sphinx1,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+in_sphinx2,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+in_sphinx3,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+in_sphinx4,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+in_sphinx5,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+iz_dun00,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+iz_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+iz_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+iz_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+iz_dun04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+jupe_core,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+juperos_01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+juperos_02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+kh_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+kh_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lhz_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lhz_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lhz_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lhz_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lhz_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lhz_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lou_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lou_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lou_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+lou_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mag_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mag_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+man_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjo_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjo_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjo_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_09,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_10,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_11,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+mjolnir_12,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild09,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild10,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild11,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild12,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild13,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild14,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild15,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild16,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild17,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_fild18,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_pryd01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_pryd02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_pryd03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_pryd04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_pryd05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_pryd06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+nameless_n,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+nif_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+nif_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+nyd_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+odin_tem01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+odin_tem02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+odin_tem03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+orcsdun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+orcsdun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_dun00,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_dun04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_fild06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_fild07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_fild08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_fild09,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+pay_fild10,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild00,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild09,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild10,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild11,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_maze01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_maze02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_maze03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_sewb1,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_sewb2,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_sewb3,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_fild05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_fild06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_fild08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_fild12,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_san01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_san02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_san03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_san04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ra_san05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+spl_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t09,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t10,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t11,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tha_t12,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+thor_v01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+thor_v02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+thor_v03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+treasure01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+treasure02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tur_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tur_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tur_dun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+tur_dun04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+um_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+um_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+um_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+um_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ve_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ve_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ve_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ve_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ve_fild05,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ve_fild07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+xmas_dun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+xmas_dun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+xmas_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild06,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild07,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild08,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild09,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild10,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+yuno_fild12,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ecl_fild01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ecl_fild01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ecl_tdun01,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ecl_tdun01,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ecl_tdun02,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ecl_tdun02,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+ecl_tdun03,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+ecl_tdun03,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+//ecl_tdun04,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+//ecl_tdun04,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_prydn1,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_prydn1,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+moc_prydn2,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+moc_prydn2,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild08a,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild08a,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild08b,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild08b,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild08c,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild08c,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+prt_fild08d,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+prt_fild08d,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_chyard_,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_chyard_,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0
+gl_cas02_,0,0,0,0	monster	Gift Stealing Raccoon	2380,5,5000,0,0
+gl_cas02_,0,0,0,0	monster	Sock Stealing Raccoon	2379,5,5000,0,0

+ 4 - 0
npc/events/halloween_2013.txt

@@ -15,6 +15,8 @@
 //= 1.2 Added monster spawns [Akkarin]
 //============================================================
 
+// Main Quest :: 2013e_hallow_en_1015
+//============================================================
 prontera,154,136,5	script	Suspicious Coffin#2013HE	801,{
 	if (eve_bs < 1) {
 		mes "- The coffin seems very suspicious. -";
@@ -524,6 +526,8 @@ niflheim,183,162,5	script	Wandering soul#2013HE4	802,{
 	close;
 }
 
+// Monster Spawns :: EventMonster-131022
+//============================================================
 gld_dun01_2,0,0,0,0	monster	Organic Pumpkin	3202,1,5000,0,0
 gld_dun02_2,0,0,0,0	monster	Organic Pumpkin	3202,1,5000,0,0
 gld_dun03_2,0,0,0,0	monster	Organic Pumpkin	3202,1,5000,0,0

+ 2 - 2
npc/jobs/2-1/wizard.txt

@@ -1414,7 +1414,7 @@ OnTimer60000:
 	end;
 
 OnTimer61000:
-	donpcevent "Room of Earth#Failed::OnEnable";
+	enablenpc "Room of Earth#Failed";
 	end;
 
 OnTimer62000:
@@ -1520,7 +1520,7 @@ OnTimer183000:
 	end;
 
 OnTimer184000:
-	donpcevent "Room of Fire#Failed::OnEnable";
+	enablenpc "Room of Fire#Failed";
 	end;
 
 OnTimer185000:

+ 56 - 5
npc/other/Global_Functions.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Lupus, kobra_k88
 //===== Current Version: ===================================== 
-//= 2.22
+//= 2.23
 //===== Compatible With: ===================================== 
 //= rAthena Project
 //===== Description: ========================================= 
@@ -45,6 +45,7 @@
 //=     Standardized descriptions, updated 'F_GetArmorType'.
 //= 2.21 Added format string to "F_InsertPlural" and more checks to "F_GetPlural". [Euphy]
 //= 2.22 Further improvements to "F_GetPlural". [Euphy]
+//= 2.23 Completed article function and added "F_GetArticle". [Euphy]
 //============================================================ 
 
 //////////////////////////////////////////////////////////////////////////////////
@@ -458,14 +459,64 @@ function	script	F_InsertPlural	{
 
 
 //////////////////////////////////////////////////////////////////////////////////
-// Returns 'a' or 'an' based on a word - only follows basic rules, without exceptions!
+// Returns 'a' or 'an' based on a word.
+// -- callfunc "F_GetArticle","<noun>";
+// Examples:
+//    callfunc("F_GetArticle","Apple")  // returns "an"
+//    callfunc("F_GetArticle","dog")    // returns "a"
+//
+// Returns 'a' or 'an' based on a word, followed by the word.
 // -- callfunc "F_InsertArticle","<word>"{,<0:lowercase a/1:uppercase A>}
 // Examples:
-//    callfunc("F_InsertArticle","apple")  // returns "an apple"
+//    callfunc("F_InsertArticle","Apple")  // returns "an Apple"
 //    callfunc("F_InsertArticle","dog",1)  // returns "A dog"
 //////////////////////////////////////////////////////////////////////////////////
+function	script	F_GetArticle	{
+	set .@str$, strtolower(getarg(0));
+
+	// not a word
+	if (!charisalpha(.@str$,0))
+		return "a";
+
+	// 1-letter words
+	if (getstrlen(.@str$) == 1) {
+		if (strpos("aefhilmnorsx",.@str$) > -1)
+			return "an";
+		else
+			return "a";
+	}
+
+	// special cases
+	if (preg_match("(euler|hour(?!i)|heir|honest|hono)",.@str$))
+		return "an";
+
+	// consonants
+	if (preg_match("^[^aeiouy]",.@str$))
+		return "a";
+
+	// special vowel forms
+	if (preg_match("^e[uw]",.@str$) || preg_match("^onc?e\b",.@str$) || preg_match("^uni([^nmd]|mo)",.@str$) || preg_match("^u[bcfhjkqrst][aeiou]",.@str$))
+		return "a";
+	if (preg_match("^ut[th]",.@str$))
+		return "an";
+
+	// special capitals (rare)
+	//if (preg_match("^U[NK][AIEO]?",getarg(0)))
+	//	return "a";
+
+	// vowels
+	if (preg_match("^[aeiou]",.@str$))
+		return "an";
+
+	// y... (rare)
+	//if (preg_match("^(y(b[lor]|cl[ea]|fere|gg|p[ios]|rou|tt))",.@str$))
+	//	return "an";
+
+	return "a";
+}
 function	script	F_InsertArticle	{
-	return ((getarg(1,0)) ? "A" : "a") + ((compare("aeiou", charat(getarg(0),0))) ? "n " : " ") + getarg(0);
+	set .@article$, callfunc("F_GetArticle",getarg(0));
+	return sprintf("%s %s", ((getarg(1,0)) ? replacestr(.@article$,"a","A") : .@article$), getarg(0));
 }
 
 
@@ -494,7 +545,7 @@ function	script	F_InsertComma	{
 function	script	F_GetNumSuffix	{
 	set .@n, getarg(0);
 	set .@mod, .@n % 10;
-	if (.@mod == 1 && .@n != 11) return .@n+"st";
+	if      (.@mod == 1 && .@n != 11) return .@n+"st";
 	else if (.@mod == 2 && .@n != 12) return .@n+"nd";
 	else if (.@mod == 3 && .@n != 13) return .@n+"rd";
 	else return .@n+"th";

+ 1 - 0
npc/other/gm_npcs.txt

@@ -150,5 +150,6 @@ List of GM Management NPCs (incomplete)
 --------------------------
 - Monster Race Manager
 - Vote Globalvar Girl#yuno (disabled)
+- 2013questreset2#xmas (event, disabled)
 
 */

+ 0 - 1
npc/quests/newgears/2004_headgears.txt

@@ -1140,7 +1140,6 @@ xmas,175,156,3	script	Fuzzy Fuzz#1	712,{
 		mes "You can learn a lot about telling good people from the naughty after working for Santa for a loooong time...";
 	}
 	else {
-		mes "[Fuzzy Fuzz]";
 		mes "I sense that you are an adventurer with a good heart, and that a sweet girl like you deserves a nice gift.";
 		next;
 		mes "[Fuzzy Fuzz]";

+ 4 - 2
npc/quests/quests_13_1.txt

@@ -13817,7 +13817,8 @@ OnTouch:
 		set mao_morocc2,18;
 		changequest 7026,7027;
 		close2;
-		consumeitem 602; //Wing_Of_Butterfly
+		//consumeitem 602; //Wing_Of_Butterfly
+		warp "SavePoint",0,0;
 		end;
 	}
 	else if (mao_morocc2 == 19) {
@@ -13909,7 +13910,8 @@ que_dan02,115,53,3	script	Man#moc2_crazyR01	456,{
 		set mao_morocc2,20;
 		changequest 7028,7029;
 		close2;
-		consumeitem 602; //Wing_Of_Butterfly
+		//consumeitem 602; //Wing_Of_Butterfly
+		warp "SavePoint",0,0;
 		donpcevent "Mr. Kidd#moc_extra01::OnDisable";
 	}
 	else {

+ 10 - 4
npc/re/merchants/cash_trader-idRO.txt

@@ -3,18 +3,18 @@
 //===== By: ================================================== 
 //= Cydh
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.2
 //===== Compatible With: ===================================== 
 //= rAthena Project
 //===== Description: ========================================= 
-//= Sell Cash shop items based on idRO's Cash shop.
+//= Sell Cash shop items based on idRO's Cash shop
 //===== Additional Comments: ================================= 
 //= 1.0 Initial release. 2014-Jan-13 [Cydh]
-//      - Put/enable all 'idRO misc items' from db/import/item_db.txt, or put from db/import-tmpl/item_db.txt
-//      - Change MAX_SHOPITEM (on npc.c) to 210 then recompile your server (some NPCs sell more than 100 items)
 //= 1.1 2014-Jan-18 [Cydh]
 //      - Fixed the item list
 //      - Added NPC placement for some maps
+//= 1.2 2014-Feb-4 [Cydh]
+//      - Added Cash Trader with special offer for Chinese New Year
 //============================================================
 
 //============================================================
@@ -349,3 +349,9 @@ rachel,100,135,3	duplicate(idRO_eq2)	Equipment 2#ra	80
 rachel,100,131,3	duplicate(idRO_acc)	Acc and Kartu#ra	721
 rachel,100,133,3	duplicate(idRO_acc2)	Acc and Kartu 2#ra	80
 rachel,95,131,3	duplicate(idRO_rental)	Rental Shop#ra	874
+
+//===========================================================
+//Special Prices of Chinese New Year 2014
+//===========================================================
+-	cashshop	idROC2014::idRO_C2014	721,2936:6250,2177:6250,18574:6250,6225:7500,6226:5625,5381:7500,5210:10000,5294:6250,5463:6250,5335:6250,5256:6250,5495:6250,18630:6250,19518:6250,19519:6250,19520:6250,2573:6250,15058:6250,5490:6250,5498:6250,5253:6250,5502:6250,5526:6250,5529:6250,19509:6250,5359:7500,18729:6250,18666:6250,5284:6250,5471:6250,5467:6250,5363:6250,5546:6250,5334:6250,1472:5000,13420:6250,1392:5000,15008:6250,1731:3750,1825:2500,1261:1875,5545:6250,5550:6250,5549:6250,5515:6250,5514:6250,5470:6250,5505:6250,18695:6250,18694:6250
+prontera,156,178,3	duplicate(idRO_C2014)	Kafra Shop#C2014_prt	721

+ 2 - 2
npc/re/merchants/shops.txt

@@ -64,9 +64,9 @@ izlude_a,128,158,7	duplicate(Vendor from Milk Ranch#i)	Vendor from Milk Ranch#a
 izlude_b,128,158,7	duplicate(Vendor from Milk Ranch#i)	Vendor from Milk Ranch#b	90
 izlude_c,128,158,7	duplicate(Vendor from Milk Ranch#i)	Vendor from Milk Ranch#c	90
 izlude_d,128,158,7	duplicate(Vendor from Milk Ranch#i)	Vendor from Milk Ranch#d	90
-izlude_in,72,98,4	shop	Pet Groomer#iz	124,537:-1,643:-1,10013:-1,10014:-1,554:-1,6113:-1,6114:-1,6115:-1
+izlude_in,72,98,3	shop	Pet Groomer#iz	124,537:-1,643:-1,10013:-1,10014:-1,554:-1,6113:-1,6114:-1,6115:-1
 izlude_in,57,110,0	shop	Tool Dealer#iz	47,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,645:-1,656:-1,601:-1,602:-1,1065:-1,1750:-1
-izlude_in,72,110,3	shop	Trading Merchant#iz	900,13200:-1,13201:-1,13202:-1,13150:-1,13102:-1,13151:-1,13154:-1,13155:-1,13163:-1,13165:-1,13168:-1
+izlude_in,72,102,3	shop	Trading Merchant#iz	900,13200:-1,13201:-1,13202:-1,13150:-1,13102:-1,13151:-1,13154:-1,13155:-1,13163:-1,13165:-1,13168:-1
 
 //=======================================================
 // Juno

+ 101 - 0
npc/re/mobs/academy.txt

@@ -0,0 +1,101 @@
+//===== rAthena Script =======================================
+//= Cryptura Academy Monster Spawn Script
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena Project
+//===== Additional Comments: =================================
+//= 1.0 First version.
+//============================================================
+
+//==================================================
+// prt_fild08 - Prontera Field 
+//==================================================
+prt_fild08,0,0,0,0	monster	Poring	1002,110,5000,0,0
+prt_fild08,0,0,0,0	monster	Lunatic	1063,100,5000,0,0
+prt_fild08,0,0,0,0	monster	Fabre	1007,100,5000,0,0
+prt_fild08,0,0,0,0	monster	Little Poring	2398,30,50000,0,0
+prt_fild08a,0,0,0,0	monster	Poring	1002,110,5000,110,0,0
+prt_fild08a,0,0,0,0	monster	Lunatic	1063,100,5000,0,0
+prt_fild08a,0,0,0,0	monster	Fabre	1007,100,5000,0,0
+prt_fild08a,0,0,0,0	monster	Little Poring	2398,30,50000,0,0
+prt_fild08b,0,0,0,0	monster	Poring	1002,110,5000,110,0,0
+prt_fild08b,0,0,0,0	monster	Lunatic	1063,100,5000,0,0
+prt_fild08b,0,0,0,0	monster	Fabre	1007,100,5000,0,0
+prt_fild08b,0,0,0,0	monster	Little Poring	2398,30,50000,0,0
+prt_fild08c,0,0,0,0	monster	Poring	1002,110,5000,110,0,0
+prt_fild08c,0,0,0,0	monster	Lunatic	1063,100,5000,0,0
+prt_fild08c,0,0,0,0	monster	Fabre	1007,100,5000,0,0
+prt_fild08c,0,0,0,0	monster	Little Poring	2398,30,50000,0,0
+prt_fild08d,0,0,0,0	monster	Poring	1002,110,5000,110,0,0
+prt_fild08d,0,0,0,0	monster	Lunatic	1063,100,5000,0,0
+prt_fild08d,0,0,0,0	monster	Fabre	1007,100,5000,0,0
+prt_fild08d,0,0,0,0	monster	Little Poring	2398,30,50000,0,0
+
+//==================================================
+// treasure_n1 - Izlude Sunken Ship 1F
+//==================================================
+treasure_n1,0,0,0,0	monster	Red Mushroom	1085,10,50000,0,0
+treasure_n1,0,0,0,0	monster	Black Mushroom	1084,10,50000,0,0
+treasure_n1,160,54,13,13	monster	Red Mushroom	1085,10,50000,0,0
+treasure_n1,160,54,13,13	monster	Black Mushroom	1084,10,50000,0,0
+treasure_n1,160,54,13,13	monster	Dead Plankton	2404,10,50000,0,0
+treasure_n1,0,0,0,0	monster	Red Plant	1078,5,50000,0,0
+treasure_n1,0,0,0,0	monster	Green Plant	1080,5,50000,0,0
+treasure_n1,0,0,0,0	monster	Yellow Plant	1081,5,50000,0,0
+treasure_n1,0,0,0,0	monster	Blue Plant	1079,5,50000,0,0
+treasure_n1,0,0,0,0	monster	White Plant	1082,5,50000,0,0
+treasure_n1,0,0,0,0	monster	Zombie	1015,1,100000,0,0
+treasure_n1,0,0,0,0	monster	Zombie	1015,1,100000,0,0
+treasure_n1,68,47,9,9	monster	Weak Skeleton	2405,4,8000,0,0
+treasure_n1,106,42,9,9	monster	Roda Frog	1012,3,60000,0,0
+treasure_n1,32,37,9,9	monster	Roda Frog	1012,6,60000,0,0
+treasure_n1,69,112,9,9	monster	Spore	1014,3,20000,0,0
+treasure_n1,35,112,9,9	monster	Spore	1014,3,20000,0,0
+treasure_n1,35,112,9,9	monster	Roda Frog	1012,3,20000,0,0
+treasure_n1,111,111,9,9	monster	Roda Frog	1012,3,60000,0,0
+treasure_n1,111,111,9,9	monster	Dead Plankton	2404,5,60000,0,0
+treasure_n1,69,174,9,9	monster	Dead Plankton	2404,7,120000,0,0
+treasure_n1,82,155,9,9	monster	Spore	1014,4,60000,0,0
+treasure_n1,55,155,9,9	monster	Spore	1014,2,60000,0,0
+treasure_n1,22,160,0,0	monster	Weak Skeleton	2405,3,8000,0,0
+treasure_n1,163,155,13,13	monster	Weak Skeleton	2405,5,8000,0,0
+treasure_n1,163,155,13,13	monster	Zombie	1015,1,8000,0,0
+
+//==================================================
+// treasure_n2 - Izlude Sunken Ship 2F
+//==================================================
+treasure_n2,0,0,0,0	monster	Red Mushroom	1085,10,50000,0,0
+treasure_n2,0,0,0,0	monster	Black Mushroom	1084,10,50000,0,0
+treasure_n2,150,40,13,13	monster	Weak Soldier Skeleton	2406,3,50000,0,0
+treasure_n2,150,40,13,13	monster	Weak Skeleton	2405,5,50000,0,0
+treasure_n2,0,0,0,0	monster	Red Plant	1078,5,50000,0,0
+treasure_n2,0,0,0,0	monster	Green Plant	1080,5,50000,0,0
+treasure_n2,0,0,0,0	monster	Yellow Plant	1081,5,50000,0,0
+treasure_n2,0,0,0,0	monster	Blue Plant	1079,5,50000,0,0
+treasure_n2,0,0,0,0	monster	White Plant	1082,5,50000,0,0
+treasure_n2,100,50,13,13	monster	Weak Skeleton	2405,7,30000,0,0
+treasure_n2,100,50,13,13	monster	Dead Plankton	2404,5,30000,0,0
+treasure_n2,50,40,13,13	monster	Weak Soldier Skeleton	2406,3,50000,0,0
+treasure_n2,50,40,13,13	monster	Weak Skeleton	2405,5,50000,0,0
+treasure_n2,40,75,5,3	monster	Zombie	1015,2,60000,0,0
+treasure_n2,40,75,5,5	monster	Dead Plankton	2404,4,60000,0,0
+treasure_n2,50,140,5,5	monster	Weak Skeleton	2405,10,60000,0,0
+treasure_n2,50,140,5,5	monster	Weak Soldier Skeleton	2406,5,60000,0,0
+treasure_n2,160,140,5,5	monster	Weak Skeleton	2405,5,60000,0,0
+treasure_n2,160,140,5,5	monster	Weak Soldier Skeleton	2406,3,60000,0,0
+treasure_n2,160,140,5,2	monster	Zombie	1015,3,60000,0,0
+treasure_n2,160,70,13,13	monster	Weak Skeleton	2405,5,30000,0,0
+treasure_n2,160,70,13,13	monster	Dead Plankton	2404,7,30000,0,0
+treasure_n2,155,40,9,9	monster	Zombie	1015,3,120000,0,0
+treasure_n2,100,85,13,13	monster	Weak Soldier Skeleton	2406,2,50000,0,0
+treasure_n2,100,160,13,13	monster	Weak Soldier Skeleton	2406,5,120000,0,0
+treasure_n2,100,160,13,13	monster	Weak Skeleton	2405,7,200000,0,0
+treasure_n2,100,160,13,13	monster	Dead Plankton	2404,4,60000,0,0
+
+//==================================================
+// new_1-3 - Novice Training Grounds
+//==================================================
+new_1-3,0,0,0,0	monster	Little Poring	2398,30,50000,0,0

+ 190 - 19
npc/re/quests/eden/eden_iro.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= -SkittleNugget-
 //===== Current Version: =====================================
-//= 1.3
+//= 1.4
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Description: =========================================
@@ -14,6 +14,7 @@
 //= 1.1 Edited and added more NPCs, lots of placeholders. [Euphy]
 //= 1.2 Added VIP NPCs and features. [Euphy]
 //= 1.3 Added Mail Annex Station scripts, commented out. [Euphy]
+//= 1.4 Added Merry Badger. [Euphy/-SkittleNugget-]
 //============================================================
 
 // Acolyte Warper (part of other/acolyte_warp.txt)
@@ -141,6 +142,10 @@ moc_para01,26,15,3	script	Primo d'Buffer	790,{
 		mes "[Primo d'Buffer]";
 		mes "My orders are to help out any Adventurer marked as VIP with special Buffs!";
 		mes "Currently I will give you ^ff0000+7 to all of your Stats for 30 minutes^000000 if you are VIP.";
+		next;
+		mes "[Primo d'Buffer]";
+		mes "If you would like to be VIP, you can use WarpPortal to ^FF8C42Power-UP^000000 your game account with VIP Status. Of course there are many other advantages to being VIP, like higher EXP and Drop Rates, more Storage, and special buff NPCs like me!";
+		mes "Happy Journeys!";
 		close;
 	}
 	mes "I can also tell that you have been blessed with '^007FFFVIP Status^000000'.";
@@ -542,8 +547,7 @@ L_Exchange:
 		close;
 	}
 	mes "[Trader Machine]";
-	mes "That's a total of "+.@amount;
-	mes getitemname(getarg(2))+".";
+	mes "That's a total of "+.@amount+" "+getitemname(getarg(2))+".";
 	mes "Is this correct?";
 	next;
 	if(select("Yes, give them to me!:No, wait not yet.") == 2)
@@ -560,6 +564,185 @@ L_Exchange:
 	close;
 }
 
+// Merry Badger
+//============================================================
+moc_para01,13,22,4	script	Merry Badger#xch	882,{
+	mes "[Merry Badger]";
+	mes "Hello there!  I'm Merry Badger and I was hired to exchange the ^00CC00Eden Merit Badges^000000!";
+	next;
+	mes "[Merry Badger]";
+	mes "I can take your Merit Badges and give you some useful stuff, or I can take some of your stuff and give you some Eden Merit Badges.";
+	mes "As I get more authorization I can offer more things to trade with you, so definitely keep me in mind when visiting the Eden Group.";
+	next;
+	switch(select("Redeem Badges:Trade in FOR badges:Exchange Rates:15 Job Manuals - 1 JM Box")) {
+	case 1:
+		while(1) {
+			mes "[Merry Badger]";
+			mes "Sure thing, I have several options currently for your badges!";
+			next;
+			switch(select("This week's Special:2 EMB for 10 KVM Badge:2 EMB for 10 Bravery Medals:2 EMB for 10 Valor Medals:5 EMB for 5 Medium Life Potion:5 EMB for 5 Life Insurance:5 EMB for 5 Token of Siegfried:7 EMB for 1 Job Battle Manual:8 EMB for 1 Reset Stone:Nothing Now")){
+			case 1:
+				if (countitem(6495) < 3) {
+					mes "[Merry Badger]";
+					mes "You don't have enough ^00CC00Eden Merit Badges^000000. Let's start over!";
+					break;
+				}
+				mes "[Merry Badger]";
+				mes "Ok, I have a special for 3 Merit Badges. This week I'll give you ^00CC0040 Light Granule^000000, ^0066CC40 Gun Powder^000000, ^00CC003 Izidor^000000, ^0066CC10 Prickly Fruit^000000, ^00CC001 Mandragora Flowerpot^000000, and ^0066CC3 Elder Branch^000000.";
+				next;
+				switch(select("Yes:No")) {
+				case 1:
+					delitem 6495,3; //Para_Logro_Badge
+					getitem 7938,40; //Light_Granule
+					getitem 6244,40; //Gun_Power
+					getitem 709,3; //Izidor
+					getitem 576,10; //Prickly_Fruit
+					getitem 6217,1; //Mandragora_Flowerpot
+					getitem 7939,3; //Elder_Branch
+					mes "[Merry Badger]";
+					mes "There you go! What else would you like?";
+					break;
+				case 2:
+					mes "[Merry Badger]";
+					mes "I understand, let's see if you'd like something different!";
+					break;
+				}
+				break;
+			case 2:
+				callsub L_Exchange,2,6376,10; //KVM_Badge
+				break;
+			case 3:
+				callsub L_Exchange,2,7828,10; //BF_Badge1
+				break;
+			case 4:
+				callsub L_Exchange,2,7829,10; //BF_Badge2
+				break;
+			case 5:
+				callsub L_Exchange,5,14535,5; //Med_Life_Potion
+				break;
+			case 6:
+				callsub L_Exchange,5,12209,5; //Insurance
+				break;
+			case 7:
+				callsub L_Exchange,5,7621,5; //Token_Of_Siegfried
+				break;
+			case 8:
+				callsub L_Exchange,7,14592,1; //Job_Manual50
+				break;
+			case 9:
+				callsub L_Exchange,8,6320,1; //Premium_Reset_Stone
+				break;
+			case 10:
+				mes "[Merry Badger]";
+				mes "Wonderful!";
+				mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
+				close;
+			}
+			next;
+		}
+	case 2:
+		mes "[Merry Badger]";
+		mes "I have a limited selection as of right now, but here is what I can offer to get 1 Eden Merit Badge!";
+		next;
+		switch(select("Etc Items:Cancel")) {
+		case 1:
+			while(1) {
+				switch(select("5x Old Purple Box:Nothing")) {
+				case 1:
+					mes "[Merry Badger]";
+					if (countitem(617) < 5)
+						mes "You don't have enough of that to get 1 Eden Merit Badge. Lets start over!";
+					else {
+						mes "Wonderful, what else do you want?"; //custom dialogue
+						delitem 617,5; //Old_Violet_Box
+						getitem 6495,1; //Para_Logro_Badge
+					}
+					break;
+				case 2:
+					mes "[Merry Badger]";
+					mes "Wonderful!";
+					mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
+					close;
+				}
+				next;
+			}
+		case 2:
+			mes "[Merry Badger]";
+			mes "Well that is OK, if you want to see what I offer just ask!";
+			close;
+		}
+	case 3:
+		mes "[Merry Badger]";
+		mes "This is what I'll give you for your ^00CC00Eden Merit Badges^000000!";
+		mes "Ok, I have a special for 3 Merit Badges. This week I'll give you ^00CC0040 Light Granule^000000, ^0066CC40 Gun Powder^000000, ^00CC003 Izidor^000000, ^0066CC10 Prickly Fruit^000000, ^00CC001 Mandragora Flowerpot^000000, and ^0066CC3 Elder Branch^000000.";
+		mes "^00CC002 Eden Merit Badges^000000 = ^0066CC10x KVM Badge^000000";
+		mes "^00CC002 Eden Merit Badges^000000 = ^0066CC10x Bravery Medals^000000";
+		mes "^00CC002 Eden Merit Badges^000000 = ^0066CC10x Valor Medals^000000";
+		mes "^00CC005 Eden Merit Badges^000000 = ^0066CC5x Medium Life Potion^000000";
+		mes "^00CC005 Eden Merit Badges^000000 = ^0066CC5x Life Insurance^000000";
+		mes "^00CC005 Eden Merit Badges^000000 = ^0066CC5x Token Of Siegfried^000000";
+		mes "^00CC007 Eden Merit Badges^000000 = ^0066CC1x Job Battle Manual^000000";
+		mes "^00CC008 Eden Merit Badges^000000 = ^0066CC1x Reset Stone^000000";
+		next;
+		mes "[Merry Badger]";
+		mes "This is what you can give me to get ^00CC001 Eden Merit Badge^000000!";
+		mes "^0066CC5x Old Purple Box^000000";
+		close;
+	case 4:
+		mes "[Merry Badger]";
+		mes "I was strong armed into giving this, but you are worth it!";
+		mes "Do you want to exchange 15 Job Manuals to get 1 Tradable box of 10 Job Manuals?";
+		mes "I know 15 does not equal 10, but boxes are expensive you know.";
+		next;
+		if (countitem(14592) < 15) {
+			mes "[Merry Badger]";
+			mes "You don't have 15 or more Job Manuals to get 1 Box!";
+			close;
+		}
+		//custom dialogue below
+		switch(select("Yes:No")) {
+		case 1:
+			mes "[Merry Badger]";
+			mes "Wonderful, what else do you want?";
+			delitem 14592,15; //Job_Manual50
+			getitem 13990,1; //Job_Manual50_Box
+			close;
+		case 2:
+			mes "[Merry Badger]";
+			mes "Wonderful!";
+			mes "I'll be here if you ever want to exchange for Eden Merit Badges!";
+			close;
+		}
+	}
+	end;
+
+//callsub L_Exchange,<badge cost>,<item id>,<amount>;
+L_Exchange:
+	if (countitem(6495) < getarg(0)) {
+		mes "[Merry Badger]";
+		mes "You don't have enough ^00CC00Eden Merit Badges^000000. Let's start over!";
+		return;
+	}
+	mes "[Merry Badger]";
+	mes sprintf("Ok, I can give you ^ff0000%s^000000 for ^0066CC%d of your Eden Merit Badge(s)^000000.",
+				callfunc("F_InsertPlural",getarg(2),getitemname(getarg(1))), getarg(0));
+	mes "Do you want to?";
+	next;
+	switch(select("Yes:No")) {
+	case 1:
+		mes "[Merry Badger]";
+		mes "There you go! What else would you like?";
+		delitem 6495, getarg(0); //Para_Logro_Badge
+		getitem getarg(1),getarg(2);
+		break;
+	case 2:
+		mes "[Merry Badger]";
+		mes "I understand, let's see if you'd like something different!";
+		break;
+	}
+	return;
+}
+
 // Kafra Stacker
 //============================================================
 moc_para01,41,169,2	script	Kafra Stacker#eden	749,{
@@ -630,11 +813,11 @@ moc_para01,38,162,2	script	Code the Redeemer#Give1	405,{
 //============================================================
 /* Due to the irregularity of iRO's databases, some of these sprites may not display properly. */
 
-moc_para01,32,171,4	cashshop	Kafra Headgears#eden1	115,14024:500,14098:150,17081:300,14097:500,14094:1000,14017:400,14099:300
+moc_para01,32,171,6	cashshop	Kafra Headgears#eden1	115,14024:500,14098:150,17081:300,14097:500,14094:1000,14017:400,14099:300
 moc_para01,35,174,2	cashshop	Kafra Dye Shop#dyes2	114,6287:150
-moc_para01,36,170,2	cashshop	Kafra Consumables#eden3	112,13810:5,14167:400,16556:100,14111:75,14075:25,16419:30,14107:70,14104:50,14112:25,14082:30,14091:60,14088:30,14085:60,14169:40,14170:40,14172:40,14173:40,14171:40,14174:40,14159:100,14160:100,14161:100,14162:100,14163:100:14164:100,16420:1500
+moc_para01,37,170,2	cashshop	Kafra Consumables#eden3	112,13810:5,14167:400,16556:100,14111:75,14075:25,16419:30,14107:70,14104:50,14112:25,14082:30,14091:60,14088:30,14085:60,14169:40,14170:40,14172:40,14173:40,14171:40,14174:40,14159:100,14160:100,14161:100,14162:100,14163:100:14164:100,16420:1500
 moc_para01,32,174,2	cashshop	Kafra Rental Items#eden	721,16683:150,16682:50,14126:250,14125:250,16430:250,14137:250,14127:250,14118:250,14119:250,14132:250,16425:250,14124:250,14133:250,14130:250,16424:250,14136:250,14122:250,16426:250,14135:250,14134:250,14138:250,16428:250,16431:250,14139:250,14131:250,16429:250,16427:250
-moc_para01,36,172,2	cashshop	Kafra Costume#eden5	860,16974:300,16972:600,16973:150,16975:150,16977:150,17014:150,17015:150
+moc_para01,37,172,2	cashshop	Kafra Costume#eden5	860,16974:300,16972:600,16973:150,16975:150,16977:150,17014:150,17015:150
 moc_para01,35,168,1	cashshop	Kafra Utility Shop#eden	113,16677:25,13990:400,16396:100,16394:100,17106:500,6241:10,6240:10,6225:15,6226:15,14002:5,6294:500,7776:50,7619:30,7620:30,12208:40,14156:400,12210:40,14158:400,14042:50,14044:50,14046:50,14048:50,14114:50,14166:40,16418:500,16381:400,14165:100,14157:100,14178:100
 
 // Duplicate NPCs
@@ -667,7 +850,7 @@ OnTimer5000:
 }
 
 // Gym Pass Trainer "Ripped Cabus" (other/gympass)
-moc_para01,33,162,4	duplicate(Ripped Cabus#GymPass)	Ripped Callus#ed	899
+moc_para01,33,162,6	duplicate(Ripped Cabus#GymPass)	Ripped Callus#ed	899
 
 // RWC 2012 Enchanter "Goldenthiefberg" (events/RWC_2012.txt)
 // A combination of the slotter and enchanter, currently a placeholder.
@@ -701,18 +884,6 @@ moc_para01,29,35,4	script	Gramps#huntquests	866,{
 	//switch(select("Yes, I'll help.:Reward Me!:^ff0000I want to quit hunting^000000:^0000ffCan you warp me?^000000:Can you erase the timer?:What missions are you giving?:Give me Limited 3 day VIP:Tell me more about the VIP Access:No thanks, pops.")) {
 }
 
-moc_para01,13,22,4	script	Merry Badger#xch	882,{
-	mes "[Merry Badger]";
-	mes "Hello there!  I'm Merry Badger and I was hired to exchange the ^00CC00Eden Merit Badges^000000!";
-	next;
-	mes "[Merry Badger]";
-	mes "I can take your Merit Badges and give you some useful stuff, or I can take some of your stuff and give you some Eden Merit Badges.";
-	mes "As I get more authorization I can offer more things to trade with you, so definitely keep me in mind when visiting the Eden Group.";
-	close;
-	//next;
-	//switch(select("Redeem Badges:Trade in FOR badges:Exchange Rates:15 Job Manuals - 1 JM Box")) {
-}
-
 moc_para01,174,33,3	script	Bathory#2012spirits	1102,{
 	mes "[Bathory]";
 	mes "Eheeheeheehee! The spotlight is on Glast Heim this week, so I'm ferrying people there for a mere 1,000z!";

+ 1 - 0
npc/re/scripts_monsters.conf

@@ -2,6 +2,7 @@
 // -                   Renewal Monster Scripts                  -
 // --------------------------------------------------------------
 
+//npc: npc/re/mobs/academy.txt
 npc: npc/re/mobs/citycleaners.txt
 npc: npc/re/mobs/towns.txt
 

+ 1 - 0
npc/scripts_athena.conf

@@ -77,6 +77,7 @@ npc: npc/cities/yuno.txt
 // - Official Christmas Events (iRO)
 //npc: npc/events/christmas_2005.txt
 //npc: npc/events/christmas_2008.txt
+//npc: npc/events/christmas_2013.txt
 //npc: npc/events/dumplingfestival.txt
 // - Official Easter (2008) Event (iRO)
 //npc: npc/events/easter_2008.txt

+ 28 - 16
npc/scripts_custom.conf

@@ -12,6 +12,7 @@
 //npc: npc/custom/platinum_skills.txt
 //npc: npc/custom/healer.txt
 //npc: npc/custom/breeder.txt
+//npc: npc/custom/card_seller.txt
 //npc: npc/custom/itemmall.txt
 //npc: npc/custom/stylist.txt
 //npc: npc/custom/resetnpc.txt
@@ -20,6 +21,8 @@
 //npc: npc/custom/woe_controller.txt
 
 // ----------------------- Other Scripts -----------------------
+// -- Private MVP & Branch Room
+//npc: npc/custom/etc/mvp_room.txt
 // -- MVP Arena
 //npc: npc/custom/etc/mvp_arena.txt
 // -- Penal Servitude (Jails Quest)
@@ -47,6 +50,8 @@
 //npc: npc/custom/etc/marriage.txt
 // -- Warper that works only after locations are unlocked
 //npc: npc/custom/etc/quest_warper.txt
+// -- Auto-Potion command
+//npc: npc/custom/etc/autopot.txt
 
 // ----------------------- Quest Scripts -----------------------
 // -- Dynamic Quest Scripts
@@ -76,17 +81,33 @@
 //npc: npc/custom/quests/kahohorn.txt
 
 // ----------------------- Event Scripts -----------------------
-// -- Daily Events
+// -- Mini-Game Events
+//npc: npc/custom/events/cluckers.txt
+//npc: npc/custom/events/devil_square.txt
 //npc: npc/custom/events/disguise.txt
 //npc: npc/custom/events/mushroom_event.txt
-//npc: npc/custom/events/cluckers.txt
+//npc: npc/custom/events/mvp_ladder.txt
 // -- Holiday Events
-//npc: npc/custom/events/xmas_rings_event.txt
-//npc: npc/custom/events/valentinesdayexp.txt
-//npc: npc/custom/events/hallow06.txt
-//npc: npc/custom/events/uneasy_cemetery.txt
+//npc: npc/custom/events/holiday/xmas_rings_event.txt
+//npc: npc/custom/events/holiday/valentinesdayexp.txt
+//npc: npc/custom/events/holiday/hallow06.txt
+//npc: npc/custom/events/holiday/uneasy_cemetery.txt
+
+// -------------------- Battleround Scripts --------------------
+// -- Custom Battleground Scripts
+//npc: npc/custom/battleground/bg_emp.txt
+//npc: npc/custom/battleground/bg_pvp.txt
+// -- Unofficial Battlegrounds (custom version of official scripts)
+//npc: npc/custom/battleground/unofficial/bg_common.txt
+//npc: npc/custom/battleground/unofficial/bg_tierra_01.txt
+//npc: npc/custom/battleground/unofficial/bg_tierra_02.txt
+//npc: npc/custom/battleground/unofficial/bg_flavius_01.txt
+//npc: npc/custom/battleground/unofficial/bg_flavius_02.txt
+//npc: npc/custom/battleground/unofficial/bg_kvm01.txt
+//npc: npc/custom/battleground/unofficial/bg_kvm02.txt
+//npc: npc/custom/battleground/unofficial/bg_kvm03.txt
 
-// ----------------------- Unofficial Scripts -----------------------
+// --------------------- Unofficial Scripts --------------------
 // -- Unofficial Airplane script
 //npc: npc/custom/etc/airplane.txt
 // -- Thanatos Tower Statues Quest
@@ -94,12 +115,3 @@
 // -- Custom quests from official Umbalian Quests
 //npc: npc/custom/quests/sphinx_mask.txt
 //npc: npc/custom/quests/umbalian_language.txt
-// -- Unofficial Battlegrounds
-//npc: npc/custom/battleground/bg_common.txt
-//npc: npc/custom/battleground/bg_tierra_01.txt
-//npc: npc/custom/battleground/bg_tierra_02.txt
-//npc: npc/custom/battleground/bg_flavius_01.txt
-//npc: npc/custom/battleground/bg_flavius_02.txt
-//npc: npc/custom/battleground/bg_kvm01.txt
-//npc: npc/custom/battleground/bg_kvm02.txt
-//npc: npc/custom/battleground/bg_kvm03.txt

+ 1 - 1
npc/scripts_test.conf

@@ -1,5 +1,5 @@
 // --------------------------------------------------------------
-// -                        Tests Scripts                        -
+// -                        Test Scripts                        -
 // --------------------------------------------------------------
 // These scripts are meant for regression test purposes.
 

+ 5 - 5
sql-files/item_db.sql

@@ -4969,9 +4969,9 @@ REPLACE INTO `item_db` VALUES (12388,'Runstone_Crush','Rhydo Runestone For Appre
 REPLACE INTO `item_db` VALUES (12389,'Runstone_Storm','Pertz Runestone For Apprentice',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_STORMBLAST",1; } */',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12390,'Runstone_Millennium','Verkana Runestone For Apprentice',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_MILLENNIUMSHIELD",1; } */',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12391,'Lucky_Egg_C','Lucky Egg',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (12392,'Repair_A','Repair A',0,220,NULL,100,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(200,300),0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12393,'Repair_B','Repair B',0,500,NULL,140,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(300,400),0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12394,'Repair_C','Repair C',0,1100,NULL,180,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(400,500),0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12392,'Repair_A','Repair A',2,220,NULL,100,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(200,300),0; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12393,'Repair_B','Repair B',2,500,NULL,140,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(300,400),0; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12394,'Repair_C','Repair C',2,1100,NULL,180,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(400,500),0; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12395,'Tantanmen','Tantan Noodle',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'pet 1519;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12396,'Fools_Day_Box','Gift Box?',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(rand(1,10)==1) itemskill "AL_TELEPORT",1; else if(rand(1,10)==2) itemskill "AL_TELEPORT",3; else if(rand(1,10)==3) percentheal 50,0; else if(rand(1,10)==4) percentheal 0,50; else if(rand(1,10)==5) end; else if(rand(1,10)==6) getitem 512,1; else if(rand(1,10)==7) itemskill "ALL_REVERSEORCISH",1; else if(rand(1,10)==8) specialeffect2 247; else if(rand(1,10)==9) specialeffect2 338; else specialeffect2 10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12397,'Fools_Day_Box2','Gift Box?',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'if(rand(1,10)==1) itemskill "TF_DETOXIFY",1; else if(rand(1,10)==2) itemskill "TF_PICKSTONE",1; else if(rand(1,10)==3) itemskill "BA_FROSTJOKER",1; else if(rand(1,10)==4) itemskill "DC_SCREAM",1; else if(rand(1,10)==5) end; else if(rand(1,10)==6) getitem 909,1; else if(rand(1,10)==7) itemskill "AL_RUWACH",1; else if(rand(1,10)==8) specialeffect2 328; else if(rand(1,10)==9) specialeffect2 68; else specialeffect2 196;',NULL,NULL);
@@ -5167,9 +5167,9 @@ REPLACE INTO `item_db` VALUES (12706,'Lucky_Cookie01','Lucky Cookie',11,0,NULL,1
 REPLACE INTO `item_db` VALUES (12707,'Lucky_Cookie02','Lucky Cookie',11,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemskill "PR_MAGNIFICAT",1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12708,'Lucky_Cookie03','Lucky Cookie',11,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemskill "PR_IMPOSITIO",3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12709,'Guyak_Candy','Guyak Candy',0,0,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 30,30;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12710,'Guyak_Pudding','Guyak Pudding',2,0,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (12710,'Guyak_Pudding','Guyak Pudding',2,0,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SpeedUp1,300000,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12711,'Pretzel','Pretzel',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemheal rand(50,90),0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12712,'Green_Beer','Green Beer',2,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (12712,'Green_Beer','Green Beer',2,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 0,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12713,'Monster_Extract','Monster Extract',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12714,'Easter_Scroll','Easter Scroll',2,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Easter_Scroll),1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12715,'Black_Treasure_Box','Black Treasure Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

+ 113 - 61
sql-files/item_db_re.sql

@@ -997,6 +997,7 @@ REPLACE INTO `item_db_re` VALUES (1661,'Mental_Destroyer','Mental Destroyer',5,2
 REPLACE INTO `item_db_re` VALUES (1670,'RWC_Memory_Staff','RWC Memory Staff',5,20,NULL,500,'25:30',NULL,1,1,0x00818315,63,2,2,3,'1',1,10,'bonus bUnbreakableWeapon,0; bonus bMatk,30*(getrefine()/3); if(getrefine()>=7){ set .@i,1; bonus4 bAutoSpell,"HW_MAGICPOWER",1,10,0; } if (getrefine()>=4){ set .@rate,5*(.@i+1); bonus2 bMagicAddClass,Class_All,.@rate; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1673,'Half_BF_Staff4','Half BF Staff4',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,2; bonus bDelayRate,-10; bonus2 bSPLossRate,5,12000; bonus bUnbreakableWeapon,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1674,'Half_BF_Staff2','Half BF Staff2',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,3; bonus2 bMagicAddRace,RC_DemiHuman,10; bonus2 bMagicAddRace,RC_Player,10; bonus3 bAddEff,Eff_Stun,200,ATF_SKILL; bonus bUnbreakableWeapon,0;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (1676,'Baculum_Daemonicum','Baculum Daemonicum',5,20,NULL,1200,'60:150',NULL,1,2,0x00818315,63,2,2,4,'80',1,10,'bonus bAtkEle,Ele_Dark; bonus bUnbreakableWeapon,0; bonus bVariableCastrate,-10; if (BaseLevel > 99){ bonus bMatk,30; } if(getrefine() > 8){ bonus2 bResEff,Eff_Blind,3000; bonus bUseSPrate,-10; }',NULL,NULL);
 # Bows
 REPLACE INTO `item_db_re` VALUES (1701,'Bow','Bow',5,1000,NULL,500,'15',NULL,5,3,0x000A0848,63,2,34,1,'4',1,11,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (1702,'Bow_','Bow',5,1000,NULL,500,'15',NULL,5,4,0x000A0848,63,2,34,1,'4',1,11,NULL,NULL,NULL);
@@ -2010,7 +2011,7 @@ REPLACE INTO `item_db_re` VALUES (2925,'Agi_Glove_','Agi Glove',4,75000,NULL,100
 REPLACE INTO `item_db_re` VALUES (2926,'Vit_Glove_','Vit Glove',4,75000,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'100',0,0,'bonus bMaxHP,100; bonus bMaxSP,20; bonus bMaxHP,(readparam(bVit)/10)*50; if(readparam(bVit)>=110) bonus bMaxHPrate,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2927,'Dex_Glove_','Dex Glove',4,75000,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'100',0,0,'bonus bMaxHP,100; bonus bMaxSP,20; bonus bHit,(readparam(bDex)/10); if(readparam(bDex)>=110) bonus bLongAtkRate,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2928,'Luk_Glove_','Luk Glove',4,75000,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'100',0,0,'bonus bMaxHP,100; bonus bMaxSP,20; bonus bCritical,(readparam(bLuk)/10); if(readparam(bLuk)>=110) bonus bCritAtkRate,1;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2936,'Recovery_Ring','Recovery Ring',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,136,NULL,'10',0,0,'bonus bVit,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2936,'Recovery_Ring','Recovery Ring',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,136,NULL,'10',0,0,'bonus bVit,1; bonus bMaxHP,250; bonus bMaxHPrate,10; bonus2 bAddItemHealRate,IG_Potion,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2940,'Ninja_Manual','Ninja Manual',4,0,NULL,100,NULL,0,NULL,0,0x00000001,63,2,136,NULL,'0',0,0,'bonus bMaxSP,100; skill "NJ_UTSUSEMI",1; skill "NJ_KOUENKA",1; skill "NJ_SYURIKEN",1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2941,'Gunslinger_Manual','Gunslinger Manual',4,0,NULL,100,NULL,0,NULL,0,0x00000001,63,2,136,NULL,'0',0,0,'bonus bMaxSP,100; skill "GS_GLITTERING",1; skill "GS_ADJUSTMENT",1; skill "GS_MADNESSCANCEL",1; skill "GS_INCREASING",1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2942,'Taekwon_Manual','Taekwon Manual',4,0,NULL,100,NULL,0,NULL,0,0x00000001,63,2,136,NULL,'0',0,0,'bonus bMaxSP,100; skill "TK_SEVENWIND",4; skill "TK_JUMPKICK",5;',NULL,NULL);
@@ -3698,9 +3699,23 @@ REPLACE INTO `item_db_re` VALUES (5868,'Bushy_Moustache','Bushy Moustache',4,20,
 REPLACE INTO `item_db_re` VALUES (5869,'Mimic_Egg_Shell','Mimic Egg Shell',4,10,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,999,'bonus2 bAddEffWhenHit,Eff_Stone,600; bonus bSpeedRate,25;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5870,'Bunny_Egg_Shell','Bunny Egg Shell',4,10,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,1000,'bonus bAgi,3; bonus bAspd,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5871,'Picky_Egg_Shell','Picky Egg Shell',4,10,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,1001,'bonus bVit,3; bonus bMdef,2;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (5873,'Helmet_Of_Siegfried','Helmet Of Siegfried',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1055,'bonus bAllStats,5; bonus bUnbreakableHelm,0;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5873,'Helmet_Of_Siegfried','Helmet Of Siegfried',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1055,'bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",5,5; bonus2 bHPLossRate,600,1000; bonus bUnbreakableHelm,0;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5874,'Circlet_Of_Kriemhild','Circlet Of Kriemhild',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1056,'bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"PR_KYRIE",9,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm,0;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5875,'Diadem_Of_Bruenhild','Diadem Of Bruenhild',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1057,'bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"SM_ENDURE",8,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm,0;',NULL,NULL);
 #
+REPLACE INTO `item_db_re` VALUES (5881,'Weissbier_Hat','Weissbier Hat',4,20,NULL,300,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,1079,'bonus bMaxHPrate,3; bonus bMaxSPrate,3; bonus bDex,10; if(getrefine()>6){ bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bDex,5; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5882,'Red_Wizardry_Hat_C','Red Mage Hat C',4,20,NULL,300,NULL,1,NULL,0,0x00810204,63,2,256,NULL,'0',1,282,'bonus bMaxSP,150;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5883,'White_Wizardry_Hat_C','Gray Mage Hat C',4,20,NULL,300,NULL,1,NULL,0,0x00810204,63,2,256,NULL,'0',1,283,'bonus bMaxSP,150;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5884,'Gray_Wizardry_Hat_C','Brown Mage Hat C',4,20,NULL,300,NULL,1,NULL,0,0x00810204,63,2,256,NULL,'0',1,284,'bonus bMaxSP,150;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5885,'Blue_Wizardry_Hat_C','Blue Mage Hat C',4,20,NULL,300,NULL,1,NULL,0,0x00810204,63,2,256,NULL,'0',1,285,'bonus bMaxSP,150;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5886,'Yellow_Wizardry_Hat_C','Yellow Mage Hat C',4,20,NULL,300,NULL,1,NULL,0,0x00810204,63,2,256,NULL,'0',1,286,'bonus bMaxSP,150;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5887,'Half_L_Magestic_Goat','Half L Majestic Goat',4,20,NULL,800,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,380,'bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus bBaseAtk,(JobLevel*2)/7;',NULL,NULL);
+#
+REPLACE INTO `item_db_re` VALUES (5892,'RCC2013_1ST_CROWN','RCC2013 1ST CROWN',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1106,'sc_start SC_SpeedUp0,-1,0; skill "AL_TELEPORT",1;','sc_end SC_SpeedUp0;',NULL);
+REPLACE INTO `item_db_re` VALUES (5893,'RCC2013_2ND_CROWN','RCC2013 2ND CROWN',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1107,'sc_start SC_SpeedUp0,-1,0; skill "AL_TELEPORT",1;','sc_end SC_SpeedUp0;',NULL);
+REPLACE INTO `item_db_re` VALUES (5894,'RCC2013_3RD_CROWN','RCC2013 3RD CROWN',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1108,'sc_start SC_SpeedUp0,-1,0; skill "AL_TELEPORT",1;','sc_end SC_SpeedUp0;',NULL);
+REPLACE INTO `item_db_re` VALUES (5895,'RCC2013_ANV_Hat','RCC2013 ANV Hat',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1109,'bonus2 bAddClass,Class_All,2; bonus bMatkRate,2;',NULL,NULL);
+#
 # More Etc Items
 #===================================================================
 REPLACE INTO `item_db_re` VALUES (6000,'Dark_Ashes','Ashes of Darkness',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -4342,7 +4357,7 @@ REPLACE INTO `item_db_re` VALUES (6797,'11th_Coin','11th Anniversary Coin',3,0,N
 #
 REPLACE INTO `item_db_re` VALUES (6804,'ORGANIC_PUMPKIN','Organic Pumpkin',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 (6805,'INORGANIC_PUMPKIN','Inorganic Pumpkin',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 (6821,'Solo_Troops_Badge','Solo Troops Badge',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6821,'Solo_Troops_Badge','Single Union Badge',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #
 REPLACE INTO `item_db_re` VALUES (7001,'Mould_Powder','Mould Powder',3,466,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (7002,'Ogre_Tooth','Ogre Tooth',3,658,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -6033,7 +6048,7 @@ REPLACE INTO `item_db_re` VALUES (12486,'GoldPC_First_Box','GoldPC First Box',2,
 REPLACE INTO `item_db_re` VALUES (12487,'PC_4Leaf_Clover_Box','PC 4Leaf Clover Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12488,'Ticket_Gift_Box','Ticket Gift Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12489,'Ticket_Gift_Box2','Ticket Gift Box2',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12490,'Vivid_Notation','Vivid Notation',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12490,'Vivid_Notation','Christmas Music Box',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'playbgm rand(53,58)+".mp3";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12491,'Curious_Snowball','Curious Snowball',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_Snowball";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12492,'Crumpled_Paper','Crumpled Paper',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Crumpled_Paper,1);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12493,'Lucky_Egg_C4','Lucky Egg C4',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Lucky_Egg_C4);',NULL,NULL);
@@ -6126,11 +6141,13 @@ REPLACE INTO `item_db_re` VALUES (12579,'Ring_Of_Valkyrie_Box','Ring Of Valkyrie
 REPLACE INTO `item_db_re` VALUES (12580,'Vending_Search_Scroll','Universal Catalog Silver',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'searchstores 10,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12581,'Vending_Search_Scroll2','Universal Catalog Gold',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'searchstores 10,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12582,'Siege_Supply_Box','WoE Supply Box',11,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12583,'PR_Team_Box','Public Relations box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12584,'Develop_Team_box','Development Team box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12585,'Marketing_Team_Box','Marketing Team box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12586,'Operating_Team_Box','Operation Team box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12587,'Summer_Night_box','A Summer Night\'s Box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12583,'PR_Team_Box','Public Relations box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 6397,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12584,'Develop_Team_box','Development Team box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 6398,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12585,'Marketing_Team_Box','Marketing Team box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 6399,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12586,'Operating_Team_Box','Operation Team box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 6400,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12587,'Summer_Night_box','A Summer Night\'s Box',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12246,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12588,'Summer_Night_box2','A Summer Night\'s Box2',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12103,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12589,'Summer_Night_box3','A Summer Night\'s Box3',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12106,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12591,'Uni_Catalog_Bz','Universal Catalog Bronze',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'searchstores 10,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12592,'Cyclops_Box1','Cyclops Box1',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12593,'Cyclops_Box2','Cyclops Box2',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -6160,7 +6177,7 @@ REPLACE INTO `item_db_re` VALUES (12618,'Bgrade_Pocket','B Grade Coin Bag',2,20,
 REPLACE INTO `item_db_re` VALUES (12619,'Cgrade_Pocket','C Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Cgrade_Pocket);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12620,'Dgrade_Pocket','D Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Dgrade_Pocket);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12621,'Egrade_Pocket','E Grade Coin Bag',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Egrade_Pocket);',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12622,'Boarding_Halter','Reins Of Mount',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'setmounting();',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12622,'Boarding_Halter','Reins Of Mount',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ALL_RIDING,-1,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12623,'High_Weapon_Box','Advanced Weapons Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Advanced_Weapons_Box),1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12624,'Delicious_Jelly','Delicious Jelly',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 3,3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12625,'Sapa_Feat_Cert_Pack','Sapa Feat Cert Pack',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -6213,7 +6230,7 @@ REPLACE INTO `item_db_re` VALUES (12671,'99lv_Battle_Manual','99lv Battle Manual
 REPLACE INTO `item_db_re` VALUES (12672,'Start_New_Box','Start New Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 617,2; getitem 12263,2; getitem 12329,3; getitem 12330,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12673,'Lucky_Egg_C10','Lucky Egg C10',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Lucky_Egg_C10);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12674,'God_Material_Box','God Material Box',2,20,NULL,500,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12675,'Sg_Weapon_Supply_Box','WoE Weapon Supply Box',2,20,NULL,500,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem callfunc("F_Rand",18113,2016,1586,1395,21001,18114,13072,16021,1492,1587,1396,1293,21002,1294,1436,16020,1775,1776),1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12675,'Sg_Weapon_Supply_Box','WoE Weapon Supply Box',2,20,NULL,500,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Sg_Weapon_Supply_Box);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12676,'Sg_Violet_Potion_Box','Siege Violet Potion Box',2,20,NULL,500,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 11547,50;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12677,'Siege_Arrow_Quiver_S','Siege Arrow Quiver S',2,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'130',NULL,NULL,'getitem 1776,200;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12678,'Siege_Arrow_Quiver_A','Siege Arrow Quiver A',2,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'95',NULL,NULL,'getitem 1775,200;',NULL,NULL);
@@ -6241,14 +6258,14 @@ REPLACE INTO `item_db_re` VALUES (12699,'Tikbalang_Belt','Tikbalang Harness',2,2
 REPLACE INTO `item_db_re` VALUES (12700,'Insideout_Shirt','Inside-out Shirt',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "malaya",242,211;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12701,'Old_Blue_Box_F','Old Blue Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12702,'Old_Bleu_Box','Old Navy Box',2,0,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_BleuBox),1; getrandgroupitem(IG_BleuBox),1;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12703,'Holy_Egg_2','Holy Egg',11,0,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12703,'Holy_Egg_2','Holy Egg',11,0,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Holy_Egg_2,1);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12704,'Elixir_Of_Life','Elixir of Life',0,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'85',NULL,NULL,'percentheal 100,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12705,'Noble_Nameplate','Noble Nameplate',2,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'90',NULL,NULL,'sc_start SC_EXPBOOST,1800000,100;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12706,'Lucky_Cookie01','Lucky Cookie',11,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "PR_GLORIA",5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12707,'Lucky_Cookie02','Lucky Cookie',11,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "PR_MAGNIFICAT",1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12708,'Lucky_Cookie03','Lucky Cookie',11,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "PR_IMPOSITIO",3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12709,'Guyak_Candy','Guyak Candy',0,0,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 30,30;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12710,'Guyak_Pudding','Guyak Pudding',2,0,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12710,'Guyak_Pudding','Guyak Pudding',2,0,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SpeedUp1,300000,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12711,'Pretzel','Pretzel',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemheal rand(50,90),0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12712,'Green_Beer','Green Beer',2,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 0,50;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12713,'Monster_Extract','Monster Extract',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -6573,7 +6590,7 @@ REPLACE INTO `item_db_re` VALUES (13070,'Scarletto_Nail','Scarlet-nail',5,56000,
 REPLACE INTO `item_db_re` VALUES (13071,'Upg_Dagger','Upg Dagger',5,20,NULL,600,'55',NULL,1,1,0xFE9F7EEF,63,2,2,3,'1',1,1,'bonus bBaseAtk,(getrefine()*10); bonus bMatk,(getrefine()*5); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13072,'Velum_Damascus','Vellum Damascus',5,20,NULL,1000,'180',NULL,1,0,0xFE9F7EEF,63,2,2,4,'95',1,1,'bonus bAspdRate,getrefine();',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13073,'Counter_Dagger_','Counter Dagger',5,120000,NULL,550,'140',NULL,1,1,0x00810204,63,2,2,4,'55',1,1,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (13074,'Ninja_Cutter','Ninja Sword Prototype',5,0,NULL,0,'0',NULL,1,0,0x02000000,63,2,2,4,'99',0,1,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (13074,'Ninja_Cutter','Ninja Sword Prototype',5,0,NULL,0,'0',NULL,1,0,0x02000000,63,2,2,4,'99',1,1,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13075,'Kurenai','Kurenai',5,5000,NULL,700,'130',NULL,1,0,0x02000000,63,2,2,3,'99',1,1,'bonus bInt,3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13076,'Raksasa_Dagger','Nachal Sword',5,40000,NULL,600,'120:100',NULL,1,1,0x02000000,63,2,2,3,'110',1,1,'bonus bInt,3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (13077,'Kagekiri','Kagekiri',5,40000,NULL,600,'50:120',NULL,1,0,74,7,2,2,4,'100',1,1,NULL,NULL,NULL);
@@ -7826,8 +7843,8 @@ REPLACE INTO `item_db_re` VALUES (15025,'Golden_Rod_Robe','Golden Rod Robe',4,20
 REPLACE INTO `item_db_re` VALUES (15026,'Aqua_Robe','Aqua Robe',4,20,NULL,500,NULL,40,NULL,0,0x00000200,63,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Water; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_STORMGUST",-3000; if(readparam(bInt)>=120){ bonus bInt,1; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15027,'Crimson_Robe','Crimson Robe',4,20,NULL,500,NULL,40,NULL,0,0x00000200,63,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Fire; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_METEOR",-3000; if(readparam(bInt)>=120){ bonus bInt,1; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15028,'Forest_Robe','Forest Robe',4,20,NULL,500,NULL,40,NULL,0,0x00000200,63,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Earth; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_HEAVENDRIVE",-3000; if(readparam(bInt)>=120){ bonus bInt,1; }',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (15029,'Robe_Of_Affection','Robe Of Affection',4,20,NULL,300,NULL,22,NULL,0,0x00000100,18,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Holy; bonus bMdef,10; bonus bInt,1; bonus2 bSkillUseSP,"AB_CLEMENTIA",50;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (15030,'Robe_Of_Judgement','Robe Of Judgement',4,20,NULL,300,NULL,22,NULL,0,0x00000100,18,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_Player,-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',4,20,NULL,300,NULL,22,NULL,0,0x00000100,56,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Holy; bonus bMdef,10; bonus bInt,1; bonus2 bSkillUseSP,"AB_CLEMENTIA",50;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (15030,'Robe_Of_Judgement','Robe Of Judgement',4,20,NULL,300,NULL,22,NULL,0,0x00000100,56,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Dark; bonus bMdef,10; bonus bStr,2; bonus bInt,1; bonus2 bSubRace,RC_All,-10; bonus2 bSubRace,RC_Undead,20; bonus2 bSubRace,RC_Demon,20;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15031,'Para_Team_Armor','Paradise Uniform IV',4,0,NULL,0,NULL,70,NULL,0,0xFFFFFFFF,63,2,16,NULL,'60',0,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,'Tidung','Tidung',4,10,NULL,500,NULL,2,NULL,1,0xFFFFFFFE,63,2,16,NULL,'0',1,0,'bonus bMdef,10; bonus2 bResEff,Eff_Stun,1500; bonus2 bResEff,Eff_Freeze,1500; bonus2 bSubClass,Class_All,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (15033,'Tutorial_Mattle','Tutorial Mantle',4,0,NULL,600,NULL,37,NULL,0,0x00000000,63,2,16,NULL,'1',0,0,NULL,NULL,NULL);
@@ -7884,12 +7901,12 @@ REPLACE INTO `item_db_re` VALUES (16009,'E_Spanner_C','Spanner',5,2,NULL,0,'150'
 REPLACE INTO `item_db_re` VALUES (16010,'Red_Ether_Bag','Red Ether Bag',5,20,NULL,1000,'15:100',NULL,1,1,0x0004C5B2,63,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);
 REPLACE INTO `item_db_re` VALUES (16011,'Adventure_Mace','Adventure Mace',5,0,NULL,0,'60',NULL,1,0,0x00008110,63,2,2,1,'1',0,8,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16012,'Academy_Mace','Academy Mace',5,0,NULL,1000,'110',NULL,1,1,0x00008110,63,2,2,1,'1',1,8,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (16013,'Mace_Of_Judgement','Mace Of Judgement',5,20,NULL,1200,'140:180',NULL,1,2,0x00000100,18,2,2,3,'100',1,8,'bonus bStr,1; bonus bInt,1; autobonus "{ bonus2 bMagicAddRace,RC_Demon,20; }",30,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,20; }",5,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (16013,'Mace_Of_Judgement','Mace Of Judgement',5,20,NULL,1200,'140:180',NULL,1,2,0x00000100,56,2,2,3,'100',1,8,'bonus bStr,1; bonus bInt,1; autobonus "{ bonus2 bMagicAddRace,RC_Demon,20; }",30,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,20; }",5,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16014,'P_Mace3','Eden Mace III',5,0,NULL,0,'172',NULL,1,0,0x0004C5B3,63,2,2,3,'60',0,8,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16015,'Cat_Club','Cat Club',5,20,NULL,700,'88',NULL,1,3,0x0004C5B3,63,2,2,1,'1',1,8,'bonus2 bAddRace,RC_Brute,15;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16016,'Tuna','Tuna',5,0,NULL,0,'180',NULL,1,0,0x0004C5B3,63,2,2,1,'50',0,8,'bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Stun,150; bonus3 bAutoSpell,"SM_BASH",5,20; if(BaseLevel>99) bonus bBaseAtk,20;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16017,'Bloody_Cross','Bloody Cross',5,20,NULL,1500,'170',NULL,1,0,0x00008110,63,2,2,4,'100',1,8,'bonus bAtkEle,Ele_Dark; bonus3 bAutoSpell,"WL_HELLINFERNO",1,(getrefine()?getrefine()*20:20);',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (16018,'Mace_Of_Judgement2','Empowered Mace Of Judgement',5,20,NULL,1200,'170:180',NULL,1,1,0x00000100,18,2,2,3,'130',1,8,'bonus bStr,2; bonus bInt,2; autobonus "{ bonus2 bMagicAddRace,RC_Demon,40; }",60,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (16018,'Mace_Of_Judgement2','Empowered Mace Of Judgement',5,20,NULL,1200,'170:180',NULL,1,1,0x00000100,56,2,2,3,'130',1,8,'bonus bStr,2; bonus bInt,2; autobonus "{ bonus2 bMagicAddRace,RC_Demon,40; }",60,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16019,'Upg_Mace','Upg Mace',5,20,NULL,800,'80',NULL,1,1,0x0004C5B3,63,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',5,20,NULL,1500,'170',NULL,1,0,0x0004C5B3,63,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',5,20,NULL,1500,'170',NULL,1,0,0x0004C5B3,63,2,2,4,'95',1,8,'bonus bUnbreakableWeapon,0; bonus3 bAutoSpell,"NPC_CRITICALWOUND",5,10; bonus bHit,getrefine(); bonus bCritical,getrefine();',NULL,NULL);
@@ -8099,9 +8116,9 @@ REPLACE INTO `item_db_re` VALUES (16619,'Yellow_Bunnyband_Box','Yellow Bunnyband
 REPLACE INTO `item_db_re` VALUES (16625,'Half_Asprika_box7','Half Asprika box7',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'rentitem 2566,604800;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16628,'Brynhild_Box','Half Brynhild Box',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'47',NULL,NULL,'rentitem 15023,604800;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16631,'Aributa_Scroll','Aributa Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (16638,'Life_Ribbon_Box','Life Ribbon Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Life_Ribbon_Box);*/ /*rentitem Life_Ribbon,3600;*/',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (16639,'Life_Ribbon_Box2','Life Ribbon Box2',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Life_Ribbon_Box2);*/ /*rentitem Life_Ribbon,7200;*/',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (16640,'Life_Ribbon_Box3','Life Ribbon Box3',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Life_Ribbon_Box3);*/ /*rentitem Life_Ribbon,14400;*/',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (16638,'Life_Ribbon_Box','Life Ribbon Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Life_Ribbon_Box);',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (16639,'Life_Ribbon_Box2','Life Ribbon Box2',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Life_Ribbon_Box2);',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (16640,'Life_Ribbon_Box3','Life Ribbon Box3',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Life_Ribbon_Box3);',NULL,NULL);
 #
 REPLACE INTO `item_db_re` VALUES (16652,'Flame_Light','Flame Light',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Flame_Light);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16653,'BM75_10Box','BM75 10Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12563,10;',NULL,NULL);
@@ -8218,7 +8235,7 @@ REPLACE INTO `item_db_re` VALUES (16865,'Siege_Map_Teleport_Scroll_Box_30','Sieg
 REPLACE INTO `item_db_re` VALUES (16866,'Siege_Map_Teleport_Scroll_II_Box_10','Siege Map Teleport Scroll II Box(10)',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 14591,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16867,'Siege_Map_Teleport_Scroll_II_Box_30','Siege Map Teleport Scroll II Box(30)',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 14591,30;',NULL,NULL);
 #
-REPLACE INTO `item_db_re` VALUES (16972,'Weather_Report_Box','Weather Report Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Weather_Report_Box);*/ /*getitem Fine_Sun,1;*/ getitem 19518,1; getitem 19520,1; getitem 19519,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (16972,'Weather_Report_Box','Weather Report Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Weather_Report_Box);*/ getitem 19507,1; getitem 19518,1; getitem 19520,1; getitem 19519,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16973,'Yellow_Hat_Box','Yellow Hat Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 19515,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16974,'Comin_Actor_Box','Comin Actor Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Comin_Actor_Box);*/ getitem 19514,1; getitem 19521,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (16975,'Singing_Bird_Box','Singing Bird Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 19516,1;',NULL,NULL);
@@ -8467,15 +8484,15 @@ REPLACE INTO `item_db_re` VALUES (18505,'Umbala_Spirit','Umbala Spirit',4,0,NULL
 REPLACE INTO `item_db_re` VALUES (18506,'Hattah_Black','Hattah Black',4,12000,NULL,4000,NULL,2,NULL,1,0xFFFFFFFF,63,2,769,NULL,'1',1,676,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18507,'Elven_Ears_','Elven Ears',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFE,63,2,512,NULL,'70',0,73,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18508,'Garuda_Hat','Garuda Hat',4,20,NULL,100,NULL,4,NULL,1,0xFFFFFFFE,63,2,256,NULL,'30',1,677,'bonus bLuk,5; bonus bMdef,3; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Wind,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubEle,Ele_Dark,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Ghost,5; bonus bHit,10; bonus bDelayRate,-5; if(getrefine()>=7) bonus2 bAddMonsterDropItem,522,100*(getrefine()-6);',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18509,'RWC2010_Indonesia','RWC2010 Indonesia',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFE,63,2,256,NULL,'15',1,678,'bonus bLuk,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18509,'RWC2010_Indonesia','RWC2010 Indonesia',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFE,63,2,256,NULL,'15',1,678,'bonus bLuk,5; bonus2 bSubRace2,RC_Player,10; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bAddItemHealRate,501,100; bonus2 bAddItemHealRate,504,100; bonus bCritical,10; bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus bMatkRate,3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18510,'Blood_Angel_Hair_Band','Blood Angel Hair Band',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'60',0,679,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18511,'Blood_Angel_Wing_Ear','Blood Angel Wing Ear',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'60',0,680,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18512,'Juho_Necktie','Juho Necktie',4,0,NULL,0,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,NULL,'20',1,443,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18513,'Shining_Sunflower','Shining Sunflower',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',0,681,'bonus bLuk,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18514,'Para_Team_Hat2','Eden Team Hat II',4,0,NULL,0,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,682,'autobonus "{ bonus bBaseAtk,10; }",70,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,10; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }";',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18515,'RTC_Winner_Hat','RTC Winner Hat',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,683,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18516,'RTC_2nd_Winner_Hat','RTC 2nd Winner Hat',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,684,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18517,'RTC_3rd_Winner_Hat','RTC 3rd Winner Hat',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,685,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18515,'RTC_Winner_Hat','RTC Winner Hat',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,683,'bonus bIntravision,0; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; bonus2 bAddEff,Eff_Curse,50;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18516,'RTC_2nd_Winner_Hat','RTC 2nd Winner Hat',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,684,'bonus bIntravision,0; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bAddEff,Eff_Curse,50;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18517,'RTC_3rd_Winner_Hat','RTC 3rd Winner Hat',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,685,'bonus bIntravision,0; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bAddEff,Eff_Curse,50;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18518,'Angelwing_Ear_S','Angel Wing Ears',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,512,NULL,'70',0,158,'bonus bStr,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18519,'Devilwing_Ear_S','Evil Wing Ears',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,512,NULL,'70',0,152,'bonus bStr,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18520,'Jaty_C','Jaty Crown',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,686,'bonus2 bSubRace,RC_Plant,5; bonus2 bSubRace,RC_Brute,5; bonus2 bAddRace,RC_Plant,5; bonus2 bAddRace,RC_Brute,5;',NULL,NULL);
@@ -8494,7 +8511,7 @@ REPLACE INTO `item_db_re` VALUES (18532,'Heart_Ribbon_Band','Heart Ribbon Hairba
 REPLACE INTO `item_db_re` VALUES (18533,'Honeybee_Hat','Honey Bee Hat',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,709,'bonus bMdef,3; bonus2 bAddRace,RC_Insect,5; bonus2 bMagicAddRace,RC_Insect,5; bonus2 bSubRace,RC_Insect,5; bonus3 bAddMonsterDropItem,518,RC_Insect,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18534,'Fancy_Phantom_Mask','Fancy Phantom Mask',4,20,NULL,1000,NULL,5,NULL,1,0xFFFFFFFF,63,2,768,NULL,'20',1,710,'bonus bStr,1; bonus2 bAddClass,Class_All,5; bonus bDelayRate,-1; bonus bMaxHP,getrefine()*100; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillAtk,"NJ_ZENYNAGE",20;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18535,'Pumpkin_Hat_2010','Pumpkin Hat 2010',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,206,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18536,'Foxtail','Foxtail',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,711,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18536,'Foxtail','Foxtail',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,711,'bonus bMatk,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18537,'Malangdo_Hat','Malangdo Hat',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,726,'bonus bFlee,6;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18538,'Devil_Whisper','Spirit Whispers',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,712,'bonus bUnbreakableHelm,0; bonus bMdef,3; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18539,'Skull_Cap','Skull Cap',4,40,NULL,200,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,713,'bonus bMatkRate,2; if(getrefine() >= 5) { bonus bMatkRate,3; } if(getrefine() >= 7) { bonus bMatkRate,3; }',NULL,NULL);
@@ -8508,33 +8525,33 @@ REPLACE INTO `item_db_re` VALUES (18546,'Lover_In_Mouth','Lover In Mouth',4,20,N
 REPLACE INTO `item_db_re` VALUES (18547,'Campus_Festival','Campus Festival',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,721,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18548,'Tiny_Hat','Tiny Hat',4,20,NULL,30,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,722,'bonus bInt,1; bonus bAgi,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18549,'Nabi_Hair_Pin','Nabi Hair Pin',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'20',1,723,'bonus bInt,1; bonus bAgi,1; bonus bMdef,3; bonus2 bAddRace,RC_Plant,5; bonus2 bMagicAddRace,RC_Plant,5; bonus2 bSubRace,RC_Plant,5; bonus3 bAddMonsterDropItem,709,RC_Plant,30;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18550,'Asgard_Blessing','Asgard Blessing',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,724,'bonus bAllStats,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18550,'Asgard_Blessing','Asgard Blessing',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,724,'bonus bAllStats,2; bonus2 bSubEle,Ele_All,5; bonus2 bHPRegenRate,(MaxHp/100),10000;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18551,'Galaxy_Circlet','Galaxy Circlet',4,20,NULL,1000,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,725,'bonus bMdef,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18552,'Proba_Angel_Blessing','Proba Angel Blessing',4,20,NULL,1200,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,444,'bonus bLuk,2;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18553,'Mini_Tree','Mini Tree',4,20,NULL,50,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,727,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18553,'Mini_Tree','Mini Tree',4,20,NULL,50,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,727,'bonus2 bResEff,Eff_Stun,20; bonus2 bResEff,Eff_Curse,20; bonus2 bResEff,Eff_Blind,20; bonus2 bResEff,Eff_Confusion,20; bonus2 bAddMonsterDropItem,529,300; bonus2 bAddMonsterDropItem,529,644;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18554,'King_Prawn_Hat','King Prawn Hat',4,20,NULL,1000,NULL,8,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,728,'bonus2 bAddItemHealRate,IG_Fish,100;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18555,'General_Helmet','General Helmet',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,729,'bonus bMdef,3;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18556,'Angel_Helmet','Angel Helmet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,3,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18557,'Devil_Helmet','Devil Helmet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,12,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18558,'Sinsuncho_Hat','Sinsuncho Hat',4,20,NULL,1000,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,730,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18555,'General_Helmet','General Helmet',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,729,'bonus bMdef,3; bonus2 bAddRace,RC_Dragon,5; bonus2 bMagicAddRace,RC_Dragon,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAddMonsterDropItem,7444,RC_Dragon,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18556,'Angel_Helmet','Angel Helmet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,3,'bonus3 bAddMonsterIdDropItem,6464,2220,310;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18557,'Devil_Helmet','Devil Helmet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,12,'bonus3 bAddMonsterIdDropItem,6345,1812,310;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18558,'Sinsuncho_Hat','Sinsuncho Hat',4,20,NULL,1000,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,730,'bonus2 bExpAddRace,RC_Plant,5; bonus2 bSubRace,RC_Plant,-10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18559,'Fafnir_Skin','Fafnir Skin',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,152,'bonus bCritical,3; bonus bHPrecovRate,-100;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18560,'Fafnir_Mask','Fafnir Mask',4,20,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,63,2,1,NULL,'50',0,180,'bonus bCritical,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18561,'B_Feather_Beret','B Feather Beret',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'40',1,731,'bonus bVit,2; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18562,'Bone_Hat','Bone Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,732,'bonus bMdef,3;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18563,'Heart_Wing_Hairband','Heart Wing Hairband',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,733,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18563,'Heart_Wing_Hairband','Heart Wing Hairband',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,733,'bonus bUseSPrate,-10; bonus bDelayrate,-5; bonus bUseSPrate,getrefine(); bonus bDelayrate,getrefine();',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18564,'Love_Piece','Love Piece',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'50',0,734,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18565,'Leprechaun_Hat','Leprechaun Hat',4,20,NULL,300,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'40',0,735,'bonus bStr,1; bonus bInt,1; bonus bMdef,4;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18566,'Nut_Donut_In_Mouth','Nut Donut In Mouth',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,736,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18565,'Leprechaun_Hat','Leprechaun Hat',4,20,NULL,300,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'40',0,735,'bonus bStr,1; bonus bInt,1; bonus bMdef,4; if(getrefine()>6){ bonus2 bAddMonsterDropItem,12135,50; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18566,'Nut_Donut_In_Mouth','Nut Donut In Mouth',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,736,'bonus bBaseAtk,5; bonus bbMatk,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18567,'Stretched_Nose','Stretched Nose',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,737,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18568,'Humming_Bird','Humming Bird',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,702,'bonus bMdef,6;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18569,'Soft_Sheep_Hat','Soft Sheep Hat',4,20,NULL,1000,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,738,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18570,'Ancient_Gold_Ornament','Ancient Gold Ornament',4,20,NULL,400,NULL,7,NULL,1,0xFFFFFFFE,63,2,256,NULL,'100',1,739,'if(BaseLevel >= 150) { bonus bAllStats,2; } if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief){ bonus2 bAddClass,Class_All,8; } if(BaseClass==Job_Mage||BaseClass==Job_Acolyte){ bonus bMatk,8; } if(BaseClass==Job_Archer){ bonus bDex,3; bonus bLongAtkRate,10; }',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18571,'Lucky_Hat','Lucky Hat',4,20,NULL,1000,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,740,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18572,'Korean_Judge_Hat','Korean Judge Hat',4,20,NULL,300,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,377,'bonus bMdef,2;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18573,'White_Feather','White Feather',4,20,NULL,500,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,741,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18574,'Lord_of_Death','Lord of Death',4,20,NULL,1000,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'70',1,742,'bonus bMdef,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18571,'Lucky_Hat','Lucky Hat',4,20,NULL,1000,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,740,'bonus2 bExpAddRace,RC_All,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18572,'Korean_Judge_Hat','Korean Judge Hat',4,20,NULL,300,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,377,'bonus bMdef,2; bonus bVariableCastrate,-6;bonus bAspdRate,6;if(getrefine()>6){bonus2 bSubRace,RC_DemiHuman,2;bonus2 bSubRace,RC_Player,2;}if(BaseClass==Job_Swordman || BaseClass==Job_Merchant || BaseClass==Job_Thief || Class==Job_Taekwon || Class==Job_Star_Gladiator || Class==Job_Star_Gladiator2 || Class==Job_Monk || Class==Job_Champion || Class==Job_Sura || Class==Job_Sura_T) bonus2 bAddClass,Class_All,(getrefine()/2);if(BaseClass==Job_Mage || BaseClass==Job_Acolyte || Class==Job_Ninja || Class==Job_Soul_Linker) bonus bMatkRate,(getrefine()/2);if(BaseClass==Job_Archer || Class==Job_Gunslinger) bonus bBaseAtk,getrefine();',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18573,'White_Feather','White Feather',4,20,NULL,500,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,741,'if(getrefine()<5){bonus bHit,20;bonus bMaxHPrate,-10;}else if(getrefine()<7){bonus bHit,10;}else if(getrefine()<9){bonus bHit,7;bonus bMaxHPrate,3;}else{bonus bHit,4;bonus bMaxHPrate,4;}',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18574,'Lord_of_Death','Lord of Death',4,20,NULL,1000,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'70',1,742,'bonus bMdef,5; bonus2 bAddClass,Class_Normal,(10+((getrefine()>4)?getrefine()-4:0)); bonus2 bSubClass,Class_Normal,-5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18575,'Wunderkammer','Wunderkammer',4,20,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,769,NULL,'20',0,743,'bonus bMdef,10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18576,'YinYang_Earring','YinYang Earring',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,744,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18576,'YinYang_Earring','YinYang Earring',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,744,'bonus2 bSkillAtk,"MO_CHAINCOMBO",10; bonus2 bSkillAtk,"MO_TRIPLEATTACK",5; bonus2 bSkillAtk,"MO_COMBOFINISH",5; bonus2 bSkillUseSP,"MO_CHAINCOMBO",1; bonus2 bSkillUseSP,"MO_COMBOFINISH",1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18577,'24_Bolt','24 Bolt',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'10',0,696,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18578,'Helm_Of_Valor','Helm Of Valor',4,0,NULL,0,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,258,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18579,'9th_Anni_Hat','9th Anni Hat',4,0,NULL,90,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,745,'bonus bMdef,9;',NULL,NULL);
@@ -8760,7 +8777,11 @@ REPLACE INTO `item_db_re` VALUES (18873,'Sweet_Valentine_Out','Sweet Valentine O
 REPLACE INTO `item_db_re` VALUES (18879,'Angry_Scorpion_Hat','Angry Scorpion Hat',4,10,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,995,'bonus bMdef,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18885,'Jejecap','Jejecap',4,0,NULL,100,NULL,8,NULL,0,0xFFFFFFFF,63,2,256,NULL,'70',1,1011,'bonus bStr,2; bonus bInt,3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18887,'Aqua_Bunny_Band','Aqua Bunny Band',4,0,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,1012,'bonus bVit,3; bonus bMdef,5;',NULL,NULL);
+#
 REPLACE INTO `item_db_re` VALUES (18936,'Golden_Fish_In_Mouth','Golden Fish In Mouth',4,10,NULL,10,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,1081,'bonus bAllStats,2; bonus bBaseAtk,10; bonus bMatk,10; bonus2 bExpAddRace,RC_Fish,2; bonus2 bSubRace,RC_Fish,2;',NULL,NULL);
+#
+REPLACE INTO `item_db_re` VALUES (18987,'RWC13_Jormungandr_Hat','RWC13 Jormungandr Hat',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1149,'bonus bVariableCastrate,-5; bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; if(getrefine()>6){ bonus2 bAddItemHealRate,11596,20; bonus bAspd,1; } if(getrefine()>9){ bonus bVariableCastrate,-5; bonus bDelayrate,-5; } bonus2 bAddItemHealRate,11596,150;','sc_end SC_SpeedUp0;',NULL);
+#
 # Costume System
 REPLACE INTO `item_db_re` VALUES (19500,'T_Mr_Smile','T Mr Smile',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'0',0,65,'bonus bStr,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19501,'T_Spinx_Helm','T Spinx Helm',4,0,NULL,0,NULL,0,NULL,1,0xFFFFFFFF,63,2,5120,NULL,'0',0,137,NULL,NULL,NULL);
@@ -8818,31 +8839,61 @@ REPLACE INTO `item_db_re` VALUES (19552,'C_Centimental_Flower','Costume Centimen
 REPLACE INTO `item_db_re` VALUES (19553,'C_Assassin_Mask_','Costume Assassin Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'100',0,180,'bonus bUnbreakableHelm,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19573,'C_Heart_Wing_Hairband','Costume Heart Wing Hairband',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,733,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19574,'C_Lord_of_Death','Costume Lord of Death',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'0',1,742,'bonus bUnbreakableHelm,0;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19576,'C_Tare_Pope','Costume Tare Pope',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,817,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19585,'C_Feather_Beret','Costume Feather Beret',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,224,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19587,'C_King_Poring_Hat','Costume King Poring Hat',4,0,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,905,'bonus bUnbreakableHelm,0;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19589,'C_Fallen_Angel_Lost_J','C Fallen Angel Lost J',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,907,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19588,'C_Cat_Hat_J','Costume Cat Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,182,'bonus bAllStats,3; bonus2 bExpAddClass,Class_All,30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19589,'C_Fallen_Angel_Lost_J','Costume Fallen Angel Lost',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,907,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19590,'C_Twin_Maiden_Ribbon_J','Maiden\'s Twin Ribbon',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,239,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19603,'C_Invisible_Sunglasses','Costume Invisible Sunglasses',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,0,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19607,'C_Love_Chick_Hat','Costume Love Chick Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,500,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19617,'C_Puppy_Headband','Costume Puppy Headband',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,199,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19590,'C_Maiden\'s_Twin_Ribbon','Maiden\'s Twin Ribbon',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,239,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19618,'C_Kitsune_Mask','Costume Kitsune Mask',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,153,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19619,'C_Corsair','Costume Corsair',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,'0',0,105,'bonus bVit,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19620,'C_Dectective_Hat','Costume Detective Hat',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,189,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19621,'C_Evil_Wing_Ears','Costume Evil Wing Ear',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,152,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19621,'C_Ear_Of_Devils_Wing','Costume Evil Wing Ear',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,152,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19622,'C_Crescent_Hairpin','Costume Crescent Hairpin',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,132,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19623,'C_Bijofnil_Wings','Costume Bijofnil Wings',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,477,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19624,'C_Blank_Eyes','Costume Blank Eyes',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,185,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19624,'C_Round_Eyes','Costume Blank Eyes',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,185,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19625,'C_Bunny_Band','Costume Bunny Band',4,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,NULL,NULL,15,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19629,'C_Tiara','Costume Tiara',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,19,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19643,'C_Whikebain_Ears','Costume Wickebine Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,368,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19649,'C_White_Baby_Cat_Ears','Costume White Baby Cat Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,926,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19650,'C_Rainbow_Feather_Deco','Costume Rainbow Feather Deco',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,934,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19655,'C_Tiraya_Bonnet','C Tiraya Bonnet',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,398,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19655,'C_Tiraya_Bonnet','Costume Tiraya Bonnet',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,398,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19656,'C_Wandering_Minstrel_Hat','Wandering Minstrel Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,240,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19661,'C_Sweet_Bonnet','Costume Sweet Bonnet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,938,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19662,'C_Magician_Hat','Costume Magician Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,130,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19666,'C_Cookie_Hat','Costume Cookie Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,217,'bonus2 bAddItemHealRate,513,1100;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19676,'C_Rainbow_Poring_Hat','Costume Rainbow Poring Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,900,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19678,'C_Bell_Ribbon','Costume Bell Ribbon',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,388,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19685,'C_ShineSantaPoring','Costume Shining Santa Poring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,961,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19707,'C_Polar_Bear_Cap','Costume Polar Bear Cap',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,966,'bonus bUnbreakableHelm,0;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19716,'C_Alice_Doll','Costume Alice Doll',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,208,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19730,'C_Snake_Hat','C Snake Hat',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,986,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19733,'C_Panda_Cap','Costume Panda Cap',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,115,'bonus bAllStats,1; bonus2 bExpAddClass,Class_All,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19746,'C_Executioner_Hood','Executioner Hood',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'0',0,326,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19767,'C_Home_Cherry_Blossom','Costume Home Cherry Blossom',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,602,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19768,'C_Sakura_Coronet','Costume Sakura Coronet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,645,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19772,'C_Honeybee_Hat','Costume Honeybee Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,709,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19775,'C_Dokebi_Hat','C Dokebi Hat',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,307,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19777,'C_Shiny_Small_Star','Shiny Small Star',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1005,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19778,'C_King_Berry','Costume King Berry',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,968,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19779,'C_Persika','Costume Persika',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,659,'bonus bAllStats,1; bonus2 bExpAddClass,Class_All,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19780,'C_Knit_Rabbit_Ears','Costume Knit Rabbit Ears',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,867,'bonus bMaxHPrate,3; bonus bMaxSPrate,3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19821,'C_Hyegun_hat','C Yao Jun',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,375,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19826,'C_Ice_Wing_Ear','C Ice Wing Ear',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,584,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19829,'C_Straw_Hat','C Straw Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,146,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19830,'C_Sunglasses','Costume Sunglasses',4,10,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,2048,NULL,'1',NULL,12,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19831,'C_Filir_Hat','Costume Filir Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,408,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19832,'C_Poring_Hat','Costume Poring Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,120,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19833,'C_Fillet','Costume Fillet',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,34,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19834,'C_Baseball_Cap','Costume Baseball Cap',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,216,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19835,'C_Lif_Doll_Hat','Costume Lif Doll Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,297,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19836,'C_L_Magestic_Goat','Costume Majestic Goat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,380,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19839,'C_Vanilmirth_Hat','Costume Vanilmirth Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,317,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19841,'C_Dragonhelm_Copper','Costume Dragon Helm Copper',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,454,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19842,'C_Puppy_Hat','Costume Puppy Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,234,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19843,'C_Cat_Hairband','Costume Kitty Band',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,2,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19844,'C_Turban','Costume Turban',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,7,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19845,'C_Hair_Protector','Costume Bao Bao',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,127,NULL,NULL,NULL);
@@ -8852,9 +8903,11 @@ REPLACE INTO `item_db_re` VALUES (19848,'C_Angeling_Hat','Costume Angeling Hat',
 REPLACE INTO `item_db_re` VALUES (19849,'C_Munak_Turban','Costume Munak Hat',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,51,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19850,'C_Bongun_Hat','Costume Bongun Hat',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,139,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19851,'C_Brown_Bear_Cap','Costume Teddybear Hat',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,143,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19852,'C_Galapago_Cap','Costume Galapago Cap',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,192,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19853,'C_Filir Wings','C Filir Wings',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,595,'bonus2 bExpAddClass,Class_All,5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19856,'Costume_Snow_Cone_Hat','Costume Snow Cone Hat',4,10,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1080,'bonus2 bAddEle,Ele_Fire,5; bonus2 bMagicAddEle,Ele_Fire,5; bonus2 bAddMonsterDropItem,11589,5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19857,'Costume_Crayfish_Hat','Costume Crayfish Hat',4,10,NULL,10,NULL,0,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,'1',0,728,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19854,'C_Ear_Of_Black_Cat_','Costume Black Cat Ears',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,141,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19856,'C_Iceflake_Hat','Costume Snow Cone Hat',4,10,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1080,'bonus2 bAddEle,Ele_Fire,5; bonus2 bMagicAddEle,Ele_Fire,5; bonus2 bAddMonsterDropItem,11589,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19857,'C_King_Prawn_Hat','Costume Crayfish Hat',4,10,NULL,10,NULL,0,NULL,NULL,0xFFFFFFFF,63,2,1024,NULL,'1',0,728,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19859,'C_Flying_Angel','Flying Angel',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,264,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19860,'C_School_Criatura_Hat','School Criatura Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,872,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19861,'C_Heart_Hairpin','Heart Hairpin',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,126,NULL,NULL,NULL);
@@ -8868,13 +8921,14 @@ REPLACE INTO `item_db_re` VALUES (19886,'C_Purple_Glasses','Costume Purple Glass
 REPLACE INTO `item_db_re` VALUES (19887,'C_Cyclops_Glasses','Costume Cyclops Glasses',4,10,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,2048,NULL,'1',NULL,23,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19888,'C_Glasses','Costume Glasses',4,10,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,2048,NULL,'1',NULL,3,NULL,NULL,NULL);
 #
-REPLACE INTO `item_db_re` VALUES (19903,'Costume_Witch\'s_Hat','Costume Witch\'s Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,717,'bonus bVariableCastrate,-10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19917,'Costume_Pumpkin_Hat','Costume Pumpkin Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,691,'bonus bSpeedRate,10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19918,'Costume_Lude_Mask','Costume Lude Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,802,'bonus bAddItemHealRate,20;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19919,'Costume_Quve_Mask','Costume Quve Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,472,'bonus bAspdRate,10;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (19920,'Costume_Evolved_Whisper_Mask','Costume Evolved Whisper Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,458,'bonus bFlee,20;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19903,'C_Witchs_Hat','Costume Witch\'s Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,717,'bonus bVariableCastrate,-10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19917,'C_Gloomy_Pumpkin_Hat','Costume Pumpkin Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,691,'bonus bSpeedRate,25;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19918,'C_Lude_Mask','Costume Lude Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,802,'bonus bAddItemHealRate,20;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19919,'C_Cube_Mask_','Costume Quve Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,472,'bonus bAspdRate,10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19920,'C_Adv_Whisper_Mask','Costume Evolved Whisper Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,458,'bonus bFlee,20;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19922,'Costume_Noahs_Hat','Costume Noahs Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,458,'/* TODO */',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19938,'Costume_Love_Rabbit_Hood','Costume Love Rabbit Hood',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,549,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19976,'C_Cat_Santa_Hat','Cat Santa Hat',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1144,'bonus bAspdRate,10; bonus bSpeedRate,25;',NULL,NULL);
 #
 REPLACE INTO `item_db_re` VALUES (20500,'T_Archangel_Wing','Archangel Wing',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,1,'bonus bUnbreakableHelm,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (20600,'Fantastic_Aura','Fantastic Aura',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,16384,NULL,'1',0,0,'bonus bUnbreakableHelm,0;',NULL,NULL);
@@ -8900,9 +8954,9 @@ REPLACE INTO `item_db_re` VALUES (22015,'Impr_Angel\'s_Arrival','Advanced Angel\
 REPLACE INTO `item_db_re` VALUES (22043,'AGI_Complement','AGI Complement',4,10,NULL,350,NULL,25,NULL,NULL,0x00000400,56,2,64,NULL,'100',1,NULL,'bonus bAspdRate,5+(getrefine()/4);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22044,'Reinforced_Parts_Booster','Reinforced Parts - Booster',4,10,NULL,1000,NULL,23,NULL,NULL,0x00000400,56,2,64,NULL,'100',1,NULL,'bonus2 bSkillUseSP,"NC_HOVERING",15; if(getrefine()>=7){bonus2 bSkillUseSP,"NC_HOVERING",-20;}',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22045,'Beach_Sandals','Summer Sandals',4,10,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,64,NULL,'0',1,0,'bonus bFlee,5; bonus3 bAutoSpellWhenHit,"AL_INCAGI",10,300;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22514,'Candy_Holder','Candy Holder',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22514,'Candy_Holder','Candy Holder',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Candy_Holder,1); getrandgroupitem(IG_Candy_Holder,1); getrandgroupitem(IG_Candy_Holder,1);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22540,'Runstone_Luxanima','Lux Anima Runestone',11,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,56,2,NULL,NULL,NULL,NULL,NULL,'itemskill "RK_LUXANIMA",1;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22558,'Lucky_Bag','Lucky Bag',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22558,'Lucky_Bag','Lucky Bag',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Lucky_Bag,1);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22559,'Mock_Strawberry','Mock Strawberry',11,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 50,50; itemskill "SM_ENDURE",3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22563,'Lucky_Bag_Of_New_Era','Lucky Bag Of New Era',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/* TODO */',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22566,'Last_Years_Frost','Last Year\'s Frost',3,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -8918,7 +8972,7 @@ REPLACE INTO `item_db_re` VALUES (22619,'Ghost_Summon_Scroll','Ghost Scroll',2,0
 REPLACE INTO `item_db_re` VALUES (22620,'Memorial_Box','Box Of Memories',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/* TODO */',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22621,'Squid_Bbq','Barbecued Squid',2,5000,NULL,250,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_EXIT; /* SetBuff "EFST_JP_EVENT04" 300000 1 */ percentheal 5,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22624,'Riesen_Bretzel','Riesen Bretzel',0,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 100,0;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22625,'Oktoberfest_Bag','Oktoberfest Bag',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/* sc_start SC_OKTOBERFEST,600000,0; */',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22625,'Oktoberfest_Bag','Oktoberfest Bag',2,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_OKTOBERFEST,600000,0;',NULL,NULL);
 #
 REPLACE INTO `item_db_re` VALUES (22648,'Angeling_Package','Angel Ring Package',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/* TODO */',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22649,'Deviling_Package','Devil Ring Package',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/* TODO */',NULL,NULL);
@@ -8928,13 +8982,12 @@ REPLACE INTO `item_db_re` VALUES (22654,'Golden_Seal_Card','Golden Seal Card',3,
 REPLACE INTO `item_db_re` VALUES (22657,'Honey_Songpyun','Honey_Songpyun',0,20,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 20,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22659,'Pig_Steamed_Ribs','Pig_Steamed_Ribs',0,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'bonus_script "{ bonus bAspdRate,5; bonus bUseSPrate,-2; }",180;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22658,'Cow_Steamed_Ribs','Cow_Steamed_Ribs',0,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'bonus_script "{ bonus bVariableCastrate,5; bonus bUseSPrate,-3; }",180;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22669,'HALLOWEEN_G_BOX','Halloween Box',2,0,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/* TODO */',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22669,'HALLOWEEN_G_BOX','Halloween Box',2,0,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_HALLOWEEN_G_BOX);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22670,'DARK_INVITATION','Invitation of Darkness',2,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'set .@r,rand(1,3); if(.@r==1){ specialeffect2 EF_DEVIL; warp "niflheim",193,186; }else if(.@r==2){ heal -500,-1000; sc_start SC_Stun,3000,0; }else{ specialeffect2 EF_DEVIL; warp "niflheim",347,255; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22676,'Hangul_Day_Event_Box','Hangul Day Event Box',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'0',NULL,NULL,'getitem 22675,10; getitem 607,9;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22675,'Mysterious_Scroll','Mysterious Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INTFOOD,3600000,30;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22669,'Halloween_Witchs_Box','Halloween_Box',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'0',NULL,NULL,'/* TODO */',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22685,'Solo_Christmas_Gift','Solo Christmas Gift',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'0',NULL,NULL,'/* TODO */',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22686,'Solo_Cookie','Solo Cookie',0,0,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'0',NULL,NULL,'percentheal 5,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22685,'Solo_Christmas_Gift','Single Union Christmas Gift',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'0',NULL,NULL,'getgroupitem(IG_Solo_Christmas_Gift);',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22686,'Solo_Cookie','Single Cookie',0,0,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'0',NULL,NULL,'percentheal 5,5;',NULL,NULL);
 
 # Shadow Equip
 REPLACE INTO `item_db_re` VALUES (24018,'Shadow_Physical_Earring','Shadow Physical Earring',12,10,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3145728,NULL,'1',1,0,'bonus bAspdRate,(getrefine()>=7)?2:1;',NULL,NULL);
@@ -9020,6 +9073,5 @@ REPLACE INTO `item_db_re` VALUES (28204,'Half_BF_Shotgun1','Half BF Shotgun1',5,
 #REPLACE INTO `item_db_re` VALUES (unknown,'Br_MerPackage','Br_MerPackage',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Br_MerPackage);',NULL,NULL);
 #REPLACE INTO `item_db_re` VALUES (unknown,'Br_ThiefPackage','Br_ThiefPackage',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Br_ThiefPackage);',NULL,NULL);
 #REPLACE INTO `item_db_re` VALUES (unknown,'Sakura_Scroll','Sakura_Scroll',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Sakura_Scroll);',NULL,NULL);
-#REPLACE INTO `item_db_re` VALUES (unknown,'Ptotection_Seagod_Box','The Sea God\'s Call 1 Day Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Ptotection_Seagod_Box);*/ rentitem 6436,86400;',NULL,NULL);
 #REPLACE INTO `item_db_re` VALUES (unknown,'Blue_Scroll','Blue_Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Blue_Scroll);',NULL,NULL);
 

+ 22 - 0
sql-files/main.sql

@@ -733,3 +733,25 @@ CREATE TABLE IF NOT EXISTS `vendings` (
   `autotrade` tinyint(4) NOT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `buyingstore_items` (
+  `buyingstore_id` int(10) unsigned NOT NULL,
+  `index` smallint(5) unsigned NOT NULL,
+  `item_id` int(10) unsigned NOT NULL,
+  `amount` smallint(5) unsigned NOT NULL,
+  `price` int(10) unsigned NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `buyingstores` (
+  `id` int(10) unsigned NOT NULL,
+  `account_id` int(11) unsigned NOT NULL,
+  `char_id` int(10) unsigned NOT NULL,
+  `sex` enum('F','M') NOT NULL DEFAULT 'M',
+  `map` varchar(20) NOT NULL,
+  `x` smallint(5) unsigned NOT NULL,
+  `y` smallint(5) unsigned NOT NULL,
+  `title` varchar(80) NOT NULL,
+  `limit` int(10) unsigned NOT NULL,
+  `autotrade` tinyint(4) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;

+ 4 - 4
sql-files/mob_db_re.sql

@@ -1541,7 +1541,7 @@ REPLACE INTO `mob_db_re` VALUES (2331,'MA_SEAW','Seaweed','Seaweed',100,10,1,0,0
 REPLACE INTO `mob_db_re` VALUES (2332,'BUWAYA_GHOST','Fake Buwaya','Fake Buwaya',138,30000,1,0,0,1,1280,2532,481,78,201,248,174,112,371,57,10,12,0,3,81,0x37B5,100,1424,576,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2333,'BUWAYA_WEAK','Buwaya\'s Weakness','Buwaya\'s Weakness',138,20,1,0,0,1,0,1,100,78,0,0,0,0,0,0,10,12,0,3,81,0x60,2000,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2334,'G_WAKWAK','Wakwak','Wakwak',145,194830,1,0,0,1,1544,4715,24,104,101,154,104,184,151,71,10,12,0,6,47,0x83,100,424,576,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2335,'MA_TREASURE','Treasure Chest','Treasure Chest',140,5,0,0,0,1,0,0,100,0,0,0,0,0,1199,0,10,12,0,0,26,0x120,0,0,0,0,0,0,0,0,0,0,0,6516,2000,6524,50,6499,2000,15051,1000,2169,100,969,2000,6499,10000,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2335,'MA_TREASURE','Treasure Chest','Treasure Chest',140,5,0,0,0,1,0,0,100,0,0,0,0,0,1199,0,10,12,0,0,26,0x120,0,0,0,0,0,0,0,0,0,0,0,6516,2000,6523,50,6499,2000,15051,1000,2169,100,969,2000,6499,10000,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2336,'DOMOVOI','Domovoi','Domovoi',38,898,1,135,152,1,63,74,40,0,20,11,34,20,19,10,10,12,0,2,22,0x83,200,800,1200,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2337,'HIDDEN_MOB','Hidden Mob','Hidden Mob',151,10000,200,0,0,7,0,1000,200,10,200,200,200,200,200,200,12,12,0,4,88,0x1C4,2000,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2338,'MD_MANANANGGAL','Bangungot Manananggal','Bangungot Manananggal',107,204511,1,0,0,1,801,904,64,31,75,85,45,71,75,46,10,12,1,6,47,0x3795,100,280,720,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
@@ -1594,8 +1594,8 @@ REPLACE INTO `mob_db_re` VALUES (2375,'MOROCC_4_142','Incarnation of Morroc','In
 REPLACE INTO `mob_db_re` VALUES (2376,'MOROCC_2_142','Incarnation of Morroc','Incarnation of Morroc',100,2000,1,0,0,1,381,464,81,5,121,86,71,65,113,44,10,12,1,6,67,0x83,150,576,648,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2377,'E_NOVUS_','Novus','Novus',1,12,1,0,0,1,50,100,1,1,1,10,1,10,30,5,10,12,0,9,20,0x83,100,252,816,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2378,'MER_ANTLER_SCARABA','Antler Scaraba','Antler Scaraba',136,30000,1,0,0,1,1418,1828,155,102,23,99,59,129,137,45,10,12,1,4,42,0x37B5,200,504,624,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2379,'XMAS_SMOKEY_SOCK','Smokey Sock','Smokey Sock',10,10,1,0,0,1,70,81,1,0,1,1,16,5,100,100,10,12,0,2,22,0x181,200,1576,576,420,0,0,0,0,0,0,0,6535,3000,6535,3000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2380,'XMAS_SMOKEY_GIFT','Smokey Gift','Smokey Gift',10,10,1,0,0,1,70,81,1,0,1,1,16,5,100,100,10,12,0,2,22,0x181,200,1576,576,420,0,0,0,0,0,0,0,7909,3000,7910,3000,7909,3000,7910,3000,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2379,'XMAS_SMOKEY_SOCK','Smokey Sock','Smokey Sock',10,10,1,0,0,1,70,81,1,0,1,1,16,5,100,100,10,12,0,2,22,0x1C1,200,1576,576,420,0,0,0,0,0,0,0,7909,3000,7910,3000,6682,3000,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2380,'XMAS_SMOKEY_GIFT','Smokey Gift','Smokey Gift',10,10,1,0,0,1,70,81,1,0,1,1,16,5,100,100,10,12,0,2,22,0x1C1,200,1576,576,420,0,0,0,0,0,0,0,7909,3000,7910,3000,6682,3000,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 
 # Monsters Waiting To Be Coded In
 #2381,E_VADON_X_S
@@ -1615,7 +1615,7 @@ REPLACE INTO `mob_db_re` VALUES (2380,'XMAS_SMOKEY_GIFT','Smokey Gift','Smokey G
 #2395,SEIREN
 #2396,POSEIDON
 #2397,KRAKEN_BABY
-#2398,LITTLE_PORING
+REPLACE INTO `mob_db_re` VALUES (2398,'LITTLE_PORING','Little Poring','Little Poring',1,40,1,18,10,1,8,9,2,5,6,1,1,0,6,5,10,12,0,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,909,9000,1202,100,938,1000,512,5000,507,1000,512,500,507,1000,0,0,0,0,4545,1);
 #2399,E_MINI_DEMON
 #2400,E_DIABOLIC
 REPLACE INTO `mob_db_re` VALUES (2401,'G_PORING','Poring','Poring',1,60,1,0,0,1,8,9,2,5,6,1,1,0,6,5,10,12,1,3,21,0x83,400,1872,480,672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

+ 21 - 0
sql-files/upgrades/upgrade_20140205.sql

@@ -0,0 +1,21 @@
+CREATE TABLE IF NOT EXISTS `buyingstore_items` (
+  `buyingstore_id` int(10) unsigned NOT NULL,
+  `index` smallint(5) unsigned NOT NULL,
+  `item_id` int(10) unsigned NOT NULL,
+  `amount` smallint(5) unsigned NOT NULL,
+  `price` int(10) unsigned NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `buyingstores` (
+  `id` int(10) unsigned NOT NULL,
+  `account_id` int(11) unsigned NOT NULL,
+  `char_id` int(10) unsigned NOT NULL,
+  `sex` enum('F','M') NOT NULL DEFAULT 'M',
+  `map` varchar(20) NOT NULL,
+  `x` smallint(5) unsigned NOT NULL,
+  `y` smallint(5) unsigned NOT NULL,
+  `title` varchar(80) NOT NULL,
+  `limit` int(10) unsigned NOT NULL,
+  `autotrade` tinyint(4) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;

+ 12 - 12
src/char/char.c

@@ -1922,7 +1922,7 @@ int mmo_char_tobuf(uint8* buffer, struct mmo_charstatus* p)
 	offset += MAP_NAME_LENGTH_EXT;
 #endif
 #if PACKETVER >= 20100803
-#if PACKETVER > 201300000
+#if PACKETVER > 20130000
 	WBUFL(buf,124) = (p->delete_date?TOL(p->delete_date-time(NULL)):0);
 #else
 	WBUFL(buf,124) = TOL(p->delete_date);
@@ -4009,20 +4009,20 @@ void char_delete2_ack(int fd, int char_id, uint32 result, time_t delete_date)
 /// Any (0x718): An unknown error has occurred.
 void char_delete2_accept_ack(int fd, int char_id, uint32 result)
 {// HC: <082a>.W <char id>.L <Msg:0-5>.L
-	 if(result == 1)
-	{
+	if(result == 1 ){
 		struct char_session_data* sd;
 		sd = (struct char_session_data*)session[fd]->session_data;
-		mmo_char_send(fd, sd);
-	}
-	else
-	{
-		WFIFOHEAD(fd,10);
-		WFIFOW(fd,0) = 0x82a;
-		WFIFOL(fd,2) = char_id;
-		WFIFOL(fd,6) = result;
-		WFIFOSET(fd,10);
+
+		if( sd->version >= date2version(20130000) ){
+			mmo_char_send(fd, sd);
+		}
 	}
+	
+	WFIFOHEAD(fd,10);
+	WFIFOW(fd,0) = 0x82a;
+	WFIFOL(fd,2) = char_id;
+	WFIFOL(fd,6) = result;
+	WFIFOSET(fd,10);
 }
 
 

+ 2 - 0
src/config/const.h

@@ -37,6 +37,8 @@
 	#define DBPATH "pre-re/"
 #endif
 
+#define DBIMPORT "import"
+
 /**
  * DefType
  **/

+ 30 - 18
src/login/login.c

@@ -506,7 +506,7 @@ int chrif_sendvipdata(int fd, struct mmo_account acc, char isvip, int mapfd) {
 	WFIFOHEAD(fd,19);
 	WFIFOW(fd,0) = 0x2743;
 	WFIFOL(fd,2) = acc.account_id;
-	WFIFOL(fd,6) = acc.vip_time;
+	WFIFOL(fd,6) = (int)acc.vip_time;
 	WFIFOB(fd,10) = isvip;
 	WFIFOL(fd,11) = acc.group_id; //new group id
 	WFIFOL(fd,15) = mapfd; //link to mapserv
@@ -1208,27 +1208,29 @@ int mmo_auth(struct login_session_data* sd, bool isServer) {
 	}
 
 	if( login_config.client_hash_check && !isServer ) {
-		struct client_hash_node *node = login_config.client_hash_nodes;
+		struct client_hash_node *node = NULL;
 		bool match = false;
 
-		if( !sd->has_client_hash ) {
-			ShowNotice("Client doesn't sent client hash (account: %s, pass: %s, ip: %s)\n", sd->userid, sd->passwd, acc.state, ip);
-			return 5;
-		}
-
-		while( node ) {
-			if( node->group_id <= acc.group_id && memcmp(node->hash, sd->client_hash, 16) == 0 ) {
+		for( node = login_config.client_hash_nodes; node; node = node->next ) {
+			if( acc.group_id < node->group_id )
+				continue;
+			if( *node->hash == '\0' // Allowed to login without hash
+			 || (sd->has_client_hash && memcmp(node->hash, sd->client_hash, 16) == 0 ) // Correct hash
+			) {
 				match = true;
 				break;
 			}
-
-			node = node->next;
 		}
 
 		if( !match ) {
 			char smd5[33];
 			int i;
 
+			if( !sd->has_client_hash ) {
+				ShowNotice("Client didn't send client hash (account: %s, pass: %s, ip: %s)\n", sd->userid, sd->passwd, acc.state, ip);
+				return 5;
+			}
+
 			for( i = 0; i < 16; i++ )
 				sprintf(&smd5[i * 2], "%02x", sd->client_hash[i]);
 
@@ -1832,20 +1834,30 @@ int login_config_read(const char* cfgName)
 		else if(!strcmpi(w1, "client_hash")) {
 			int group = 0;
 			char md5[33];
+
 			if (sscanf(w2, "%3d, %32s", &group, md5) == 2) {
 				struct client_hash_node *nnode;
 				int i;
 				CREATE(nnode, struct client_hash_node, 1);
-				for (i = 0; i < 32; i += 2) {
-					char buf[3];
-					unsigned int byte;
-					memcpy(buf, &md5[i], 2);
-					buf[2] = 0;
-					sscanf(buf, "%2x", &byte);
-					nnode->hash[i / 2] = (uint8)(byte & 0xFF);
+
+				if (strcmpi(md5, "disabled") == 0) {
+					nnode->hash[0] = '\0';
+				} else {
+					for (i = 0; i < 32; i += 2) {
+						char buf[3];
+						unsigned int byte;
+
+						memcpy(buf, &md5[i], 2);
+						buf[2] = 0;
+
+						sscanf(buf, "%2x", &byte);
+						nnode->hash[i / 2] = (uint8)(byte & 0xFF);
+					}
 				}
+
 				nnode->group_id = group;
 				nnode->next = login_config.client_hash_nodes;
+
 				login_config.client_hash_nodes = nnode;
 			}
 		} else if(strcmpi(w1, "chars_per_account") == 0) { //maxchars per account [Sirius]

+ 38 - 13
src/map/atcommand.c

@@ -4083,7 +4083,7 @@ ACMD_FUNC(mount_peco)
 		}
 		return 0;
 	}
-	if( (sd->class_&MAPID_THIRDMASK) == MAPID_RANGER && pc_checkskill(sd,RA_WUGRIDER) > 0 ) {
+	if( (sd->class_&MAPID_THIRDMASK) == MAPID_RANGER && pc_checkskill(sd,RA_WUGRIDER) > 0 && (!pc_isfalcon(sd) || battle_config.warg_can_falcon) ) {
 		if( !pc_isridingwug(sd) ) {
 			clif_displaymessage(sd->fd,msg_txt(sd,1121)); // You have mounted your Warg.
 			pc_setoption(sd, sd->sc.option|OPTION_WUGRIDER);
@@ -5654,10 +5654,14 @@ ACMD_FUNC(autotrade) {
 
 	sd->state.autotrade = 1;
 
-	if( battle_config.feature_autotrade && 
-		sd->state.vending && 
-		Sql_Query( mmysql_handle, "UPDATE `%s` SET `autotrade` = 1 WHERE `id` = %d;", "vendings", sd->vender_id ) != SQL_SUCCESS ){
-		Sql_ShowDebug( mmysql_handle );
+	if( sd->state.vending ){
+		if( Sql_Query( mmysql_handle, "UPDATE `%s` SET `autotrade` = 1 WHERE `id` = %d;", vendings_db, sd->vender_id ) != SQL_SUCCESS ){
+			Sql_ShowDebug( mmysql_handle );
+		}
+	}else if( sd->state.buyingstore ){
+		if( Sql_Query( mmysql_handle, "UPDATE `%s` SET `autotrade` = 1 WHERE `id` = %d;", buyingstore_db, sd->buyer_id ) != SQL_SUCCESS ){
+			Sql_ShowDebug( mmysql_handle );
+		}
 	}
 
 	if( battle_config.at_timeout ) {
@@ -7371,7 +7375,7 @@ ACMD_FUNC(iteminfo)
 		item_data = item_array[i];
 		sprintf(atcmd_output, msg_txt(sd,1277), // Item: '%s'/'%s'[%d] (%d) Type: %s | Extra Effect: %s
 			item_data->name,item_data->jname,item_data->slot,item_data->nameid,
-			itemdb_typename(item_data->type),
+			(item_data->type != IT_AMMO) ? itemdb_typename(item_data->type) : itemdb_typename_ammo(item_data->look),
 			(item_data->script==NULL)? msg_txt(sd,1278) : msg_txt(sd,1279) // None / With script
 		);
 		clif_displaymessage(fd, atcmd_output);
@@ -8066,6 +8070,8 @@ ACMD_FUNC(cash)
 			}
 			else clif_displaymessage(fd, msg_txt(sd,149)); // Unable to decrease the number/value.
 		} else {
+			if (-value > sd->cashPoints) //By command, if cash < value, force it to remove all
+				value = -sd->cashPoints;
 			if( (ret=pc_paycash(sd, -value, 0, LOG_TYPE_COMMAND)) >= 0){
 				// If this option is set, the message is already sent by pc function
 				if( !battle_config.cashshop_show_points ){
@@ -8706,21 +8712,20 @@ ACMD_FUNC(commands)
 /*==========================================
  * @charcommands Lists available # commands to you
  *------------------------------------------*/
-ACMD_FUNC(charcommands)
-{
+ACMD_FUNC(charcommands) {
 	atcommand_commands_sub(sd, fd, COMMAND_CHARCOMMAND);
 	return 0;
 }
 /* for new mounts */
 ACMD_FUNC(mount2) {
-
 	clif_displaymessage(sd->fd,msg_txt(sd,1362)); // NOTICE: If you crash with mount your LUA is outdated.
-	if( !(sd->sc.option&OPTION_MOUNTING) ) {
+	if (!&sd->sc || !(sd->sc.data[SC_ALL_RIDING])) {
 		clif_displaymessage(sd->fd,msg_txt(sd,1363)); // You have mounted.
-		pc_setoption(sd, sd->sc.option|OPTION_MOUNTING);
+		sc_start(NULL, &sd->bl, SC_ALL_RIDING, 10000, 1, INVALID_TIMER);
 	} else {
 		clif_displaymessage(sd->fd,msg_txt(sd,1364)); // You have released your mount.
-		pc_setoption(sd, sd->sc.option&~OPTION_MOUNTING);
+		if (&sd->sc)
+			status_change_end(&sd->bl, SC_ALL_RIDING, INVALID_TIMER);
 	}
 	return 0;
 }
@@ -9231,7 +9236,7 @@ ACMD_FUNC(vip) {
 		int year,month,day,hour,minute,second;
 		char timestr[21];
 		
-		split_time(pl_sd->vip.time-now,&year,&month,&day,&hour,&minute,&second);
+		split_time((int)(pl_sd->vip.time-now),&year,&month,&day,&hour,&minute,&second);
 		sprintf(atcmd_output,msg_txt(pl_sd,705),year,month,day,hour,minute); // Your VIP status is valid for %d years, %d months, %d days, %d hours and %d minutes.
 		clif_displaymessage(pl_sd->fd,atcmd_output);
 		timestamp2string(timestr,20,pl_sd->vip.time,"%Y-%m-%d %H:%M");
@@ -9248,6 +9253,21 @@ ACMD_FUNC(vip) {
 	chrif_req_login_operation(pl_sd->status.account_id, pl_sd->status.name, 6, vipdifftime, 7, 0); 
 	return 0;
 }
+
+/** Enable/disable rate info */
+ACMD_FUNC(showrate) {
+	nullpo_retr(-1,sd);
+	if (!sd->disableshowrate) {
+		sprintf(atcmd_output,msg_txt(sd,718)); //Personal rate information is not displayed now.
+		sd->disableshowrate = 1;
+	}
+	else {
+		sprintf(atcmd_output,msg_txt(sd,719)); //Personal rate information will be shown.
+		sd->disableshowrate = 0;
+	}
+	clif_displaymessage(fd,atcmd_output);
+	return 0;
+}
 #endif
 
 ACMD_FUNC(fullstrip) {
@@ -9557,6 +9577,7 @@ void atcommand_basecommands(void) {
 		ACMD_DEF(langtype),
 #ifdef VIP_ENABLE
 		ACMD_DEF(vip),
+		ACMD_DEF(showrate),
 #endif
 		ACMD_DEF(fullstrip),
 	};
@@ -9699,6 +9720,10 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
 	if ( !message || !*message )
 		return false;
 
+	//If cannot use atcomamnd while talking with NPC [Kichi]
+	if (sd->npc_id && sd->state.disable_atcommand_on_npc)
+		return false;
+
 	//Block NOCHAT but do not display it as a normal message
 	if ( sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOCOMMAND )
 		return true;

+ 58 - 32
src/map/battle.c

@@ -1039,6 +1039,13 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 				damage >>= 2; //75% reduction
 		}
 
+		if( sc->data[SC_SMOKEPOWDER] ) {
+			if( (flag&(BF_SHORT|BF_WEAPON)) == (BF_SHORT|BF_WEAPON) )
+				damage -= 15 * damage / 100; // 15% reduction to physical melee attacks
+			else if( (flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON) )
+				damage -= 50 * damage / 100; // 50% reduction to physical ranged attacks
+		}
+
 		// Compressed code, fixed by map.h [Epoque]
 		if (src->type == BL_MOB) {
 			int i;
@@ -2605,7 +2612,7 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list
 			}
 #else
 		case NJ_ISSEN:
-			wd.damage = 40*sstatus->str +skill_lv*(sstatus->hp/10 + 35);
+			wd.damage = 40 * sstatus->str + (8 / 100) * skill_lv * sstatus->hp;
 			wd.damage2 = 0;
 			break;
 		case LK_SPIRALPIERCE:
@@ -3137,6 +3144,11 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 			skillratio += 20*(skill_lv-1);
 #endif
 			break;
+#ifdef RENEWAL
+		case NJ_KUNAI:
+			skillratio *= 3; // 3x300% ATK
+			break;
+#endif
 		case NJ_HUUMA:
 			skillratio += 50 + 150*skill_lv;
 			break;
@@ -3458,20 +3470,21 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
 		case SR_TIGERCANNON:// ATK [((Caster consumed HP + SP) / 4) x Caster Base Level / 100] %
 			{
 				int hp = (int64)status_get_max_hp(src) * (10 + 2 * skill_lv) / 100,
-					sp = (int64)status_get_max_sp(src) * (6 + skill_lv) / 100;
+					sp = (int64)status_get_max_sp(src) * (5 + 1 * skill_lv) / 100;
 				skillratio = ((int64)hp+sp) / 4;
 				if( sc && sc->data[SC_COMBO] && sc->data[SC_COMBO]->val1 == SR_FALLENEMPIRE ) // ATK [((Caster consumed HP + SP) / 2) x Caster Base Level / 100] %
-					skillratio = (int64)hp+sp / 2;
+					skillratio = ((int64)hp+sp) / 2;
 				RE_LVL_DMOD(100);
 			}
 			break;
 		case SR_RAMPAGEBLASTER:
-			skillratio = 20 * skill_lv * (sd?sd->spiritball_old:5);
-			if( sc && sc->data[SC_EXPLOSIONSPIRITS] ){
-				skillratio += sc->data[SC_EXPLOSIONSPIRITS]->val1 * 20;
+			if( sc && sc->data[SC_EXPLOSIONSPIRITS] ) {
+				skillratio = (20 * ((sd) ? sd->spiritball_old : 5) + 20 * sc->data[SC_EXPLOSIONSPIRITS]->val1) * skill_lv;
 				RE_LVL_DMOD(120);
-			}else
+			} else {
+				skillratio = 20 * ((sd) ? sd->spiritball_old : 5) * skill_lv;
 				RE_LVL_DMOD(150);
+			}
 			break;
 		case SR_KNUCKLEARROW:
 			if( wd.miscflag&4 ){  // ATK [(Skill Level x 150) + (1000 x Target current weight / Maximum weight) + (Target Base Level x 5) x (Caster Base Level / 150)] %
@@ -4850,10 +4863,10 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 
 	if( skill_id == SO_PSYCHIC_WAVE ) {
 		if( sc && sc->count ) {
-			if( sc->data[SC_HEATER_OPTION] ) s_ele = sc->data[SC_HEATER_OPTION]->val4;
-			else if( sc->data[SC_COOLER_OPTION] ) s_ele = sc->data[SC_COOLER_OPTION]->val4;
+			if( sc->data[SC_HEATER_OPTION] ) s_ele = sc->data[SC_HEATER_OPTION]->val3;
+			else if( sc->data[SC_COOLER_OPTION] ) s_ele = sc->data[SC_COOLER_OPTION]->val3;
 			else if( sc->data[SC_BLAST_OPTION] ) s_ele = sc->data[SC_BLAST_OPTION]->val3;
-			else if( sc->data[SC_CURSED_SOIL_OPTION] ) s_ele = sc->data[SC_CURSED_SOIL_OPTION]->val4;
+			else if( sc->data[SC_CURSED_SOIL_OPTION] ) s_ele = sc->data[SC_CURSED_SOIL_OPTION]->val3;
 		}
 	}
 
@@ -5218,7 +5231,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 						skillratio = 60 * skill_lv;
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_HEATER_OPTION] )
-							skillratio += sc->data[SC_HEATER_OPTION]->val3;
+							skillratio += sd ? sd->status.job_level / 2 : 0;
 						break;
 					case SO_ELECTRICWALK:
 						skillratio = 60 * skill_lv;
@@ -5230,33 +5243,23 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 						skillratio = ( 200 * ((sd) ? pc_checkskill(sd, SA_SEISMICWEAPON) : skill_get_max(SA_SEISMICWEAPON)) + sstatus->int_ * skill_lv );
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
-							skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2;
+							skillratio += sd ? sd->status.job_level * 5 : 0;
 						break;
 					case SO_DIAMONDDUST:
 						skillratio = ( 200 * ((sd) ? pc_checkskill(sd, SA_FROSTWEAPON) : skill_get_max(SA_FROSTWEAPON)) + sstatus->int_ * skill_lv );
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_COOLER_OPTION] )
-							skillratio += sc->data[SC_COOLER_OPTION]->val3;
+							skillratio += sd ? sd->status.job_level * 5 : 0;
 						break;
 					case SO_POISON_BUSTER:
 						skillratio += 900 + 300 * skill_lv;
 						RE_LVL_DMOD(120);
 						if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
-							skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2;
+							skillratio += sd ? sd->status.job_level * 5 : 0;
 						break;
 					case SO_PSYCHIC_WAVE:
 						skillratio = skill_lv * 70 + (sstatus->int_ * 3);
 						RE_LVL_DMOD(100);
-						if( sc ){
-							if( sc->data[SC_HEATER_OPTION] )
-								skillratio += sc->data[SC_HEATER_OPTION]->val3;
-							else if(sc->data[SC_COOLER_OPTION] )
-								skillratio +=  sc->data[SC_COOLER_OPTION]->val3;
-							else if(sc->data[SC_BLAST_OPTION] )
-								skillratio += sc->data[SC_BLAST_OPTION]->val2;
-							else if(sc->data[SC_CURSED_SOIL_OPTION] )
-								skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val3;
-						}
 						break;
 					case SO_VARETYR_SPEAR: //MATK [{( Endow Tornado skill level x 50 ) + ( Caster INT x Varetyr Spear Skill level )} x Caster Base Level / 100 ] %
 						skillratio = status_get_int(src) * skill_lv + ((sd) ? pc_checkskill(sd, SA_LIGHTNINGLOADER) * 50 : skill_get_max(SA_LIGHTNINGLOADER));
@@ -5268,13 +5271,13 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 						skillratio = skill_lv * 40;
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
-							skillratio += sc->data[SC_CURSED_SOIL_OPTION]->val2;
+							skillratio += sd ? sd->status.job_level : 0;
 						break;
 					case GN_DEMONIC_FIRE:
 						if( skill_lv > 20)	// Fire expansion Lv.2
-							skillratio += 110 + 20 * (skill_lv - 20) + status_get_int(src) * 3;	// Need official INT bonus. [LimitLine]
+							skillratio += 110 + 20 * (skill_lv - 20) + status_get_int(src) * 10;
 						else if( skill_lv > 10 )	// Fire expansion Lv.1
-							skillratio += 110 + 20 * (skill_lv - 10) / 2;
+							skillratio += 110 + 20 * (skill_lv - 10) + status_get_int(src) + ((sd) ? sd->status.job_level : 50);
 						else
 							skillratio += 110 + 20 * skill_lv;
 						break;
@@ -5389,9 +5392,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 
 		if(ad.damage<1)
 			ad.damage=1;
-		else if(sc){//only applies when hit
-			// TODO: there is another factor that contribute with the damage and need to be formulated. [malufett]
-			switch(skill_id){
+		else if(sc) { //only applies when hit
+			switch(skill_id) {
 				case MG_LIGHTNINGBOLT:
 				case MG_THUNDERSTORM:
 				case MG_FIREBOLT:
@@ -5400,8 +5402,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 				case MG_FROSTDIVER:
 				case WZ_EARTHSPIKE:
 				case WZ_HEAVENDRIVE:
-					if(sc->data[SC_GUST_OPTION] || sc->data[SC_PETROLOGY_OPTION]
-						|| sc->data[SC_PYROTECHNIC_OPTION] || sc->data[SC_AQUAPLAY_OPTION])
+					if(sc->data[SC_GUST_OPTION] || sc->data[SC_PETROLOGY_OPTION] || sc->data[SC_PYROTECHNIC_OPTION] || sc->data[SC_AQUAPLAY_OPTION])
 						ad.damage += (6 + sstatus->int_/4) + max(sstatus->dex-10,0)/30;
 					break;
 			}
@@ -5612,6 +5613,11 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
 		if (tsd) md.damage>>=1;
 #endif
 		break;
+#ifndef RENEWAL
+		case NJ_KUNAI:
+		md.damage = 90; // 3x90 unreducable, unavoidable, and neutral damage.
+		break;
+#endif
 	case NJ_ZENYNAGE:
 	case KO_MUCHANAGE:
 			md.damage = skill_get_zeny(skill_id ,skill_lv);
@@ -6447,6 +6453,20 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
 			}
 		}
 
+		if( sd && sc && (sc->data[SC_TROPIC_OPTION] || sc->data[SC_CHILLY_AIR_OPTION] || sc->data[SC_WILD_STORM_OPTION] || sc->data[SC_UPHEAVAL_OPTION]) )
+		{	// Autocast one Bolt depending on status change.
+			int skill_id = 0;
+			if( sc->data[SC_TROPIC_OPTION] ) skill_id = sc->data[SC_TROPIC_OPTION]->val3;
+			else if( sc->data[SC_CHILLY_AIR_OPTION] ) skill_id = sc->data[SC_CHILLY_AIR_OPTION]->val3;
+			else if( sc->data[SC_WILD_STORM_OPTION] ) skill_id = sc->data[SC_WILD_STORM_OPTION]->val2;
+			else if( sc->data[SC_UPHEAVAL_OPTION] ) skill_id = sc->data[SC_UPHEAVAL_OPTION]->val2;
+
+			sd->state.autocast = 1;
+			if( skill_id && rand()%100 < (sd->status.job_level / 2) )
+				skill_castend_damage_id(src, target, skill_id, (int)floor(sd->status.job_level / 10), tick, flag);
+			sd->state.autocast = 0;
+		}
+
 		if (wd.flag & BF_WEAPON && src != target && damage > 0) {
 			if (battle_config.left_cardfix_to_right)
 				battle_drain(sd, target, wd.damage, wd.damage, tstatus->race, tstatus->class_);
@@ -7333,6 +7353,7 @@ static const struct _battle_data {
 	{ "vip_bm_increase",                    &battle_config.vip_bm_increase,                 0,      0,      INT_MAX,        },
 	{ "vip_drop_increase",                  &battle_config.vip_drop_increase,               0,      0,      INT_MAX,        },
 	{ "vip_gemstone",                       &battle_config.vip_gemstone,                    0,      0,      1,              },
+	{ "vip_disp_rate",                      &battle_config.vip_disp_rate,                   1,      0,      1,              },
 	{ "mon_trans_disable_in_gvg",           &battle_config.mon_trans_disable_in_gvg,        0,      0,      1,              },
 	{ "homunculus_S_growth_level",          &battle_config.hom_S_growth_level,             99,      0,      MAX_LEVEL,      },
 	{ "emblem_woe_change",                  &battle_config.emblem_woe_change,               0,      0,      1,              },
@@ -7343,6 +7364,11 @@ static const struct _battle_data {
 	{ "feature.autotrade",					&battle_config.feature_autotrade,				1,		0,		1,				},
 	{ "feature.autotrade_direction",		&battle_config.feature_autotrade_direction,		4,		0,		7,				},
 	{ "feature.autotrade_sit",				&battle_config.feature_autotrade_sit,			1,		0,		1,				},
+	{ "disp_serverbank_msg",				&battle_config.disp_serverbank_msg,				0,		0,		1,				},
+	{ "warg_can_falcon",                    &battle_config.warg_can_falcon,                 0,      0,      1,              },
+	{ "atcommand_enable_npc",				&battle_config.atcommand_enable_npc,			0,		0,		100,			},
+	{ "path_blown_halt",                    &battle_config.path_blown_halt,                 1,      0,      1,              },
+	{ "rental_mount_speed_boost",           &battle_config.rental_mount_speed_boost,        25,     0,      100,        	},
 };
 #ifndef STATS_OPT_OUT
 /**

+ 7 - 0
src/map/battle.h

@@ -514,6 +514,7 @@ extern struct Battle_Config
 	int vip_exp_penalty_base;
 	int vip_exp_penalty_job_normal;
 	int vip_exp_penalty_job;
+	int vip_disp_rate;
 	int mon_trans_disable_in_gvg;
 	int emblem_woe_change;
 	int emblem_transparency_limit;
@@ -525,6 +526,12 @@ extern struct Battle_Config
 	int feature_autotrade;
 	int feature_autotrade_direction;
 	int feature_autotrade_sit;
+
+	int disp_serverbank_msg;
+	int warg_can_falcon;
+	int atcommand_enable_npc;
+	int path_blown_halt;
+	int rental_mount_speed_boost;
 } battle_config;
 
 void do_init_battle(void);

+ 282 - 9
src/map/buyingstore.c

@@ -3,6 +3,7 @@
 
 #include "../common/cbasetypes.h"
 #include "../common/db.h"  // ARR_FIND
+#include "../common/malloc.h" // aMalloc, aFree
 #include "../common/showmsg.h"  // ShowWarning
 #include "../common/socket.h"  // RBUF*
 #include "../common/strlib.h"  // safestrncpy
@@ -14,6 +15,34 @@
 #include "pc.h"  // struct map_session_data
 #include "chrif.h"
 
+#include <stdlib.h> // atoi
+
+/// Struct for buyingstore entry of autotrader
+struct s_autotrade_entry {
+	uint16 amount;
+	int price;
+	uint16 item_id;
+};
+
+/// Struct of autotrader
+struct s_autotrade {
+	int account_id;
+	int char_id;
+	int buyer_id;
+	int m;
+	uint16 x, y;
+	unsigned char sex;
+	char title[MESSAGE_SIZE];
+	int limit;
+	uint16 count;
+	struct s_autotrade_entry **entries;
+	struct map_session_data *sd;
+};
+
+//Autotrader
+static struct s_autotrade **autotraders; ///Autotraders Storage
+static uint16 autotrader_count; ///Autotrader count
+static void do_final_buyingstore_autotrade(void);
 
 /// constants (client-side restrictions)
 #define BUYINGSTORE_MAX_PRICE 99990000
@@ -80,20 +109,21 @@ bool buyingstore_setup(struct map_session_data* sd, unsigned char slots){
 }
 
 
-void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned char result, const char* storename, const uint8* itemlist, unsigned int count)
+bool buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned char result, const char* storename, const uint8* itemlist, unsigned int count)
 {
 	unsigned int i, weight, listidx;
+	char message_sql[MESSAGE_SIZE*2];
 
 	if( !result || count == 0 )
 	{// canceled, or no items
-		return;
+		return false;
 	}
 
 	if( !battle_config.feature_buying_store || pc_istrading(sd) || sd->buyingstore.slots == 0 || count > sd->buyingstore.slots || zenylimit <= 0 || zenylimit > sd->status.zeny || !storename[0] )
 	{// disabled or invalid input
 		sd->buyingstore.slots = 0;
 		clif_buyingstore_open_failed(sd, BUYINGSTORE_CREATE, 0);
-		return;
+		return false;
 	}
 
 	if( !pc_can_give_items(sd) )
@@ -101,24 +131,24 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
 		sd->buyingstore.slots = 0;
 		clif_displaymessage(sd->fd, msg_txt(sd,246));
 		clif_buyingstore_open_failed(sd, BUYINGSTORE_CREATE, 0);
-		return;
+		return false;
 	}
 
 	if( sd->sc.data[SC_NOCHAT] && (sd->sc.data[SC_NOCHAT]->val1&MANNER_NOROOM) )
 	{// custom: mute limitation
-		return;
+		return false;
 	}
 
 	if( map[sd->bl.m].flag.novending )
 	{// custom: no vending maps
 		clif_displaymessage(sd->fd, msg_txt(sd,276)); // "You can't open a shop on this map"
-		return;
+		return false;
 	}
 
 	if( map_getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) )
 	{// custom: no vending cells
 		clif_displaymessage(sd->fd, msg_txt(sd,204)); // "You can't open a shop on this cell."
-		return;
+		return false;
 	}
 
 	weight = sd->weight;
@@ -174,14 +204,14 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
 	{// invalid item/amount/price
 		sd->buyingstore.slots = 0;
 		clif_buyingstore_open_failed(sd, BUYINGSTORE_CREATE, 0);
-		return;
+		return false;
 	}
 
 	if( (sd->max_weight*90)/100 < weight )
 	{// not able to carry all wanted items without getting overweight (90%)
 		sd->buyingstore.slots = 0;
 		clif_buyingstore_open_failed(sd, BUYINGSTORE_CREATE_OVERWEIGHT, weight);
-		return;
+		return false;
 	}
 
 	// success
@@ -190,8 +220,23 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
 	sd->buyingstore.zenylimit = zenylimit;
 	sd->buyingstore.slots = i;  // store actual amount of items
 	safestrncpy(sd->message, storename, sizeof(sd->message));
+
+	Sql_EscapeString( mmysql_handle, message_sql, sd->message );
+
+	if( Sql_Query( mmysql_handle, "INSERT INTO `%s`(`id`,`account_id`,`char_id`,`sex`,`map`,`x`,`y`,`title`,`limit`,`autotrade`) VALUES( %d, %d, %d, '%c', '%s', %d, %d, '%s', %d, %d );", buyingstore_db, sd->buyer_id, sd->status.account_id, sd->status.char_id, sd->status.sex == 0 ? 'F' : 'M', map[sd->bl.m].name, sd->bl.x, sd->bl.y, message_sql, sd->buyingstore.zenylimit, sd->state.autotrade ) != SQL_SUCCESS ){
+		Sql_ShowDebug(mmysql_handle);
+	}
+
+	for( i = 0; i < sd->buyingstore.slots; i++ ){
+		if( Sql_Query( mmysql_handle, "INSERT INTO `%s`(`buyingstore_id`,`index`,`item_id`,`amount`,`price`) VALUES( %d, %d, %d, %d, %d );", buyingstore_items_db, sd->buyer_id, i, sd->buyingstore.items[i].nameid, sd->buyingstore.items[i].amount, sd->buyingstore.items[i].price ) != SQL_SUCCESS ){
+			Sql_ShowDebug(mmysql_handle);
+		}
+	}
+
 	clif_buyingstore_myitemlist(sd);
 	clif_buyingstore_entry(sd);
+
+	return true;
 }
 
 
@@ -199,6 +244,15 @@ void buyingstore_close(struct map_session_data* sd)
 {
 	if( sd->state.buyingstore )
 	{
+		if( !sd->state.autotrade ){
+			if( 
+				Sql_Query( mmysql_handle, "DELETE FROM `%s` WHERE buyingstore_id = %d;", buyingstore_items_db, sd->buyer_id ) != SQL_SUCCESS ||
+				Sql_Query( mmysql_handle, "DELETE FROM `%s` WHERE `id` = %d;", buyingstore_db, sd->buyer_id ) != SQL_SUCCESS
+			){
+				Sql_ShowDebug(mmysql_handle);
+			}
+		}
+
 		// invalidate data
 		sd->state.buyingstore = false;
 		memset(&sd->buyingstore, 0, sizeof(sd->buyingstore));
@@ -370,6 +424,16 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int
 		pc_delitem(sd, index, amount, 1, 0, LOG_TYPE_BUYING_STORE);
 		pl_sd->buyingstore.items[listidx].amount-= amount;
 
+		if( pl_sd->buyingstore.items[listidx].amount > 0 ){
+			if( Sql_Query( mmysql_handle, "UPDATE `%s` SET `amount` = %d WHERE `buyingstore_id` = %d AND `index` = %d;", buyingstore_items_db, pl_sd->buyingstore.items[listidx].amount, pl_sd->buyer_id, listidx ) != SQL_SUCCESS ){
+				Sql_ShowDebug( mmysql_handle );
+			}
+		}else{
+			if( Sql_Query( mmysql_handle, "DELETE FROM `%s` WHERE `buyingstore_id` = %d AND `index` = %d;", buyingstore_items_db, pl_sd->buyer_id, listidx ) != SQL_SUCCESS ){
+				Sql_ShowDebug( mmysql_handle );
+			}
+		}
+
 		// pay up
 		pc_payzeny(pl_sd, zeny, LOG_TYPE_BUYING_STORE, sd);
 		pc_getzeny(sd, zeny, LOG_TYPE_BUYING_STORE, pl_sd);
@@ -397,6 +461,10 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int
 	}
 	else
 	{// continue buying
+		if( Sql_Query( mmysql_handle, "UPDATE `%s` SET `limit` = %d WHERE `id` = %d;", buyingstore_db, pl_sd->buyingstore.zenylimit, pl_sd->buyer_id ) != SQL_SUCCESS ){
+			Sql_ShowDebug( mmysql_handle );
+		}
+
 		return;
 	}
 
@@ -475,3 +543,208 @@ bool buyingstore_searchall(struct map_session_data* sd, const struct s_search_st
 
 	return true;
 }
+
+/** Open buyingstore for Autotrader
+* @param sd Player as autotrader
+*/
+void buyingstore_reopen( struct map_session_data* sd ){
+	// Ready to open buyingstore for this char
+	if ( sd && autotrader_count > 0 && autotraders){
+		uint16 i;
+		uint8 *data, *p;
+		uint16 j, count;
+
+		ARR_FIND(0,autotrader_count,i,autotraders[i] && autotraders[i]->char_id == sd->status.char_id);
+		if (i >= autotrader_count) {
+			return;
+		}
+		
+		// Init buyingstore data for autotrader
+		CREATE(data, uint8, autotraders[i]->count * 8);
+
+		for (j = 0, p = data, count = autotraders[i]->count; j < autotraders[i]->count; j++) {
+			struct s_autotrade_entry *entry = autotraders[i]->entries[j];
+			uint16 *item_id = (uint16*)(p + 0);
+			uint16 *amount = (uint16*)(p + 2);
+			uint32 *price = (uint32*)(p + 4);
+
+			*item_id = entry->item_id;
+			*amount = entry->amount;
+			*price = entry->price;
+
+			p += 8;
+		}
+
+		// Open the buyingstore again
+		if( buyingstore_setup( sd, (unsigned char)autotraders[i]->count ) &&
+			buyingstore_create( sd, autotraders[i]->limit, 1, autotraders[i]->title, data, autotraders[i]->count ) )
+		{
+			ShowInfo("Loaded autotrade buyingstore data for '"CL_WHITE"%s"CL_RESET"' with '"CL_WHITE"%d"CL_RESET"' items at "CL_WHITE"%s (%d,%d)"CL_RESET"\n",
+				sd->status.name,count,mapindex_id2name(sd->mapindex),sd->bl.x,sd->bl.y);
+
+			// Set him to autotrade
+			if (Sql_Query( mmysql_handle, "UPDATE `%s` SET `autotrade` = 1 WHERE `id` = %d;",
+				buyingstore_db, sd->buyer_id ) != SQL_SUCCESS )
+			{
+				Sql_ShowDebug( mmysql_handle );
+			}
+
+			// Make him look perfect
+			unit_setdir(&sd->bl,battle_config.feature_autotrade_direction);
+
+			if( battle_config.feature_autotrade_sit )
+				pc_setsit(sd);
+		}else{
+			// Failed to open the buyingstore, set him offline
+			ShowWarning("Failed to load autotrade buyingstore data for '"CL_WHITE"%s"CL_RESET"' with '"CL_WHITE"%d"CL_RESET"' items\n", sd->status.name, count );
+
+			map_quit( sd );
+		}
+
+		aFree(data);
+
+		//If the last autotrade is loaded, clear autotraders [Cydh]
+		if (i+1 >= autotrader_count)
+			do_final_buyingstore_autotrade();
+	}
+}
+
+/**
+* Initializing autotraders from table
+*/
+void do_init_buyingstore_autotrade( void ) {
+	if(battle_config.feature_autotrade) {
+		uint16 i, items = 0;
+		autotrader_count = 0;
+
+		// Get autotrader from table. `map`, `x`, and `y`, aren't used here
+		// Just read player that has data at buyingstore_items [Cydh]
+		if (Sql_Query(mmysql_handle,
+			"SELECT `id`, `account_id`, `char_id`, `sex`, `title`, `limit` "
+			"FROM `%s` "
+			"WHERE `autotrade` = 1 AND `limit` > 0 AND (SELECT COUNT(`buyingstore_id`) FROM `%s` WHERE `buyingstore_id` = `id`) > 0;",
+			buyingstore_db, buyingstore_items_db ) != SQL_SUCCESS )
+		{
+			Sql_ShowDebug(mmysql_handle);
+			return;
+		}
+
+		if( (autotrader_count = (uint32)Sql_NumRows(mmysql_handle)) > 0 ){
+			// Init autotraders
+			CREATE(autotraders, struct s_autotrade *, autotrader_count);
+
+			if (autotraders == NULL) { //This is shouldn't happen [Cydh]
+				ShowError("Failed to initialize buyingstore autotraders!\n");
+				Sql_FreeResult(mmysql_handle);
+				return;
+			}
+
+			// Init each autotrader data
+			i = 0;
+			while (SQL_SUCCESS == Sql_NextRow(mmysql_handle) && i < autotrader_count) {
+				size_t len;
+				char* data;
+
+				CREATE(autotraders[i], struct s_autotrade, 1);
+
+				Sql_GetData(mmysql_handle, 0, &data, NULL); autotraders[i]->buyer_id = atoi(data);
+				Sql_GetData(mmysql_handle, 1, &data, NULL); autotraders[i]->account_id = atoi(data);
+				Sql_GetData(mmysql_handle, 2, &data, NULL); autotraders[i]->char_id = atoi(data);
+				Sql_GetData(mmysql_handle, 3, &data, NULL); autotraders[i]->sex = (data[0] == 'F') ? 0 : 1;
+				Sql_GetData(mmysql_handle, 4, &data, &len); safestrncpy(autotraders[i]->title, data, min(len + 1, MESSAGE_SIZE));
+				Sql_GetData(mmysql_handle, 5, &data, NULL); autotraders[i]->limit = atoi(data);
+				autotraders[i]->count = 0;
+
+				// initialize player
+				CREATE(autotraders[i]->sd, struct map_session_data, 1);
+			
+				pc_setnewpc(autotraders[i]->sd, autotraders[i]->account_id, autotraders[i]->char_id, 0, gettick(), autotraders[i]->sex, 0);
+			
+				autotraders[i]->sd->state.autotrade = 1;
+				chrif_authreq(autotraders[i]->sd, true);
+				i++;
+			}
+			Sql_FreeResult(mmysql_handle);
+
+			//Init items on vending list each autotrader
+			for (i = 0; i < autotrader_count; i++){
+				struct s_autotrade *at = NULL;
+				uint16 j;
+
+				if (autotraders[i] == NULL)
+					continue;
+				at = autotraders[i];
+
+				if (SQL_ERROR == Sql_Query(mmysql_handle,
+					"SELECT `item_id`, `amount`, `price` "
+					"FROM `%s` "
+					"WHERE `buyingstore_id` = %d "
+					"ORDER BY `index` ASC;", buyingstore_items_db, at->buyer_id ) )
+				{
+					Sql_ShowDebug(mmysql_handle);
+					continue;
+				}
+
+				if (!(at->count = (uint32)Sql_NumRows(mmysql_handle))) {
+					map_quit(at->sd);
+					continue;
+				}
+			
+				//Init the list
+				CREATE(at->entries, struct s_autotrade_entry *,at->count);
+
+				//Add the item into list
+				j = 0;
+				while (SQL_SUCCESS == Sql_NextRow(mmysql_handle) && j < at->count) {
+					char* data;
+					CREATE(at->entries[j], struct s_autotrade_entry, 1);
+
+					Sql_GetData(mmysql_handle, 0, &data, NULL); at->entries[j]->item_id = atoi(data);
+					Sql_GetData(mmysql_handle, 1, &data, NULL); at->entries[j]->amount = atoi(data);
+					Sql_GetData(mmysql_handle, 2, &data, NULL); at->entries[j]->price = atoi(data);
+					j++;
+				}
+				items += j;
+				Sql_FreeResult(mmysql_handle);
+			}
+
+			ShowStatus("Done loading '"CL_WHITE"%d"CL_RESET"' autotraders with '"CL_WHITE"%d"CL_RESET"' items.\n", autotrader_count, items);
+		}
+	}
+
+	// Everything is loaded fine, their entries will be reinserted once they are loaded
+	if (Sql_Query( mmysql_handle, "DELETE FROM `%s`;", buyingstore_db ) != SQL_SUCCESS ||
+		Sql_Query( mmysql_handle, "DELETE FROM `%s`;", buyingstore_items_db ) != SQL_SUCCESS)
+	{
+		Sql_ShowDebug(mmysql_handle);
+	}
+}
+
+/**
+* Clear all autotraders
+* @author [Cydh]
+*/
+void do_final_buyingstore_autotrade(void) {
+	if (autotrader_count && autotraders){
+		uint16 i = 0;
+		while (i < autotrader_count) { //Free the autotrader
+			if (autotraders[i] == NULL)
+				continue;
+			if (autotraders[i]->count) {
+				uint16 j = 0;
+				while (j < autotraders[i]->count) { //Free the autotrade entries
+					if (autotraders[i]->entries == NULL)
+						continue;
+					if (autotraders[i]->entries[j])
+						aFree(autotraders[i]->entries[j]);
+					j++;
+				}
+				aFree(autotraders[i]->entries);
+			}
+			aFree(autotraders[i]);
+			i++;
+		}
+		aFree(autotraders);
+		autotrader_count = 0;
+	}
+}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio