فهرست منبع

Merge branch 'master' into feature/lapine_synthesis_and_upgrade

aleos 4 سال پیش
والد
کامیت
a02e829d03
100فایلهای تغییر یافته به همراه9204 افزوده شده و 1495 حذف شده
  1. 5 0
      conf/battle/client.conf
  2. 10 0
      conf/battle/homunc.conf
  3. 3 0
      conf/battle/misc.conf
  4. 21 17
      conf/battle/player.conf
  5. 4 0
      conf/battle/skill.conf
  6. 6 0
      conf/char_athena.conf
  7. 4 0
      conf/login_athena.conf
  8. 19 12
      conf/msg_conf/map_msg.conf
  9. 6 6
      conf/msg_conf/map_msg_chn.conf
  10. 6 6
      conf/msg_conf/map_msg_frn.conf
  11. 3 3
      conf/msg_conf/map_msg_grm.conf
  12. 11 11
      conf/msg_conf/map_msg_idn.conf
  13. 11 11
      conf/msg_conf/map_msg_por.conf
  14. 6 6
      conf/msg_conf/map_msg_rus.conf
  15. 15 11
      conf/msg_conf/map_msg_spn.conf
  16. 6 6
      conf/msg_conf/map_msg_tha.conf
  17. 42 5
      db/const.txt
  18. 1 1
      db/import-tmpl/item_db.txt
  19. 0 0
      db/import-tmpl/job_exp.txt
  20. 12 2
      db/import-tmpl/quest_db.yml
  21. 10 10
      db/pre-re/item_combo_db.txt
  22. 177 177
      db/pre-re/item_db.txt
  23. 3 4
      db/pre-re/mob_skill_db.txt
  24. 6 5
      db/pre-re/pet_db.yml
  25. 12 2
      db/pre-re/quest_db.yml
  26. 31 0
      db/pre-re/skill_db.yml
  27. 12 2
      db/quest_db.yml
  28. 31 6
      db/re/instance_db.yml
  29. 254 99
      db/re/item_combo_db.txt
  30. 197 197
      db/re/item_db.txt
  31. 10 0
      db/re/item_flag.txt
  32. 2 2
      db/re/item_package.txt
  33. 50 26
      db/re/item_randomopt_db.txt
  34. 2 2
      db/re/item_synthesis.yml
  35. 137 0
      db/re/item_trade.txt
  36. 28 26
      db/re/job_exp.txt
  37. BIN
      db/re/map_cache.dat
  38. 88 39
      db/re/mob_db.txt
  39. 76 62
      db/re/mob_skill_db.txt
  40. 12 10
      db/re/pet_db.yml
  41. 9 9
      db/re/produce_db.txt
  42. 379 58
      db/re/quest_db.yml
  43. 166 132
      db/re/skill_db.yml
  44. 12 12
      db/re/skill_tree.txt
  45. 12 33
      db/re/spellbook_db.yml
  46. 9 1
      doc/atcommands.txt
  47. 6 2
      doc/item_bonus.txt
  48. 52 17
      doc/script_commands.txt
  49. 12 2
      doc/yaml/db/quest_db.yml
  50. 4 2
      npc/battleground/kvm/kvm01.txt
  51. 4 2
      npc/battleground/kvm/kvm02.txt
  52. 4 2
      npc/battleground/kvm/kvm03.txt
  53. 22 18
      npc/custom/official/GeffenMagicTournament.txt
  54. 19 13
      npc/custom/woe_controller.txt
  55. 3 1
      npc/instances/SealedShrine.txt
  56. 2 1
      npc/jobs/2-1/assassin.txt
  57. 2 1
      npc/jobs/2-1/knight.txt
  58. 2 1
      npc/jobs/2-1/priest.txt
  59. 2 1
      npc/jobs/2-2/crusader.txt
  60. 2 1
      npc/jobs/2-2/sage.txt
  61. 1 1
      npc/other/monster_race.txt
  62. 2 2
      npc/pre-re/jobs/1-1/merchant.txt
  63. 1 0
      npc/pre-re/scripts_warps.conf
  64. 13 0
      npc/pre-re/warps/cities/einbroch.txt
  65. 51 51
      npc/quests/counteragent_mixture.txt
  66. 43 39
      npc/quests/guildrelay.txt
  67. 9 7
      npc/re/custom/lasagna/lasa_dun.txt
  68. 5 4
      npc/re/custom/lasagna/lasa_fild.txt
  69. 1 1
      npc/re/custom/lasagna/lasagna_npcs.txt
  70. 2191 0
      npc/re/instances/CharlestonCrisis.txt
  71. 1840 0
      npc/re/instances/HeartHunterWarBase.txt
  72. 13 7
      npc/re/instances/SarahAndFenrir.txt
  73. 1091 0
      npc/re/instances/WernerLaboratoryCentralRoom.txt
  74. 2 1
      npc/re/jobs/3-1/warlock.txt
  75. 14 0
      npc/re/kafras/cool_event_corp.txt
  76. 5 1
      npc/re/mapflag/nobranch.txt
  77. 4 0
      npc/re/mapflag/nomemo.txt
  78. 4 0
      npc/re/mapflag/nopenalty.txt
  79. 4 0
      npc/re/mapflag/nopvp.txt
  80. 4 0
      npc/re/mapflag/noteleport.txt
  81. 1415 0
      npc/re/merchants/enchan_verus.txt
  82. 101 0
      npc/re/merchants/novice_vending_machine.txt
  83. 14 0
      npc/re/merchants/shops.txt
  84. 1 1
      npc/re/merchants/ticket_refiner.txt
  85. 111 103
      npc/re/mobs/championmobs.txt
  86. 5 4
      npc/re/mobs/dungeons/abbey.txt
  87. 7 6
      npc/re/mobs/dungeons/alde_dun.txt
  88. 8 7
      npc/re/mobs/dungeons/ama_dun.txt
  89. 9 8
      npc/re/mobs/dungeons/ayo_dun.txt
  90. 22 21
      npc/re/mobs/dungeons/c_tower.txt
  91. 5 8
      npc/re/mobs/dungeons/dew_dun.txt
  92. 14 15
      npc/re/mobs/dungeons/ecl_tdun.txt
  93. 6 7
      npc/re/mobs/dungeons/gef_dun.txt
  94. 9 8
      npc/re/mobs/dungeons/gefenia.txt
  95. 63 59
      npc/re/mobs/dungeons/glastheim.txt
  96. 16 15
      npc/re/mobs/dungeons/gon_dun.txt
  97. 3 2
      npc/re/mobs/dungeons/ice_dun.txt
  98. 22 21
      npc/re/mobs/dungeons/in_sphinx.txt
  99. 12 11
      npc/re/mobs/dungeons/iz_dun.txt
  100. 11 10
      npc/re/mobs/dungeons/kh_dun.txt

+ 5 - 0
conf/battle/client.conf

@@ -149,3 +149,8 @@ ping_time: 20
 // Show skill scale for clients 2015-12-23 and newer? (Note 1)
 // Official: yes
 show_skill_scale: yes
+
+// Should the connection be dropped on server side after a player disconnection request was received? (Note 1)
+// Note: Enabling this is known to cause problems on clients that make use of REST API calls.
+// Official: no
+drop_connection_on_quit: no

+ 10 - 0
conf/battle/homunc.conf

@@ -95,3 +95,13 @@ idletime_hom_option: 0x1F
 // Only applies to renewal mode.
 // Official: 10%
 homunculus_exp_gain: 10
+
+// The hunger rate, less than or equal to, at which a homunculus' hunger delay changes. (Note 2)
+// See 'homunculus_starving_delay' for the delay value.
+// Set to 0 to disable.
+// Official: 10
+homunculus_starving_rate: 10
+
+// Homunculi normally lose hunger every 60 seconds but when the 'homunculus_starving_rate' is met the hunger delay drops to 20 seconds (in milliseconds).
+// Official: 20 seconds
+homunculus_starving_delay: 20000

+ 3 - 0
conf/battle/misc.conf

@@ -114,6 +114,9 @@ at_timeout: 0
 // Makes player cannot be attacked when autotrade? (turns player's state.monster_ignore) (Note 1)
 at_monsterignore: no
 
+// Should autotrade trigger OnPCLogout script events? (Note 1)
+at_logout_event: yes
+
 // Auction system, fee per hour. Default is 12000
 auction_feeperhour: 12000
 

+ 21 - 17
conf/battle/player.conf

@@ -256,24 +256,28 @@ fame_pharmacy_7: 10
 fame_pharmacy_10: 50
 
 // How the server should measure the character's idle time? (Note 3)
-// 0x001 - Walk Request
-// 0x002 - UseSkillToID Request (Targetted skill use attempt)
-// 0x004 - UseSkillToPos Request (AoE skill use attempt)
-// 0x008 - UseItem Request (Including equip/unequip)
-// 0x010 - Attack Request
-// 0x020 - Chat Request (Whisper, Party, Guild, Battlegrounds, etc)
-// 0x040 - Sit/Standup Request
-// 0x080 - Emotion Request
-// 0x100 - DropItem Request
-// 0x200 - @/#Command Request
+// 0x0001 - Walk Request
+// 0x0002 - UseSkillToID Request (Targetted skill use attempt)
+// 0x0004 - UseSkillToPos Request (AoE skill use attempt)
+// 0x0008 - UseItem Request (Including equip/unequip)
+// 0x0010 - Attack Request
+// 0x0020 - Chat Request (Whisper, Party, Guild, Battlegrounds, etc)
+// 0x0040 - Sit/Standup Request
+// 0x0080 - Emotion Request
+// 0x0100 - DropItem Request
+// 0x0200 - @/#Command Request
+// 0x0400 - Closing a NPC window
+// 0x0800 - Providing input to a NPC
+// 0x1000 - Choosing a NPC menu option
+// 0x2000 - Clicking the next button of a NPC
+// 0x4000 - Finishing for a NPC progress bar
 // Please note that at least 1 option has to be enabled.
 // Be mindful that the more options used, the easier it becomes to cheat features that rely on idletime (e.g. checkidle()).
-// Default: walk (0x1) + useskilltoid (0x2) + useskilltopos (0x4) + useitem (0x8) + attack (0x10) = 0x1F
-idletime_option: 0x1F
+// Default: walk (0x1) + useskilltoid (0x2) + useskilltopos (0x4) + useitem (0x8) + attack (0x10) + any npc interaction(0x400,0x800,0x1000,0x2000,0x4000) = 0x7C1F
+idletime_option: 0x7C1F
 
 // Adjust the summoner class' special traits.
-// 0: Summoners behave like other classes.
-// 1: Summoners belong to brute race instead of demi-human
-// 2: Summoners are small size instead of medium
-// 3: Both of the above (official value)
-summoner_trait: 3
+// - Summoners belong to brute race category. They have their own race RC_PLAYER_DORAM (11) to be differentiated from monster race RC_BRUTE (2).
+// - Summoners are small size (0) instead of medium (1)
+summoner_race: 11
+summoner_size: 0

+ 4 - 0
conf/battle/skill.conf

@@ -355,6 +355,10 @@ default_fixed_castrate: 20
 // Note: Brandish Spear will always use this algorithm due to its special damage behavior.
 skill_eightpath_algorithm: yes
 
+// Should skills that use skill_eightpath_algorithm include targets in the caster's cell?
+// Official: yes
+skill_eightpath_same_cell: yes
+
 // Can damage skill units like icewall and traps (Note 3)
 // On official servers, players can damage icewalls and some traps with skills. When monsters use skills, damage
 // will show on the icewalls and traps, but it is not actually substracted from the durability.

+ 6 - 0
conf/char_athena.conf

@@ -284,4 +284,10 @@ mail_return_days: 15
 // Default: 15
 mail_delete_days: 15
 
+// Does the Retrieve All button ignore unread mail status?
+// no: Only return attachments from read mail
+// yes: Return attachments from all mail
+// Default: yes
+mail_retrieve: yes
+
 import: conf/import/char_conf.txt

+ 4 - 0
conf/login_athena.conf

@@ -163,6 +163,10 @@ dnsbl_servers: bl.blocklist.de, socks.dnsbl.sorbs.net
 // Note: see 'doc/md5_hashcheck.txt' for more details.
 client_hash_check: off
 
+// Enable web authentication token system
+// This is required for new clients that get data via an additional API over HTTP
+use_web_auth_token: yes
+
 // Client MD5 hashes
 // 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.

+ 19 - 12
conf/msg_conf/map_msg.conf

@@ -92,7 +92,7 @@
 75: War of Emperium is currently not in progress.
 76: All skills have been added to your skill tree.
 77: The reference result of '%s' (name: id):
-78: - %s: %d
+78: - %s: %u
 79: It is %d affair above.
 80: Give the display name or monster name/id please.
 81: Your GM level doesn't authorize you to perform this action on the specified player.
@@ -179,7 +179,7 @@
 166: No item has been refined.
 167: 1 item has been refined.
 168: %d items have been refined.
-169: The item (%hu: '%s') is not equipable.
+169: The item (%u: '%s') is not equipable.
 170: The item is not equipable.
 171: %d - void
 //172: You replace previous memo position %d - %s (%d,%d).
@@ -551,7 +551,7 @@
 
 // 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: %hu), and tried to trade %d of them.
+539: This player has %d of a kind of item (id: %u), and tried to trade %d of them.
 540: This player has been definitivly blocked.
 
 // Rare Items Drop/Steal announce
@@ -740,14 +740,14 @@
 707: You are VIP until: %s
 708: The player is now VIP until: %s
 
-709: Item %hu has been removed from your inventory.
-710: Item %hu has been removed from your cart.
-711: Item %hu has been removed from your storage.
+709: Item %u has been removed from your inventory.
+710: Item %u has been removed from your cart.
+711: Item %u has been removed from your storage.
 
 // Item shop
-712: You do not have enough %s (%hu).
+712: You do not have enough %s (%u).
 713: You do not have enough '%s'.
-714: Item Shop List: %s (%hu)
+714: Item Shop List: %s (%u)
 715: Point Shop List: '%s'
 716: Your '%s' is now: %d
 
@@ -1242,9 +1242,9 @@
 1189: Item not found.
 1190: You're already autolooting this item.
 1191: Your autolootitem list is full. Remove some items first with @autolootid -<item name or ID>.
-1192: Autolooting item: '%s'/'%s' {%hu}
+1192: Autolooting item: '%s'/'%s' {%u}
 1193: You're currently not autolooting this item.
-1194: Removed item: '%s'/'%s' {%hu} from your autolootitem list.
+1194: Removed item: '%s'/'%s' {%u} from your autolootitem list.
 1195: You can have %d items on your autolootitem list.
 1196: To add an item to the list, use "@alootid +<item name or ID>". To remove an item, use "@alootid -<item name or ID>".
 1197: "@alootid reset" will clear your autolootitem list.
@@ -1393,7 +1393,7 @@
 
 // @iteminfo
 1276: Please enter an item name/ID (usage: @ii/@iteminfo <item name/ID>).
-1277: Item: '%s'/'%s'[%d] (%hu) Type: %s | Extra Effect: %s
+1277: Item: '%s'/'%s'[%d] (%u) Type: %s | Extra Effect: %s
 1278: None
 1279: With script
 1280: NPC Buy:%dz, Sell:%dz | Weight: %.1f
@@ -1403,7 +1403,7 @@
 
 // @whodrops
 1284: Please enter item name/ID (usage: @whodrops <item name/ID>).
-1285: Item: '%s'[%d] (ID:%hu)
+1285: Item: '%s'[%d] (ID: %u)
 1286:  - Item is not dropped by mobs.
 1287:  - Common mobs with highest drop chance (only max %d are listed):
 
@@ -1726,5 +1726,12 @@
 1511: >    HUNTING   : %d
 1512: >    PLAYTIME  : %d
 
+// @changegm
+1513: Currently in WoE hours, unable to delegate Guild leader
+1514: You have to wait for a while before delegating a new Guild leader
+
+// @hatereset
+1515: Reset 'Hatred' monsters.
+
 //Custom translations
 import: conf/msg_conf/import/map_msg_eng_conf.txt

+ 6 - 6
conf/msg_conf/map_msg_chn.conf

@@ -96,7 +96,7 @@
 75: 公會戰還沒開始
 76: 您學會了所有技能
 77: 委託 '%s' (名字: 編號):
-78: %s: %d
+78: %s: %u
 79: 查詢到 %d 個符合條件的結果
 80: 重新讀取任務資料庫
 81: 您的GM 等級並沒有權限在這位玩家上執行這個動作
@@ -183,7 +183,7 @@
 166: 沒有道具被精練
 167: 1 個道具已被精練
 168: %d 個道具已被精練
-169: 此物品 (%d '%s')不是裝備
+169: 此物品 (%u: '%s')不是裝備
 170: 此物品不是裝備
 171: %d - 無
 //172: You replace previous memo position %d - %s (%d,%d).
@@ -500,7 +500,7 @@
 537: 玩家'%s' (account: %d) 試圖使用外掛(它試圖偵測假的怪物)
 // Trade Spoof Messages
 538: 危險交易: 玩家 '%s' (account: %d) 嘗試交易超過他所有的數量
-539: 這個使用者有%d 個物品(物品id: %d), 嘗試交易%d 個
+539: 這個使用者有%d 個物品(物品id: %u), 嘗試交易%d 個
 540: 這個使用者已經被伺服器屏蔽
 // Rare Items Drop/Steal announce
 541: '%s' 取得 %s's %s (機率為: %%%0.02f)
@@ -1042,9 +1042,9 @@
 1189: 未找到此道具。
 1190: 此道具已在自動檢取列表中了。
 1191: 自動檢取列表已經滿了,移除某些道具方法 @autolootid -<道具名稱或ID>。
-1192: 自動檢取的道具為: '%s'/'%s' {%d}。
+1192: 自動檢取的道具為: '%s'/'%s' {%u}。
 1193: 目前你尚未將此道具列入自動檢取項目中。
-1194: 已從自動檢取列表中移除道具: '%s'/'%s' {%d}。
+1194: 已從自動檢取列表中移除道具: '%s'/'%s' {%u}。
 1195: 在自動檢取列表你最多能有 %d 個檢取的項目。
 1196: 如要在自動檢取項目列表增加檢取道具,使用 "@alootid +<道具名稱或ID>", 如要從列表移除道具 "@alootid -<道具名稱或ID>"。
 1197: "@alootid reset" 將會清空所有自動檢取項目列表。
@@ -1193,7 +1193,7 @@
 
 // @iteminfo
 1276: 請輸入 物品名稱/ID (用法: @ii/@iteminfo <物品名稱/ID>).
-1277: 物品: '%s'/'%s'[%d] (%d) 類型: %s | 額外效果: %s
+1277: 物品: '%s'/'%s'[%d] (%u) 類型: %s | 額外效果: %s
 1278: None
 1279: With script
 1280: NPC 買價:%dz, 賣價:%dz | 重量: %.1f 

+ 6 - 6
conf/msg_conf/map_msg_frn.conf

@@ -96,7 +96,7 @@
 75: La War of Emperium n'est pas en cours.
 76: Toutes les compétences sont ajoutées à votre arbre de compétence.
 77: Résultat de '%s' (nom: id):
-78: %s: %d
+78: %s: %u
 79: %d résultats sont affichés.
 80: Veuillez donner le nom/id du montre.
 81: Votre niveau de GM ne vous autorise pas à effectuer cette action sur le Joueur spécifié.
@@ -183,7 +183,7 @@
 166: Aucun équipement n'a été raffiné.
 167: 1 objet raffiné.
 168: %d objets raffinés.
-169: L'objet (%hu: '%s') ne peut pas s'équiper.
+169: L'objet (%u: '%s') ne peut pas s'équiper.
 170: L'objet ne peut pas s'équiper.
 171: %d - void
 //172: You replace previous memo position %d - %s (%d,%d).
@@ -512,7 +512,7 @@
 537: Personnage '%s' (compte: %d) essaie d'utiliser un bot (il essaie de détecter un faux mob).
 // Trade Spoof Messages
 538: Hack sur échange: Personnage '%s' (account: %d) essaie d'échanger plus d'Objets qu'il ne possède.
-539: Ce Joueur a %d d'une sorte d'Objet (id: %hu), et tente d'en échanger %d.
+539: Ce Joueur a %d d'une sorte d'Objet (id: %u), et tente d'en échanger %d.
 540: Joueur définitivement bloqué.
 // Rare Items Drop/Steal announce
 541: '%s' obtient de %s l'Objet %s (chance: %0.02f%%)
@@ -1055,9 +1055,9 @@
 1189: Objet trouvable.
 1190: Vous ramasser déjà automatiquement cet Objet.
 1191: Votre liste d'Objet à ramasser est pleine. Supprimez des Objets avec @autolootid -<nom_ou_ID_Objet>.
-1192: Ramassage automatique de: '%s'/'%s' {%hu}
+1192: Ramassage automatique de: '%s'/'%s' {%u}
 1193: Actuellement vous ne ramassez pas automatiquement cet Objet.
-1194: Onjet supprimé: '%s'/'%s' {%hu} de votre liste de 'autolootitem'.
+1194: Onjet supprimé: '%s'/'%s' {%u} de votre liste de 'autolootitem'.
 1195: Vous pouvez avoir %d Objets dans votre liste d'Objets ramassés automatiquement avec 'autolootitem'.
 1196: Pour ajouter un Objet à votre liste, utilisez "@alootid +<nom_ou_ID_Objet>". Pour supprimer un Objet de la liste, utilisez "@alootid -<nom_ou_ID_Objet>".
 1197: "@alootid reset" videra votre liste d'Objets ramassés automatiquement avec 'autolootitem'.
@@ -1206,7 +1206,7 @@
 
 // @iteminfo
 1276: Entrez un nom/ID d'objet (usage: @ii/@iteminfo <nom/ID>).
-1277: Item: '%s'/'%s'[%d] (%hu) Type: %s | Extra Effect: %s
+1277: Item: '%s'/'%s'[%d] (%u) Type: %s | Extra Effect: %s
 1278: Aucun
 1279: Avec script
 1280: NPC Acheté:%dz, Vendu:%dz | Poids: %.1f 

+ 3 - 3
conf/msg_conf/map_msg_grm.conf

@@ -95,7 +95,7 @@
 75: War of Emperium ist zur Zeit nicht im Gange.
 76: Alle Fähigkeiten wurden deinem Fähigkeitenbaum hinzugefügt.
 77: Das Ergebnis der Suche nach '%s' lautet (Name: ID):
-78: %s: %d
+78: %s: %u
 79: Es wurden %d Gegenstände gefunden.
 80: Gib bitte den Anzeige-Namen oder die Monster-ID an.
 81: Dein GM-Level berechtigt dich nicht, diese Aktion auf dem angegebenen Spieler auszuführen.
@@ -182,7 +182,7 @@
 166: Kein Items sind refined.
 167: 1 Item ist refined.
 168: %d Items sind refined.
-169: Das Item (%d: '%s') ist nicht ausrüstbar.
+169: Das Item (%u: '%s') ist nicht ausrüstbar.
 170: Das Item ist nicht ausrüstbar.
 171: %d - ungültig
 //172: You replace previous memo position %d - %s (%d,%d).
@@ -438,7 +438,7 @@
 537: Charakter '%s' (account: %d) Versucht einen Bot zu benutzen (Es versucht einen fake Mob zu entlarven).
 // Trade Spoof Messages
 538: Hack bei Handel: Charakter '%s' (account: %d) versucht mit mehr Items zu Handeln als er besitzt.
-539: Dieser Spieler hat %d vom folgendem Item (id: %d), und versuchte %d von ihnen zu Handeln.
+539: Dieser Spieler hat %d vom folgendem Item (id: %u), und versuchte %d von ihnen zu Handeln.
 540: Dieser Spieler wurde definitiv blockiert.
 // Rare Items Drop/Steal announce
 541: '%s' got %s's %s (chance: %0.02f%%)

+ 11 - 11
conf/msg_conf/map_msg_idn.conf

@@ -92,7 +92,7 @@
 75: War of Emperium saat ini tidak sedang berjalan.
 76: Semua skill telah ditambahkan ke skill tree.
 77: Hasil referensi dari '%s' (nama: id):
-78: - %s: %d
+78: - %s: %u
 79: Terdapat %d hal di atas.
 80: Harap berikan nama tampilan atau nama/id monster.
 81: Level GM kamu tidak diizinkan untuk untuk melakukan aksi ini pada pemain tertentu.
@@ -179,7 +179,7 @@
 166: Tidak ada item yang ditempa.
 167: 1 item berhasil ditempa.
 168: %d item berhasil ditempa.
-169: Item (%hu: '%s') tidak bisa dipakai.
+169: Item (%u: '%s') tidak bisa dipakai.
 170: Item ini tidak bisa dipakai.
 171: %d - sudah habis
 //172: Kamu sudah mengganti posisi memo %d - %s (%d,%d).
@@ -544,7 +544,7 @@
 
 // Pesan tentang pelanggaran transaksi.
 538: Hack pada transaksi: Karakter '%s' (akun: %d) sedang mencoba mentransaksikan item lebih dari yang dia punya.
-539: Pemain ini memiliki %d jenis item (id: %hu), dan sedang mencoba untuk mentransaksikan %d item.
+539: Pemain ini memiliki %d jenis item (id: %u), dan sedang mencoba untuk mentransaksikan %d item.
 540: Pemain ini sudah diblok.
 
 // Pesan tentang item langka yang berhasil didapatkan atau dicuri.
@@ -732,14 +732,14 @@
 707: VIP anda berlaku hingga: %s
 708: Status VIP pemain aktif hingga: %s
 
-709: Item %hu telah dihapus dari inventory-mu.
-710: Item %hu telah dihapus dari cart-mu.
-711: Item %hu telah dihapus dari storage-mu.
+709: Item %u telah dihapus dari inventory-mu.
+710: Item %u telah dihapus dari cart-mu.
+711: Item %u telah dihapus dari storage-mu.
 
 //Item shop
-712: %s (%hu) yang kamu miliki tidak cukup.
+712: %s (%u) yang kamu miliki tidak cukup.
 713: '%s' yang kamu miliki tidak cukup.
-714: Item Shop: %s (%hu)
+714: Item Shop: %s (%u)
 715: Point Shop: '%s'
 716: '%s' milikmu saat ini: %d
 
@@ -1146,9 +1146,9 @@
 1189: Item tidak ditemukan.
 1190: Kamu sudah mengambil secara otomatis item ini.
 1191: Daftar autolooitem penuh. Hilangkan sebagian terlebih dahulu dengan @autolootid -<nama/ID item>.
-1192: Mengambil item secara otomatis: '%s'/'%s' {%hu}
+1192: Mengambil item secara otomatis: '%s'/'%s' {%u}
 1193: Kamu saat ini sedang tidak mengambil item ini secara otomatis.
-1194: Item dihilangkan: '%s'/'%s' {%hu} dari daftar pengambilan otomatismu.
+1194: Item dihilangkan: '%s'/'%s' {%u} dari daftar pengambilan otomatismu.
 1195: Kamu hanya memiliki item %d di daftarmu.
 1196: Untuk menambahkan item ke daftar, gunakan \"@alootid +<ID atau nama item>\". Untuk menghilangkannya, gunakan \"@alootid -<ID atau nama item>\".
 1197: \"@alootid reset\" akan membersihkan daftar autolootitem.
@@ -1297,7 +1297,7 @@
 
 // @iteminfo
 1276: Harap masukkan nama/ID item. (Penggunaan: @ii/@iteminfo <nama/ID item>).
-1277: Item: '%s'/'%s'[%d] (%hu) Jenis: %s | Efek tambahan: %s
+1277: Item: '%s'/'%s'[%d] (%u) Jenis: %s | Efek tambahan: %s
 1278: Tidak ada
 1279: Dengan script.
 1280: NPC Harga Beli:%dz, Harga jual:%dz | Berat: %.1f 

+ 11 - 11
conf/msg_conf/map_msg_por.conf

@@ -102,7 +102,7 @@
 75: A Guerra do Emperium ainda não foi iniciada.
 76: Todas as habilidades foram adicionadas à sua árvore de habilidades.
 77: O resultado da referência à '%s' (nome: id):
-78: %s: %d
+78: %s: %u
 79: Encontrado %d acima.
 80: Entre com o nome de exibição ou nome/id do monstro.
 81: Seu nível de Game Master não autoriza a realização desta ação neste personagem.
@@ -189,7 +189,7 @@
 166: Nenhum item foi refinado.
 167: 1 item foi refinado.
 168: %d itens foram refinados.
-169: O item (%hu: '%s') não é equipável.
+169: O item (%u: '%s') não é equipável.
 170: O item não é equipável.
 171: %d - vazio
 //172: Você substituiu o ponto de memorização %d - %s (%d,%d).
@@ -555,7 +555,7 @@
 
 // Mensagens de tentativa de Spoof em Negociações
 538: Hack em negociação: personagem '%s' (account: %d) tentou negociar mais itens que possuía.
-539: Este jogador possui %d unidades de um item (id: %hu), e tentou negociar %d destes.
+539: Este jogador possui %d unidades de um item (id: %u), e tentou negociar %d destes.
 540: Este jogador foi bloqueado indefinidamente.
 
 // Anúncio de drop de Itens Raros/Furtar
@@ -744,14 +744,14 @@
 707: Você é VIP até: %s
 708: O jogador agora é VIP até: %s
 
-709: Item %hu foi removido do seu inventário.
-710: Item %hu foi removido do seu carrinho.
-711: Item %hu foi removido do seu armazém.
+709: Item %u foi removido do seu inventário.
+710: Item %u foi removido do seu carrinho.
+711: Item %u foi removido do seu armazém.
 
 // Item shop
-712: Você não possui %s suficiente (%hu).
+712: Você não possui %s suficiente (%u).
 713: Você não tem '%s' suficiente.
-714: Lista de Loja de Itens: %s (%hu)
+714: Lista de Loja de Itens: %s (%u)
 715: Lista de loja de pontos: '%s'
 716: Seu '%s' agora é: %d
 // MVP EXP reward message
@@ -1225,9 +1225,9 @@
 1189: Item não encontrado.
 1190: Você já está autorrecolhendo este item.
 1191: Sua lista de autorrecolhimento está cheia. Remova alguns itens com @autolootid -<nome ou ID do item>.
-1192: Autorrecolhendo item: '%s'/'%s' {%hu}
+1192: Autorrecolhendo item: '%s'/'%s' {%u}
 1193: Você atualmente não está autorrecolhendo este item.
-1194: Removido item: '%s'/'%s' {%hu} da sua lista de autorrecolhimento.
+1194: Removido item: '%s'/'%s' {%u} da sua lista de autorrecolhimento.
 1195: Você pode possuir %d itens na sua lista de autorrecolhimento.
 1196: Para adicionar um item a lista, use "@alootid +<nome ou ID do item>". Para remover um item, use "@alootid -<nome ou ID do item>".
 1197: "@alootid reset" irá limpar a sua lista de autorrecolhimento.
@@ -1376,7 +1376,7 @@
 
 // @iteminfo
 1276: Digite o nome/ID de um item (uso: @ii/@iteminfo <nome do item/ID>).
-1277: Item: '%s'/'%s'[%d] (%hu) Tipo: %s | Efeito Extra: %s
+1277: Item: '%s'/'%s'[%d] (%u) Tipo: %s | Efeito Extra: %s
 1278: Nenhum
 1279: Com script
 1280: NPC Compra:%dz, Venda:%dz | Peso: %.1f 

+ 6 - 6
conf/msg_conf/map_msg_rus.conf

@@ -94,7 +94,7 @@
 75: Война за Империум в настоящее время не идёт.
 76: Все навыки добавлены в дерево умений.
 77: Результаты поиска '%s' (название: ID):
-78: %s: %d
+78: %s: %u
 79: Всего найдено %d результатов.
 80: Введите отображаемое имя или ID/название монстра.
 81: Ваши права Администратора не позволяют выполнять данное действие на указанного игрока.
@@ -181,7 +181,7 @@
 166: Ни один предмет не был заточен.
 167: 1 предмет заточен.
 168: %d предметов заточено.
-169: Предмет (%hu: '%s') невозможно надеть.
+169: Предмет (%u: '%s') невозможно надеть.
 170: Предмет невозможно надеть.
 171: %d - пусто
 //172: НЕ ИСПОЛЬЗУЕТСЯ
@@ -512,7 +512,7 @@
 537: Персонаж '%s' (account: %d) пытается использовать бота (попытка определения поддельного монстра).
 // Сообщения о хаках при торгах
 538: Хак при торге: персонаж '%s' (account: %d) попытался выменять больше предметов чем у него есть.
-539: У игрока есть %d штук (id: %hu), и пытался выменять %d из них.
+539: У игрока есть %d штук (id: %u), и пытался выменять %d из них.
 540: Этот игрок был навсегда заблокирован.
 // Объявления о выбивании/краже редких предметов
 541: '%s' выбил %s's %s (шанс: %0.02f%%)
@@ -1055,9 +1055,9 @@
 1189: Предмет не найден.
 1190: Этот предмет вы уже собираете автоматически.
 1191: Список автоматической сборки полон. Удалите некоторые предметы через команду @autolootid -<ID/название предмета>.
-1192: Автоматическое поднятие предмета: '%s'/'%s' {%hu}
+1192: Автоматическое поднятие предмета: '%s'/'%s' {%u}
 1193: Этот предмет вы не собираете автоматически.
-1194: Предмет: '%s'/'%s' {%hu} удалён из списка автоматической сборки предметов.
+1194: Предмет: '%s'/'%s' {%u} удалён из списка автоматической сборки предметов.
 1195: Вы можете иметь %d предметов в списке автоматической сборки предметов.
 1196: Чтобы добавить предмет в список используйте "@alootid +<ID/название предмета>". Чтобы удалить предмет из списка: "@alootid -<ID/название предмета>".
 1197: Команда "@alootid reset" очистит список.
@@ -1206,7 +1206,7 @@
 
 // @iteminfo
 1276: Введите ID/название предмета (Использование: @ii/@iteminfo <ID/название предмета>).
-1277: Предмет: '%s'/'%s'[%d] (%hu) Тип: %s | Доп. эффект: %s
+1277: Предмет: '%s'/'%s'[%d] (%u) Тип: %s | Доп. эффект: %s
 1278: Пусто
 1279: Скрипт
 1280: НИП покупка:%d зени, продажа:%d зени | Вес: %.1f 

+ 15 - 11
conf/msg_conf/map_msg_spn.conf

@@ -92,7 +92,7 @@
 75: En estos momentos no hay ninguna guerra de clanes.
 76: Se han añadido todas las habilidades a tu árbol de habilidades.
 77: Estos son los resultados de la búsqueda de '%s' (nombre: ID):
-78: %s: %d
+78: %s: %u
 79: Total de resultados: %d
 80: Debes introducir el nombre del monstruo o su ID.
 81: Tu nivel de GM no te permite utilizar este comando en ese jugador.
@@ -179,7 +179,7 @@
 166: No se ha refinado ningún objeto.
 167: Se ha refinado 1 objeto.
 168: Se han refinado %d objetos.
-169: El objeto (%hu: '%s') no puede ser equipado.
+169: El objeto (%u: '%s') no puede ser equipado.
 170: No puedes equiparte ese objeto.
 171: %d - vacío
 //172: Has reemplazado tu lugar memorizado %d - %s (%d,%d).
@@ -545,7 +545,7 @@
 
 // Mensajes del sistema de intercambio de objetos
 538: Se ha detectado una irregularidad en el intercambio de objetos del personaje '%s' (cuenta: %d), está intentando intercambiar más de lo que tiene.
-539: Ese jugador tiene %d unidades del objeto (id: %hu), pero ha intentado intercambiar %d.
+539: Ese jugador tiene %d unidades del objeto (id: %u), pero ha intentado intercambiar %d.
 540: Ese jugador ha sido bloqueado.
 
 // Anuncios de consecución de objetos poco comunes y robos de objetos.
@@ -733,14 +733,14 @@
 707: Serás VIP hasta: %s
 708: El jugador será VIP hasta: %s
 
-709: El objeto %hu ha sido eliminado de tu inventario.
-710: El objeto %hu ha sido eliminado de tu carro.
-711: El objeto %hu ha sido eliminado de tu almacén.
+709: El objeto %u ha sido eliminado de tu inventario.
+710: El objeto %u ha sido eliminado de tu carro.
+711: El objeto %u ha sido eliminado de tu almacén.
 
 // Item shop
-712: No tienes suficientes %s (%hu).
+712: No tienes suficientes %s (%u).
 713: No tienes suficientes '%s'.
-714: Listado de la tienda de objetos: %s (%hu)
+714: Listado de la tienda de objetos: %s (%u)
 715: Listado de puntos de la tienda: '%s'
 716: Tu '%s' ahora es: %d
 
@@ -1194,9 +1194,9 @@
 1189: Ese objeto no existe.
 1190: Ese objeto ya estaba programado para ser recogido automáticamente.
 1191: Tu lista de recogida de objetos de forma automática está llena. Elimina alguno de esos objetos con @autolootid <nombre/ID del objeto>.
-1192: Recogiendo: '%s'/'%s' {%hu}
+1192: Recogiendo: '%s'/'%s' {%u}
 1193: No estás recogiendo ese objeto.
-1194: Has eliminado '%s'/'%s' {%hu} de tu lista de recogida de objetos.
+1194: Has eliminado '%s'/'%s' {%u} de tu lista de recogida de objetos.
 1195: Puedes almacenar %d objetos en tu lista de recogida de objetos.
 1196: Para añadir un nuevo objeto a la lista utiliza @alootid +<nombre/ID del objeto>. Para eliminar un objeto utiliza @alootid -<nombre/ID del objeto>.
 1197: "@alootid reset" reiniciará tu lista de recogida de objetos.
@@ -1345,7 +1345,7 @@
 
 // @iteminfo
 1276: Introduce el nombre/ID de un objeto (instrucciones: @ii/@iteminfo <nombre/ID del objeto>).
-1277: Objeto: '%s'/'%s'[%d] (%hu) Tipo: %s | Efecto: %s
+1277: Objeto: '%s'/'%s'[%d] (%u) Tipo: %s | Efecto: %s
 1278: Ninguno
 1279: Contiene código
 1280: Compra en NPC:%dz, Venta:%dz | Peso: %.1f
@@ -1666,5 +1666,9 @@
 1503: Has entrado en una zona PK.
 1504: Has entrado en una zona PK (segura hasta el nivel %d).
 
+// @changegm
+1513: No puedes delegar el liderazgo del clan durante el horario de WoE
+1514: Debes esperar un tiempo antes de poder designar un nuevo líder de clan
+
 //Traducciones personalizadas
 import: conf/msg_conf/import/map_msg_spn_conf.txt

+ 6 - 6
conf/msg_conf/map_msg_tha.conf

@@ -96,7 +96,7 @@
 75: War of Emperium äÁèä´é·Ó§Ò¹ÍÂÙèã¹¢³Ð¹Õé.
 76: ·Ø¡ Skill ä´é¶Ù¡à¾ÔèÁº¹µÑÇÅФäسàÃÕºÃéÍÂáÅéÇ.
 77: ¼ÅÅѾ¸ì¡Òäé¹ËÒâ´ÂÍéÒ§ÍÔ§¨Ò¡ '%s' (ª×èÍ: ÃËÑÊ):
-78: %s: %d
+78: %s: %u
 79: ¼ÅÅѾ¸ì %d ¢éÒ§µé¹.
 80: ¡ÃسÒÃкت×èÍ Monster ËÃ×Í ÃËÑÊ Monster.
 81: ÃдѺ GM ¢Í§¤Ø³ äÁèä´éÃѺ͹حҵãË館³ÊÒÁÒö´Óà¹Ô¹¡ÒáѺµÑÇÅФ÷ÕèÃкØä´é.
@@ -183,7 +183,7 @@
 166: äÁèÁÕ Item ·Õèä´éÃѺ¡ÒÃÍѾà¡Ãµ.
 167: ÁÕ 1 Item ·Õèä´éÃѺ¡ÒÃÍѾà¡Ãµ.
 168: ÁÕ %d Item ·Õèä´éÃѺ¡ÒÃÍѾà¡Ãµ.
-169: Item (%hu: '%s') ¹ÕéäÁèãªèÍØ»¡Ã³ìÊÇÁãÊè.
+169: Item (%u: '%s') ¹ÕéäÁèãªèÍØ»¡Ã³ìÊÇÁãÊè.
 170: äÁ辺 Item ªÔé¹¹Õéã¹°Ò¹¢éÍÁÙÅ.
 171: %d - ÇèÒ§
 //172: You replace previous memo position %d - %s (%d,%d).
@@ -506,7 +506,7 @@
 537: µÑÇÅФà '%s' (account: %d) ¾ÂÒÂÒÁ·Õè¨Ðãªé bot (Áѹ¾ÂÒÂÒÁ·Õè¨ÐµÃǨ¾º monster »ÅÍÁ).
 // Trade Spoof Messages
 538: Hack on trade: µÑÇÅФà '%s' (account: %d) ¾ÂÒÂÒÁ·Õè¨ÐáÅ¡à»ÅÕè¹ item ¨Ó¹Ç¹ÁÒ¡¡ÇèÒ·ÕèÁÕÍÂÙè.
-539: ¼ÙéàÅè¹ÁÕ item ¨Ó¹Ç¹ %d (id: %hu), áÅоÂÒÂÒÁ¨ÐáÅ¡à»ÅÕè¹㹨ӹǹ %d.
+539: ¼ÙéàÅè¹ÁÕ item ¨Ó¹Ç¹ %d (id: %u), áÅоÂÒÂÒÁ¨ÐáÅ¡à»ÅÕè¹㹨ӹǹ %d.
 540: ¼ÙéàÅè¹¹Õé¶Ù¡ËéÒÁáÅ¡à»ÅÕè¹.
 // Rare Items Drop/Steal announce
 541: '%s' à¡çº %s's %s (âÍ¡ÒÊ: %0.02f%%)
@@ -1048,9 +1048,9 @@
 1189: äÁ辺 Item ´Ñ§¡ÅèÒÇ.
 1190: ¤Ø³ä´éºÑ¹·Ö¡ item ¹Õéŧã¹ÃÒ¡ÒÃä»àÃÕºÃéÍÂáÅéÇ.
 1191: ÃÒ¡Òà autolootitem ¢Í§¤Ø³àµçÁáÅéÇ. ź item ºÒ§ÃÒ¡ÒÃÍÍ¡¡è͹´éÇ @autolootid -<ª×èÍ/ID item>.
-1192: ºÑ¹·Ö¡ item : '%s'/'%s' {%hu} ŧÃÒ¡Òà autolootitem ¢Í§¤Ø³.
+1192: ºÑ¹·Ö¡ item : '%s'/'%s' {%u} ŧÃÒ¡Òà autolootitem ¢Í§¤Ø³.
 1193: ¤Ø³äÁèä´éºÑ¹·Ö¡ item ¹Õéŧã¹ÃÒ¡ÒÃÍÂÙèáÅéÇ.
-1194: ź item : '%s'/'%s' {%hu} ¨Ò¡ÃÒ¡Òà autolootitem ¢Í§¤Ø³.
+1194: ź item : '%s'/'%s' {%u} ¨Ò¡ÃÒ¡Òà autolootitem ¢Í§¤Ø³.
 1195: ¤Ø³ÊÒÁÒöºÑ¹·Ö¡ä´é %d item 㹡ÒÃÃÒ¡Òà autolootitem.
 1196: 㹡ÒÃà¾ÔèÁÃÒ¡ÒÃ, ãªé "@alootid +<ª×èÍ/ID item>". 㹡ÒÃźÃÒ¡ÒÃ, ãªé "@alootid -<ª×èÍ/ID item>".
 1197: "@alootid reset" 㹡ÒÃÅéÒ§ÃÒ¡Òà autolootitem ¢Í§¤Ø³.
@@ -1199,7 +1199,7 @@
 
 // @iteminfo
 1276: â»Ã´Ãкت×èÍ/ID item (ÇÔ¸Õãªé: @ii/@iteminfo <ª×èÍ/ID item>).
-1277: Item: '%s'/'%s'[%d] (%hu) Type: %s | Extra Effect: %s
+1277: Item: '%s'/'%s'[%d] (%u) Type: %s | Extra Effect: %s
 1278: None
 1279: With script
 1280: NPC Buy:%dz, Sell:%dz | Weight: %.1f

+ 42 - 5
db/const.txt

@@ -48,7 +48,7 @@ RDMOPT_ATTR_TOLERACE_SAINT	31
 RDMOPT_ATTR_TOLERACE_DARKNESS	32
 RDMOPT_ATTR_TOLERACE_TELEKINESIS	33
 RDMOPT_ATTR_TOLERACE_UNDEAD	34
-RDMOPT_ATTR_TOLERACE_ALL	35
+RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING	35
 RDMOPT_DAMAGE_PROPERTY_NOTHING_USER	36
 RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET	37
 RDMOPT_DAMAGE_PROPERTY_WATER_USER	38
@@ -99,7 +99,7 @@ RDMOPT_BODY_ATTR_SAINT	82
 RDMOPT_BODY_ATTR_DARKNESS	83
 RDMOPT_BODY_ATTR_TELEKINESIS	84
 RDMOPT_BODY_ATTR_UNDEAD	85
-RDMOPT_BODY_ATTR_ALL	86
+//RDMOPT_BODY_ATTR_ALL	86
 RDMOPT_RACE_TOLERACE_NOTHING	87
 RDMOPT_RACE_TOLERACE_UNDEAD	88
 RDMOPT_RACE_TOLERACE_ANIMAL	89
@@ -186,8 +186,8 @@ RDMOPT_HEAL_MODIFY_PERCENT	169
 RDMOPT_DEC_SPELL_CAST_TIME	170
 RDMOPT_DEC_SPELL_DELAY_TIME	171
 RDMOPT_DEC_SP_CONSUMPTION	172
-RDMOPT_HP_DRAIN	173
-RDMOPT_SP_DRAIN	174
+//RDMOPT_HP_DRAIN	173
+//RDMOPT_SP_DRAIN	174
 RDMOPT_WEAPON_ATTR_NOTHING	175
 RDMOPT_WEAPON_ATTR_WATER	176
 RDMOPT_WEAPON_ATTR_GROUND	177
@@ -206,7 +206,44 @@ RDMOPT_MDAMAGE_SIZE_LARGE_TARGET	189
 RDMOPT_MDAMAGE_SIZE_SMALL_USER	190
 RDMOPT_MDAMAGE_SIZE_MIDIUM_USER	191
 RDMOPT_MDAMAGE_SIZE_LARGE_USER	192
-//RDMOPT_ATTR_TOLERACE_ALL	193
+RDMOPT_ATTR_TOLERACE_ALL	193
+RDMOPT_RACE_WEAPON_TOLERACE_NOTHING	194
+RDMOPT_RACE_WEAPON_TOLERACE_UNDEAD	195
+RDMOPT_RACE_WEAPON_TOLERACE_ANIMAL	196
+RDMOPT_RACE_WEAPON_TOLERACE_PLANT	197
+RDMOPT_RACE_WEAPON_TOLERACE_INSECT	198
+RDMOPT_RACE_WEAPON_TOLERACE_FISHS	199
+RDMOPT_RACE_WEAPON_TOLERACE_DEVIL	200
+RDMOPT_RACE_WEAPON_TOLERACE_HUMAN	201
+RDMOPT_RACE_WEAPON_TOLERACE_ANGEL	202
+RDMOPT_RACE_WEAPON_TOLERACE_DRAGON	203
+//RDMOPT_RANGE_WEAPON_ATTACK_DAMAGE_TARGET	204
+//RDMOPT_RANGE_WEAPON_ATTACK_DAMAGE_USER	205
+RDMOPT_RACE_TOLERACE_PLAYER_HUMAN	206
+RDMOPT_RACE_TOLERACE_PLAYER_DORAM	207
+RDMOPT_RACE_DAMAGE_PLAYER_HUMAN	208
+RDMOPT_RACE_DAMAGE_PLAYER_DORAM	209
+RDMOPT_RACE_MDAMAGE_PLAYER_HUMAN	210
+RDMOPT_RACE_MDAMAGE_PLAYER_DORAM	211
+RDMOPT_RACE_CRI_PERCENT_PLAYER_HUMAN	212
+RDMOPT_RACE_CRI_PERCENT_PLAYER_DORAM	213
+RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_HUMAN	214
+RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_DORAM	215
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_HUMAN	216
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_DORAM	217
+//RDMOPT_REFLECT_DAMAGE_PERCENT	218
+RDMOPT_MELEE_ATTACK_DAMAGE_TARGET	219
+RDMOPT_MELEE_ATTACK_DAMAGE_USER	220
+//RDMOPT_ADDSKILLMDAMAGE_NOTHING	221
+//RDMOPT_ADDSKILLMDAMAGE_WATER	222
+//RDMOPT_ADDSKILLMDAMAGE_GROUND	223
+//RDMOPT_ADDSKILLMDAMAGE_FIRE	224
+//RDMOPT_ADDSKILLMDAMAGE_WIND	225
+//RDMOPT_ADDSKILLMDAMAGE_POISON	226
+//RDMOPT_ADDSKILLMDAMAGE_SAINT	227
+//RDMOPT_ADDSKILLMDAMAGE_DARKNESS	228
+//RDMOPT_ADDSKILLMDAMAGE_TELEKINESIS	229
+//RDMOPT_ADDSKILLMDAMAGE_UNDEAD	230
 
 SWORDCLAN	1
 ARCWANDCLAN	2

+ 1 - 1
db/import-tmpl/item_db.txt

@@ -26,7 +26,7 @@
 //5264,Aussie_Flag_Hat,Australian Flag Hat,4,20,,500,,4,,0,0xFFFFFFFF,63,2,256,,0,1,304,{ bonus bAllStats,2; },{},{}
 //5356,Pumpkin_Hat_H,Pumpkin Hat,4,20,,200,,2,,0,0xFFFFFFFF,63,2,256,,0,1,206,{ bonus bAllStats,2; bonus2 bSubRace,RC_Demon,5; bonus2 bMagicAddRace,RC_Demon,5; },{},{}
 //5384,Santa_Hat_1,Twin Pompom By JB,4,20,,200,,2,,1,0xFFFFFFFF,63,2,256,,20,1,390,{ bonus bLuk,3; bonus2 bResEff,Eff_Curse,2000; bonus bVariableCastrate,-2; bonus bAspdRate,4; bonus2 bAddMonsterDropItem,539,100; bonus2 bAddMonsterDropItem,529,200; bonus2 bAddMonsterDropItem,530,200; autobonus "{ bonus bCritical,10; }",10,5000; },{},{}
-//5811,Santa_Beard,Santa Beard,4,20,,100,,5,,0,0xFFFFFFFF,63,2,1,,0,0,25,{ bonus2 bSubRace,RC_Brute,5; },{},{}
+//5811,Santa_Beard,Santa Beard,4,20,,100,,5,,0,0xFFFFFFFF,63,2,1,,0,0,25,{ bonus2 bSubRace,RC_Brute,5; bonus2 bSubRace,RC_Player_Doram,5; },{},{}
 
 //11702,Moon_Cookie,Moon Cookie,11,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_end SC_POISON; sc_end SC_SILENCE; sc_end SC_BLIND; sc_end SC_CONFUSION; sc_end SC_CURSE; sc_end SC_HALLUCINATION; itemskill "AL_BLESSING",7; },{},{}
 //12131,Lucky_Potion,Lucky Potion,0,2,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_LUKFOOD,180000,15; },{},{}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
db/import-tmpl/job_exp.txt


+ 12 - 2
db/import-tmpl/quest_db.yml

@@ -30,8 +30,18 @@
 #                   Specify without "+" for the exact time the quest expires using "d" (optionnal), [0-23]"h" (required), [0-59]"mn" (optionnal), [0-59]"s" (optionnal) format.
 #                   Please note the number before "d" only shift the exact timer to the given day(s).
 #   Targets:        Quest objective target. (Default: null)
-#     - Mob         Monster to kill.
-#       Count       Amount of monsters to kill.
+#                   The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
+#                   If Mob is supplied, Count is required and the other fields are ignored.
+#                   If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
+#                   If Id is supplied, Count is required for each new entry.
+#     - Mob         Monster to kill (aegis monster name).
+#       Count       Amount of monsters to kill. Set to 0 to skip the target on import.
+#       Id          Unique target index for the quest Id. Requires a positive number.
+#       Race        Monster race target (default All). Valids race are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
+#       Size        Monster size target (default All). Valids size are Small, Medium, Large, All.
+#       Element     Monster element target (default All). Valids elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
+#       MinLevel    Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
+#       MaxLevel    Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
 #   Drops:          Quest item drop targets. (Default: null)
 #     - Mob         Monster to kill. 0 will apply to all monsters. (Default: 0)
 #       Item        Item to drop.

+ 10 - 10
db/pre-re/item_combo_db.txt

@@ -66,18 +66,18 @@
 2357:2421:2524:5171,{ bonus bAllStats,1; }
 2358:5153,{ bonus bLuk,6; bonus bFlee,5; bonus bInt,2; }
 2359:2654,{ bonus bUseSPrate,-20; bonus bMaxHP,300; }
-2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FROSTNOVA",10; }
+2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player_Human,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FROSTNOVA",10; }
 2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
 2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
 2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
 2375:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
-2376:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2377:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor; }
-2378:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2379:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2380:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2381:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
-2382:2437:2540,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
+2376:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player_Human,300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2377:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player_Human,300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor; }
+2378:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player_Human,300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2379:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player_Human,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2380:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player_Human,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2381:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player_Human,300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
+2382:2437:2540,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player_Human,300; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
 2387:2440:2744,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bCastrate,-3; bonus bDelayrate,-15; }
 2390:2749,{ bonus bFlee2,5; }
 2394:2444:2549,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSkillHeal2,"AM_POTIONPITCHER",3; bonus2 bSkillHeal2,"AL_HEAL",3; bonus2 bSkillHeal2,"PR_SANCTUARY",3; }
@@ -137,7 +137,7 @@
 4153:4247:4273,{ bonus3 bAddMonsterDropItem,544,RC_Fish,3000; bonus2 bAddEle,Ele_Water,30; }
 4168:4169,{ bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus bCastrate,-10; }
 4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPDrainValue,1; if(BaseClass==Job_Thief) bonus bNoGemStone; }
-4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bComaRace,RC_Brute,100; } }
+4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bComaRace,RC_Brute,100; bonus2 bComaRace,RC_Player_Doram,100; } }
 4178:4234:4252:4297:4381,{ bonus bDex,5; bonus2 bSkillAtk,"CG_ARROWVULCAN",5; bonus2 bSkillAtk,"DC_THROWARROW",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; if(BaseJob==Job_Bard||BaseJob==Job_Dancer) bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",2,50; }
 4185:4217:4280:4293:4312,{ bonus bVit,10; bonus bCastrate,-10; bonus bUseSPRate,-10; if(BaseClass==Job_Acolyte) { bonus2 bExpAddRace,RC_Undead,5; bonus2 bExpAddRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,30; bonus2 bSubRace,RC_Demon,30; } }
 4185:4293:4312:4332,{ bonus bStr,3; bonus bMaxSP,80; bonus bBaseAtk,25; bonus3 bAutoSpell,"AL_CRUCIS",5,10; bonus2 bSkillAtk,"MO_EXTREMITYFIST",10; if(BaseJob==Job_Monk) { bonus bUseSPrate,-10; bonus bNoCastCancel; } }
@@ -152,7 +152,7 @@
 4268:4277,{ bonus bBaseAtk,20; bonus bLuk,3; }
 4311:4319:4331:4371,{ bonus bInt,1; bonus bStr,1; bonus bDef,2; bonus bSPrecovRate,10; bonus2 bSkillAtk,"PA_SHIELDCHAIN",10; bonus2 bSkillAtk,"PA_SACRIFICE",10; bonus bCastrate,-10; if(BaseJob==Job_Crusader) bonus bDefEle,Ele_Holy; }
 4323:4324,{ bonus3 bAutoSpell,"MG_FROSTDIVER",3,250; }
-4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; bonus2 bSPGainRace,RC_Player,2; }
+4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; bonus2 bSPGainRace,RC_Player_Human,2; }
 5040:5442,{ bonus bAspdRate,3; bonus bCastrate,3; }
 5068:5653,{ bonus bStr,1; bonus bAtkRate,5; }
 5074:5653,{ bonus bStr,1; bonus bAspdRate,2; }

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 177 - 177
db/pre-re/item_db.txt


+ 3 - 4
db/pre-re/mob_skill_db.txt

@@ -714,12 +714,11 @@
 1141,Marina@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,6,
 1141,Marina@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,0,19,,,,,,
 1141,Marina@NPC_WATERATTACK,attack,184,2,500,500,5000,no,target,always,0,,,,,,6,
-1142,Marine Sphere@NPC_RUN,idle,354,7,10000,0,30000,no,master,alchemist,,,,,,,26,
-1142,Marine Sphere@NPC_SELFDESTRUCTION,any,173,1,10000,3000,0,no,self,afterskill,354,,,,,,,
+1142,Marine Sphere@NPC_RANDOMMOVE,idle,331,1,10000,0,30000,yes,target,alchemist,,,,,,,,
+1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,10000,3000,0,yes,self,alchemist,,,,,,,,
 1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,500,2000,5000,no,self,myhpltmaxrate,99,,,,,,,
 1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,10000,2000,5000,no,self,skillused,173,,,,,,,
-//1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,10000,0,0,yes,self,always,0,,,,,,,
-//1142,Marine Sphere@NPC_SPEEDUP,any,332,1,10000,0,700,yes,self,always,0,,,,,,,
+1142,Marine Sphere@NPC_SPEEDUP,idle,332,1,10000,0,700,yes,target,always,,,,,,,,
 1143,Marionette@HT_FREEZINGTRAP,idle,121,5,500,0,300000,yes,around2,always,0,,,,,,29,
 1143,Marionette@MG_FIREWALL,chase,18,5,500,500,5000,yes,target,always,0,,,,,,2,
 1143,Marionette@NPC_TELEKINESISATTACK,attack,191,5,500,0,5000,yes,target,always,0,,,,,,6,

+ 6 - 5
db/pre-re/pet_db.yml

@@ -461,8 +461,8 @@ Body:
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bAddRace,RC_Demihuman,2;
         bonus2 bMagicAddRace,RC_DemiHuman,2;
-        bonus2 bAddRace,RC_Player,2;
-        bonus2 bMagicAddRace,RC_Player,2;
+        bonus2 bAddRace,RC_Player_Human,2;
+        bonus2 bMagicAddRace,RC_Player_Human,2;
       }
   - Mob: ALICE
     TameItem: Sway_Apron
@@ -478,7 +478,7 @@ Body:
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMdef,1;
         bonus2 bSubRace,RC_DemiHuman,1;
-        bonus2 bSubRace,RC_Player,1;
+        bonus2 bSubRace,RC_Player_Human,1;
       }
   - Mob: EVENT_RICECAKE
     EggItem: Rice_Cake_Egg
@@ -522,7 +522,7 @@ Body:
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bDef,1;
         bonus2 bSubRace,RC_DemiHuman,1;
-        bonus2 bSubRace,RC_Player,1;
+        bonus2 bSubRace,RC_Player_Human,1;
       }
   - Mob: ECLIPSE_P
     EggItem: Spring_Rabbit_Egg
@@ -670,7 +670,7 @@ Body:
       
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bAddRace,RC_DemiHuman,3;
-        bonus2 bAddRace,RC_Player,3;
+        bonus2 bAddRace,RC_Player_Human,3;
       }
   - Mob: SUCCUBUS
     TameItem: Boy's_Naivety
@@ -839,6 +839,7 @@ Body:
       
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bSubRace,RC_Brute,3;
+        bonus2 bSubRace,RC_Player_Doram,3;
       }
   - Mob: BACSOJIN_
     TameItem: Shiny_Wing_Gown

+ 12 - 2
db/pre-re/quest_db.yml

@@ -30,8 +30,18 @@
 #                   Specify without "+" for the exact time the quest expires using "d" (optionnal), [0-23]"h" (required), [0-59]"mn" (optionnal), [0-59]"s" (optionnal) format.
 #                   Please note the number before "d" only shift the exact timer to the given day(s).
 #   Targets:        Quest objective target. (Default: null)
-#     - Mob         Monster to kill.
-#       Count       Amount of monsters to kill.
+#                   The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
+#                   If Mob is supplied, Count is required and the other fields are ignored.
+#                   If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
+#                   If Id is supplied, Count is required for each new entry.
+#     - Mob         Monster to kill (aegis monster name).
+#       Count       Amount of monsters to kill. Set to 0 to skip the target on import.
+#       Id          Unique target index for the quest Id. Requires a positive number.
+#       Race        Monster race target (default All). Valids race are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
+#       Size        Monster size target (default All). Valids size are Small, Medium, Large, All.
+#       Element     Monster element target (default All). Valids elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
+#       MinLevel    Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
+#       MaxLevel    Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
 #   Drops:          Quest item drop targets. (Default: null)
 #     - Mob         Monster to kill. 0 will apply to all monsters. (Default: 0)
 #       Item        Item to drop.

+ 31 - 0
db/pre-re/skill_db.yml

@@ -15306,10 +15306,12 @@ Body:
     DamageFlags:
       Splash: true
       SplashSplit: true
+      IgnoreDefense: true
     Flags:
       IsNpc: true
       TargetTrap: true
       ShowScale: true
+      IgnoreLandProtector: true
     Hit: Multi_Hit
     HitCount: 1
     SplashArea:
@@ -15333,6 +15335,34 @@ Body:
         Area: 11
       - Level: 10
         Area: 13
+    Duration1: 910
+    Unit:
+      Id: Earthquake
+      Range:
+        - Level: 1
+          Size: 5
+        - Level: 2
+          Size: 7
+        - Level: 3
+          Size: 9
+        - Level: 4
+          Size: 11
+        - Level: 5
+          Size: 13
+        - Level: 6
+          Size: 5
+        - Level: 7
+          Size: 7
+        - Level: 8
+          Size: 9
+        - Level: 9
+          Size: 11
+        - Level: 10
+          Size: 13
+      Interval: 300
+      Target: Enemy
+      Flag:
+        PathCheck: true
   - Id: 654
     Name: NPC_FIREBREATH
     Description: Fire Breath
@@ -27433,6 +27463,7 @@ Body:
     HitCount: 1
     Requires:
       SpCost: 40
+      State: Cart
   - Id: 2552
     Name: RL_RICHS_COIN
     Description: Rich's Coin

+ 12 - 2
db/quest_db.yml

@@ -30,8 +30,18 @@
 #                   Specify without "+" for the exact time the quest expires using "d" (optionnal), [0-23]"h" (required), [0-59]"mn" (optionnal), [0-59]"s" (optionnal) format.
 #                   Please note the number before "d" only shift the exact timer to the given day(s).
 #   Targets:        Quest objective target. (Default: null)
-#     - Mob         Monster to kill.
-#       Count       Amount of monsters to kill.
+#                   The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
+#                   If Mob is supplied, Count is required and the other fields are ignored.
+#                   If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
+#                   If Id is supplied, Count is required for each new entry.
+#     - Mob         Monster to kill (aegis monster name).
+#       Count       Amount of monsters to kill. Set to 0 to skip the target on import.
+#       Id          Unique target index for the quest Id. Requires a positive number.
+#       Race        Monster race target (default All). Valids race are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
+#       Size        Monster size target (default All). Valids size are Small, Medium, Large, All.
+#       Element     Monster element target (default All). Valids elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
+#       MinLevel    Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
+#       MaxLevel    Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
 #   Drops:          Quest item drop targets. (Default: null)
 #     - Mob         Monster to kill. 0 will apply to all monsters. (Default: 0)
 #       Item        Item to drop.

+ 31 - 6
db/re/instance_db.yml

@@ -249,12 +249,12 @@ Body:
       Map: 1@uns
       X: 145
       Y: 35
-#  - Id: 30
-#    Name: Charleston in Distress
-#    Enter:
-#      Map: 1@mcd
-#      X: 127
-#      Y: 282
+  - Id: 30
+    Name: Charleston in Distress
+    Enter:
+      Map: 1@mcd
+      X: 127
+      Y: 282
   - Id: 31
     Name: Ritual of Blessing
     Enter:
@@ -276,3 +276,28 @@ Body:
 #    AdditionalMaps:
 #      1@sthc: true
 #      1@sthd: true
+  - Id: 34
+    Name: Heart Hunter War Base 1
+    Enter:
+      Map: 1@swat
+      X: 35
+      Y: 65
+  - Id: 35
+    Name: Heart Hunter War Base 2
+    Enter:
+      Map: 1@swat
+      X: 73
+      Y: 118
+# There is officially only one (buggy) instance 'Werner Laboratory central room'
+  - Id: 36
+    Name: Werner Laboratory central room#1
+    Enter:
+      Map: 1@slw
+      X: 187
+      Y: 24
+  - Id: 37
+    Name: Werner Laboratory central room#2
+    Enter:
+      Map: 1@slw
+      X: 187
+      Y: 24

+ 254 - 99
db/re/item_combo_db.txt

@@ -56,21 +56,23 @@
 1580:2186,{ bonus bAspdRate,15; }
 1615:18539,{ bonus bMatk,10*getequiprefinerycnt(EQI_HAND_R); bonus bVariableCastrate,-10; }
 1616:2515,{ bonus bSpeedRate,25; }
+1617:19020,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatk,.@r*10; if (.@r >= 10) { autobonus "{ bonus bVariableCastrate,-50; }",100,5000,BF_MAGIC; /* Confirm: Success rate? */ } }
 1618:2509,{ bonus bMaxHP,300; bonus bMatkRate,min(5, getequiprefinerycnt(EQI_HAND_R)-5); bonus2 bSubEle,Ele_Neutral,min(30, getequiprefinerycnt(EQI_GARMENT)*3); }
 1618:2509:19139,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatkRate,1; if (.@r >= 5) { bonus bMatkRate,2; if (.@r >= 7) { bonus bMatkRate,2; } } }
 1618:2535,{ bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,25; }
-1618:19020,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMatk,.@r; if (.@r >= 10) { autobonus "{ bonus bVariableCastrate,-50; }",100,5000,BF_MAGIC; /* Confirm: Success rate? */ } }
+1618:19020,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatk,.@r*10; if (.@r >= 10) { autobonus "{ bonus bVariableCastrate,-50; }",100,5000,BF_MAGIC; /* Confirm: Success rate? */ } }
 1618:19139,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatk,10*.@r; if (.@r>=10) { bonus bVariableCastrate,-3; bonus2 bSkillAtk,"WL_EARTHSTRAIN",15; bonus2 bSkillAtk,"WL_CHAINLIGHTNING",15; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",70; bonus2 bSkillAtk,"WZ_JUPITEL",70; } if (BaseLevel>=100) { bonus bVariableCastrate,-3; bonus2 bSkillAtk,"WL_EARTHSTRAIN",30; bonus2 bSkillAtk,"WL_CHAINLIGHTNING",30; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",140; bonus2 bSkillAtk,"WZ_JUPITEL",140; } }
 1618:20813,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_GARMENT)*3; }
 1618:20813:19139,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatkRate,1; if (.@r >= 5) { bonus bMatkRate,2; if (.@r >= 7) { bonus bMatkRate,2; } } }
 1618:20847,{ .@weapon = getequiprefinerycnt(EQI_HAND_R); .@eq = getequiprefinerycnt(EQI_GARMENT); .@weapon = min(.@weapon,10); bonus bMaxHP,1000; bonus bMatk,(-50+(20*.@weapon)); bonus bDelayrate,-(3*(.@weapon/3)); bonus2 bSubEle,Ele_Neutral,(min(.@eq,10)/2); }
+1619:19020,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatk,.@r*10; if (.@r >= 10) { autobonus "{ bonus bVariableCastrate,-50; }",100,5000,BF_MAGIC; /* Confirm: Success rate? */ } }
 1620:19139,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatk,10*.@r; if (.@r>=10) { bonus bVariableCastrate,-3; bonus2 bSkillAtk,"WL_EARTHSTRAIN",15; bonus2 bSkillAtk,"WL_CHAINLIGHTNING",15; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",70; bonus2 bSkillAtk,"WZ_JUPITEL",70; } if (BaseLevel>=100) { bonus bVariableCastrate,-3; bonus2 bSkillAtk,"WL_EARTHSTRAIN",30; bonus2 bSkillAtk,"WL_CHAINLIGHTNING",30; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",140; bonus2 bSkillAtk,"WZ_JUPITEL",140; } }
 1620:20813,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_GARMENT)*3; }
 1620:20813:19139,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatkRate,1; if (.@r >= 5) { bonus bMatkRate,2; if (.@r >= 7) { bonus bMatkRate,2; } } }
 1620:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; if(getequiprefinerycnt(EQI_GARMENT) > 10) { bonus2 bSubEle,Ele_Neutral,30; } else { bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_GARMENT)*3; } }
 1620:2509:19139,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatkRate,1; if (.@r >= 5) { bonus bMatkRate,2; if (.@r >= 7) { bonus bMatkRate,2; } } }
 1620:2535,{ bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,25; }
-1620:19020,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMatk,.@r; if (.@r >= 10) { autobonus "{ bonus bVariableCastrate,-50; }",100,5000,BF_MAGIC; /* Confirm: Success rate? */ } }
+1620:19020,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bMatk,.@r*10; if (.@r >= 10) { autobonus "{ bonus bVariableCastrate,-50; }",100,5000,BF_MAGIC; /* Confirm: Success rate? */ } }
 1629:5045,{ bonus bDex,2; bonus bInt,2; bonus bSPrecovRate,5; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R); }
 1631:2129,{ bonus2 bSkillAtk,"PR_MAGNUS",20; bonus3 bAutoSpellWhenHit,"PR_TURNUNDEAD",1,20; }
 1636:18539,{ bonus bMatk,10*getequiprefinerycnt(EQI_HAND_R); bonus bVariableCastrate,-10; }
@@ -182,18 +184,18 @@
 2358:5153,{ bonus bLuk,6; bonus bFlee,5; bonus bInt,2; }
 2359:2654,{ bonus bUseSPrate,-20; bonus bMaxHP,300; }
 2365:2881,{ bonus bDelayRate,-15; }
-2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FROSTNOVA",10; }
+2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player_Human,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FROSTNOVA",10; }
 2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
 2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
 2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
 2375:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
-2376:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2377:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor; }
-2378:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
-2379:2436:2539,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2380:2436:2539,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
-2381:2436:2539,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
-2382:2437:2540,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
+2376:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player_Human,200; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2377:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player_Human,200; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor; }
+2378:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player_Human,200; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; }
+2379:2436:2539,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player_Human,200; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2380:2436:2539,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player_Human,200; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; }
+2381:2436:2539,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player_Human,200; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
+2382:2437:2540,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player_Human,200; bonus bDex,3; bonus bMaxHPRate,12; bonus bLongAtkDef,10; bonus bDelayRate,-25; }
 2387:2440:2744,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; bonus bVariableCastrate,-3; bonus bDelayrate,-15; }
 2390:2749,{ bonus bFlee2,5; }
 2394:2444:2549,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSkillHeal2,"AM_POTIONPITCHER",3; bonus2 bSkillHeal2,"AL_HEAL",3; bonus2 bSkillHeal2,"PR_SANCTUARY",3; }
@@ -275,9 +277,9 @@
 2481:2731,{ bonus bMatkRate,getequiprefinerycnt(EQI_SHOES)/2; bonus bVariableCastrate,-(getequiprefinerycnt(EQI_SHOES)/2); }
 2481:10031,{ bonus bCritical,(getequiprefinerycnt(EQI_SHOES)/2)*10; }
 2482:2585:2895:2896:15045:18578,{ bonus bMaxHP,500; bonus bMaxSP,300; bonus bBaseAtk,10; bonus bDef,10; }
-2483:2586:15046,{ bonus bVit,5; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; }
-2484:2586:15047,{ bonus bDex,5; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; }
-2485:2587:15048,{ bonus bInt,5; bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; }
+2483:2586:15046,{ bonus bVit,5; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player_Human,15; }
+2484:2586:15047,{ bonus bDex,5; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player_Human,15; }
+2485:2587:15048,{ bonus bInt,5; bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player_Human,15; }
 2507:15146,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus bMaxSPrate,10+.@r; bonus bFlee,10+.@r; }
 2507:15163,{ bonus bVariableCastrate,-(2*getequiprefinerycnt(EQI_ARMOR)); bonus bNoCastCancel; }
 2509:15146,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,10+.@r; bonus bMatkRate,2+.@r; }
@@ -295,7 +297,7 @@
 2527:13001,{ bonus2 bAddRace,RC_Dragon,5; }
 2527:13030,{ bonus2 bAddRace,RC_Dragon,5; }
 2535:15163,{ bonus5 bAutoSpell,"AL_HEAL",1,(10*getequiprefinerycnt(EQI_ARMOR)),BF_MAGIC,0; }
-2584:5579,{ .@r = getequiprefinerycnt(EQI_GARMENT); if(.@r>=5) { skill "TF_DOUBLE",1; bonus bDoubleRate,25; } else if(.@r>=7) { .@bonus = max(getskilllv("TF_DOUBLE"),5); skill "TF_DOUBLE",.@bonus; bonus bDoubleRate,.@bonus*5; } }
+2584:5579,{ .@r = getequiprefinerycnt(EQI_GARMENT); if(.@r>=7) { .@bonus = max(getskilllv("TF_DOUBLE"),5); skill "TF_DOUBLE",.@bonus; bonus bDoubleRate,.@bonus*5; } else if(.@r>=5) { skill "TF_DOUBLE",1; bonus bDoubleRate,25; } }
 2597:28342,{ bonus bCritAtkRate,5; bonus bCritical,10; .@r = getequiprefinerycnt(EQI_GARMENT); if (.@r > 7) bonus bCritAtkRate,4; else if (.@r > 5) bonus bCritAtkRate,3; }
 //2598:Ramor Shield,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSubRace,RC_Undead,.@r; bonus2 bSubRace,RC_DemiHuman,.@r; }
 2607:2677,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
@@ -365,7 +367,7 @@
 2782:19156,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r < 4) { .@a = 4; } else { .@a = min(.@r,10); } bonus3 bAutoSpell,"WZ_WATERBALL",.@a,(.@a*10); }
 2826:2827:5577,{ autobonus "{ bonus bAspdRate,2; }",50,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bMaxHP,BaseLevel*15; bonus bMaxSP,(BaseLevel*12)/10; bonus2 bAddClass,Class_All,3; }
 28513:18848,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); .@a = min(.@r,10); bonus bAllStats,.@a; bonus bFixedCastrate,-50; if (.@r>=7) { bonus2 bMagicAddClass,Class_Boss,20; } }
-28513:18849,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAllStats,.@r; bonus2 bMagicAddClass,Class_Boss,10; bonus bFixedCastrate,-50; if (.@r>=7) { bonus2 bMagicAddClass,Class_Boss,20; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; } if (.@r>=9) { bonus2 bMagicAddClass,Class_Boss,20; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; } }
+28513:18849,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAllStats,.@r; bonus2 bMagicAddClass,Class_Boss,10; bonus bFixedCastrate,-50; if (.@r>=7) { bonus2 bMagicAddClass,Class_Boss,20; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player_Human,10; } if (.@r>=9) { bonus2 bMagicAddClass,Class_Boss,20; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player_Human,2; } }
 28513:2980,{ bonus bBaseAtk,50; bonus bMatk,50; bonus bAspd,2; bonus3 bAutoSpell,"SO_EARTHGRAVE",1,20; bonus3 bAutoSpell,"SO_VARETYR_SPEAR",1,20; bonus3 bAutoSpell,"WL_RECOGNIZEDSPELL",1,10; bonus3 bAutoSpell,"WZ_QUAGMIRE",3,50; }
 28520:15061,{ .@r = getequiprefinerycnt(EQI_ARMOR); if (.@r >= 7) { .@val = 5000; } else { .@val = 2500; } bonus2 bResEff,Eff_Stun,.@val; bonus2 bResEff,Eff_Silence,.@val; }
 28520:15061:18728:20700:2495,{ bonus bFlee2,30; bonus2 bSubEle,Ele_Water,15; bonus2 bResEff,Eff_Freeze,10000; }
@@ -373,13 +375,13 @@
 28520:20700,{ if (getequiprefinerycnt(EQI_GARMENT)>=7) .@val = 2; else .@val = 1; bonus2 bSubEle,Ele_Fire,25*.@val; bonus2 bSubEle,Ele_Water,25*.@val; }
 28520:2495,{ if (getequiprefinerycnt(EQI_SHOES)>=7) .@val = 2; else .@val = 1; bonus bMaxHPrate,10*.@val; bonus bMaxSPrate,10*.@val; }
 28520:4525,{ bonus bMdef,15; bonus bFlee,100; bonus bMaxHPrate,15; skill "RG_TUNNELDRIVE",1; bonus bIntravision; }
-28521:1387,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; if (.@r>=7) { bonus2 bAddClass,Class_Boss,5; bonus2 bSkillAtk,"WS_CARTTERMINATION",5; } if (.@r>=9) { bonus2 bAddClass,Class_Boss,10; bonus2 bSkillAtk,"WS_CARTTERMINATION",10; } }
-28521:1490,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; if (.@r>=7) { bonus2 bAddClass,Class_Boss,5; bonus2 bSkillAtk,"LK_SPIRALPIERCE",5; bonus2 bSkillAtk,"RK_SONICWAVE",5; } if (.@r>=9) { bonus2 bAddClass,Class_Boss,10; bonus2 bSkillAtk,"LK_SPIRALPIERCE",10; bonus2 bSkillAtk,"RK_SONICWAVE",10; } }
+28521:1387,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player_Human,3; if (.@r>=7) { bonus2 bAddClass,Class_Boss,5; bonus2 bSkillAtk,"WS_CARTTERMINATION",5; } if (.@r>=9) { bonus2 bAddClass,Class_Boss,10; bonus2 bSkillAtk,"WS_CARTTERMINATION",10; } }
+28521:1490,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player_Human,3; if (.@r>=7) { bonus2 bAddClass,Class_Boss,5; bonus2 bSkillAtk,"LK_SPIRALPIERCE",5; bonus2 bSkillAtk,"RK_SONICWAVE",5; } if (.@r>=9) { bonus2 bAddClass,Class_Boss,10; bonus2 bSkillAtk,"LK_SPIRALPIERCE",10; bonus2 bSkillAtk,"RK_SONICWAVE",10; } }
 28521:18122,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bLongAtkRate,2*(readparam(bStr)/10); if (.@r>=7) { bonus2 bAddClass,Class_Boss,5; bonus2 bSkillAtk,"RA_ARROWSTORM",5; bonus2 bSkillAtk,"RA_AIMEDBOLT",5; } if (.@r>=9) { bonus2 bAddClass,Class_Boss,10; bonus2 bSkillAtk,"RA_ARROWSTORM",10; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; } }
 2855:5360,{ bonus bCritAtkRate,10; if(getequiprefinerycnt(EQI_HEAD_TOP)>5) bonus bCritical,5; }
 2913:2710,{ bonus bBaseAtk,10; }
 28910:20800,{ bonus bLongAtkDef,-35; }
-28918:2998,{ bonus2 bSubRace,RC_Undead,4; bonus2 bSubRace,RC_Demon,4; bonus2 bSubRace,RC_Demihuman,3; bonus2 bSubRace,RC_Player,3; }
+28918:2998,{ bonus2 bSubRace,RC_Undead,4; bonus2 bSubRace,RC_Demon,4; bonus2 bSubRace,RC_Demihuman,3; bonus2 bSubRace,RC_Player_Human,3; }
 28929:4058,{ .@r = getequiprefinerycnt(EQI_HAND_L); bonus2 bExpAddRace,RC_DemiHuman,5; if (.@r>=6) bonus2 bExpAddRace,RC_DemiHuman,5; if (.@r>=8) bonus2 bExpAddRace,RC_DemiHuman,5; }
 28929:4066,{ .@r = getequiprefinerycnt(EQI_HAND_L); bonus2 bExpAddRace,RC_Brute,5; if (.@r>=6) bonus2 bExpAddRace,RC_Brute,5; if (.@r>=8) bonus2 bExpAddRace,RC_Brute,5; }
 28929:4074,{ .@r = getequiprefinerycnt(EQI_HAND_L); bonus2 bExpAddRace,RC_Insect,5; if (.@r>=6) bonus2 bExpAddRace,RC_Insect,5; if (.@r>=8) bonus2 bExpAddRace,RC_Insect,5; }
@@ -440,9 +442,9 @@
 29607:32107,{ .@r= getequiprefinerycnt(EQI_HAND_R)/3; bonus2 bMagicAtkEle,Ele_Neutral,5*.@r; bonus2 bSkillAtk,"WM_METALICSOUND",5*.@r; }
 29607:32108,{ .@r= getequiprefinerycnt(EQI_HAND_R)/3; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",5*.@r; bonus bLongAtkRate,2*.@r; }
 2963:15073,{ bonus bAspdRate,5; }
-2963:15074,{ bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
+2963:15074,{ bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
 2963:20944,{ bonus bDelayrate,-5; }
-2964:15073,{ bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
+2964:15073,{ bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
 2964:15074,{ bonus bVariableCastrate,-5; }
 2964:20943,{ bonus bUseSPrate,-5; }
 2966:2967:13092,{ bonus bBaseAtk,-(getequiprefinerycnt(EQI_HAND_R)*10); }
@@ -473,11 +475,11 @@
 2983:4269,{ bonus bInt,-3; bonus bSPrecovRate,-20; bonus bMaxSP,150; }
 2984:4151,{ bonus2 bSubRace,RC_Plant,-10; bonus2 bExpAddRace,RC_Plant,5; }
 2984:4164,{ bonus2 bSubRace,RC_Fish,-10; bonus2 bExpAddRace,RC_Fish,5; }
-2984:4204,{ bonus2 bSubRace,RC_Brute,-10; bonus2 bExpAddRace,RC_Brute,5; }
+2984:4204,{ bonus2 bSubRace,RC_Brute,-10; bonus2 bSubRace,RC_Player_Doram,-10; bonus2 bExpAddRace,RC_Brute,5; }
 2984:4221,{ bonus2 bSubRace,RC_Insect,-10; bonus2 bExpAddRace,RC_Insect,5; }
 2984:4235,{ bonus2 bSubRace,RC_Angel,-10; bonus2 bExpAddRace,RC_Angel,5; }
 2984:4239,{ bonus2 bSubRace,RC_Formless,-10; bonus2 bExpAddRace,RC_Formless,5; }
-2984:4245,{ bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus2 bExpAddRace,RC_DemiHuman,5; }
+2984:4245,{ bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player_Human,-10; bonus2 bExpAddRace,RC_DemiHuman,5; }
 2984:4249,{ bonus2 bSubRace,RC_Demon,-10; bonus2 bExpAddRace,RC_Demon,5; }
 2984:4267,{ bonus2 bSubRace,RC_Dragon,-10; bonus2 bExpAddRace,RC_Dragon,5; }
 2984:4275,{ bonus2 bSubRace,RC_Undead,-10; bonus2 bExpAddRace,RC_Undead,5; }
@@ -537,7 +539,7 @@
 4168:4169,{ bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus bVariableCastrate,-10; }
 4169:4488,{ if(getequiprefinerycnt(EQI_SHOES) >= 15) { bonus bMaxHPrate,15; bonus bMaxSPrate,15; } else { bonus bMaxHPrate,10; bonus bMaxSPrate,10; } }
 4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPDrainValue,1; if(BaseClass==Job_Thief) bonus bNoGemStone; }
-4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bComaRace,RC_Brute,100; } }
+4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bComaRace,RC_Brute,100; bonus2 bComaRace,RC_Player_Doram,100; } }
 4178:4234:4252:4297:4381,{ bonus bDex,5; bonus2 bSkillAtk,"CG_ARROWVULCAN",5; bonus2 bSkillAtk,"DC_THROWARROW",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; if(BaseJob==Job_Bard||BaseJob==Job_Dancer) bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",2,50; }
 4185:4217:4280:4293:4312,{ bonus bVit,10; bonus bVariableCastrate,-10; bonus bUseSPRate,-10; if(BaseClass==Job_Acolyte) { bonus2 bExpAddRace,RC_Undead,5; bonus2 bExpAddRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,30; bonus2 bSubRace,RC_Demon,30; } }
 4185:4293:4312:4332,{ bonus bStr,3; bonus bMaxSP,80; bonus bBaseAtk,25; bonus3 bAutoSpell,"AL_CRUCIS",5,10; bonus2 bSkillAtk,"MO_EXTREMITYFIST",10; if(BaseJob==Job_Monk) { bonus bUseSPrate,-10; bonus bNoCastCancel; } }
@@ -551,7 +553,7 @@
 4220:4246:4311:4319:4331,{ bonus bStr,10; bonus bMaxHPrate,20; bonus bHPrecovRate,50; bonus3 bAutoSpell,"BS_WEAPONPERFECT",1,3; bonus2 bAddMonsterDropItem,501,500; if(BaseClass==Job_Swordman) bonus2 bAddItemGroupHealRate,IG_Potion,50; }
 4020:27328,{ bonus bBaseAtk,15; bonus2 bAddEle,Ele_Dark,20; }
 4023:27328,{ bonus bInt,3; bonus bMaxSP,100; bonus bMatkRate,5; }
-4066:27328,{ bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; }
+4066:27328,{ bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player_Human,15; }
 4067:27328,{ bonus bDef,100; }
 4071:27328,{ bonus bHit,15; bonus bFlee,15; bonus bCritAtkRate,15; }
 4077:27328,{ bonus bVariableCastrate,-25; }
@@ -567,7 +569,7 @@
 4305:27119,{ bonus2 bSubSize,Size_All,5; bonus bHit,25; bonus2 bAddSize,Size_All,20; }
 4311:4319:4331:4371,{ bonus bInt,1; bonus bStr,1; bonus bDef,2; bonus bSPrecovRate,10; bonus2 bSkillAtk,"PA_SHIELDCHAIN",10; bonus2 bSkillAtk,"PA_SACRIFICE",10; bonus bVariableCastrate,-10; if(BaseJob==Job_Crusader) bonus bDefEle,Ele_Holy; }
 4323:4324,{ bonus3 bAutoSpell,"MG_FROSTDIVER",3,250; }
-4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; bonus2 bSPGainRace,RC_Player,2; }
+4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; bonus2 bSPGainRace,RC_Player_Human,2; }
 4335:19156,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r < 4) { .@a = 4; } else { .@a = min(.@r,10); } bonus3 bAutoSpell,"WZ_EARTHSPIKE",.@a,(.@a*10); bonus3 bAutoSpell,"WZ_HEAVENDRIVE",.@a,(.@a*10); }
 4345:19156,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r < 4) { .@a = 4; } else { .@a = min(.@r,10); } bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",.@a,(.@a*10); bonus3 bAutoSpell,"MG_THUNDERSTORM",.@a,(.@a*10); }
 4350:19156,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r < 4) { .@a = 4; } else { .@a = min(.@r,10); } bonus3 bAutoSpell,"MG_COLDBOLT",.@a,(.@a*10); bonus3 bAutoSpell,"WZ_FROSTNOVA",.@a,(.@a*10); }
@@ -593,8 +595,8 @@
 4643:4646,{ bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; }
 4644:4646,{ bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; }
 4645:4646,{ bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; }
-4653:4654,{ bonus2 bSubRace,RC_Brute,5; bonus2 bSubRace,RC_Undead,5; bonus2 bIgnoreMdefRaceRate,RC_Brute,50; bonus2 bIgnoreMdefRaceRate,RC_Undead,50; }
-4653:4655,{ bonus2 bSubRace,RC_Brute,5; bonus2 bSubRace,RC_Undead,5; bonus2 bIgnoreDefRaceRate,RC_Brute,50; bonus2 bIgnoreDefRaceRate,RC_Undead,50; }
+4653:4654,{ bonus2 bSubRace,RC_Brute,5; bonus2 bSubRace,RC_Player_Doram,5; bonus2 bSubRace,RC_Undead,5; bonus2 bIgnoreMdefRaceRate,RC_Brute,50; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,50; bonus2 bIgnoreMdefRaceRate,RC_Undead,50; }
+4653:4655,{ bonus2 bSubRace,RC_Brute,5; bonus2 bSubRace,RC_Player_Doram,5; bonus2 bSubRace,RC_Undead,5; bonus2 bIgnoreDefRaceRate,RC_Brute,50; bonus2 bIgnoreDefRaceRate,RC_Player_Doram,50; bonus2 bIgnoreDefRaceRate,RC_Undead,50; }
 4656:4657,{ /* Unofficial chance */ bonus3 bAutoSpellWhenHit,"NPC_WIDESLEEP",2,10; bonus2 bSubEle,Ele_Neutral,5; }
 4671:4692,{ autobonus "{ bonus bMatk,100; }",30,6000,BF_MAGIC,"{ active_transform 3242,6000; }"; }
 4672:4693,{ autobonus "{ bonus bAtk,100; }",30,6000,BF_WEAPON,"{ active_transform 3243,6000; }"; }
@@ -611,6 +613,114 @@
 4683:4695,{ autobonus "{ bonus bAtk,100; }",30,6000,BF_WEAPON,"{ active_transform 3246,6000; }"; }
 4697:27012,{ bonus bNoMadoFuel; }
 4699:27012,{ bonus bNoMadoFuel; }
+470016:480012:490014:450018,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus bDelayrate,-5; bonus2 bSkillAtk,"RK_DRAGONBREATH",10; bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",10; if (.@r>=27) { bonus bMaxHPrate,5; bonus bDelayrate,-5; bonus2 bSkillAtk,"RK_DRAGONBREATH",10; bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",10; } }
+470016:480012:490014:450019,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bCritAtkRate,5; bonus2 bSkillAtk,"RK_IGNITIONBREAK",10; if (.@r>=27) { bonus bAspd,1; bonus bCritAtkRate,5; bonus2 bSkillAtk,"RK_IGNITIONBREAK",10; } }
+470016:480012:490014:450020,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"LG_CANNONSPEAR",10; if (.@r>=27) { bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"LG_CANNONSPEAR",10; } }
+470016:480012:490014:450022,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus bCritAtkRate,5; bonus2 bSkillAtk,"SN_SHARPSHOOTING",10; if (.@r>=27) { bonus bDelayrate,-5; bonus bCritAtkRate,5; bonus2 bSkillAtk,"SN_SHARPSHOOTING",10; } }
+470016:480012:490014:450023,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; if (.@r>=27) { bonus bDelayrate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; } }
+470016:480012:490014:450024,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10; if (.@r>=27) { bonus bDelayrate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10; } }
+470016:480012:490014:450027,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"AB_DUPLELIGHT",10; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"AB_DUPLELIGHT",10; } }
+470016:480012:490014:450028,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bDelayrate,-5; bonus2 bSkillAtk,"NC_AXETORNADO",10; if (.@r>=27) { bonus bAspd,1; bonus bDelayrate,-5; bonus2 bSkillAtk,"NC_AXETORNADO",10; } }
+470016:480012:490014:450029,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NC_VULCANARM",10; if (.@r>=27) { bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NC_VULCANARM",10; } }
+470016:480012:490014:450030,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastRate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"GN_CARTCANNON",10; if (.@r>=27) { bonus bVariableCastRate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"GN_CARTCANNON",10; } }
+470016:480012:490014:450031,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"GN_CART_TORNADO",10; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"GN_CART_TORNADO",10; } }
+470016:480012:490014:450032,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",10; if (.@r>=27) { bonus bDelayrate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",10; } }
+470016:480012:490014:450033,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus bCritAtkRate,5; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus bCritAtkRate,5; } }
+470016:480012:490014:450034,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SC_FATALMENACE",10; if (.@r>=27) { bonus bDelayrate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SC_FATALMENACE",10; } }
+470016:480012:490014:450036,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SU_PICKYPECK",10; if (.@r>=27) { bonus bDelayrate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SU_PICKYPECK",10; } }
+470016:480012:490014:450038,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"RL_R_TRIP",10; if (.@r>=27) { bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"RL_R_TRIP",10; } }
+470016:480012:490014:450039,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"RL_FIRE_RAIN",10; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"RL_FIRE_RAIN",10; } }
+470016:480012:490014:450044,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SJ_SOLARBURST",10; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SJ_SOLARBURST",10; } }
+470016:480012:490014:450045,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus2 bAddSize,Size_All,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SJ_FULLMOONKICK",10; if (.@r>=27) { bonus2 bAddSize,Size_All,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SJ_FULLMOONKICK",10; } }
+470016:480012:490014:450047,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"KO_HAPPOKUNAI",10; if (.@r>=27) { bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"KO_HAPPOKUNAI",10; } }
+470016:480012:490014:450050,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SR_KNUCKLEARROW",10; if (.@r>=27) { bonus bDelayrate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SR_KNUCKLEARROW",10; } }
+470016:480012:490014:450051,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SR_TIGERCANNON",10; if (.@r>=27) { bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SR_TIGERCANNON",10; } }
+470016:480012:490014:450121,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,2; bonus bCritAtkRate,5; if (.@r>=27) { bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,3; bonus bCritAtkRate,5; } }
+470017:480014:490015:450021,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMatk,25; bonus bDelayrate,-5; bonus2 bSkillAtk,"LG_RAYOFGENESIS",10; if (.@r>=27) { bonus bMatk,25; bonus bDelayrate,-5; bonus2 bSkillAtk,"LG_RAYOFGENESIS",10; } }
+470017:480014:490015:450025,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"WM_REVERBERATION",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"WM_REVERBERATION",10; } }
+470017:480014:490015:450026,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"AB_ADORAMUS",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"AB_ADORAMUS",10; } }
+470017:480014:490015:450035,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bMatkRate,2; bonus2 bSkillAtk,"WZ_METEOR",20; if (.@r>=27) { bonus bAspd,1; bonus bMatkRate,3; bonus2 bSkillAtk,"WZ_METEOR",20; } }
+470017:480014:490015:450037,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SU_CN_METEOR",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SU_CN_METEOR",10; } }
+470017:480014:490015:450040,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"WL_CRIMSONROCK",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"WL_CRIMSONROCK",10; } }
+470017:480014:490015:450041,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"WL_JACKFROST",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"WL_JACKFROST",10; } }
+470017:480014:490015:450042,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10; } }
+470017:480014:490015:450043,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SO_DIAMONDDUST",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SO_DIAMONDDUST",10; } }
+470017:480014:490015:450046,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"NJ_KOUENKA",10; bonus2 bSkillAtk,"NJ_HUUJIN",10; bonus2 bSkillAtk,"NJ_HYOUSENSOU",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"NJ_KOUENKA",10; bonus2 bSkillAtk,"NJ_HUUJIN",10; bonus2 bSkillAtk,"NJ_HYOUSENSOU",10; } }
+470017:480014:490015:450048,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SP_SWHOO",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SP_SWHOO",10; } }
+470017:480014:490015:450049,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SP_CURSEEXPLOSION",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SP_CURSEEXPLOSION",10; } }
+470017:480014:490015:450122,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus bMatkRate,2; bonus5 bAutoSpell,"SO_PSYCHIC_WAVE",1,50,BF_SHORT,1; if (.@r>=27) { bonus bMaxHPrate,5; bonus bMatkRate,3; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",5; } }
+470018:480016:490017:450052,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus bDelayrate,-5; bonus2 bSkillAtk,"RK_DRAGONBREATH",10; bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",10; if (.@r>=27) { bonus bMaxHPrate,10; bonus bDelayrate,-5; bonus2 bSkillAtk,"RK_DRAGONBREATH",15; bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",15; } }
+470018:480016:490017:450053,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bCritAtkRate,5; bonus2 bSkillAtk,"RK_IGNITIONBREAK",10; if (.@r>=27) { bonus bAspd,1; bonus bCritAtkRate,5; bonus2 bSkillAtk,"RK_IGNITIONBREAK",15; } }
+470018:480016:490017:450054,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"LG_CANNONSPEAR",10; if (.@r>=27) { bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"LG_CANNONSPEAR",15; } }
+470018:480016:490017:450056,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus bCritAtkRate,5; bonus2 bSkillAtk,"SN_SHARPSHOOTING",10; if (.@r>=27) { bonus bDelayrate,-10; bonus bCritAtkRate,10; bonus2 bSkillAtk,"SN_SHARPSHOOTING",15; } }
+470018:480016:490017:450057,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"RA_AIMEDBOLT",15; } }
+470018:480016:490017:450058,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10; if (.@r>=27) { bonus bDelayrate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; } }
+470018:480016:490017:450061,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"AB_DUPLELIGHT",10; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"AB_DUPLELIGHT",15; } }
+470018:480016:490017:450062,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SR_KNUCKLEARROW",10; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SR_KNUCKLEARROW",15; } }
+470018:480016:490017:450063,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SR_TIGERCANNON",10; if (.@r>=27) { bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SR_TIGERCANNON",15; } }
+470018:480016:490017:450064,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bDelayrate,-5; bonus2 bSkillAtk,"NC_AXETORNADO",10; if (.@r>=27) { bonus bAspd,1; bonus bDelayrate,-10; bonus2 bSkillAtk,"NC_AXETORNADO",15; } }
+470018:480016:490017:450065,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NC_VULCANARM",10; if (.@r>=27) { bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NC_VULCANARM",15; } }
+470018:480016:490017:450066,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastRate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"GN_CARTCANNON",10; if (.@r>=27) { bonus bVariableCastRate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"GN_CARTCANNON",15; } }
+470018:480016:490017:450067,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"GN_CART_TORNADO",10; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"GN_CART_TORNADO",15; } }
+470018:480016:490017:450068,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",10; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15; } }
+470018:480016:490017:450069,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus bCritAtkRate,5; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus bCritAtkRate,5; } }
+470018:480016:490017:450070,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SC_FATALMENACE",10; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SC_FATALMENACE",15; } }
+470018:480016:490017:450072,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SU_PICKYPECK",10; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SU_PICKYPECK",15; } }
+470018:480016:490017:450074,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"RL_R_TRIP",10; if (.@r>=27) { bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"RL_R_TRIP",15; } }
+470018:480016:490017:450075,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"RL_FIRE_RAIN",10; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"RL_FIRE_RAIN",15; } }
+470018:480016:490017:450080,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SJ_SOLARBURST",10; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SJ_SOLARBURST",15; } }
+470018:480016:490017:450081,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus2 bAddSize,Size_All,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SJ_FULLMOONKICK",10; if (.@r>=27) { bonus2 bAddSize,Size_All,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SJ_FULLMOONKICK",15; } }
+470018:480016:490017:450083,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"KO_HAPPOKUNAI",10; if (.@r>=27) { bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"KO_HAPPOKUNAI",15; } }
+470018:480016:490017:450123,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,2; bonus bCritAtkRate,5; if (.@r>=27) { bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,3; bonus bCritAtkRate,5; } }
+470019:480017:490018:450055,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMatk,25; bonus bDelayrate,-5; bonus2 bSkillAtk,"LG_RAYOFGENESIS",10; if (.@r>=27) { bonus bMatk,25; bonus bDelayrate,-10; bonus2 bSkillAtk,"LG_RAYOFGENESIS",15; } }
+470019:480017:490018:450059,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"WM_REVERBERATION",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"WM_REVERBERATION",15; } }
+470019:480017:490018:450060,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"AB_ADORAMUS",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"AB_ADORAMUS",15; } }
+470019:480017:490018:450071,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bMatkRate,2; bonus2 bSkillAtk,"WZ_METEOR",25; if (.@r>=27) { bonus bAspd,1; bonus bMatkRate,3; bonus2 bSkillAtk,"WZ_METEOR",25; } }
+470019:480017:490018:450073,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SU_CN_METEOR",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SU_CN_METEOR",15; } }
+470019:480017:490018:450076,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"WL_CRIMSONROCK",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"WL_CRIMSONROCK",15; } }
+470019:480017:490018:450077,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"WL_JACKFROST",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"WL_JACKFROST",15; } }
+470019:480017:490018:450078,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",15; } }
+470019:480017:490018:450079,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SO_DIAMONDDUST",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SO_DIAMONDDUST",15; } }
+470019:480017:490018:450082,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"NJ_KOUENKA",10; bonus2 bSkillAtk,"NJ_HUUJIN",10; bonus2 bSkillAtk,"NJ_HYOUSENSOU",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"NJ_KOUENKA",15; bonus2 bSkillAtk,"NJ_HUUJIN",15; bonus2 bSkillAtk,"NJ_HYOUSENSOU",15; } }
+470019:480017:490018:450084,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SP_SWHOO",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SP_SWHOO",15; } }
+470019:480017:490018:450085,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SP_CURSEEXPLOSION",10; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SP_CURSEEXPLOSION",15; } }
+470019:480017:490018:450124,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus bMatkRate,2; bonus5 bAutoSpell,"SO_PSYCHIC_WAVE",1,70,BF_SHORT,1; if (.@r>=27) { bonus bMaxHPrate,5; bonus bMatkRate,3; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",7; } }
+470020:480018:490019:450086,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,10; bonus bDelayrate,-5; bonus2 bSkillAtk,"RK_DRAGONBREATH",15; bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",15; if (.@r>=27) { bonus bMaxHPrate,10; bonus bDelayrate,-5; bonus2 bSkillAtk,"RK_DRAGONBREATH",15; bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",15; } }
+470020:480018:490019:450087,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bCritAtkRate,5; bonus2 bSkillAtk,"RK_IGNITIONBREAK",15; if (.@r>=27) { bonus bAspd,1; bonus bCritAtkRate,5; bonus2 bSkillAtk,"RK_IGNITIONBREAK",15; } }
+470020:480018:490019:450088,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"LG_CANNONSPEAR",15; if (.@r>=27) { bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"LG_CANNONSPEAR",15; } }
+470020:480018:490019:450090,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; bonus bCritAtkRate,5; bonus2 bSkillAtk,"SN_SHARPSHOOTING",15; if (.@r>=27) { bonus bDelayrate,-10; bonus bCritAtkRate,10; bonus2 bSkillAtk,"SN_SHARPSHOOTING",15; } }
+470020:480018:490019:450091,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"RA_AIMEDBOLT",15; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"RA_AIMEDBOLT",15; } }
+470020:480018:490019:450092,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; if (.@r>=27) { bonus bDelayrate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; } }
+470020:480018:490019:450095,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"AB_DUPLELIGHT",15; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"AB_DUPLELIGHT",15; } }
+470020:480018:490019:450096,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SR_KNUCKLEARROW",15; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SR_KNUCKLEARROW",15; } }
+470020:480018:490019:450097,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SR_TIGERCANNON",15; if (.@r>=27) { bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SR_TIGERCANNON",15; } }
+470020:480018:490019:450098,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bDelayrate,-10; bonus2 bSkillAtk,"NC_AXETORNADO",15; if (.@r>=27) { bonus bAspd,1; bonus bDelayrate,-10; bonus2 bSkillAtk,"NC_AXETORNADO",15; } }
+470020:480018:490019:450099,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NC_VULCANARM",15; if (.@r>=27) { bonus bAspd,1; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NC_VULCANARM",15; } }
+470020:480018:490019:450100,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastRate,-5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"GN_CARTCANNON",15; if (.@r>=27) { bonus bVariableCastRate,-5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"GN_CARTCANNON",15; } }
+470020:480018:490019:450101,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"GN_CART_TORNADO",15; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"GN_CART_TORNADO",15; } }
+470020:480018:490019:450102,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"GC_ROLLINGCUTTER",15; } }
+470020:480018:490019:450103,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus bCritAtkRate,5; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus bCritAtkRate,5; } }
+470020:480018:490019:450104,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SC_FATALMENACE",10; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SC_FATALMENACE",15; } }
+470020:480018:490019:450106,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bDelayrate,-10; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SU_PICKYPECK",15; if (.@r>=27) { bonus bDelayrate,-10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SU_PICKYPECK",15; } }
+470020:480018:490019:450108,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"RL_R_TRIP",15; if (.@r>=27) { bonus bLongAtkRate,10; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"RL_R_TRIP",15; } }
+470020:480018:490019:450109,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"RL_FIRE_RAIN",15; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"RL_FIRE_RAIN",15; } }
+470020:480018:490019:450114,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SJ_SOLARBURST",15; if (.@r>=27) { bonus bAspd,1; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SJ_SOLARBURST",15; } }
+470020:480018:490019:450115,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus2 bAddSize,Size_All,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"SJ_FULLMOONKICK",15; if (.@r>=27) { bonus2 bAddSize,Size_All,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"SJ_FULLMOONKICK",15; } }
+470020:480018:490019:450117,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,2; bonus2 bSkillAtk,"KO_HAPPOKUNAI",15; if (.@r>=27) { bonus bLongAtkRate,5; bonus2 bAddClass,Class_All,3; bonus2 bSkillAtk,"KO_HAPPOKUNAI",15; } }
+470020:480018:490019:450125,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,2; bonus bCritAtkRate,5; if (.@r>=27) { bonus bMaxHPrate,5; bonus2 bAddClass,Class_All,3; bonus bCritAtkRate,5; } }
+470021:480019:490020:450089,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMatk,25; bonus bDelayrate,-10; bonus2 bSkillAtk,"LG_RAYOFGENESIS",15; if (.@r>=27) { bonus bMatk,25; bonus bDelayrate,-10; bonus2 bSkillAtk,"LG_RAYOFGENESIS",15; } }
+470021:480019:490020:450093,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"WM_REVERBERATION",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"WM_REVERBERATION",15; } }
+470021:480019:490020:450094,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"AB_ADORAMUS",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"AB_ADORAMUS",15; } }
+470021:480019:490020:450105,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bAspd,1; bonus bMatkRate,2; bonus2 bSkillAtk,"WZ_METEOR",30; if (.@r>=27) { bonus bAspd,1; bonus bMatkRate,3; bonus2 bSkillAtk,"WZ_METEOR",30; } }
+470021:480019:490020:450107,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SU_CN_METEOR",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SU_CN_METEOR",15; } }
+470021:480019:490020:450110,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"WL_CRIMSONROCK",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"WL_CRIMSONROCK",15; } }
+470021:480019:490020:450111,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"WL_JACKFROST",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"WL_JACKFROST",15; } }
+470021:480019:490020:450112,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",15; } }
+470021:480019:490020:450113,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SO_DIAMONDDUST",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SO_DIAMONDDUST",15; } }
+470021:480019:490020:450116,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"NJ_KOUENKA",15; bonus2 bSkillAtk,"NJ_HUUJIN",15; bonus2 bSkillAtk,"NJ_HYOUSENSOU",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"NJ_KOUENKA",15; bonus2 bSkillAtk,"NJ_HUUJIN",15; bonus2 bSkillAtk,"NJ_HYOUSENSOU",15; } }
+470021:480019:490020:450118,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SP_SWHOO",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SP_SWHOO",15; } }
+470021:480019:490020:450119,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bVariableCastrate,-5; bonus bMatkRate,2; bonus2 bSkillAtk,"SP_CURSEEXPLOSION",15; if (.@r>=27) { bonus bVariableCastrate,-5; bonus bMatkRate,3; bonus2 bSkillAtk,"SP_CURSEEXPLOSION",15; } }
+470021:480019:490020:450126,{ .@r = getequiprefinerycnt(EQI_SHOES)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,5; bonus bMatkRate,2; bonus5 bAutoSpell,"SO_PSYCHIC_WAVE",1,70,BF_SHORT,1; if (.@r>=27) { bonus bMaxHPrate,5; bonus bMatkRate,3; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10; } }
 4958:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bDelayrate,-1 - ( .@r > 9 ) ? 1 : 0; } }
 4959:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bLongAtkRate,2 + ( .@r > 9 ) ? 1 : 0; } }
 4960:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bUseSPrate,-2 - ( .@r > 9 ) ? 1 : 0; } }
@@ -653,8 +763,50 @@
 5917:1525,{ bonus bLongAtkDef,10; }
 5920:18542,{ bonus bHealPower,2*getequiprefinerycnt(EQI_HEAD_TOP); }
 5933:19112,{ bonus2 bAddSize,Size_All,1; bonus bLongAtkRate,1; if(readparam(bStr)>=108) { bonus2 bAddSize,Size_All,2; bonus bLongAtkRate,1; } if(readparam(bStr)>=120) { bonus2 bAddSize,Size_All,3; bonus bLongAtkRate,1; } }
+5965:28370,{ bonus bDelayrate,-15; }
+5965:28371,{ bonus bVariableCastrate,-20; }
+5965:29166,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bSubRace,RC_DemiHuman,.@r; bonus2 bSubRace,RC_Formless,.@r; }
+5965:29167,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bHit,(.@r/3)*5; }
+5965:29168,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bFlee,(.@r/3)*5; }
+5965:29169,{ bonus bMdef,20; }
+5965:29170,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAspdRate,(.@r/2); }
+5965:29171,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAspdRate,(.@r/2); }
+5965:29172,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAspdRate,(.@r/2); }
+5965:29173,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAspdRate,(.@r/2); }
+5965:29174,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAspdRate,(.@r/2); }
+5965:29175,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bAspdRate,(.@r/2); }
+5965:29438,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMaxHPrate,(.@r/2); }
+5965:29439,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMaxHPrate,(.@r/2); }
+5965:29440,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMaxHPrate,(.@r/2); }
+5965:29441,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMaxHPrate,(.@r/2); }
+5965:29442,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMaxHPrate,(.@r/2); }
+5965:29443,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMaxHPrate,(.@r/2); }
+5965:29444,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMaxHPrate,(.@r/2); }
+5965:32203,{ bonus bAspdRate,10; bonus2 bAddClass,Class_All,10; bonus2 bMagicAddClass,Class_All,10; bonus2 bIgnoreDefRaceRate,RC_All,30; bonus2 bIgnoreMdefRaceRate,RC_All,30; }
+5965:4970,{ bonus2 bAddEle,Ele_Fire,10; }
+5965:4971,{ bonus2 bAddEle,Ele_Water,10; }
+5965:4972,{ bonus2 bAddEle,Ele_Earth,10; }
+5965:4973,{ bonus2 bAddEle,Ele_Wind,10; }
+5965:4974,{ bonus2 bSubEle,Ele_Fire,25; }
+5965:4975,{ bonus2 bSubEle,Ele_Water,25; }
+5965:4976,{ bonus2 bSubEle,Ele_Earth,25; }
+5965:4977,{ bonus2 bSubEle,Ele_Wind,25; }
+5965:4978,{ bonus2 bHPRegenRate,1500,5000; }
+5965:4979,{ bonus2 bSPRegenRate,25,5000; }
+5965:4980,{ bonus bHPrecovRate,350; }
+5965:4981,{ bonus bSPrecovRate,50; }
+5965:4982,{ bonus2 bAddClass,Class_All,3; }
+5965:4983,{ bonus2 bMagicAddClass,Class_All,3; }
+5965:4984,{ bonus bDef,500; }
+5965:4985,{ bonus bFlee2,2; }
+5965:4986,{ bonus bBaseAtk,15; }
+5965:4987,{ bonus bMatk,15; }
+5965:4988,{ bonus bMaxHP,7500; }
+5965:4989,{ bonus bMaxSP,150; }
+5965:4990,{ bonus bMaxHP,1000; }
+5965:4991,{ bonus bAspd,1; }
 5967:28321,{ bonus2 bSubSkill,"HT_BLITZBEAT",200; }
-5918:19306,{ .@aspd = 1; .@crit_dmg = 2 + 2 * (readparam(bDex) / 10); .@sub_demi = 2; .@luk = readparam(bLuk); if (.@luk > 107) { .@aspd += 1; .@crit_dmg += 2; .@sub_demi += 2; } if (.@luk > 119) { .@aspd += 2; .@crit_dmg += 4; .@sub_demi += 4; bonus bSplashRange,1; } bonus bAspd,.@aspd; bonus bCritAtkRate,.@crit_dmg; bonus2 bSubRace,RC_DemiHuman,.@sub_demi; bonus2 bSubSkill,"NPC_CRITICALSLASH",100; }
+5918:19306,{ .@aspd = 1; .@crit_dmg = 2 + 2 * (readparam(bDex) / 10); .@sub_player = 2; .@luk = readparam(bLuk); if (.@luk > 107) { .@aspd += 1; .@crit_dmg += 2; .@sub_player += 2; } if (.@luk > 119) { .@aspd += 2; .@crit_dmg += 4; .@sub_player += 4; bonus bSplashRange,1; } bonus bAspd,.@aspd; bonus bCritAtkRate,.@crit_dmg; bonus2 bSubRace,RC_Player_Human,.@sub_player; bonus2 bSubSkill,"NPC_CRITICALSLASH",100; }
 //9024:18832,{ bonus3 bAutoSpell,"BS_ADRENALINE",2,(GetPetRelationship >= 3)?15:10; }
 1298:4317,{ bonus bCritAtkRate,5; }
 1298:4521,{ bonus bCritAtkRate,5; }
@@ -764,19 +916,19 @@
 18140:1755:19048,{ bonus bLongAtkRate,20; bonus3 bAutoSpell,"NJ_HUUJIN",5,(readparam(bInt)>39) ? -300 : -100; if (getequiprefinerycnt(EQI_HAND_R) >= 10)  bonus bAspd,1; }
 18140:19019,{ bonus bLongAtkRate,45; }
 18149:19210,{ .@weapon = getequiprefinerycnt(EQI_HAND_R); .@eq = getequiprefinerycnt(EQI_HEAD_TOP); bonus bLongAtkRate,5; if (.@weapon >= 7 && .@eq >= 7) { .@val = 20; } if ((.@weapon + .@eq) >= 18) { bonus2 bAddClass,Class_All,10; } if ((.@weapon + .@eq) >= 22) { .@val += 30; } if (.@val) { bonus2 bSkillAtk,"RA_ARROWSTORM",.@val; } }
-18174:22190,{ .@weapon = getequiprefinerycnt(EQI_HAND_R); .@eq = getequiprefinerycnt(EQI_SHOES); bonus2 bAddClass,Class_All,10; if (.@weapon >= 7 && .@eq >= 7) { bonus bAspd,2; } if ((.@weapon + .@eq) >= 18) { bonus bCritAtkRate,10; } if ((.@weapon + .@eq) >= 22) { autobonus "{ bonus bBaseAtk,100; bonus bCritAtkRate,15; bonus2 bAddRace,RC_Insect,50; bonus2 bAddRace,RC_Brute,50; }",20,10000,BF_LONG|BF_WEAPON|BF_NORMAL; /* fix me: unknown rates */ } }
+18174:22190,{ .@weapon = getequiprefinerycnt(EQI_HAND_R); .@eq = getequiprefinerycnt(EQI_SHOES); bonus2 bAddClass,Class_All,10; if (.@weapon >= 7 && .@eq >= 7) { bonus bAspd,2; } if ((.@weapon + .@eq) >= 18) { bonus bCritAtkRate,10; } if ((.@weapon + .@eq) >= 22) { autobonus "{ bonus bBaseAtk,100; bonus bCritAtkRate,15; bonus2 bAddRace,RC_Insect,50; bonus2 bAddRace,RC_Brute,50; bonus2 bAddRace,RC_Player_Doram,50; }",20,10000,BF_LONG|BF_WEAPON|BF_NORMAL; /* fix me: unknown rates */ } }
 18507:18539,{ bonus bUseSPrate,-3; }
 18559:18560,{ bonus bCritAtkRate,5; }
 18563:18564,{ bonus bFixedCastrate,-10; }
 18652:32227,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r>=6) { bonus bDelayrate,-5; bonus bAspdRate,5; bonus2 bAddClass,Class_All,5; bonus2 bIgnoreDefClassRate,Class_All,25; } if (.@r>=8) { bonus bDelayrate,-10; bonus bAspdRate,10; bonus2 bAddClass,Class_All,5; bonus2 bIgnoreDefClassRate,Class_All,25; } }
 18776:20710,{ bonus bBaseAtk,10; }
 18776:22015,{ bonus bMatk,20; }
-18823:19246,{ .@atk = 40; .@aspd = 3; .@dmg = 2; .@agi = readparam(bAgi); if (.@agi > 107) { .@atk += 60; .@aspd += 5; .@dmg += 2; } if (.@agi > 119) { .@atk += 80; .@aspd += 7; .@dmg += 4; } bonus bBaseAtk,.@atk; bonus bAspdRate,.@aspd; bonus2 bSubRace,RC_Player,.@dmg; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Silence,10000; }
+18823:19246,{ .@atk = 40; .@aspd = 3; .@dmg = 2; .@agi = readparam(bAgi); if (.@agi > 107) { .@atk += 60; .@aspd += 5; .@dmg += 2; } if (.@agi > 119) { .@atk += 80; .@aspd += 7; .@dmg += 4; } bonus bBaseAtk,.@atk; bonus bAspdRate,.@aspd; bonus2 bSubRace,RC_Player_Human,.@dmg; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Silence,10000; }
 18823:28372,{ bonus2 bSkillVariableCast,"CR_GRANDCROSS",-1500; bonus2 bSkillAtk,"LG_RAYOFGENESIS",BaseLevel/30 + BaseLevel; bonus2 bSkillUseSP,"LG_RAYOFGENESIS",-10; }
 18823:28551,{ bonus2 bSkillDelay,"LG_OVERBRAND",-2000; bonus bLongAtkRate,getskilllv("LG_CANNONSPEAR") * 2; bonus bLongAtkRate,getskilllv("LG_OVERBRAND") * 2; bonus2 bSkillAtk,"LG_CANNONSPEAR",30; bonus2 bSkillAtk,"LG_OVERBRAND",20; }
-18849:32237,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bFixedCast,-300; if (.@r > 0) { bonus bMatk,(10*.@r); if (.@r >= 7) { bonus2 bMagicAddRace,RC_DemiHuman,10; bonus2 bMagicAddRace,RC_Player,10; bonus2 bMagicAddRace,RC_Demon,10; if (.@r >= 9) { bonus2 bMagicAtkEle,Ele_Water,10; bonus2 bMagicAtkEle,Ele_Wind,10; bonus2 bMagicAtkEle,Ele_Earth,10; bonus2 bMagicAtkEle,Ele_Fire,10; bonus2 bMagicAtkEle,Ele_Neutral,10; if (.@r >= 11) { bonus2 bMagicAddClass,Class_Boss,20; } } } } }
+18849:32237,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bFixedCast,-300; if (.@r > 0) { bonus bMatk,(10*.@r); if (.@r >= 7) { bonus2 bMagicAddRace,RC_DemiHuman,10; bonus2 bMagicAddRace,RC_Player_Human,10; bonus2 bMagicAddRace,RC_Demon,10; if (.@r >= 9) { bonus2 bMagicAtkEle,Ele_Water,10; bonus2 bMagicAtkEle,Ele_Wind,10; bonus2 bMagicAtkEle,Ele_Earth,10; bonus2 bMagicAtkEle,Ele_Fire,10; bonus2 bMagicAtkEle,Ele_Neutral,10; if (.@r >= 11) { bonus2 bMagicAddClass,Class_Boss,20; } } } } }
 18867:1720,{ bonus bLongAtkRate,3+(getequiprefinerycnt(EQI_HAND_R) > 6 ? 5:0); }
-18868:28320,{ bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; }
+18868:28320,{ bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player_Human,10; }
 18933:19082,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",(5*.@r); }
 18933:2268,{ bonus bDelayrate,-5; }
 18933:4229,{ bonus bVariableCastrate,-10; }
@@ -792,7 +944,7 @@
 18985:28321:28322,{ bonus2 bSkillAtk,"HT_BLITZBEAT",200; }
 18985:28322,{ bonus2 bSkillAtk,"SN_FALCONASSAULT",50; }
 18997:28326:28327,{ bonus bSpeedRate,10; bonus bBaseAtk,50; bonus bMatk,50; if(getequiprefinerycnt(EQI_HEAD_TOP)>=9){ bonus bMaxHPrate,10; bonus bMaxSPrate,50; } }
-19024:19381,{ bonus bMdef,5; bonus bDef,50; bonus bAspdRate,5; bonus bVit,5; bonus2 bSubRace,RC_Player,3; if (readparam(bVit)>=108) { bonus bMdef,5; bonus bDef,50; bonus bAspdRate,5; bonus bVit,5; } if (readparam(bVit)>=120) { bonus bMdef,10; bonus bDef,100; bonus bVit,10; } }
+19024:19381,{ bonus bMdef,5; bonus bDef,50; bonus bAspdRate,5; bonus bVit,5; bonus2 bSubRace,RC_Player_Human,3; if (readparam(bVit)>=108) { bonus bMdef,5; bonus bDef,50; bonus bAspdRate,5; bonus bVit,5; } if (readparam(bVit)>=120) { bonus bMdef,10; bonus bDef,100; bonus bVit,10; } }
 19026:20756,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSPGainRace,RC_Fish,10; bonus3 bAddMonsterDropItem,544,RC_Fish,(5+.@r); bonus3 bAddMonsterDropItem,551,RC_Fish,(5+.@r); bonus2 bAddItemHealRate,544,5*(1+.@r); bonus2 bAddItemHealRate,551,5*(1+.@r); }
 19026:22059,{ bonus2 bCriticalAddRace,RC_Fish,(10+getequiprefinerycnt(EQI_SHOES)); }
 19038:19039,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP)+getequiprefinerycnt(EQI_HEAD_MID); if((.@r==7)||(.@r==8)){ bonus bCritical,12; bonus bHit,12; } if(.@r>=9){ bonus bMaxHP,1200; bonus bMaxSP,120; } }
@@ -801,10 +953,10 @@
 19114:5548,{ bonus2 bSubSize,Size_All,5; }
 19117:22101,{ bonus2 bDropAddRace,RC_All,5; bonus2 bExpAddRace,RC_All,5; if(getequiprefinerycnt(EQI_SHOES) >= 12) { bonus bFixedCast,-400; } }
 19118:22101,{ bonus2 bDropAddRace,RC_All,4; bonus2 bExpAddRace,RC_All,4; if(getequiprefinerycnt(EQI_SHOES) >= 12) { bonus bFixedCast,-400; } }
-19138:19327,{ .@cast = -(readparam(bInt)/8); .@sub = 2; .@heal = 5; if (.@i >= 120) { .@cast -= 10; .@sub += 6; .@heal += 25; } else if (.@i >= 108) { .@cast -= 4; .@sub += 2; .@heal += 10; } bonus bVariableCastrate,.@cast; bonus2 bSubRace,RC_DemiHuman,.@sub; bonus2 bSubRace,RC_Player,.@sub; bonus bHealPower,.@heal; bonus bAddItemHealRate,.@heal; bonus2 bVariableCastrate,"AB_CHEAL",-100; bonus2 bResEff,EFF_Bleeding,10000; bonus2 bResEff,Eff_Confusion,10000; }
-19139:19020,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bVit,4; bonus bVariableCastrate,-6; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; bonus2 bMagicAtkEle,Ele_Earth,20; bonus2 bMagicAtkEle,Ele_Wind,20; if (.@r>=7) { bonus bVit,4; bonus bVariableCastrate,-6; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; } if (.@r>=9) { bonus bVit,4; bonus bVariableCastrate,-6; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; } }
-19139:20813,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus bFixedCastrate,-50; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; if (.@r>=5) { bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; } if (.@r>=7) { bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; } }
-19139:22170,{ bonus bVit,4; bonus bInt,5; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; }
+19138:19327,{ .@cast = -(readparam(bInt)/8); .@sub = 2; .@heal = 5; if (.@i >= 120) { .@cast -= 10; .@sub += 6; .@heal += 25; } else if (.@i >= 108) { .@cast -= 4; .@sub += 2; .@heal += 10; } bonus bVariableCastrate,.@cast; bonus2 bSubRace,RC_DemiHuman,.@sub; bonus2 bSubRace,RC_Player_Human,.@sub; bonus bHealPower,.@heal; bonus bAddItemHealRate,.@heal; bonus2 bVariableCastrate,"AB_CHEAL",-100; bonus2 bResEff,EFF_Bleeding,10000; bonus2 bResEff,Eff_Confusion,10000; }
+19139:19020,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bVit,4; bonus bVariableCastrate,-6; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player_Human,4; bonus2 bMagicAtkEle,Ele_Earth,20; bonus2 bMagicAtkEle,Ele_Wind,20; if (.@r>=7) { bonus bVit,4; bonus bVariableCastrate,-6; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player_Human,4; } if (.@r>=9) { bonus bVit,4; bonus bVariableCastrate,-6; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player_Human,4; } }
+19139:20813,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus bFixedCastrate,-50; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player_Human,1; if (.@r>=5) { bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player_Human,2; } if (.@r>=7) { bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player_Human,2; } }
+19139:22170,{ bonus bVit,4; bonus bInt,5; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player_Human,3; }
 19172:28500,{ bonus bDelayrate,-15; }
 19172:4403,{ bonus bDelayrate,30; }
 19189:29316,{ autobonus3 "{ bonus bCritical,5; }",1000,60000,"BS_ADRENALINE"; }
@@ -854,8 +1006,8 @@
 19203:29350,{ bonus bBaseAtk,15; bonus bMatk,15; if (getskilllv("OB_OBOROGENSOU") == 5) bonus bVariableCastrate,-7; autobonus3 "{ bonus bCritAtkRate,10; }",1000,60000,"KG_KAGEMUSYA"; autobonus "{ bonus bNoSizeFix; }",30,3000,BF_WEAPON;  }
 19203:29351,{ bonus bBaseAtk,20; bonus bMatk,20; if (getskilllv("OB_OBOROGENSOU") == 5) bonus bVariableCastrate,-15; autobonus3 "{ bonus bCritAtkRate,30; }",1000,60000,"KG_KAGEMUSYA"; autobonus "{ bonus bNoSizeFix; }",50,5000,BF_WEAPON;  }
 19204:29352,{ bonus bMaxHP,500; bonus bBaseAtk,10; }
-19204:29353,{ bonus bMaxHP,1000; bonus bBaseAtk,20; skill "WS_CARTBOOST",1; autobonus3 "{ bonus bBaseAtk,30; }",1000,60000,"WS_CARTBOOST"; }
-19204:29354,{ bonus bMaxHP,1500; bonus bBaseAtk,40; skill "WS_CARTBOOST",3; autobonus3 "{ bonus bBaseAtk,50; }",1000,120000,"WS_CARTBOOST"; }
+19204:29353,{ bonus bMaxHP,1000; bonus bBaseAtk,20; skill "GN_CARTBOOST",1; autobonus3 "{ bonus bBaseAtk,30; }",1000,60000,"GN_CARTBOOST"; }
+19204:29354,{ bonus bMaxHP,1500; bonus bBaseAtk,40; skill "GN_CARTBOOST",3; autobonus3 "{ bonus bBaseAtk,50; }",1000,120000,"GN_CARTBOOST"; }
 19205:29355,{ bonus2 bSkillAtk,"SU_CN_METEOR",10; bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",10; }
 19205:29356,{ bonus2 bSkillAtk,"SU_CN_METEOR",20; bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",20; bonus bFixedCast,-200; }
 19205:29357,{ bonus2 bSkillAtk,"SU_CN_METEOR",60; bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",60; bonus bFixedCast,-500; }
@@ -868,10 +1020,13 @@
 19266:1619,{ bonus bMatk,getequiprefinerycnt(EQI_HAND_R)*10; }
 19266:1620,{ bonus bMatk,getequiprefinerycnt(EQI_HAND_R)*10; }
 19266:1628,{ bonus bMatk,getequiprefinerycnt(EQI_HAND_R)*10; }
+19266:2509,{.@r = getequiprefinerycnt(EQI_GARMENT); bonus bVariableCastrate,-5*(.@r/2);}
 19266:2535,{ bonus bVariableCastrate,getequiprefinerycnt(EQI_GARMENT)*-5; }
+19266:20813,{.@r = getequiprefinerycnt(EQI_GARMENT); bonus bVariableCastrate,-5*(.@r/2);}
+19266:19139,{.@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bDelayRate,-.@r;}
 19272:4365,{ bonus bVariableCastrate,-100; bonus2 bSkillCooldown,"WL_TELEKINESIS_INTENSE",-120000; }
-19299:4463,{ .@type = getiteminfo(getequipid(EQI_COMPOUND_ON),11); if (.@type == W_BOOK || .@type == W_STAFF || .@type == W_2HSTAFF) { bonus2 bMagicAddRace,RC_Player, getequiprefinerycnt(EQI_HAND_R)*2; } }
-19299:5966,{ .@a = readparam(bDex); bonus bMatk,10; bonus bVariableCastrate,-2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; if (.@a>=108) { bonus bMatk,20; bonus bVariableCastrate,-3; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; } if (.@a>=120) { bonus bMatk,30; bonus bVariableCastrate,-5; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; } }
+19299:4463,{ .@type = getiteminfo(getequipid(EQI_COMPOUND_ON),11); if (.@type == W_BOOK || .@type == W_STAFF || .@type == W_2HSTAFF) { bonus2 bMagicAddRace,RC_Player_Human, getequiprefinerycnt(EQI_HAND_R)*2; } }
+19299:5966,{ .@a = readparam(bDex); bonus bMatk,10; bonus bVariableCastrate,-2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player_Human,2; if (.@a>=108) { bonus bMatk,20; bonus bVariableCastrate,-3; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player_Human,2; } if (.@a>=120) { bonus bMatk,30; bonus bVariableCastrate,-5; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player_Human,4; } }
 19326:4187,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bExpAddRace,RC_DEMON,5; if (.@r>=6) bonus2 bExpAddRace,RC_DEMON,5; if (.@r>=8) bonus2 bExpAddRace,RC_DEMON,5; }
 19326:4190,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bExpAddRace,RC_Undead,5; if (.@r>=6) bonus2 bExpAddRace,RC_Undead,5; if (.@r>=8) bonus2 bExpAddRace,RC_Undead,5; }
 19326:4224,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bExpAddRace,RC_Brute,5; if (.@r>=6) bonus2 bExpAddRace,RC_Brute,5; if (.@r>=8) bonus2 bExpAddRace,RC_Brute,5; }
@@ -890,10 +1045,10 @@
 19397:29582,{ bonus2 bSkillAtk,"SP_SWHOO",10; bonus2 bSkillAtk,"SL_SMA",10; bonus2 bSkillAtk,"SP_SPA",10; }
 19397:29583,{ bonus2 bSkillAtk,"SP_SWHOO",20; bonus2 bSkillAtk,"SL_SMA",20; bonus2 bSkillAtk,"SP_SPA",20; bonus2 bSkillCooldown,"SP_SOULREAPER",-10000; }
 19397:29584,{ bonus2 bSkillAtk,"SP_SWHOO",40; bonus2 bSkillAtk,"SL_SMA",40; bonus2 bSkillAtk,"SP_SPA",40; bonus2 bSkillCooldown,"SP_SOULREAPER",-10000; }
-19428:20948:32238:32239,{ bonus bInt,5; bonus bMaxSPrate,10; bonus bDef,100; bonus2 bMagicAtkEle,Ele_Water,10; bonus2 bMagicAtkEle,Ele_Earth,10; bonus2 bMagicAtkEle,Ele_Neutral,10; .@head = getequiprefinerycnt(EQI_HEAD_TOP); .@garment = getequiprefinerycnt(EQI_GARMENT); if (.@head >= 7 && .@garment >= 7) { .@matk = 40; } if ((.@head + .@garment) >= 18) { .@matk += 40; bonus2 bMagicAtkEle,Ele_Ghost,15; bonus2 bMagicAtkEle,Ele_Wind,15; bonus2 bMagicAtkEle,Ele_Holy,15; if ((.@head + .@garment) >= 22) { bonus bMatkRate,10; bonus2 bIgnoreMdefRaceRate,RC_Formless,50; bonus2 bIgnoreMdefRaceRate,RC_Demon,50; bonus2 bIgnoreMdefRaceRate,RC_Brute,50; } } bonus bMatk,.@matk; }
+19428:20948:32238:32239,{ bonus bInt,5; bonus bMaxSPrate,10; bonus bDef,100; bonus2 bMagicAtkEle,Ele_Water,10; bonus2 bMagicAtkEle,Ele_Earth,10; bonus2 bMagicAtkEle,Ele_Neutral,10; .@head = getequiprefinerycnt(EQI_HEAD_TOP); .@garment = getequiprefinerycnt(EQI_GARMENT); if (.@head >= 7 && .@garment >= 7) { .@matk = 40; } if ((.@head + .@garment) >= 18) { .@matk += 40; bonus2 bMagicAtkEle,Ele_Ghost,15; bonus2 bMagicAtkEle,Ele_Wind,15; bonus2 bMagicAtkEle,Ele_Holy,15; if ((.@head + .@garment) >= 22) { bonus bMatkRate,10; bonus2 bIgnoreMdefRaceRate,RC_Formless,50; bonus2 bIgnoreMdefRaceRate,RC_Demon,50; bonus2 bIgnoreMdefRaceRate,RC_Brute,50; bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,50; } } bonus bMatk,.@matk; }
 20135:20136,{ bonus bAllStats,12; }
 20701:2165,{ .@a = getequiprefinerycnt(EQI_GARMENT); .@b = getequiprefinerycnt(EQI_HAND_L); bonus2 bAddEle,Ele_Earth,.@b; bonus2 bSubRace,RC_Fish,.@a; }
-20714:28320,{ .@val = min(12,getequiprefinerycnt(EQI_GARMENT)); bonus2 bAddRace,RC_DemiHuman,.@val; bonus2 bAddRace,RC_Player,.@val; }
+20714:28320,{ .@val = min(12,getequiprefinerycnt(EQI_GARMENT)); bonus2 bAddRace,RC_DemiHuman,.@val; bonus2 bAddRace,RC_Player_Human,.@val; }
 20717:22000,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
 20717:22001,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
 20717:22002,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
@@ -959,25 +1114,25 @@
 20831:4596,{ bonus bMatk,-5*(readparam(bInt)/10); }
 20838:26109,{ bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10; .@eq = getequiprefinerycnt(EQI_GARMENT); .@weapon = getequiprefinerycnt(EQI_HAND_R); if (.@eq >= 7 && .@weapon >= 7) { bonus2 bSkillAtk,"SO_EARTHGRAVE",40; } if ((.@eq + .@weapon) >= 18) { bonus2 bMagicAtkEle,Ele_Neutral,10; bonus2 bMagicAtkEle,Ele_Earth,10; if ((.@eq + .@weapon) >= 22) { bonus2 bMagicAtkEle,Ele_Water,10; } } }
 20840:28725,{ .@weapon = getequiprefinerycnt(EQI_HAND_R); .@eq = getequiprefinerycnt(EQI_GARMENT); .@val = 80; if (.@weapon >= 7 && .@eq >= 7) { .@val += 80; } if ((.@weapon + .@eq) >= 18) { .@val += 40; } if ((.@weapon + .@eq) >= 22) { bonus2 bMagicAtkEle,Ele_Fire,15; } bonus bMatk,.@val; }
-20846:22000,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bBaseAtk,30; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22001,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bMatk,30; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22002,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bAspdRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22003,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bAddItemHealRate,10; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22004,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bLongAtkRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22005,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bCritAtkRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22006,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bBaseAtk,30; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22007,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bAddItemHealRate,10; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22008,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bLongAtkRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22009,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bMatk,30; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22010,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bAspdRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
-20846:22011,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bCritAtkRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; }
+20846:22000,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bBaseAtk,30; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22001,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bMatk,30; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22002,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bAspdRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22003,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bAddItemHealRate,10; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22004,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bLongAtkRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22005,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bCritAtkRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22006,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bBaseAtk,30; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22007,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bAddItemHealRate,10; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22008,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bLongAtkRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22009,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bMatk,30; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22010,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bAspdRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
+20846:22011,{ bonus bMaxHPrate,15; bonus bMdef,10; bonus bCritAtkRate,5; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player_Human,5; }
 20847:28745,{ .@weapon = getequiprefinerycnt(EQI_HAND_R); .@eq = getequiprefinerycnt(EQI_GARMENT); .@val = 10; if (.@weapon >= 7 && .@eq >= 7) { bonus bCritAtkRate,15; } if ((.@weapon + .@eq) >= 18) { .@val += 15; if ((.@weapon + .@eq) >= 22) { skill "TF_DOUBLE",4; bonus bDoubleRate,20; } } bonus bAspdRate,.@val; }
 20859:4121,{ bonus bPerfectHitAddRate,50; bonus2 bResEff,Eff_Stone,10000; }
 20863:4593,{ bonus bLongAtkRate,-1*readparam(bDex)/10; }
 20922:4306,{ bonus2 bSubEle,Ele_Neutral,20; bonus bMaxHPrate,10; bonus bMdef,10; }
-20925:22035,{ bonus bAgi,10; bonus bInt,10; bonus bVariableCastrate,-10; bonus2 bSubRace,RC_Player,5; }
-20925:22036,{ bonus bStr,10; bonus bDex,10; bonus bDelayrate,-20; bonus2 bSubRace,RC_Player,5; }
-20925:22037,{ bonus bVit,10; bonus bLuk,10; bonus bHealPower,20; bonus2 bSubRace,RC_Player,5; bonus bUseSPrate,-10; }
+20925:22035,{ bonus bAgi,10; bonus bInt,10; bonus bVariableCastrate,-10; bonus2 bSubRace,RC_Player_Human,5; }
+20925:22036,{ bonus bStr,10; bonus bDex,10; bonus bDelayrate,-20; bonus2 bSubRace,RC_Player_Human,5; }
+20925:22037,{ bonus bVit,10; bonus bLuk,10; bonus bHealPower,20; bonus2 bSubRace,RC_Player_Human,5; bonus bUseSPrate,-10; }
 20931:1752,{ bonus2 bSubEle,Ele_Fire,75; }
 20931:1754,{ bonus2 bSubEle,Ele_Water,75; }
 20931:1755,{ bonus2 bSubEle,Ele_Wind,75; }
@@ -1019,8 +1174,8 @@
 22101:29152,{ bonus bMaxHPRate,5; bonus bMaxSPRate,5; .@r = getequiprefinerycnt(EQI_SHOES); if(.@r >= 7) { bonus bLongAtkRate,2; } if(.@r >= 9) { bonus bLongAtkRate,3; } if(.@r >= 12) { bonus bDelayrate,-5; } }
 22101:29153,{ bonus bMaxHPRate,5; bonus bMaxSPRate,5; .@r = getequiprefinerycnt(EQI_SHOES); if(.@r >= 7) { bonus bCritAtkRate,2; } if(.@r >= 9) { bonus bCritAtkRate,3; } if(.@r >= 12) { bonus bDelayrate,-5; } }
 22104:1646,{ .@r = getequiprefinerycnt(EQI_HAND_R); .@b = getskilllv("WZ_FROSTNOVA"); .@c = getskilllv("WZ_WATERBALL"); bonus2 bMagicAtkEle,Ele_Water,4*.@r; bonus2 bIgnoreMdefClassRate,Class_Normal,5*.@b; bonus2 bIgnoreMdefClassRate,Class_Boss,5*.@b; bonus2 bSkillAtk,"WZ_WATERBALL",(30*.@c)+(20*.@r); }
-22106:1387,{ .@r = getequiprefinerycnt(EQI_SHOES); .@b = getequiprefinerycnt(EQI_HAND_R); if (.@r>=7) { bonus2 bSubRace,RC_DemiHuman,30; bonus2 bSubRace,RC_Player,30; if (.@b>=7) { bonus2 bSkillAtk,"WS_CARTTERMINATION",8; bonus2 bAddClass,Class_Boss,20; } if (.@b>=9) { bonus2 bSkillAtk,"WS_CARTTERMINATION",12; bonus2 bAddClass,Class_Boss,30; } } }
-22106:1490,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,40; bonus2 bSubRace,RC_Player,40; bonus4 bAutoSpellOnSkill,"LK_SPIRALPIERCE","RK_SONICWAVE",getskilllv("RK_SONICWAVE"),10000; if (.@r>=7) { bonus2 bSkillAtk,"RK_SONICWAVE",20; bonus2 bSkillAtk,"LK_SPIRALPIERCE",20; bonus2 bSubClass,Class_Boss,20; } if (.@r>=9) { bonus2 bSkillAtk,"RK_SONICWAVE",30; bonus2 bSkillAtk,"LK_SPIRALPIERCE",30; bonus2 bSubClass,Class_Boss,30; } }
+22106:1387,{ .@r = getequiprefinerycnt(EQI_SHOES); .@b = getequiprefinerycnt(EQI_HAND_R); if (.@r>=7) { bonus2 bSubRace,RC_DemiHuman,30; bonus2 bSubRace,RC_Player_Human,30; if (.@b>=7) { bonus2 bSkillAtk,"WS_CARTTERMINATION",8; bonus2 bAddClass,Class_Boss,20; } if (.@b>=9) { bonus2 bSkillAtk,"WS_CARTTERMINATION",12; bonus2 bAddClass,Class_Boss,30; } } }
+22106:1490,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,40; bonus2 bSubRace,RC_Player_Human,40; bonus4 bAutoSpellOnSkill,"LK_SPIRALPIERCE","RK_SONICWAVE",getskilllv("RK_SONICWAVE"),10000; if (.@r>=7) { bonus2 bSkillAtk,"RK_SONICWAVE",20; bonus2 bSkillAtk,"LK_SPIRALPIERCE",20; bonus2 bSubClass,Class_Boss,20; } if (.@r>=9) { bonus2 bSkillAtk,"RK_SONICWAVE",30; bonus2 bSkillAtk,"LK_SPIRALPIERCE",30; bonus2 bSubClass,Class_Boss,30; } }
 22106:18122,{ .@r = getequiprefinerycnt(EQI_SHOES); .@b = getequiprefinerycnt(EQI_HAND_R); if (.@r>=7) { bonus bLongAtkRate,3*(readparam(bStr)/10); if (.@b>=7) { bonus2 bSkillAtk,"RA_ARROWSTORM",20; bonus2 bSkillAtk,"RA_AIMEDBOLT",20; bonus2 bAddClass,Class_Boss,20; } if (.@b>=9) { bonus2 bSkillAtk,"RA_ARROWSTORM",30; bonus2 bSkillAtk,"RA_AIMEDBOLT",30; bonus2 bAddClass,Class_Boss,30; } } }
 22106:2160,{ .@r = getequiprefinerycnt(EQI_SHOES); if (.@r > 6) { bonus2 bSubSize,Size_Large,2; bonus2 bSubClass,Class_Boss,2; } if (.@r > 8) { bonus2 bSubSize,Size_Large,2; bonus2 bSubClass,Class_Boss,2; } }
 22120:1631,{ .@r = getequiprefinerycnt(EQI_HAND_R); .@cast = -5*getskilllv("AB_ORATIO"); bonus2 bVariableCastrate,"AB_JUDEX",.@cast; bonus2 bVariableCastrate,"AB_ADORAMUS",.@cast; if (.@r >= 7) { .@magic = 30; if (.@r >= 9) { .@magic += 20; .@dmg = 20; } bonus2 bMagicAddRace,RC_Demon,.@magic; bonus2 bMagicAddRace,RC_Undead,.@magic; bonus2 bMagicAddEle,Ele_Undead,.@magic; bonus2 bMagicAddEle,Ele_Dark,.@magic; } bonus2 bSkillAtk,"AB_ADORAMUS",.@dmg + 10*(getskilllv("AB_LAUDAAGNUS")+getskilllv("AB_LAUDARAMUS")+getskilllv("AB_CLEARANCE")); }
@@ -1041,12 +1196,12 @@
 22126:28471:28472,{ bonus bAspdRate,10; bonus bHit,10; bonus2 bExpAddClass,Class_All,2; bonus bSpeedAddRate,25; }
 22133:26007,{ bonus bAspdRate,8; .@eq = getequiprefinerycnt(EQI_SHOES); .@weapon = getequiprefinerycnt(EQI_HAND_R); if (.@eq >= 7 && .@weapon >= 7) { .@val = 20; } if ((.@eq + .@weapon) >= 18) { bonus bLongAtkRate,10; if ((.@eq + .@weapon) >= 22) { .@val += 30; } } if (.@val) { bonus2 bSkillAtk,"LG_BANISHINGPOINT",.@val; } }
 22133:32005,{ bonus bBaseAtk,40; .@eq = getequiprefinerycnt(EQI_SHOES); .@weapon = getequiprefinerycnt(EQI_HAND_R); if (.@eq >= 7 && .@weapon >= 7) { .@val = 20; } if ((.@eq + .@weapon) >= 18) { bonus2 bAddClass,Class_All,10; if ((.@eq + .@weapon) >= 22) { .@val += 20; } } if (.@val) { bonus2 bSkillAtk,"RK_HUNDREDSPEAR",.@val; } }
-22138:20815,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubEle,Ele_Holy,30-(2*getskilllv("CR_TRUST")); bonus2 bSubEle,Ele_Dark,30; bonus bFixedCastrate,-50; if (.@r > 8) .@val = 20; else if (.@r > 6) .@val = 10; bonus2 bMagicAtkEle,Ele_Fire,.@val; bonus2 bMagicAtkEle,Ele_Neutral,.@val; bonus2 bMagicAtkEle,Ele_Dark,.@val; }
-22138:20815:1643,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bMagicAtkEle,Ele_Fire,4*getskilllv("WZ_FIREPILLAR"); bonus2 bMagicAtkEle,Ele_Neutral,6*getskilllv("HW_GRAVITATION"); if (.@r > 8) .@val = 2; else if (.@r > 6) .@val = 1; bonus2 bSkillAtk,"WL_HELLINFERNO",100*.@val; bonus2 bMagicAddRace,RC_DemiHuman,20*.@val; bonus2 bMagicAddRace,RC_Player,20*.@val; }
+22138:20815,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player_Human,10; bonus2 bSubEle,Ele_Holy,30-(2*getskilllv("CR_TRUST")); bonus2 bSubEle,Ele_Dark,30; bonus bFixedCastrate,-50; if (.@r > 8) .@val = 20; else if (.@r > 6) .@val = 10; bonus2 bMagicAtkEle,Ele_Fire,.@val; bonus2 bMagicAtkEle,Ele_Neutral,.@val; bonus2 bMagicAtkEle,Ele_Dark,.@val; }
+22138:20815:1643,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player_Human,10; bonus2 bMagicAtkEle,Ele_Fire,4*getskilllv("WZ_FIREPILLAR"); bonus2 bMagicAtkEle,Ele_Neutral,6*getskilllv("HW_GRAVITATION"); if (.@r > 8) .@val = 2; else if (.@r > 6) .@val = 1; bonus2 bSkillAtk,"WL_HELLINFERNO",100*.@val; bonus2 bMagicAddRace,RC_DemiHuman,20*.@val; bonus2 bMagicAddRace,RC_Player_Human,20*.@val; }
 22138:4876,{ bonus2 bMagicAtkEle,Ele_Fire,-50; bonus2 bMagicAtkEle,Ele_Neutral,-50; bonus2 bMagicAtkEle,Ele_Dark,-50; }
-22170:1618,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bIgnoreMdefClassRate,Class_All,50; if (.@r>=10) { bonus2 bMagicAtkEle,Ele_Neutral,80; bonus2 bMagicAddRace,RC_Demihuman,20; bonus2 bMagicAddRace,RC_Player,20; bonus2 bSkillCooldown,"WL_EARTHSTRAIN",-2400; bonus2 bSkillCooldown,"WL_CHAINLIGHTNING",-1000; autobonus "{ bonus2 bSkillAtk,\"WL_CHAINLIGHTNING\",100; }",60,5000,BF_MAGIC; } }
-22170:1620,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bIgnoreMdefClassRate,Class_All,50; if (.@r>=10) { bonus2 bMagicAtkEle,Ele_Neutral,80; bonus2 bMagicAddRace,RC_Demihuman,20; bonus2 bMagicAddRace,RC_Player,20; bonus2 bSkillCooldown,"WL_EARTHSTRAIN",-2400; bonus2 bSkillCooldown,"WL_CHAINLIGHTNING",-1000; autobonus "{ bonus2 bSkillAtk,\"WL_CHAINLIGHTNING\",100; }",60,5000,BF_MAGIC; } }
-22170:19020,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus2 bMagicAtkEle,Ele_Earth,10; bonus2 bMagicAtkEle,Ele_Wind,10; if (.@r>=7) { bonus2 bMagicAtkEle,Ele_Earth,10; bonus2 bMagicAtkEle,Ele_Wind,10; } if (.@r>=9) { bonus2 bMagicAtkEle,Ele_Earth,10; bonus2 bMagicAtkEle,Ele_Wind,10; } }
+22170:1618,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player_Human,10; bonus2 bIgnoreMdefClassRate,Class_All,50; if (.@r>=10) { bonus2 bMagicAtkEle,Ele_Neutral,80; bonus2 bMagicAddRace,RC_Demihuman,20; bonus2 bMagicAddRace,RC_Player_Human,20; bonus2 bSkillCooldown,"WL_EARTHSTRAIN",-2400; bonus2 bSkillCooldown,"WL_CHAINLIGHTNING",-1000; autobonus "{ bonus2 bSkillAtk,\"WL_CHAINLIGHTNING\",100; }",60,5000,BF_MAGIC; } }
+22170:1620,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player_Human,10; bonus2 bIgnoreMdefClassRate,Class_All,50; if (.@r>=10) { bonus2 bMagicAtkEle,Ele_Neutral,80; bonus2 bMagicAddRace,RC_Demihuman,20; bonus2 bMagicAddRace,RC_Player_Human,20; bonus2 bSkillCooldown,"WL_EARTHSTRAIN",-2400; bonus2 bSkillCooldown,"WL_CHAINLIGHTNING",-1000; autobonus "{ bonus2 bSkillAtk,\"WL_CHAINLIGHTNING\",100; }",60,5000,BF_MAGIC; } }
+22170:19020,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMatkRate,10; if (.@r>=7) { bonus2 bMagicAtkEle,Ele_Earth,10; bonus2 bMagicAtkEle,Ele_Wind,10; } if (.@r>=9) { bonus2 bMagicAtkEle,Ele_Earth,10; bonus2 bMagicAtkEle,Ele_Wind,10; } }
 22171:1847,{ autobonus "{ bonus bStr,20; bonus2 bAddClass,Class_All,15; }",30,7000; }
 22171:13345,{ autobonus "{ bonus bStr,20; bonus bLongAtkRate,10; }",20,7000,BF_WEAPON; /* unknown rate */ }
 22171:13485,{ autobonus "{ bonus bDex,20; bonus bLongAtkRate,10; }",30,7000; }
@@ -1072,9 +1227,9 @@
 //22171:580002,{ autobonus "{ bonus bInt,20; bonus bMatkRate,15; }",30,7000; }
 //22171:590002,{ autobonus "{ bonus bStr,20; bonus2 bAddClass,Class_All,15; }",30,7000; }
 //22171:600004,{ autobonus "{ bonus bVit,20; bonus bLongAtkRate,10; }",30,7000; }
-22172:15042,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus bSpeedRate,25; bonus bCritAtkRate,4*(readparam(bluk)/20); if (.@r>=7) { bonus bAspdRate,8; bonus2 bSubRace,RC_DemiHuman,8; bonus2 bSubRace,RC_Player,8; bonus2 bSkillAtk,"HT_BLITZBEAT",40; bonus2 bSkillAtk,"SN_SHARPSHOOTING",50; } if (.@r>=9) { bonus bAspdRate,4; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; bonus2 bSkillAtk,"HT_BLITZBEAT",20; bonus2 bSkillAtk,"SN_SHARPSHOOTING",25; } }
-22172:15043,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus bHPGainValue,500; bonus bSpeedRate,25; bonus2 bSkillAtk,"RA_CLUSTERBOMB",30*(readparam(bint)/20); bonus2 bSkillUseSP,"RA_ELECTRICSHOCKER",30; if (.@r>=7) { bonus bFlee2,6; bonus2 bSubRace,RC_DemiHuman,8; bonus2 bSubRace,RC_Player,8; bonus2 bSkillAtk,"RA_CLUSTERBOMB",400; bonus2 bSkillAtk,"RA_AIMEDBOLT",20; } if (.@r>=9) { bonus bFlee2,3; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; bonus2 bSkillAtk,"RA_CLUSTERBOMB",200; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; } }
-22190:28254,{ bonus2 bAddClass,Class_All,10; .@eq = getequiprefinerycnt(EQI_SHOES); .@weapon = getequiprefinerycnt(EQI_HAND_R); if (.@eq >= 7 && .@weapon >= 7) { bonus bLongAtkRate,5; } if ((.@eq + .@weapon) >= 18) { bonus2 bSkillAtk,"RL_FIRE_RAIN",20; bonus2 bSkillCooldown,"RL_FIRE_RAIN",-2000; if ((.@eq + .@weapon) >= 22) { autobonus3 "{ bonus bBaseAtk,50; bonus2 bAddRace,RC_Brute,50; bonus2 bAddRace,RC_Demon,50; }",5,10000,"RL_R_TRIP"; /* unknown rate */ } } }
+22172:15042,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus bSpeedRate,25; bonus bCritAtkRate,4*(readparam(bluk)/20); if (.@r>=7) { bonus bAspdRate,8; bonus2 bSubRace,RC_DemiHuman,8; bonus2 bSubRace,RC_Player_Human,8; bonus2 bSkillAtk,"HT_BLITZBEAT",40; bonus2 bSkillAtk,"SN_SHARPSHOOTING",50; } if (.@r>=9) { bonus bAspdRate,4; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player_Human,4; bonus2 bSkillAtk,"HT_BLITZBEAT",20; bonus2 bSkillAtk,"SN_SHARPSHOOTING",25; } }
+22172:15043,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus bHPGainValue,500; bonus bSpeedRate,25; bonus2 bSkillAtk,"RA_CLUSTERBOMB",30*(readparam(bint)/20); bonus2 bSkillUseSP,"RA_ELECTRICSHOCKER",30; if (.@r>=7) { bonus bFlee2,6; bonus2 bSubRace,RC_DemiHuman,8; bonus2 bSubRace,RC_Player_Human,8; bonus2 bSkillAtk,"RA_CLUSTERBOMB",400; bonus2 bSkillAtk,"RA_AIMEDBOLT",20; } if (.@r>=9) { bonus bFlee2,3; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player_Human,4; bonus2 bSkillAtk,"RA_CLUSTERBOMB",200; bonus2 bSkillAtk,"RA_AIMEDBOLT",10; } }
+22190:28254,{ bonus2 bAddClass,Class_All,10; .@eq = getequiprefinerycnt(EQI_SHOES); .@weapon = getequiprefinerycnt(EQI_HAND_R); if (.@eq >= 7 && .@weapon >= 7) { bonus bLongAtkRate,5; } if ((.@eq + .@weapon) >= 18) { bonus2 bSkillAtk,"RL_FIRE_RAIN",20; bonus2 bSkillCooldown,"RL_FIRE_RAIN",-2000; if ((.@eq + .@weapon) >= 22) { autobonus3 "{ bonus bBaseAtk,50; bonus2 bAddRace,RC_Brute,50; bonus2 bAddRace,RC_Player_Doram,50; bonus2 bAddRace,RC_Demon,50; }",5,10000,"RL_R_TRIP"; /* unknown rate */ } } }
 24012:24013:24014:24015:24016:24017,{ bonus bAllStats,3; }
 24018:24019:24020,{ if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) + getequiprefinerycnt(EQI_SHADOW_WEAPON) >= 23) { bonus2 bAddClass,Class_All,1; } }
 24021:24022:24023,{ if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) + getequiprefinerycnt(EQI_SHADOW_WEAPON) >= 23) { bonus bMatkRate,1; } }
@@ -1134,7 +1289,7 @@
 24154:24155,{ bonus bDef,getequiprefinerycnt(EQI_SHADOW_ARMOR); if (getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 15) bonus bUnbreakableArmor; }
 24156:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreDefRace,RC_DemiHuman; }
 24157:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreDefRace,RC_Demon; }
-24158:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreDefRace,RC_Brute; }
+24158:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) { bonus bIgnoreDefRace,RC_Brute; bonus bIgnoreDefRace,RC_Player_Doram; } }
 24159:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreDefRace,RC_Insect; }
 24160:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreDefRace,RC_Fish; }
 24161:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreDefRace,RC_Dragon; }
@@ -1146,7 +1301,7 @@
 24168:24169:24329,{ if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25) { bonus bIgnoreMDefRace,RC_DemiHuman; } }
 24168:24169:24170,{ bonus bMatk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreMDefRace,RC_DemiHuman; }
 24168:24169:24171,{ bonus bMatk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreMDefRace,RC_Demon; }
-24168:24169:24172,{ bonus bMatk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreMDefRace,RC_Brute; }
+24168:24169:24172,{ bonus bMatk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) { bonus bIgnoreMDefRace,RC_Brute; bonus bIgnoreMDefRace,RC_Player_Doram; } }
 24168:24169:24173,{ bonus bMatk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreMDefRace,RC_Insect; }
 24168:24169:24174,{ bonus bMatk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreMDefRace,RC_Fish; }
 24168:24169:24175,{ bonus bMatk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreMDefRace,RC_Dragon; }
@@ -1157,16 +1312,16 @@
 24168:24169:24345:24346:24423:24424,{ if ((getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)) >= 54) { bonus2 bIgnoreDefClassRate,Class_Normal,20; } }
 24180:24181:24182:24183:24184:24185,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); bonus bAllStats,1; if(.@r>=45) { bonus bMaxHPrate,(.@r-60); bonus bNoWalkDelay; } }
 24180:24181:24182:24183:24184:24321,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); bonus bAllStats,1; if (.@r >= 45) { bonus bMaxHPrate,(.@r-60); bonus bNoWalkDelay; } }
-24186:24198,{ bonus2 bSubEle,Ele_Neutral,2; }
-24187:24199,{ bonus2 bSubEle,Ele_Dark,2; }
-24188:24200,{ bonus2 bSubEle,Ele_Water,2; }
-24189:24201,{ bonus2 bSubEle,Ele_Earth,2; }
-24190:24202,{ bonus2 bSubEle,Ele_Fire,2; }
-24191:24203,{ bonus2 bSubEle,Ele_Wind,2; }
-24192:24204,{ bonus2 bSubEle,Ele_Poison,2; }
-24193:24205,{ bonus2 bSubEle,Ele_Holy,2; }
-24194:24206,{ bonus2 bSubEle,Ele_Ghost,2; }
-24195:24207,{ bonus2 bSubEle,Ele_Undead,2; }
+24186:24198,{ bonus2 bSubDefEle,Ele_Neutral,2; bonus2 bMagicSubDefEle,Ele_Neutral,2; }
+24187:24199,{ bonus2 bSubDefEle,Ele_Dark,2; bonus2 bMagicSubDefEle,Ele_Dark,2; }
+24188:24200,{ bonus2 bSubDefEle,Ele_Water,2; bonus2 bMagicSubDefEle,Ele_Water,2; }
+24189:24201,{ bonus2 bSubDefEle,Ele_Earth,2; bonus2 bMagicSubDefEle,Ele_Earth,2; }
+24190:24202,{ bonus2 bSubDefEle,Ele_Fire,2; bonus2 bMagicSubDefEle,Ele_Fire,2; }
+24191:24203,{ bonus2 bSubDefEle,Ele_Wind,2; bonus2 bMagicSubDefEle,Ele_Wind,2; }
+24192:24204,{ bonus2 bSubDefEle,Ele_Poison,2; bonus2 bMagicSubDefEle,Ele_Poison,2; }
+24193:24205,{ bonus2 bSubDefEle,Ele_Holy,2; bonus2 bMagicSubDefEle,Ele_Holy,2; }
+24194:24206,{ bonus2 bSubDefEle,Ele_Ghost,2; bonus2 bMagicSubDefEle,Ele_Ghost,2; }
+24195:24207,{ bonus2 bSubDefEle,Ele_Undead,2; bonus2 bMagicSubDefEle,Ele_Undead,2; }
 24196:24197,{ bonus bFlee,5; if(getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ARMOR)>=15) bonus bSpeedAddRate,3; }
 24197:24320,{ bonus bFlee,5; if ((getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHOES)) >= 15) { bonus bSpeedRate,25; /* unknown value */ } }
 24208:24209,{ bonus2 bExpAddRace,RC_All,((getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_SHIELD))>=15?10:1); }
@@ -1210,7 +1365,7 @@
 24345:24346:24347,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bMDef,5; if (.@r >= 25) { bonus bIgnoreMDefRace,RC_DemiHuman; bonus bIgnoreMDefRace,RC_Undead; } }
 24345:24346:24348,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bMDef,5; if (.@r >= 25) { bonus bIgnoreMDefRace,RC_Demon; bonus bIgnoreMDefRace,RC_Angel; } }
 24345:24346:24349,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bMDef,5; if (.@r >= 25) { bonus bIgnoreMDefRace,RC_Formless; bonus bIgnoreMDefRace,RC_Dragon; } }
-24345:24346:24350,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bMDef,5; if (.@r >= 25) { bonus bIgnoreMDefRace,RC_Plant; bonus bIgnoreMDefRace,RC_Brute; } }
+24345:24346:24350,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bMDef,5; if (.@r >= 25) { bonus bIgnoreMDefRace,RC_Plant; bonus bIgnoreMDefRace,RC_Brute; bonus bIgnoreMDefRace,RC_Player_Doram; } }
 24345:24346:24351,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bMDef,5; if (.@r >= 25) { bonus bIgnoreMDefRace,RC_Fish; bonus bIgnoreMDefRace,RC_Insect; } }
 24360:24361:24362,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); .@rate = 20 + 10*(.@r/10); if (.@r >= 25) { .@hp = 500; } else { .@hp = 100; } autobonus "{ bonus2 bHPRegenRate,"+.@hp+",1000; }",.@rate,5000; }
 24363:24364:24365,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); .@rate = 10 + 10*(.@r/15); if (.@r >= 25) { .@hp = 250; } else { .@hp = 100; } autobonus "{ bonus2 bHPRegenRate,"+.@hp+",1000; }",.@rate,5000,BF_MAGIC; }
@@ -1219,15 +1374,15 @@
 24373:24374:24375,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bDef,5; if (.@r >= 25) { bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Undead; } }
 24373:24374:24376,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bDef,5; if (.@r >= 25) { bonus bIgnoreDefRace,RC_Demon; bonus bIgnoreDefRace,RC_Angel; } }
 24373:24374:24377,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bDef,5; if (.@r >= 25) { bonus bIgnoreDefRace,RC_Formless; bonus bIgnoreDefRace,RC_Dragon; } }
-24373:24374:24378,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bDef,5; if (.@r >= 25) { bonus bIgnoreDefRace,RC_Plant; bonus bIgnoreDefRace,RC_Brute; } }
+24373:24374:24378,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bDef,5; if (.@r >= 25) { bonus bIgnoreDefRace,RC_Plant; bonus bIgnoreDefRace,RC_Brute; bonus bIgnoreDefRace,RC_Player_Doram; } }
 24373:24374:24379,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR); bonus bDef,5; if (.@r >= 25) { bonus bIgnoreDefRace,RC_Fish; bonus bIgnoreDefRace,RC_Insect; } }
 24380:24381:24382,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); .@rate = 20 + 10*(.@r/10); if (.@r >= 25) { .@sp = 30; } else { .@sp = 10; } autobonus "{ bonus2 bSPRegenRate,"+.@sp+",1000; }",.@rate,5000; }
 24383:24384:24385,{ .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); .@rate = 10 + 10*(.@r/15); if (.@r >= 25) { .@sp = 30; } else { .@sp = 10; } autobonus "{ bonus2 bSPRegenRate,"+.@sp+",1000; }",.@rate,5000,BF_MAGIC; }
-24387:24388:24389:24390:24391:24392,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); .@val = 20 + min(30,.@r); if (BaseLevel >= 130) { .@val += 6; } else if (BaseLevel >= 125) { .@val += 3; } bonus2 bIgnoreDefRaceRate,RC_All,.@val; bonus2 bIgnoreMdefRaceRate,RC_All,.@val; bonus2 bIgnoreDefRaceRate,RC_Player,-.@val; bonus2 bIgnoreMdefRaceRate,RC_Player,-.@val; }
+24387:24388:24389:24390:24391:24392,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); .@val = 20 + min(30,.@r); if (BaseLevel >= 130) { .@val += 6; } else if (BaseLevel >= 125) { .@val += 3; } bonus2 bIgnoreDefRaceRate,RC_All,.@val; bonus2 bIgnoreMdefRaceRate,RC_All,.@val; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-.@val; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-.@val; }
 24393:24394:24395,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bBaseAtk,.@r*2; if (.@r >= 25) { bonus2 bAddClass,Class_All,5; } else if (.@r >= 23) { bonus2 bAddClass,Class_All,2; } }
 24396:24397:24398,{ .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR) + getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES); bonus bMatk,.@r*2; if (.@r >= 25) { bonus bMatkRate,5; } else if (.@r >= 23) { bonus bMatkRate,2; } }
 24399:24400,{ .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES); if (.@r >= 16) { bonus bDef,100; bonus bMaxHPrate,4; bonus bMaxSPrate,4; } else { bonus bDef,50; bonus bMaxHPrate,2; bonus bMaxSPrate,2; } }
-24416:24417:24418:24419:24420:24421,{ bonus bAspd,2; bonus bVariableCastrate,-10; bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMdefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player,-70; bonus2 bIgnoreMdefRaceRate,RC_Player,-70; }
+24416:24417:24418:24419:24420:24421,{ bonus bAspd,2; bonus bVariableCastrate,-10; bonus2 bIgnoreDefRaceRate,RC_All,70; bonus2 bIgnoreMdefRaceRate,RC_All,70; bonus2 bIgnoreDefRaceRate,RC_Player_Human,-70; bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-70; }
 24425:24426,{ bonus bMaxHPrate,2; bonus bMaxSPrate,2; }
 24427:24168:24169,{ bonus bMatk,5; .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); if (.@r >= 25) { bonus2 bIgnoreMdefRaceRate,RC_Demon,100; bonus2 bIgnoreMdefRaceRate,RC_Angel,100; } }
 24428:24168:24169,{ bonus bMatk,5; .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L); if (.@r >= 25) { bonus2 bIgnoreMdefRaceRate,RC_Formless,100; bonus2 bIgnoreMdefRaceRate,RC_Dragon,100; } }
@@ -1296,17 +1451,17 @@
 27170:27173,{ bonus2 bSkillAtk,"GS_SPREADATTACK",50; }
 27171:27174,{ bonus2 bSkillAtk,"GS_RAPIDSHOWER",50; }
 27172:27175,{ bonus2 bAddSize,Size_Small,10; bonus2 bMagicAddSize,Size_Small,10; }
-27196:27199,{ bonus2 bMagicAddSize,Size_Small,5; bonus2 bMagicAddRace,RC_Brute,5; }
+27196:27199,{ bonus2 bMagicAddSize,Size_Small,5; bonus2 bMagicAddRace,RC_Brute,5; bonus2 bMagicAddRace,RC_Player_Doram,5; }
 27196:27331,{ bonus bDelayrate,-3; }
-27197:27198,{ bonus2 bAddSize,Size_Small,5; bonus2 bAddRace,RC_Brute,5; }
+27197:27198,{ bonus2 bAddSize,Size_Small,5; bonus2 bAddRace,RC_Brute,5; bonus2 bAddRace,RC_Player_Doram,5; }
 27197:27333,{ bonus2 bAddClass,Class_All,5; }
 // 27321:27326,{ bonus bMaxHPrate,50; }
 27322:27323,{ bonus bMaxSPrate,5; bonus bMaxHPrate,5; }
 27324:27325,{ bonus2 bMagicAtkEle,Ele_Water,10; bonus2 bSubDefEle,Ele_Fire,10; }
-28022:28509,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bAspdRate,10; if (.@r >= 9) { bonus bCritAtkRate,10; if (.@r >= 11) { bonus2 bAddRace,RC_Brute,25; } } }
+28022:28509,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bAspdRate,10; if (.@r >= 9) { bonus bCritAtkRate,10; if (.@r >= 11) { bonus2 bAddRace,RC_Brute,25; bonus2 bAddRace,RC_Player_Doram,25; } } }
 28315:28317,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
 28316:28318,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
-28320:22016,{ .@val = min(12,getequiprefinerycnt(EQI_SHOES)); bonus2 bAddRace,RC_DemiHuman,.@val; bonus2 bAddRace,RC_Player,.@val; }
+28320:22016,{ .@val = min(12,getequiprefinerycnt(EQI_SHOES)); bonus2 bAddRace,RC_DemiHuman,.@val; bonus2 bAddRace,RC_Player_Human,.@val; }
 28321:28322,{ bonus bUseSPrate,-(getskilllv("HT_BEASTBANE") * 2); }
 28326:28327,{ bonus bInt,8; bonus bStr,8; }
 28358:18521,{ skill "AS_CLOAKING",1; }
@@ -1325,19 +1480,19 @@
 28491:4817,{ bonus bHit,15; bonus bCriticalLong,10; }
 28491:4818,{ bonus bHit,15; bonus bCriticalLong,10; }
 28499:28920,{ bonus bFlee2,10; }
-28501:4807,{ bonus bAspd,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Brute,1; bonus2 bSubRace,RC_Fish,1; bonus2 bSubRace,RC_Player,1; bonus2 bSubRace,RC_Demon,1; bonus2 bSubRace,RC_Undead,1; }
-28501:4842,{ bonus bAspd,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Brute,1; bonus2 bSubRace,RC_Fish,1; bonus2 bSubRace,RC_Player,1; bonus2 bSubRace,RC_Demon,1; bonus2 bSubRace,RC_Undead,1; }
-28502:2201,{ .@a = (readparam(bStr)+readparam(bLuk))/80; .@b = (readparam(bAgi)+readparam(bVit))/80; .@c = (readparam(bInt)+readparam(bDex))/80; bonus bMaxHPrate,5*.@b; bonus2 bAddClass,Class_All,6*.@a; bonus bMatk,120*.@c; bonus bCritical,5*.@a; bonus bAspdRate,5*.@b; bonus bVariableCastrate,-3*.@c; bonus bCritAtkRate,10*.@a; bonus2 bSubRace,RC_DemiHuman,((2*.@b)+2); bonus2 bSubRace,RC_Player,((2*.@b)+2); bonus bHealPower,10*.@c; }
-28502:2202,{ .@a = (readparam(bStr)+readparam(bLuk))/80; .@b = (readparam(bAgi)+readparam(bVit))/80; .@c = (readparam(bInt)+readparam(bDex))/80; bonus bMaxHPrate,5*.@b; bonus2 bAddClass,Class_All,6*.@a; bonus bMatk,120*.@c; bonus bCritical,5*.@a; bonus bAspdRate,5*.@b; bonus bVariableCastrate,-3*.@c; bonus bCritAtkRate,10*.@a; bonus2 bSubRace,RC_DemiHuman,((2*.@b)+2); bonus2 bSubRace,RC_Player,((2*.@b)+2); bonus bHealPower,10*.@c; }
-28502:2203,{ .@a = (readparam(bStr)+readparam(bLuk))/80; .@b = (readparam(bAgi)+readparam(bVit))/80; .@c = (readparam(bInt)+readparam(bDex))/80; bonus bMaxHPrate,5*.@b; bonus2 bAddClass,Class_All,6*.@a; bonus bMatk,120*.@c; bonus bCritical,5*.@a; bonus bAspdRate,5*.@b; bonus bVariableCastrate,-3*.@c; bonus bCritAtkRate,10*.@a; bonus2 bSubRace,RC_DemiHuman,((2*.@b)+2); bonus2 bSubRace,RC_Player,((2*.@b)+2); bonus bHealPower,10*.@c; }
-28502:2204,{ .@a = (readparam(bStr)+readparam(bLuk))/80; .@b = (readparam(bAgi)+readparam(bVit))/80; .@c = (readparam(bInt)+readparam(bDex))/80; bonus bMaxHPrate,5*.@b; bonus2 bAddClass,Class_All,6*.@a; bonus bMatk,120*.@c; bonus bCritical,5*.@a; bonus bAspdRate,5*.@b; bonus bVariableCastrate,-3*.@c; bonus bCritAtkRate,10*.@a; bonus2 bSubRace,RC_DemiHuman,((2*.@b)+2); bonus2 bSubRace,RC_Player,((2*.@b)+2); bonus bHealPower,10*.@c; }
+28501:4807,{ bonus bAspd,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Brute,1; bonus2 bSubRace,RC_Player_Doram,1; bonus2 bSubRace,RC_Fish,1; bonus2 bSubRace,RC_Player_Human,1; bonus2 bSubRace,RC_Demon,1; bonus2 bSubRace,RC_Undead,1; }
+28501:4842,{ bonus bAspd,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Brute,1; bonus2 bSubRace,RC_Player_Doram,1; bonus2 bSubRace,RC_Fish,1; bonus2 bSubRace,RC_Player_Human,1; bonus2 bSubRace,RC_Demon,1; bonus2 bSubRace,RC_Undead,1; }
+28502:2201,{ .@a = (readparam(bStr)+readparam(bLuk))/80; .@b = (readparam(bAgi)+readparam(bVit))/80; .@c = (readparam(bInt)+readparam(bDex))/80; bonus bMaxHPrate,5*.@b; bonus2 bAddClass,Class_All,6*.@a; bonus bMatk,120*.@c; bonus bCritical,5*.@a; bonus bAspdRate,5*.@b; bonus bVariableCastrate,-3*.@c; bonus bCritAtkRate,10*.@a; bonus2 bSubRace,RC_DemiHuman,((2*.@b)+2); bonus2 bSubRace,RC_Player_Human,((2*.@b)+2); bonus bHealPower,10*.@c; }
+28502:2202,{ .@a = (readparam(bStr)+readparam(bLuk))/80; .@b = (readparam(bAgi)+readparam(bVit))/80; .@c = (readparam(bInt)+readparam(bDex))/80; bonus bMaxHPrate,5*.@b; bonus2 bAddClass,Class_All,6*.@a; bonus bMatk,120*.@c; bonus bCritical,5*.@a; bonus bAspdRate,5*.@b; bonus bVariableCastrate,-3*.@c; bonus bCritAtkRate,10*.@a; bonus2 bSubRace,RC_DemiHuman,((2*.@b)+2); bonus2 bSubRace,RC_Player_Human,((2*.@b)+2); bonus bHealPower,10*.@c; }
+28502:2203,{ .@a = (readparam(bStr)+readparam(bLuk))/80; .@b = (readparam(bAgi)+readparam(bVit))/80; .@c = (readparam(bInt)+readparam(bDex))/80; bonus bMaxHPrate,5*.@b; bonus2 bAddClass,Class_All,6*.@a; bonus bMatk,120*.@c; bonus bCritical,5*.@a; bonus bAspdRate,5*.@b; bonus bVariableCastrate,-3*.@c; bonus bCritAtkRate,10*.@a; bonus2 bSubRace,RC_DemiHuman,((2*.@b)+2); bonus2 bSubRace,RC_Player_Human,((2*.@b)+2); bonus bHealPower,10*.@c; }
+28502:2204,{ .@a = (readparam(bStr)+readparam(bLuk))/80; .@b = (readparam(bAgi)+readparam(bVit))/80; .@c = (readparam(bInt)+readparam(bDex))/80; bonus bMaxHPrate,5*.@b; bonus2 bAddClass,Class_All,6*.@a; bonus bMatk,120*.@c; bonus bCritical,5*.@a; bonus bAspdRate,5*.@b; bonus bVariableCastrate,-3*.@c; bonus bCritAtkRate,10*.@a; bonus2 bSubRace,RC_DemiHuman,((2*.@b)+2); bonus2 bSubRace,RC_Player_Human,((2*.@b)+2); bonus bHealPower,10*.@c; }
 28506:1414,{ .@r = getequiprefinerycnt(EQI_HAND_R); if (.@r>=7) { .@val = 30; if (.@r>=9) { .@val += 20; bonus2 bAddClass,Class_Boss,.@val; bonus2 bAddEle,Ele_Water,.@val; bonus2 bAddEle,Ele_Wind,.@val; bonus2 bAddRace,RC_Fish,.@val; bonus2 bAddRace,RC_Insect,.@val; bonus2 bSkillAtk,"RK_WINDCUTTER",.@val; if (.@r>=10) { bonus2 bVariableCastrate,"RK_WINDCUTTER",-50; } } } }
 28506:1449,{ .@r = getequiprefinerycnt(EQI_HAND_R); if (.@r>=7) { .@val = 30; if (.@r>=9) { .@val += 20; bonus2 bAddClass,Class_Boss,.@val; bonus2 bAddEle,Ele_Water,.@val; bonus2 bAddEle,Ele_Wind,.@val; bonus2 bAddRace,RC_Fish,.@val; bonus2 bAddRace,RC_Insect,.@val; bonus2 bSkillAtk,"RK_WINDCUTTER",.@val; if (.@r>=10) { bonus2 bVariableCastrate,"RK_WINDCUTTER",-50; } } } }
-28506:15037,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; if (.@r>=7) { bonus bMaxHPrate,15; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; } if (.@r>=9) { bonus bMaxHPrate,15; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; } }
+28506:15037,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player_Human,3; if (.@r>=7) { bonus bMaxHPrate,15; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player_Human,2; } if (.@r>=9) { bonus bMaxHPrate,15; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player_Human,2; } }
 28506:15037:2476:2575:2884,{ autobonus3 "{bonus bDelayrate,-70;}",1000,10000,"LK_AURABLADE","{specialeffect2 EF_ENHANCE;}"; }
-28506:2476,{ .@r = getequiprefinerycnt(EQI_SHOES); bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; if (.@r>=7) { bonus bAspdRate,10; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; } if (.@r>=9) { bonus bAspdRate,10; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; } }
-28506:2575,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSkillUseSP,"RK_WINDCUTTER",18; bonus2 bSubRace,RC_Player,3; if (.@r>=7) { bonus bLongAtkDef,10; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; } if (.@r>=9) { bonus bLongAtkDef,10; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; } }
-28506:2884,{ bonus2 bAddClass,Class_All,5; bonus bMaxSPrate,5; bonus bAspdRate,5; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; }
+28506:2476,{ .@r = getequiprefinerycnt(EQI_SHOES); bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player_Human,3; if (.@r>=7) { bonus bAspdRate,10; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player_Human,1; } if (.@r>=9) { bonus bAspdRate,10; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player_Human,1; } }
+28506:2575,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSkillUseSP,"RK_WINDCUTTER",18; bonus2 bSubRace,RC_Player_Human,3; if (.@r>=7) { bonus bLongAtkDef,10; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player_Human,1; } if (.@r>=9) { bonus bLongAtkDef,10; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player_Human,1; } }
+28506:2884,{ bonus2 bAddClass,Class_All,5; bonus bMaxSPrate,5; bonus bAspdRate,5; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player_Human,4; }
 28508:28612,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bAspdRate,8; bonus bCritAtkRate,(5*(.@r/2)); if (.@r >= 9) { bonus bCritical,15; bonus2 bResEff,Eff_Curse,10000; if (.@r >= 11) { bonus bBaseAtk,100; } } }
 28509:28626,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus bAspdRate,8; bonus bCritAtkRate,(5*(.@r/2)); if (.@r >= 9) { bonus bCritical,15; if (.@r >= 11) { bonus bBaseAtk,100; } } }
 28594:4875,{ bonus bStr,40; bonus bMaxHPrate,10; }
@@ -1354,7 +1509,7 @@
 28909:2998,{ bonus bUseSPrate,-10; bonus bMaxSPrate,10; }
 29426:29423,{ bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",10; }
 29426:29424,{ bonus2 bFixedCastrate,"CH_SOULCOLLECT",-40; }
-29426:29425,{ bonus4 bAutoSpellOnSkill,"SR_RAMPAGEBLASTER",300,1,"CH_SOULCOLLECT"; }
+29426:29425,{ bonus4 bAutoSpellOnSkill,"SR_RAMPAGEBLASTER","CH_SOULCOLLECT",300,1; }
 29427:29613,{ bonus2 bSkillAtk,"SR_TIGERCANNON",15; }
 29427:29612,{ bonus bMaxHPrate,10; }
 29427:29611,{ bonus2 bSkillAtk,"SR_TIGERCANNON",15; }

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 197 - 197
db/re/item_db.txt


+ 10 - 0
db/re/item_flag.txt

@@ -1785,3 +1785,13 @@
 12622,32 //Boarding_Halter
 12887,32 //C_Wing_Of_Fly
 22508,32 //Para_Team_Mark_
+100065,32 //WL_MB_SG
+100066,32 //WL_MB_LOV
+100067,32 //WL_MB_MS
+100068,32 //WL_MB_DL
+100069,32 //WL_MB_JF
+100070,32 //WL_MB_ES
+100071,32 //WL_MB_CR
+100072,32 //WL_MB_CL
+100073,32 //WL_MB_CM
+100074,32 //WL_MB_TV

+ 2 - 2
db/re/item_package.txt

@@ -4835,8 +4835,8 @@ IG_Bs_Sha_M_S_10,24181,1,1,1,0,0,0 // 베어러즈 슈즈 쉐도우
 IG_Bs_Sha_M_S_10,24184,1,1,1,0,0,0 // 베어러즈 이어링 쉐도우
 IG_Bs_Sha_M_S_10,24185,1,1,1,0,0,0 // 베어러즈 펜던트 쉐도우
 
-IG_IG_Bs_Sha_M_S_11,24197,1,1,1,0,0,0 // 헤이스티 아머 쉐도우
-IG_IG_Bs_Sha_M_S_11,24196,1,1,1,0,0,0 // 헤이스티 슈즈 쉐도우
+IG_Bs_Sha_M_S_11,24197,1,1,1,0,0,0 // 헤이스티 아머 쉐도우
+IG_s_Sha_M_S_11,24196,1,1,1,0,0,0 // 헤이스티 슈즈 쉐도우
 
 IG_Bs_Sha_M_S_21,24030,1,1,1,0,0,0 // 크리티컬 아머 쉐도우
 IG_Bs_Sha_M_S_21,24333,1,1,1,0,0,0 // 크리티컬 슈즈 쉐도우

+ 50 - 26
db/re/item_randomopt_db.txt

@@ -36,9 +36,7 @@ RDMOPT_ATTR_TOLERACE_SAINT,{ bonus2 bSubEle,Ele_Holy,getrandomoptinfo(ROA_VALUE)
 RDMOPT_ATTR_TOLERACE_DARKNESS,{ bonus2 bSubEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_ATTR_TOLERACE_TELEKINESIS,{ bonus2 bSubEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_ATTR_TOLERACE_UNDEAD,{ bonus2 bSubEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_ATTR_TOLERACE_ALL,{ bonus2 bSubEle,Ele_All,getrandomoptinfo(ROA_VALUE); }
-// TODO: Confirm if damage reduction is implemented correctly.
-// kRO desc : <ELEMENT> 몬스터로부터 받는 물리 데미지 %d%% 감소.
+RDMOPT_ATTR_TOLERACE_ALLBUTNOTHING,{ for(.@i = Ele_Water; .@i < Ele_Undead; ++.@i) bonus2 bSubEle,.@i,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_DAMAGE_PROPERTY_NOTHING_USER,{ bonus2 bSubDefEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET,{ bonus2 bAddEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_DAMAGE_PROPERTY_WATER_USER,{ bonus2 bSubDefEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
@@ -59,25 +57,25 @@ RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus2 bSubDefEle,Ele_Ghost,getrandomo
 RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET,{ bonus2 bAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_DAMAGE_PROPERTY_UNDEAD_USER,{ bonus2 bSubDefEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET,{ bonus2 bAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_NOTHING_USER,{ bonus3 bSubEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_NOTHING_USER,{ bonus2 bMagicSubDefEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET,{ bonus2 bMagicAddEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_WATER_USER,{ bonus3 bSubEle,Ele_Water,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_WATER_USER,{ bonus2 bMagicSubDefEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET,{ bonus2 bMagicAddEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_GROUND_USER,{ bonus3 bSubEle,Ele_Earth,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_GROUND_USER,{ bonus2 bMagicSubDefEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET,{ bonus2 bMagicAddEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_FIRE_USER,{ bonus3 bSubEle,Ele_Fire,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_FIRE_USER,{ bonus2 bMagicSubDefEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET,{ bonus2 bMagicAddEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_WIND_USER,{ bonus3 bSubEle,Ele_Wind,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_WIND_USER,{ bonus2 bMagicSubDefEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET,{ bonus2 bMagicAddEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_POISON_USER,{ bonus3 bSubEle,Ele_Poison,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_POISON_USER,{ bonus2 bMagicSubDefEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET,{ bonus2 bMagicAddEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_SAINT_USER,{ bonus3 bSubEle,Ele_Holy,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_SAINT_USER,{ bonus2 bMagicSubDefEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET,{ bonus2 bMagicAddEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_DARKNESS_USER,{ bonus3 bSubEle,Ele_Dark,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_DARKNESS_USER,{ bonus2 bMagicSubDefEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET,{ bonus2 bMagicAddEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus3 bSubEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus2 bMagicSubDefEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET,{ bonus2 bMagicAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_MDAMAGE_PROPERTY_UNDEAD_USER,{ bonus3 bSubEle,Ele_Undead,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_UNDEAD_USER,{ bonus2 bMagicSubDefEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET,{ bonus2 bMagicAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_BODY_ATTR_NOTHING,{ bonus bDefEle,Ele_Neutral; }
 RDMOPT_BODY_ATTR_WATER,{ bonus bDefEle,Ele_Water; }
@@ -89,7 +87,7 @@ RDMOPT_BODY_ATTR_SAINT,{ bonus bDefEle,Ele_Holy; }
 RDMOPT_BODY_ATTR_DARKNESS,{ bonus bDefEle,Ele_Dark; }
 RDMOPT_BODY_ATTR_TELEKINESIS,{ bonus bDefEle,Ele_Ghost; }
 RDMOPT_BODY_ATTR_UNDEAD,{ bonus bDefEle,Ele_Undead; }
-//RDMOPT_BODY_ATTR_ALL,{ /* Needs more info */ }
+//RDMOPT_BODY_ATTR_ALL,{}
 RDMOPT_RACE_TOLERACE_NOTHING,{ bonus2 bSubRace,RC_Formless,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_TOLERACE_UNDEAD,{ bonus2 bSubRace,RC_Undead,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_TOLERACE_ANIMAL,{ bonus2 bSubRace,RC_Brute,getrandomoptinfo(ROA_VALUE); }
@@ -97,7 +95,7 @@ RDMOPT_RACE_TOLERACE_PLANT,{ bonus2 bSubRace,RC_Plant,getrandomoptinfo(ROA_VALUE
 RDMOPT_RACE_TOLERACE_INSECT,{ bonus2 bSubRace,RC_Insect,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_TOLERACE_FISHS,{ bonus2 bSubRace,RC_Fish,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_TOLERACE_DEVIL,{ bonus2 bSubRace,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_TOLERACE_HUMAN,{ bonus2 bSubRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bSubRace,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_HUMAN,{ bonus2 bSubRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_TOLERACE_ANGEL,{ bonus2 bSubRace,RC_Angel,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_TOLERACE_DRAGON,{ bonus2 bSubRace,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_DAMAGE_NOTHING,{ bonus2 bAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE); }
@@ -107,7 +105,7 @@ RDMOPT_RACE_DAMAGE_PLANT,{ bonus2 bAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE);
 RDMOPT_RACE_DAMAGE_INSECT,{ bonus2 bAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_DAMAGE_FISHS,{ bonus2 bAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_DAMAGE_DEVIL,{ bonus2 bAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_DAMAGE_HUMAN,{ bonus2 bAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bAddRace,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_HUMAN,{ bonus2 bAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_DAMAGE_ANGEL,{ bonus2 bAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_DAMAGE_DRAGON,{ bonus2 bAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_MDAMAGE_NOTHING,{ bonus2 bMagicAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE); }
@@ -117,7 +115,7 @@ RDMOPT_RACE_MDAMAGE_PLANT,{ bonus2 bMagicAddRace,RC_Plant,getrandomoptinfo(ROA_V
 RDMOPT_RACE_MDAMAGE_INSECT,{ bonus2 bMagicAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_MDAMAGE_FISHS,{ bonus2 bMagicAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_MDAMAGE_DEVIL,{ bonus2 bMagicAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_MDAMAGE_HUMAN,{ bonus2 bMagicAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bMagicAddRace,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_HUMAN,{ bonus2 bMagicAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_MDAMAGE_ANGEL,{ bonus2 bMagicAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_MDAMAGE_DRAGON,{ bonus2 bMagicAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_CRI_PERCENT_NOTHING,{ bonus2 bCriticalAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE)/10; }
@@ -127,7 +125,7 @@ RDMOPT_RACE_CRI_PERCENT_PLANT,{ bonus2 bCriticalAddRace,RC_Plant,getrandomoptinf
 RDMOPT_RACE_CRI_PERCENT_INSECT,{ bonus2 bCriticalAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE)/10; }
 RDMOPT_RACE_CRI_PERCENT_FISHS,{ bonus2 bCriticalAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE)/10; }
 RDMOPT_RACE_CRI_PERCENT_DEVIL,{ bonus2 bCriticalAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE)/10; }
-RDMOPT_RACE_CRI_PERCENT_HUMAN,{ bonus2 bCriticalAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE)/10; bonus2 bCriticalAddRace,RC_Player,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_HUMAN,{ bonus2 bCriticalAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE)/10; }
 RDMOPT_RACE_CRI_PERCENT_ANGEL,{ bonus2 bCriticalAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE)/10; }
 RDMOPT_RACE_CRI_PERCENT_DRAGON,{ bonus2 bCriticalAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE)/10; }
 RDMOPT_RACE_IGNORE_DEF_PERCENT_NOTHING,{ bonus2 bIgnoreDefRaceRate,RC_Formless,getrandomoptinfo(ROA_VALUE); }
@@ -137,7 +135,7 @@ RDMOPT_RACE_IGNORE_DEF_PERCENT_PLANT,{ bonus2 bIgnoreDefRaceRate,RC_Plant,getran
 RDMOPT_RACE_IGNORE_DEF_PERCENT_INSECT,{ bonus2 bIgnoreDefRaceRate,RC_Insect,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_IGNORE_DEF_PERCENT_FISHS,{ bonus2 bIgnoreDefRaceRate,RC_Fish,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_IGNORE_DEF_PERCENT_DEVIL,{ bonus2 bIgnoreDefRaceRate,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_DEF_PERCENT_HUMAN,{ bonus2 bIgnoreDefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bIgnoreDefRaceRate,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_HUMAN,{ bonus2 bIgnoreDefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_IGNORE_DEF_PERCENT_ANGEL,{ bonus2 bIgnoreDefRaceRate,RC_Angel,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_IGNORE_DEF_PERCENT_DRAGON,{ bonus2 bIgnoreDefRaceRate,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_IGNORE_MDEF_PERCENT_NOTHING,{ bonus2 bIgnoreMdefRaceRate,RC_Formless,getrandomoptinfo(ROA_VALUE); }
@@ -147,7 +145,7 @@ RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLANT,{ bonus2 bIgnoreMdefRaceRate,RC_Plant,getr
 RDMOPT_RACE_IGNORE_MDEF_PERCENT_INSECT,{ bonus2 bIgnoreMdefRaceRate,RC_Insect,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_IGNORE_MDEF_PERCENT_FISHS,{ bonus2 bIgnoreMdefRaceRate,RC_Fish,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_IGNORE_MDEF_PERCENT_DEVIL,{ bonus2 bIgnoreMdefRaceRate,RC_Demon,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_RACE_IGNORE_MDEF_PERCENT_HUMAN,{ bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bIgnoreMdefRaceRate,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_HUMAN,{ bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANGEL,{ bonus2 bIgnoreMdefRaceRate,RC_Angel,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RACE_IGNORE_MDEF_PERCENT_DRAGON,{ bonus2 bIgnoreMdefRaceRate,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_CLASS_DAMAGE_NORMAL_TARGET,{ bonus2 bAddClass,Class_Normal,getrandomoptinfo(ROA_VALUE); }
@@ -168,7 +166,7 @@ RDMOPT_DAMAGE_SIZE_MIDIUM_USER,{ bonus2 bSubSize,Size_Medium,getrandomoptinfo(RO
 RDMOPT_DAMAGE_SIZE_LARGE_USER,{ bonus2 bSubSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_DAMAGE_SIZE_PERFECT,{ bonus bNoSizeFix,1; }
 RDMOPT_DAMAGE_CRI_TARGET,{ bonus bCritAtkRate,getrandomoptinfo(ROA_VALUE); }
-RDMOPT_DAMAGE_CRI_USER,{ bonus bCriticalDef,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_CRI_USER,{ bonus bCritDefRate,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RANGE_ATTACK_DAMAGE_TARGET,{ bonus bLongAtkRate,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_RANGE_ATTACK_DAMAGE_USER,{ bonus bLongAtkDef,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_HEAL_VALUE,{ bonus bHealPower,getrandomoptinfo(ROA_VALUE); }
@@ -193,8 +191,34 @@ RDMOPT_BODY_INDESTRUCTIBLE,{ bonus bUnbreakableArmor,1; }
 RDMOPT_MDAMAGE_SIZE_SMALL_TARGET,{ bonus2 bMagicAddSize,Size_Small,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_SIZE_MIDIUM_TARGET,{ bonus2 bMagicAddSize,Size_Medium,getrandomoptinfo(ROA_VALUE); }
 RDMOPT_MDAMAGE_SIZE_LARGE_TARGET,{ bonus2 bMagicAddSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
-//RDMOPT_MDAMAGE_SIZE_SMALL_USER,{}
-//RDMOPT_MDAMAGE_SIZE_MIDIUM_USER,{}
-//RDMOPT_MDAMAGE_SIZE_LARGE_USER,{}
-//redefined?
-//RDMOPT_ATTR_TOLERACE_ALL,{}
+RDMOPT_MDAMAGE_SIZE_SMALL_USER,{ bonus2 bMagicSubSize,Size_Small,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_SIZE_MIDIUM_USER,{ bonus2 bMagicSubSize,Size_Medium,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_SIZE_LARGE_USER,{ bonus2 bMagicSubSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_ALL,{ bonus2 bSubEle,Ele_All,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_WEAPON_TOLERACE_NOTHING,{ bonus3 bSubRace,RC_Formless,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+RDMOPT_RACE_WEAPON_TOLERACE_UNDEAD,{ bonus3 bSubRace,RC_Undead,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+RDMOPT_RACE_WEAPON_TOLERACE_ANIMAL,{ bonus3 bSubRace,RC_Brute,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+RDMOPT_RACE_WEAPON_TOLERACE_PLANT,{ bonus3 bSubRace,RC_Plant,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+RDMOPT_RACE_WEAPON_TOLERACE_INSECT,{ bonus3 bSubRace,RC_Insect,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+RDMOPT_RACE_WEAPON_TOLERACE_FISHS,{ bonus3 bSubRace,RC_Fish,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+RDMOPT_RACE_WEAPON_TOLERACE_DEVIL,{ bonus3 bSubRace,RC_Demon,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+RDMOPT_RACE_WEAPON_TOLERACE_HUMAN,{ bonus3 bSubRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+RDMOPT_RACE_WEAPON_TOLERACE_ANGEL,{ bonus3 bSubRace,RC_Angel,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+RDMOPT_RACE_WEAPON_TOLERACE_DRAGON,{ bonus3 bSubRace,RC_Dragon,getrandomoptinfo(ROA_VALUE),BF_WEAPON; }
+// RDMOPT_RANGE_WEAPON_ATTACK_DAMAGE_TARGET,{}
+// RDMOPT_RANGE_WEAPON_ATTACK_DAMAGE_USER,{}
+RDMOPT_RACE_TOLERACE_PLAYER_HUMAN,{ bonus2 bSubRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_PLAYER_DORAM,{ bonus2 bSubRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_PLAYER_HUMAN,{ bonus2 bAddRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_PLAYER_DORAM,{ bonus2 bAddRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_PLAYER_HUMAN,{ bonus2 bMagicAddRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE);  }
+RDMOPT_RACE_MDAMAGE_PLAYER_DORAM,{ bonus2 bMagicAddRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_CRI_PERCENT_PLAYER_HUMAN,{ bonus2 bCriticalAddRace,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_CRI_PERCENT_PLAYER_DORAM,{ bonus2 bCriticalAddRace,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_HUMAN,{ bonus2 bIgnoreDefRaceRate,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_PLAYER_DORAM,{ bonus2 bIgnoreDefRaceRate,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_HUMAN,{ bonus2 bIgnoreMdefRaceRate,RC_Player_Human,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLAYER_DORAM,{ bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,getrandomoptinfo(ROA_VALUE); }
+// RDMOPT_REFLECT_DAMAGE_PERCENT,{}
+RDMOPT_MELEE_ATTACK_DAMAGE_TARGET,{ bonus bShortAtkRate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MELEE_ATTACK_DAMAGE_USER,{ bonus bNearAtkDef,getrandomoptinfo(ROA_VALUE); }

+ 2 - 2
db/re/item_synthesis.yml

@@ -818,9 +818,9 @@ Body:
         getitem(19245,1); // chance to become Crimson Booster
     } else {
         // Magical Booster Enchant (19241)
-        callfunc("F_Lapine_Magical_Booster_Enchant", .@opts[0], .@vals[0]);
+        callfunc("F_Lapine_Magical_Booster_Enchant", .@opts[0], .@vals[0], .@opts[1], .@vals[1]);
         .@params[0] = 0;
-        getitem3(19241,1,1,0,0,0,0,0,0,.@opts,.@vals,@params);
+        getitem3(19241,1,1,0,0,0,0,0,0,.@opts,.@vals,.@params);
     }
 - Id: 23311 # 마법고양이손
   SourceItem:

+ 137 - 0
db/re/item_trade.txt

@@ -4804,3 +4804,140 @@
 //32021,499,100	//
 //32202,507,100	//
 //32221,499,100	//
+100128,499,100	// Noblesses_Refine_Ticket
+100129,499,100	// Imperial_Refine_Ticket
+100130,499,100	// Grace_Refine_Ticket
+100131,499,100	// Imperial_P_Mo_Garment
+100132,499,100	// Imperial_M_Mo_Garment
+100133,499,100	// Grace_P_Mo_Garment
+100134,499,100	// Grace_M_Mo_Garment
+100135,499,100	// Imperial_P_Mo_Armor
+100136,499,100	// Imperial_M_Mo_Armor
+100137,499,100	// Grace_P_Mo_Armor
+100138,499,100	// Grace_M_Mo_Armor
+450018,499,100	// Noblesse_Breath_Armor
+450019,499,100	// Noblesse_Knight_Armor
+450020,499,100	// Noblesse_Spear_Armor
+450021,499,100	// Noblesse_Genesis_Armor
+450022,499,100	// Noblesse_Sharp_Suit
+450023,499,100	// Noblesse_Aimed_suit
+450024,499,100	// Noblesse_Severe_Suit
+450025,499,100	// Noblesse_Reverb_Suit
+450026,499,100	// Noblesse_Adora_Robe
+450027,499,100	// Noblesse_Duple_Robe
+450028,499,100	// Noblesse_Tornado_Armor
+450029,499,100	// Noblesse_Vulcan_Armor
+450030,499,100	// Noblesse_Cart_Cannon_Suit
+450031,499,100	// Noblesse_Cart_Tornado_Suit
+450032,499,100	// Noblesse_Rolling_Suit
+450033,499,100	// Noblesse_Assassin_Suit
+450034,499,100	// Noblesse_Fatal_Suit
+450035,499,100	// Noblesse_Stalker_Suit
+450036,499,100	// Noblesse_Picky_Robe
+450037,499,100	// Noblesse_Catnip_Robe
+450038,499,100	// Noblesse_Trip_Suit
+450039,499,100	// Noblesse_Fire_Rain_Suit
+450040,499,100	// Noblesse_Crimson_Robe
+450041,499,100	// Noblesse_Frost_Robe
+450042,499,100	// Noblesse_Psychic_Robe
+450043,499,100	// Noblesse_Dust_Robe
+450044,499,100	// Noblesse_Sun_Suit
+450045,499,100	// Noblesse_Moon_Suit
+450046,499,100	// Noblesse_Ninja_Suit
+450047,499,100	// Noblesse_Kunai_Suit
+450048,499,100	// Noblesse_Eswhoo_Robe
+450049,499,100	// Noblesse_Explosion_Robe
+450050,499,100	// Noblesse_Knuckle_Suit
+450051,499,100	// Noblesse_Tiger_Suit
+450052,499,100	// Imperial_Breath_Armor
+450053,499,100	// Imperial_Knight_Armor
+450054,499,100	// Imperial_Spear_Armor
+450055,499,100	// Imperial_Genesis_Armor
+450056,499,100	// Imperial_Sharp_Suit
+450057,499,100	// Imperial_Aimed_Suit
+450058,499,100	// Imperial_Severe_Suit
+450059,499,100	// Imperial_Reverb_Suit
+450060,499,100	// Imperial_Adora_Robe
+450061,499,100	// Imperial_Duple_Robe
+450062,499,100	// Imperial_Knuckle_Suit
+450063,499,100	// Imperial_Tiger_Suit
+450064,499,100	// Imperial_Tornado_Armor
+450065,499,100	// Imperial_Vulcan_Armor
+450066,499,100	// Imperial_Cart_Cannon_Suit
+450067,499,100	// Imperial_Cart_Tornado_Suit
+450068,499,100	// Imperial_Rolling_Suit
+450069,499,100	// Imperial_Assassin_Suit
+450070,499,100	// Imperial_Fatal_Suit
+450071,499,100	// Imperial_Stalker_Suit
+450072,499,100	// Imperial_Picky_Robe
+450073,499,100	// Imperial_Catnip_Robe
+450074,499,100	// Imperial_Trip_Suit
+450075,499,100	// Imperial_Fire_Rain_Suit
+450076,499,100	// Imperial_Crimson_Robe
+450077,499,100	// Imperial_Frost_Robe
+450078,499,100	// Imperial_Psychic_Robe
+450079,499,100	// Imperial_Dust_Robe
+450080,499,100	// Imperial_Sun_Suit
+450081,499,100	// Imperial_Moon_Suit
+450082,499,100	// Imperial_Ninja_Suit
+450083,499,100	// Imperial_Kunai_Suit
+450084,499,100	// Imperial_Eswhoo_Robe
+450085,499,100	// Imperial_Explosion_Robe
+450086,499,100	// Grace_Breath_Armor
+450087,499,100	// Grace_Knight_Armor
+450088,499,100	// Grace_Spear_Armor
+450089,499,100	// Grace_Genesis_Armor
+450090,499,100	// Grace_Sharp_Suit
+450091,499,100	// Grace_Aimed_Suit
+450092,499,100	// Grace_Severe_Suit
+450093,499,100	// Grace_Reverb_Suit
+450094,499,100	// Grace_Adora_Robe
+450095,499,100	// Grace_Duple_Robe
+450096,499,100	// Grace_Knuckle_Suit
+450097,499,100	// Grace_Tiger_Suit
+450098,499,100	// Grace_Tornado_Armor
+450099,499,100	// Grace_Vulcan_Armor
+450100,499,100	// Grace_Cart_Cannon_Suit
+450101,499,100	// Grace_Cart_Tornado_Suit
+450102,499,100	// Grace_Rolling_Suit
+450103,499,100	// Grace_Assassin_Suit
+450104,499,100	// Grace_Fatal_Suit
+450105,499,100	// Grace_Stalker_Suit
+450106,499,100	// Grace_Picky_Robe
+450107,499,100	// Grace_Catnip_Robe
+450108,499,100	// Grace_Trip_Suit
+450109,499,100	// Grace_Fire_Rain_Suit
+450110,499,100	// Grace_Crimson_Robe
+450111,499,100	// Grace_Frost_Robe
+450112,499,100	// Grace_Psychic_Robe
+450113,499,100	// Grace_Dust_Robe
+450114,499,100	// Grace_Sun_Suit
+450115,499,100	// Grace_Moon_Suit
+450116,499,100	// Grace_Ninja_Suit
+450117,499,100	// Grace_Kunai_Suit
+450118,499,100	// Grace_Eswhoo_Robe
+450119,499,100	// Grace_Explosion_Robe
+450121,499,100	// Noblesse_Super_Novice_Suit
+450122,499,100	// Noblesse_Super_Novice_Robe
+450123,499,100	// Imperial_Super_Novice_Suit
+450124,499,100	// Imperial_Super_Novice_Robe
+450125,499,100	// Grace_Super_Novice_Suit
+450126,499,100	// Grace_Super_Novice_Robe
+470016,499,100	// Noblesse_Attack_Boots
+470017,499,100	// Noblesse_Magic_Boots
+470018,499,100	// Imperial_Attack_Boots
+470019,499,100	// Imperial_Magic_Boots
+470020,499,100	// Grace_Attack_Boots
+470021,499,100	// Grace_Magic_Boots
+480012,499,100	// Noblesse_Attack_Manteau
+480014,499,100	// Noblesse_Magic_Manteau
+480016,499,100	// Imperial_Attack_Manteau
+480017,499,100	// Imperial_Magic_Manteau
+480018,499,100	// Grace_Attack_Manteau
+480019,499,100	// Grace_Magic_Manteau
+490014,499,100	// Noblesse_Attack_Ring
+490015,499,100	// Noblesse_Magic_Ring
+490017,499,100	// Imperial_Attack_Ring
+490018,499,100	// Imperial_Magic_Ring
+490019,499,100	// Grace_Attack_Ring
+490020,499,100	// Grace_Magic_Ring

+ 28 - 26
db/re/job_exp.txt

@@ -2,26 +2,28 @@
 // Only official levels included, check db/import-tmpl/job_exp.txt for an expanded list
 //
 // Structure of Database:
-// Max Level,Class list,Type,Exp for Lv 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175
+// Max Level,Class list,Type,Exp for Lv 1,2,3,...,200
 //
 // Type:
 //	0 = Base Exp, 1 = Job Exp
 
 //Base - Normal and Baby Jobs
-99,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:4023:4024:4025:4026:4027:4028:4029:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4045:4046:4047:4048:4049:4050:4051:4052:4222:4225:4226:4227:4228:4238,0,550,900,1500,2200,3200,3800,4200,4550,5000,5500,6000,6100,6350,6700,7350,8000,8400,8800,9200,9700,10300,11000,11800,13000,14000,15000,16000,17000,18000,19000,20000,21000,22000,23200,24000,26000,27500,29000,30000,31500,33000,34000,36000,37500,38000,40000,42000,44500,47000,49000,51000,53000,55000,57000,59000,61500,63000,65000,67000,69000,70000,73000,77000,80000,84000,88000,91000,95000,110000,128000,140000,155000,163000,170000,180000,188000,195000,200000,230000,260000,300000,350000,400000,480000,550000,600000,680000,750000,900000,1000000,1200000,1500000,1800000,2100000,2400000,2800000,3300000,4000000,99999999
+99,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:4023:4024:4025:4026:4027:4028:4029:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4045:4046:4047:4048:4049:4050:4051:4052:4222:4225:4226:4227:4228:4238,0,550,900,1500,2200,3200,3800,4200,4550,5000,5500,6000,6100,6350,6700,7350,8000,8400,8800,9200,9700,10300,11000,11800,13000,14000,15000,16000,17000,18000,19000,20000,21000,22000,23200,24000,26000,27500,29000,30000,31500,33000,34000,36000,37500,38000,40000,42000,44500,47000,49000,51000,53000,55000,59000,61500,61500,63000,65000,67000,69000,70000,73000,77000,80000,84000,88000,91000,95000,110000,128000,140000,155000,163000,170000,180000,188000,195000,200000,230000,260000,300000,350000,400000,480000,550000,600000,680000,750000,900000,1000000,1200000,1500000,1800000,2100000,2400000,2800000,3300000,4000000,99999999
 
-//Base - Adv Jobs
-99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,99999999
+//Base - Trans classes
+99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,600,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,99999999
 
-//Base - 3rd Jobs, Baby 3rds, Oboro/Kagerou, Rebellion, Summoner, Star Emperor, Soul Reaper
-//Note: (First 98 values [Level 1 - 98] are only used by Summoner Class, because 3rd classes start at level 99.)
-175,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4218:4220:4223:4224:4229:4239:4240:4241:4242:4243:4244,0,55,90,150,220,320,380,420,455,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,75600,83700,91800,99900,108000,116100,124200,132300,140400,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999
+//Base - Extended classes - Values for level 1 - 99 are unused and are simply copy-pasted from Normal classes values.
+200,4190:4191:4211:4212:4215:4239:4240:4223:4224:4229:4239:4240:4241:4242:4243:4244,0,550,900,1500,2200,3200,3800,4200,4550,5000,5500,6000,6100,6350,6700,7350,8000,8400,8800,9200,9700,10300,11000,11800,13000,14000,15000,16000,17000,18000,19000,20000,21000,22000,23200,24000,26000,27500,29000,30000,31500,33000,34000,36000,37500,38000,40000,42000,44500,47000,49000,51000,53000,55000,59000,61500,61500,63000,65000,67000,69000,70000,73000,77000,80000,84000,88000,91000,95000,110000,128000,140000,155000,163000,170000,180000,188000,195000,200000,230000,260000,300000,350000,400000,480000,550000,600000,680000,750000,900000,1000000,1200000,1500000,1800000,2100000,2400000,2800000,3300000,4000000,1272747,1354202,1440870,1533085,1631202,1735598,1846676,1964863,2090614,2224413,2366775,2518248,2679415,2850897,3033354,3227488,3434047,3653826,3887670,4136480,4401214,4755467,5138234,5551810,5998675,6481508,7003204,7566891,8175950,8834032,9545083,10313366,11143488,12040427,13009560,14056699,15188122,16410613,17731503,19158711,20700795,22367001,24167320,26112547,28214345,30485317,32939080,35590346,38455012,41550255,44894635,48508204,52412629,56631321,61189576,66114724,71436298,77186205,83398922,90111701,97364791,105201683,113669366,122818613,132704283,143385650,154926760,167396814,180870583,195428856,211158924,229155105,246519309,266361648,287801097,310966207,352013746,398479560,451078861,510621270,578023277,654322349,740692899,838464361,949141656,1074428354,1216252896,1376798278,1558535650,1764262355,1997144985,2260768123,2559189515,2897002530,3279406863,3712288568,4202310658,4757015664,5384941731,6095754039,6900363572,99999999
 
-//Base - Expanded Super Novice & Expanded Super Baby
-160,4190:4191,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999
+//Base - Third classes - Values for level 1 - 99 are unused and are simply copy-pasted from Trans classes values.
+200,4054:4055:4056:4057:4058:4059:4066:4067:4068:4069:4070:4071:4072:4060:4061:4062:4063:4064:4065:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112,0,600,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,1272747,1354202,1440870,1533085,1631202,1735598,1846676,1964863,2090614,2224413,2366775,2518248,2679415,2850897,3033354,3227488,3434047,3653826,3887670,4136480,4401214,4755467,5138234,5551810,5998675,6481508,7003204,7566891,8175950,8834032,9545083,10313366,11143488,12040427,13009560,14056699,15188122,16410613,17731503,19158711,20700795,22367001,24167320,26112547,28214345,30485317,32939080,35590346,38455012,41550255,44894635,48508204,52412629,56631321,61189576,66114724,71436298,77186205,83398922,90111701,97364791,105201683,113669366,122818613,132704283,143385650,154926760,167396814,180870583,195428856,211158924,229155105,246519309,266361648,287801097,310966207,352013746,398479560,451078861,510621270,578023277,654322349,740692899,838464361,949141656,1074428354,1216252896,1376798278,1558535650,1764262355,1997144985,2260768123,2559189515,2897002530,3279406863,3712288568,4202310658,4757015664,5384941731,6095754039,6900363572,99999999
+
+//Base- Summoner
+200,4218:4220,0,55,90,150,220,320,380,420,455,500,550,600,700,800,900,1000,1100,1200,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,70200,72900,75600,78300,81000,83700,86400,89100,91800,94500,103950,114345,125779,138356,152201,167421,184163,202579,222836,240662,259914,280707,303163,327416,353609,381897,412448,445443,481078,519564,561129,606019,654500,706860,763408,824480,890438,961673,1038606,1121694,1211429,1308343,1413010,1526050,1648134,1779984,1922382,2076172,2242265,2421646,2615377,2824607,3050575,3294621,3558190,3842845,4150272,4482293,4840876,5228146,5646397,6098108,6585956,7112832,7681858,8296406,8960118,9676927,10451081,11287167,12190140,13165351,14218579,15356065,16584550,17911314,19344219,20891756,22563096,24368143,26317594,28423001,30696841,33152588,35804795,38669178,41762712,45103728,48712026,52608988,56817707,61363123,66272172,71573945,77299860,83483848,90162555,97375559,105165603,113578851,122665159,132478371,143076640,154522771,166884592,177548517,188893867,200964185,222383346,234614430,247518223,261131725,275493969,290646137,306631674,347137718,392994610,444909197,503681701,570218053,645543857,730820200,827361548,936656008,1060388266,1200465555,1359047054,1538577169,1741823213,1971918059,2232408434,2527309588,2861167184,3239127369,3667016094,4151428920,4699832680,5320680577,6023542481,6819252442,99999999
 
 //Job - Novice & Baby Novice
-10,0:4023,1,10,18,28,40,91,151,205,268,340,999999999
+10,0:4023,1,55,90,150,150,320,380,420,455,500,999999999
 
 //Job - 1st Classes & Baby 1st Classes, Taekwon
 50,1:2:3:4:5:6:4024:4025:4026:4027:4028:4029:4046:4050:4225,1,60,130,260,460,780,1060,1300,1560,1910,2290,2680,2990,3340,3740,4360,4970,5530,6120,6700,8090,8920,9970,11080,12690,14440,15850,17400,19220,21060,22870,24910,26840,29080,31320,33300,37110,40500,43570,46180,53510,57200,60310,65690,70090,72130,77540,83320,90120,97180,999999999
@@ -29,29 +31,29 @@
 //Job - 2nd Classes & Baby 2nd Classes, Soul Linker
 50,7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4049:4051:4052:4227,1,2500,4200,7000,10300,15900,18900,20900,22600,24900,28800,31500,32000,33300,35100,40500,44100,46300,48500,50700,56000,59400,63500,68100,75000,85700,90500,96600,102600,108600,119700,126000,132300,138600,146100,157500,170600,180400,190300,196800,214900,225200,232000,245700,255900,279300,294000,308700,327000,345400,999999999
 
-//Job - Novice High
-10,4001,1,11,20,31,44,100,166,226,295,374,999999999
+//Job - Ninja, Gunslinger
+70,24:25:4222:4228,1,200,300,400,600,700,1000,1200,1400,1700,1900,2400,2700,3200,3600,4200,4900,5500,6100,6900,7700,8400,9300,10100,11100,12100,13000,14600,16100,17500,18600,21500,23300,24700,27000,29000,30000,32400,35000,38100,41100,44000,46700,49600,52500,55600,58900,62700,65500,69200,72300,81200,84100,89300,95500,100900,107800,114900,120700,128600,150500,176900,196100,219600,234200,247900,266400,281300,296600,308000,999999999
 
-//Job - Adv First Classes
-50,4002:4003:4004:4005:4006:4007,1,100,200,350,550,800,1100,1450,1850,2300,2800,3350,3950,4600,5300,6050,6850,7700,8600,9550,10550,11600,12700,13850,15050,16300,17600,18950,20350,21800,23300,24850,26450,28100,29800,31550,33350,35200,37100,39050,41050,43100,45200,47350,49550,51800,54100,56450,58850,61300,999999999
+//Job - Star Gladiator
+50,4047:4048:4226:4238,1,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,101400,112000,118800,127000,136200,150000,171400,181000,193200,205200,217200,239400,252000,264600,277200,292200,315000,341200,360800,380600,393600,429800,450400,464000,491400,511800,558600,588000,617400,654000,690800,999999999
 
-//Job - Adv Second Classes
-70,4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,1,3800,6200,10400,15200,22900,27100,30000,32500,35700,41300,45000,45800,47600,50300,58700,63900,67100,70300,73500,90600,96200,102700,110200,121400,144700,152900,163100,173300,183500,213500,224700,236000,247200,260700,299800,324800,343600,362300,374800,474400,497000,512100,542200,564800,644300,678200,712100,754500,796900,873100,911900,950600,989400,1028100,1143300,1199900,1233800,1279100,1324300,1486900,1515900,1603000,1719200,1806300,2040300,2244300,2415900,2746000,3326000,999999999
+//Job - High Novice
+10,4001,1,12,22,35,50,113,188,256,335,425,999999999
 
-//Job - 3rd Jobs & Baby 3rds, Oboro/Kagerou, Rebellion, Star Emperor, Soul Reaper
-60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4223:4224:4229:4239:4240:4241:4242:4243:4244,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,999999999
+//Job - Trans 1st Classes
+50,4002:4003:4004:4005:4006:4007,1,340,550,760,990,1250,1600,1980,2340,2740,3140,3950,4510,5210,5950,7000,8150,9130,10220,11480,12780,14090,15560,16980,18620,20280,21780,24510,27000,29000,31000,36000,39000,41000,45000,49000,51900,55000,59450,64630,70030,74940,79800,84630,89610,95170,100420,107250,112070,118120,999999999
 
-//Job - Expanded Super Novice & Expanded Super Baby
-50,4190:4191,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,999999999
+//Job - Trans 2nd Classes
+70,4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,1,1803,2972,5036,7434,11312,13520,15117,16540,18350,21441,23596,24256,25461,27174,32029,35216,37349,39521,41734,51958,55721,60081,65113,72448,87216,93081,100283,107620,115094,135249,143768,152508,161343,171856,199607,218415,233368,248529,259675,331968,351261,365552,390909,411275,473857,503777,534248,571719,609886,674886,711926,749561,787957,826965,928824,984554,1022494,1070636,1119554,1269585,1307290,1396228,1512414,1604928,1830969,2034180,2211611,2538936,3105953,999999
 
-//Job - Ninja/Gunslinger
-70,24:25:4222:4228,1,200,300,400,600,700,1000,1200,1400,1700,1900,2400,2700,3200,3600,4200,4900,5500,6100,6900,7700,8400,9300,10100,11100,12100,13000,14600,16100,17500,18600,21500,23300,24700,27000,29000,30000,32400,35000,38100,41100,44000,46700,49600,52500,55600,58900,62700,65500,69200,72300,81200,84100,89300,95500,100900,107800,114900,120700,128600,150500,176900,196100,219600,234200,247900,266400,281300,296600,308000,999999999
+//Job - 3rd Jobs & Baby 3rds, Oboro, Kagerou, Rebellion, Star Emperor, Soul Reaper
+70,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4223:4224:4229:4239:4240:4241:4242:4243:4244,1,12800,16384,20971,26843,34359,43980,56294,72057,92233,118059,151115,193428,247588,316912,405648,519229,664613,850705,1088903,1393796,1784059,2283596,2923003,3741444,4231573,4785909,5412863,6121948,6923924,7830958,8856813,10017056,11329290,12813427,14491986,16390436,18537584,20966007,23712554,26818899,30332175,34305690,38799735,43882500,49631108,56132783,63486178,71802867,81209043,91847428,103879441,117487647,132878529,150285617,169973033,192239500,217422874,245905271,278118862,319836691,367812195,422984024,486431628,559396372,632361116,705325860,778290604,851255348,924220092,999999999
 
-//Job - Star Gladiator
-50,4047:4048:4226:4238,1,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,101400,112000,118800,127000,136200,150000,171400,181000,193200,205200,217200,239400,252000,264600,277200,292200,315000,341200,360800,380600,393600,429800,450400,464000,491400,511800,558600,588000,617400,654000,690800,999999999
+//Job - Expanded Super Novice & Expanded Super Baby
+50,4190:4191,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,999999999
 
 //Job - Super Novice & Baby Super Novice
-99,23:4045,1,60,130,260,460,780,1060,1300,1560,1910,2290,2680,2990,3340,3740,4360,4970,5530,6120,6700,8090,8920,9970,11080,12690,14440,15850,17400,19220,21060,22870,24910,26840,29080,31320,33300,37110,40500,43570,46180,53510,57200,60310,65690,70090,72130,77540,83320,90120,97180,590120,600120,610120,620120,630120,640120,650120,660120,670120,680120,690120,700120,710120,720120,730120,740120,750120,760120,770120,780120,790120,800120,810120,820120,830120,840120,850120,860120,870120,880120,890120,900120,910120,920120,930120,940120,950120,960120,970120,980120,990120,1000120,1010120,1020120,1030120,1040120,1050120,1060120,1070120,999999999
+99,23:4045,1,60,130,260,460,780,1060,1300,1560,1910,2290,2680,2990,3340,3740,4360,4970,5530,6120,6700,8090,8920,9970,11080,12690,14440,15850,17400,19220,21060,22870,24910,26840,29080,31320,33300,37110,40500,43570,46180,53510,57200,60310,65690,70090,72130,77540,83320,90120,590120,600120,610120,620120,630120,640120,650120,660120,670120,680120,690120,700120,710120,720120,730120,740120,750120,760120,770120,780120,790120,800120,810120,820120,830120,840120,850120,860120,870120,880120,890120,900120,910120,920120,930120,940120,950120,960120,970120,980120,990120,1000120,1010120,1020120,1030120,1040120,1050120,1060120,1070120,1080120,999999999
 
 //Job - Summoner
-50,4218:4220,1,60,130,260,460,780,1060,1300,1560,1910,2500,4200,7000,10300,15900,18900,20900,22600,24900,28800,31500,34900,38300,41700,45100,48500,51900,55000,72000,89000,106000,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,999999999
+60,4218:4220,1,60,130,260,460,780,1060,1300,1560,1910,2500,4200,7000,10300,15900,18900,20900,22600,24900,28800,33100,35100,40500,44100,46300,48500,50700,56000,59000,63500,68100,75000,85700,90500,106000,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7585200,9860760,13805064,20707596,33132154,53011447,72890740,92770033,112649326,132528619,999999999

BIN
db/re/map_cache.dat


+ 88 - 39
db/re/mob_db.txt

@@ -2279,13 +2279,13 @@
 //3119,E_RUNAWAY5_,Runaway 5,Runaway 5,1,10,1,0,0,1,1,1,1,0,1,1,1,1,1,1,10,12,0,0,20,0x11F0000,170,1084,2304,576,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
 //3120,M_ISIS
 //3121,Q_BYORGUE
-//3122,CHARLESTON1
-//3123,CHARLESTON2
-//3124,CHARLESTON3
-3125,STEP,Step,Step,130,55403,0,3088,2392,1,871,695,101,58,117,127,55,61,116,60,10,12,0,6,22,0x2000000,250,0,780,0,0,0,0,0,0,0,0,6751,1000,998,150,13213,400,0,0,0,0,0,0,0,0,0,0,0,0,4698,1
-//3126,ROCK_STEP
-//3127,KICK_STEP
-//3128,KICK_AND_KICK
+3122,CHARLESTON1,Charleston 1,Charleston 1,140,2614000,1,36804,21064,1,3210,695,123,68,189,78,81,51,108,56,10,12,2,6,22,0x3095,150,676,2400,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
+3123,CHARLESTON2,Charleston 3,Charleston 2,140,2614000,1,36804,21064,1,3210,695,123,68,189,78,81,51,108,56,10,12,2,6,22,0x3095,150,676,2400,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
+3124,CHARLESTON3,Charleston 3,Charleston 3,145,23671401,1,3132000,2473000,1,1500,1000,200,90,208,106,205,206,228,105,10,12,2,6,60,0x620B695,200,676,2016,672,0,0,0,0,0,0,0,16031,200,28101,200,16033,100,21011,200,22043,400,22044,400,6752,5000,0,0,0,0,0,0
+3125,STEP,Step,Step,130,55403,1,3088,2392,1,871,695,101,58,117,127,55,61,116,60,10,12,0,6,20,0x0000083,100,676,672,480,0,0,0,0,0,0,0,6751,1000,998,150,6213,400,6961,50,6962,50,0,0,0,0,0,0,0,0,4698,1
+3126,ROCK_STEP,Rock Step,Lockstep,131,71056,1,3609,2209,2,1100,325,85,59,99,95,70,124,155,80,10,12,1,6,40,0x0000085,150,676,1056,480,0,0,0,0,0,0,0,6750,500,999,350,7319,500,6961,50,6962,50,0,0,0,0,0,0,0,0,4699,1
+3127,KICK_STEP,Kick Step,Hallway 1 Security Devi,132,73644,1,3607,2205,7,1151,218,80,50,99,92,72,122,161,76,10,12,1,6,20,0x0000084,200,676,816,480,0,0,0,0,0,0,0,6750,400,999,250,7319,300,6961,50,6962,50,0,0,0,0,0,0,0,0,27012,1
+3128,KICK_AND_KICK,Kick And Kick,Security Robot,133,68018,1,3729,2032,1,1484,158,98,54,164,116,66,59,141,58,10,12,1,6,40,0x0000085,200,676,576,480,0,0,0,0,0,0,0,6751,500,998,100,6961,50,6962,50,0,0,0,0,0,0,0,0,0,0,27013,1
 //3129,ORC_ZOMBIE_ANNIV
 //3130,ORC_ARCHER_ANNIV
 //3131,ORC_BABY_ANNIV
@@ -2310,15 +2310,15 @@
 //3150,MG_AMDARAIS_H
 //3151,MG_CORRUPTION_ROOT_H
 //3152,G_MG_KHALITZBURG_H
-3153,EXCAVATOR_ROBOT,Excavator Robot,Excavator Robot,163,166860,0,15026,16915,1,4785,192,138,53,102,104,72,57,98,57,10,12,1,0,60,0x0000085,250,1020,500,768,0,0,0,0,0,0,0,11597,251,984,101,6962,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-3154,RECON_ROBOT,Recon Robot,Recon Robot,165,256000,0,15796,17738,1,2989,280,128,60,112,60,72,57,120,77,10,12,2,0,80,0x0000085,170,1072,672,384,0,0,0,0,0,0,0,998,1001,756,1001,11597,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-3155,REPAIR_ROBOT,Repair Robot,Repair Robot,155,154760,0,11748,47654,1,2051,216,99,55,98,39,30,35,95,45,10,12,0,3,24,0x0000085,300,1500,500,660,0,0,0,0,0,0,0,998,5000,756,1501,999,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-3156,EXPLORATION_ROVER,Exploration Rover,Exploration Rover,168,293640,0,18172,126234,1,2513,802,105,41,100,63,35,99,106,61,10,12,2,7,80,0x0000085,165,1552,1152,336,0,0,0,0,0,0,0,998,5000,756,1,999,1,6961,1,0,0,0,0,0,0,0,0,0,0,0,0
-3157,RUIN_BELIEVER1,Ruin Grace Believer,Ruin Grace Believer,100,61350,0,4666,3874,1,993,250,91,50,88,61,51,62,136,60,10,12,1,7,40,0x0000085,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,0,0,0
-3158,RUIN_BELIEVER2,Ruin Grace Believer,Ruin Grace Believer,100,61350,0,4666,139500,1,993,250,91,50,88,61,51,62,136,60,10,12,1,7,40,0x0000085,200,2125,2112,0,0,0,0,0,0,0,0,6753,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-3159,ILLEGAL_PROMOTION,Illegal Promotion,Illegal Promotion,100,10,0,0,0,1,1,1,1,50,1,1,1,1,1,1,10,12,0,0,40,0x0370020,200,0,0,768,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
+3153,EXCAVATOR_ROBOT,Excavator Robot,Excavator Robot,163,166860,1,15026,16915,1,4785,192,138,53,102,104,72,57,98,57,10,12,1,0,60,0x0000085,250,1020,500,768,0,0,0,0,0,0,0,11597,1,984,1,6962,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3154,RECON_ROBOT,Recon Robot,Recon Robot,165,256000,1,15796,17738,3,2989,280,127,60,112,60,72,57,120,77,10,12,2,0,80,0x0000085,170,1072,672,384,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
+3155,REPAIR_ROBOT,Repair Robot,Repair Robot,155,154760,1,11748,13237,1,2051,216,99,55,98,39,30,35,95,45,10,12,0,3,24,0x0000085,300,1500,500,660,0,0,0,0,0,0,0,998,5000,756,1501,999,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3156,EXPLORATION_ROVER,Exploration Rover,Exploration Rover,168,293640,1,18172,35065,3,2513,802,105,41,100,63,35,99,106,61,10,12,2,7,80,0x0000085,165,1552,1152,336,0,0,0,0,0,0,0,998,5000,756,1,999,1,6961,1,0,0,0,0,0,0,0,0,0,0,0,0
+3157,RUIN_BELIEVER1,Ruin Grace Believer,Ruin Grace Believer,100,61350,1,4666,3874,1,993,250,91,50,88,61,51,62,136,60,10,12,1,7,40,0x0000085,200,800,2112,768,0,0,0,0,0,0,0,6753,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3158,RUIN_BELIEVER2,Ruin Grace Believer,Ruin Grace Believer,100,61350,1,4666,3874,1,993,250,91,50,88,61,51,62,136,60,10,12,1,7,40,0x0000085,200,800,2112,768,0,0,0,0,0,0,0,6753,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3159,ILLEGAL_PROMOTION,Illegal Promotion,Illegal Promotion,100,10,1,0,0,1,1,1,1,50,1,1,1,1,1,1,10,12,0,0,40,0x0370020,200,800,2112,768,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
 //3160,BOILED_RICE_DUANWU
-//3161,BOMB
+3161,BOMB,Bomb,Bomb,130,60250,0,0,0,1,1028,144,92,82,126,127,62,57,109,34,10,12,0,0,67,0x0,150,500,360,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
 //3162,ELEPHANT
 //3163,GORILLA
 //3164,LION
@@ -2347,7 +2347,7 @@
 //3187,E2_G_S_NYDHOG
 //3188,E2_FELOCK
 //3189,WOLF_MOON
-3190,MM_SARAH,Sarah,Sarah Irene,160,100000000,1,0,0,12,1090,1665,276,255,43,161,6,188,225,136,10,12,0,0,20,0x87700A4,2000,500,500,0,0,0,0,0,0,0,0,15121,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4610,1
+3190,MM_SARAH,Sarah,Sarah Irene,160,100000000,1,0,0,12,1090,1665,276,255,43,161,6,188,225,136,10,12,0,0,20,0xE7F00A4,2000,500,500,0,0,0,0,0,0,0,0,15121,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4610,1
 3191,MM_M_GIGAN1,Gigantes,Gigantes,160,6653400,1,0,1,2,4635,120,64,112,156,151,30,62,265,21,10,12,1,6,47,0x62D3885,250,500,500,600,0,0,0,0,0,0,0,15121,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27183,1
 3192,MM_M_GIGAN2,Gigantes,Gigantes,160,9870000,1,0,0,2,5128,89,89,175,212,138,43,21,227,15,10,12,1,6,47,0x62A3885,250,500,500,600,0,0,0,0,0,0,0,15121,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27183,1
 3193,MM_M_GIGAN3,Ancient Medium Gigantes,Ancient Medium Gigantes,160,1126300,1,0,0,2,3967,165,113,155,121,125,45,35,271,15,10,12,1,6,47,0x6283885,300,500,500,600,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,27183,1
@@ -2405,15 +2405,15 @@
 3245,V_B_ALPHOCCIO,Minstrel Alphoccio,Minstrel Alphoccio,186,10800000,1,3000000,3000000,1,8000,12000,240,200,240,300,140,400,300,180,10,12,1,7,84,0x6283695,100,76,864,288,0,0,0,0,0,0,0,23016,3000,20748,150,20748,500,22687,5000,6818,10000,6818,10000,6818,10000,0,0,0,0,4673,1
 3246,V_B_TRENTINI,Wanderer Trentini,Wanderer Trentini,186,10800000,1,3000000,3000000,2,8000,12000,200,200,220,300,140,400,300,160,10,12,1,7,84,0x6283695,100,76,864,288,0,0,0,0,0,0,0,23016,3000,20748,150,20748,500,22687,5000,6818,10000,6818,10000,6818,10000,0,0,0,0,4683,1
 3247,CENERE_G,Cenere G,Green Cenere,150,140088,1,7635,7698,1,1897,110,91,81,70,48,40,37,100,45,10,12,0,0,24,0x0000085,300,1500,720,360,0,0,0,0,0,0,0,6561,5000,7322,500,7001,1500,7320,1000,12815,500,0,0,0,0,0,0,0,0,27014,1
-3248,REPAIR_ROBOT_T,Repair Robot T,Repair Robot Turbo,158,186320,1,13208,14489,1,2431,226,118,59,101,42,55,35,110,45,10,12,0,0,40,0x000008B,300,1500,500,660,0,0,0,0,0,0,0,7512,500,7507,250,998,2000,999,500,11597,1500,0,0,0,0,0,0,0,0,27015,1
-3249,EXPLORATION_ROVER_T,Exploration Rover T,Explorer Robot Turbo,171,318117,1,19826,41023,3,2945,841,121,67,118,80,45,121,138,65,10,12,2,0,80,0x0000085,165,1552,1152,336,0,0,0,0,0,0,0,7512,500,7507,250,998,2000,999,500,11597,1500,0,0,0,0,0,0,0,0,27016,1
-3250,SCR_MT_ROBOTS,Scr Mt Robots,Can Robot,155,30,1,61,58,1,95,2,100,99,35,42,20,12,68,3,10,12,0,0,20,0x0070085,300,2400,500,400,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27017,1
-3251,GC109,Machine Component,Machine Component,149,217650,1,6598,5931,1,2678,1257,121,71,60,132,45,35,155,15,10,12,0,0,47,0x0000085,120,1000,500,600,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27018,1
-3252,DR815,Machine Component,Machine Component,153,245670,1,7255,7011,1,3315,761,143,45,88,98,88,21,116,22,10,12,1,0,27,0x0000085,135,1500,600,500,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27019,1
-3253,SYS_MSG,Sys Msg,System message,160,100,1,0,0,1,1,1,276,99,0,0,0,188,0,0,10,12,0,0,20,0xC170081,2000,3000,600,550,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
-3254,T_W_O,T_W_O,T_W_O,165,48000000,1,0,0,1,3955,196,158,134,90,141,7,87,267,70,10,12,2,6,67,0x6280085,150,1250,500,350,0,6832,5000,617,5000,617,5000,22699,3000,1531,500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27020,1
-3255,GHOUL_H,Ghoul H,Smelly Ghoul,155,178652,1,10233,10598,1,2235,216,99,55,98,55,61,22,133,2,10,12,0,3,24,0x0000085,200,0,500,660,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
-3256,ZOMBIE_H,Zombie H,Smelly Zombie,148,134615,1,6859,6903,1,1995,450,91,42,76,53,54,21,125,3,10,12,0,0,60,0x0000085,220,0,960,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
+3248,REPAIR_ROBOT_T,Repair Robot T,Repair Robot Turbo,158,186320,1,13208,14489,1,2431,226,118,59,101,42,55,35,110,45,10,12,0,0,40,0x000008B,300,1500,500,660,0,0,0,0,0,0,0,7512,500,7507,250,998,2000,999,500,11597,1500,6961,50,6962,50,0,0,0,0,27015,1
+3249,EXPLORATION_ROVER_T,Exploration Rover T,Explorer Robot Turbo,171,318117,1,19826,41023,3,2945,841,121,67,118,80,45,121,138,65,10,12,2,0,80,0x0000085,165,1552,1152,336,0,0,0,0,0,0,0,7512,500,7507,250,998,2000,999,500,11597,1500,6961,50,6962,50,0,0,0,0,27016,1
+3250,SCR_MT_ROBOTS,Scr Mt Robots,Can Robot,155,30,1,61,58,1,95,2,100,99,35,42,20,12,68,3,10,12,0,0,20,0x0070085,300,2400,500,400,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,6961,50,6962,50,0,0,0,0,0,0,0,0,27017,1
+3251,GC109,Machine Component,Machine Component,149,217650,1,6598,5931,1,2678,1257,121,71,60,132,45,35,155,15,10,12,0,0,47,0x0000085,120,1000,500,600,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,6961,50,6962,50,0,0,0,0,0,0,0,0,27018,1
+3252,DR815,Machine Component,Machine Component,153,245670,1,7255,7011,1,3315,761,143,45,88,98,88,21,116,22,10,12,1,0,27,0x0000085,135,1500,600,500,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,6961,50,6962,50,0,0,0,0,0,0,0,0,27019,1
+3253,SYS_MSG,Sys Msg,System message,160,100,1,0,0,12,1,1,276,99,0,0,0,188,0,0,10,12,2,6,27,0xC170081,2000,3000,600,550,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
+3254,T_W_O,T_W_O,T_W_O,165,48000000,1,0,0,3,3955,196,158,134,90,141,7,87,267,70,10,12,2,6,67,0x6280085,150,1250,500,350,0,6832,5000,617,5000,617,5000,22699,3000,1531,500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27020,1
+3255,GHOUL_H,Ghoul H,Smelly Ghoul,155,178652,1,10233,10598,1,2235,216,99,55,98,55,61,22,133,2,10,12,0,3,24,0x0000085,200,2050,500,660,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
+3256,ZOMBIE_H,Zombie H,Smelly Zombie,148,134615,1,6859,6903,1,1995,450,91,42,76,53,54,21,125,3,10,12,0,0,60,0x0000085,220,2155,960,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
 //3257,MALE_PORING
 //3258,FEMALE_PORING
 //3259,FANTASTIC_B_UNICORN
@@ -2781,19 +2781,19 @@
 //3618,V_G_ALPHOCCIO_
 //3619,V_G_TRENTINI_
 //3620,NYANGPORING
-//3621,EP16_2_MM_CUTIE
-//3622,EP16_2_MM_S_GUARDS
-//3623,EP16_2_MM_U_ENERGY_R
-//3624,EP16_2_MM_U_ENERGY_G
-//3625,EP16_2_MM_U_ENERGY_B
-//3626,EP16_2_H_HUNTER_V
-//3627,EP16_2_H_HUNTER_MD
-//3628,EP16_2_H_HUNTER_EV
-//3629,EP16_2_BROKEN_GUN
-//3630,EP16_2_E_BOLKOBA
-//3631,EP16_2_HUMAN_KIMERA
-//3632,EP16_2_MATTER_KIMERA
-//3633,EP16_2_VENOM_KIMERA
+3621,EP16_2_MM_CUTIE,Pet Child,Pet Child,120,3500000,1,1200000,600000,2,3400,1900,220,150,160,70,100,40,240,50,10,12,2,2,67,0x6283695,150,864,1268,480,5000,603,5000,617,5000,607,5000,28913,10,7444,500,617,500,603,500,607,500,6223,500,6224,500,0,0,0,0,27152,1
+3622,EP16_2_MM_S_GUARDS,Special Guard,Special Guard,100,21914,1,242,227,1,725,170,80,90,108,64,57,62,150,42,10,12,1,7,23,0x3885,200,1000,780,420,0,0,0,0,0,0,0,990,10,999,10,715,10,603,3,608,3,756,15,984,8,0,0,0,0,0,0
+3623,EP16_2_MM_U_ENERGY_R,Plasma R,Plasma R,1,30,0,0,0,1,1,1,100,99,0,0,0,0,0,0,7,12,0,0,23,0x6370000,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
+3624,EP16_2_MM_U_ENERGY_G,Plasma G,Plasma G,1,30,0,0,0,1,1,1,100,99,0,0,0,0,0,0,7,12,0,0,22,0x6370000,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
+3625,EP16_2_MM_U_ENERGY_B,Plasma B,Plasma B,1,30,0,0,0,1,1,1,100,99,0,0,0,0,0,0,7,12,0,0,21,0x6370000,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
+3626,EP16_2_H_HUNTER_V,Upgraded Heart Hunter,Upgraded Heart Hunter,110,51785,1,5889,6003,1,2461,623,172,98,108,150,90,66,190,15,10,12,2,7,47,0x3885,400,1296,1902,480,0,0,0,0,0,0,0,25159,500,757,15,985,8,28224,20,28225,20,28226,20,0,0,0,0,0,0,27149,1
+3627,EP16_2_H_HUNTER_MD,Heart Hunter Guard,Heart Hunter Guard,105,41428,1,4908,5002,1,1055,267,73,42,72,106,64,44,145,10,10,12,1,7,47,0x3885,200,864,1268,480,0,0,0,0,0,0,0,25159,500,999,10,998,10,603,3,608,3,13138,3,28223,3,0,0,0,0,27149,1
+3628,EP16_2_H_HUNTER_EV,Heart Hunter Ebel,Heart Hunter Ebel,110,2800000,1,800000,400000,1,1700,1000,100,100,100,70,100,30,240,80,10,12,1,7,47,0x6283695,150,432,1268,480,5000,603,5000,617,5000,607,5000,25159,1000,7444,500,617,500,603,500,607,500,13462,10,13461,10,13460,10,0,0,27151,1
+3629,EP16_2_BROKEN_GUN,Grudge of Broken Gun,Grudge of Broken Gun,110,24911,1,3908,3908,5,770,99,95,20,117,68,65,53,144,37,10,12,1,1,48,0x3885,200,576,720,432,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
+3630,EP16_2_E_BOLKOBA,Elena Bolkova,Elena Bolkova,115,2000000,1,300000,150000,7,1200,300,120,70,80,120,66,50,250,60,10,12,1,7,64,0x3885,150,864,1268,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
+3631,EP16_2_HUMAN_KIMERA,Human Kimera,Human Kimera,100,36968,1,3798,3298,1,1441,207,80,100,50,50,100,100,140,1,10,12,1,2,40,0x3885,250,772,672,360,0,0,0,0,0,0,0,25157,1000,23078,200,23077,200,603,30,608,30,756,150,984,80,23076,200,0,0,27147,1
+3632,EP16_2_MATTER_KIMERA,Material Kimera,Material Kimera,100,36968,1,3798,3289,1,1441,207,120,50,100,50,100,50,140,1,10,12,1,2,43,0x3885,250,772,672,360,0,0,0,0,0,0,0,25158,1000,23078,200,23077,200,603,30,608,30,756,150,984,80,23076,200,0,0,27148,1
+3633,EP16_2_VENOM_KIMERA,Venomous Chimera,Venomous Chimera,110,2800000,1,800000,400000,1,2160,1000,150,150,113,75,150,113,250,1,10,12,2,2,85,0x6283695,150,772,672,360,5000,12246,5000,617,5000,607,5000,25156,1000,7444,500,617,500,603,500,607,500,6223,500,1447,10,0,0,0,0,27150,1
 //3634,MYSTCASE_GIANT
 //3635,EVENT_KOBOLD
 3636,LITTLE_ISIS,Little Isis,Little Isis,59,2092,1,531,597,1,192,229,83,5,58,43,22,5,39,15,10,12,2,6,27,0x2003095,200,1384,768,336,0,0,0,0,0,0,0,936,5335,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
@@ -4071,7 +4071,56 @@
 //20941,GROTE
 //20942,PIERROTZOIST
 //20943,DEATH_WITCH
-
+//20944,JP_E_MONSTER_151
+//20945,JP_E_MONSTER_152
+//20946,JP_E_MONSTER_153
+//20947,JP_E_MONSTER_154
+//20948,JP_E_MONSTER_155
+//20949,JP_E_MONSTER_156
+//20950,JP_E_MONSTER_157
+//20951,JP_E_MONSTER_158
+//20952,JP_E_MONSTER_159
+//20953,JP_E_MONSTER_160
+//20954,JP_E_MONSTER_161
+//20955,JP_E_MONSTER_162
+//20956,JP_E_MONSTER_163
+//20957,JP_E_MONSTER_164
+//20958,JP_E_MONSTER_165
+//20959,JP_E_MONSTER_166
+//20960,JP_E_MONSTER_167
+//20961,JP_E_MONSTER_168
+//20962,JP_E_MONSTER_169
+//20963,JP_E_MONSTER_170
+//20964,JP_E_MONSTER_171
+//20965,JP_E_MONSTER_172
+//20966,JP_E_MONSTER_173
+//20967,JP_E_MONSTER_174
+//20968,JP_E_MONSTER_175
+//20969,JP_E_MONSTER_176
+//20970,JP_E_MONSTER_177
+//20971,JP_E_MONSTER_178
+//20972,JP_E_MONSTER_179
+//20973,JP_E_MONSTER_180
+//20974,JP_E_MONSTER_181
+//20975,JP_E_MONSTER_182
+//20976,JP_E_MONSTER_183
+//20977,JP_E_MONSTER_184
+//20978,JP_E_MONSTER_185
+//20979,JP_E_MONSTER_186
+//20980,JP_E_MONSTER_187
+//20981,JP_E_MONSTER_188
+//20982,JP_E_MONSTER_189
+//20983,JP_E_MONSTER_190
+//20984,JP_E_MONSTER_191
+//20985,JP_E_MONSTER_192
+//20986,JP_E_MONSTER_193
+//20987,JP_E_MONSTER_194
+//20988,JP_E_MONSTER_195
+//20989,JP_E_MONSTER_196
+//20990,JP_E_MONSTER_197
+//20991,JP_E_MONSTER_198
+//20992,JP_E_MONSTER_199
+//20993,JP_E_MONSTER_200
 //20994,MD_BETELGEUSE
 //20995,MD_G_DEADSOUL
 //20996,MD_NAGHT_SIEGER

+ 76 - 62
db/re/mob_skill_db.txt

@@ -714,12 +714,11 @@
 1141,Marina@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,6,
 1141,Marina@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,0,19,,,,,,
 1141,Marina@NPC_WATERATTACK,attack,184,2,500,500,5000,no,target,always,0,,,,,,6,
-1142,Marine Sphere@NPC_RUN,idle,354,7,10000,0,30000,no,master,alchemist,,,,,,,26,
-1142,Marine Sphere@NPC_SELFDESTRUCTION,any,173,1,10000,3000,0,no,self,afterskill,354,,,,,,,
+1142,Marine Sphere@NPC_RANDOMMOVE,idle,331,1,10000,0,30000,yes,target,alchemist,,,,,,,,
+1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,10000,3000,0,yes,self,alchemist,,,,,,,,
 1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,500,2000,5000,no,self,myhpltmaxrate,99,,,,,,,
 1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,10000,2000,5000,no,self,skillused,173,,,,,,,
-//1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,10000,0,0,yes,self,always,0,,,,,,,
-//1142,Marine Sphere@NPC_SPEEDUP,any,332,1,10000,0,700,yes,self,always,0,,,,,,,
+1142,Marine Sphere@NPC_SPEEDUP,idle,332,1,10000,0,700,yes,target,always,,,,,,,,
 1143,Marionette@HT_FREEZINGTRAP,idle,121,5,500,0,300000,yes,around2,always,0,,,,,,29,
 1143,Marionette@MG_FIREWALL,chase,18,5,500,500,5000,yes,target,always,0,,,,,,2,
 1143,Marionette@NPC_TELEKINESISATTACK,attack,191,5,500,0,5000,yes,target,always,0,,,,,,6,
@@ -11185,8 +11184,8 @@
 
 3038,Hidden Mob 7@NPC_INVISIBLE,idle,353,1,10000,0,30000,yes,self,always,0,,,,,,,
 3038,Hidden Mob 7@NPC_INVISIBLE,attack,353,1,10000,0,30000,yes,self,always,0,,,,,,,
-// 3038,Hidden Mob 7@NPC_HELLBURNING,idle,719,1,10000,0,3000,yes,self,always,0,,,,,,,
-// 3038,Hidden Mob 7@NPC_HELLBURNING,attack,719,1,10000,0,3000,yes,self,always,0,,,,,,,
+3038,Hidden Mob 7@NPC_HELLBURNING,idle,719,1,10000,0,3000,yes,self,always,0,,,,,,,
+3038,Hidden Mob 7@NPC_HELLBURNING,attack,719,1,10000,0,3000,yes,self,always,0,,,,,,,
 
 // Jitterbug instance
 3069,Ferre@NPC_GROUNDATTACK,attack,185,5,1000,0,5000,no,target,always,0,,,,,,,
@@ -11872,63 +11871,78 @@
 3246,V_B_TRENTINI@NPC_WIDESLEEP,attack,668,5,100,1000,20000,no,self,always,,,,,,,,
 3246,V_B_TRENTINI@NPC_WIDECONFUSE,attack,667,5,100,1000,20000,no,target,always,,,,,,,,
 
-//=================================================================
-// Phantasmagorika 15.2 Mob Skills Placeholder (Gathered from jRO)
-//=================================================================
-
-3153,Excavator Robot@NPC_BLOODDRAIN,angry,199,1,1000,0,3000,no,target,always,0,,,,,,,
-3153,Excavator Robot@NPC_STONESKIN,attack,675,3,10000,0,30000,yes,self,always,0,,,,,,,
-3153,Excavator Robot@NPC_STUNATTACK,attack,179,5,800,1000,5000,no,target,always,0,,,,,,,
-3153,Excavator Robot@NPC_ARMORBRAKE,attack,344,10,500,0,5000,no,target,always,0,,,,,,,
-3153,Excavator Robot@NPC_STONESKIN,chase,675,3,10000,0,30000,yes,self,always,0,,,,,,,
-3153,Excavator Robot@NPC_BLOODDRAIN,attack,199,1,500,0,5000,no,target,always,0,,,,,,,
-3153,Excavator Robot@NPC_STONESKIN,idle,675,3,10000,0,30000,yes,self,always,0,,,,,,,
-3153,Excavator Robot@AL_TELEPORT,idle,26,1,10000,0,0,no,target,rudeattacked,0,,,,,,,
-
-3154,Recon Robot@NPC_GUIDEDATTACK,attack,172,5,500,0,20000,no,target,always,0,,,,,,,
-3154,Recon Robot@NPC_STUNATTACK,attack,179,5,800,1000,5000,no,target,always,0,,,,,,,
-
-3155,Repair Robot@NPC_STUNATTACK,any,179,5,500,1000,5000,no,target,always,0,,,,,,,
-3155,Repair Robot@NPC_GUIDEDATTACK,attack,172,5,1000,0,15000,no,target,always,0,,,,,,,
-
-3156,Exploration Rover@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,casttargeted,1,3157,3158,,,,,
-3156,Exploration Rover@NPC_GUIDEDATTACK,attack,172,5,1000,0,10000,no,target,always,0,,,,,,,
-3156,Exploration Rover@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,target,attackpcge,10,3157,3158,,,,,
-
-3247,Cenere G@NPC_PETRIFYATTACK,attack,180,3,500,500,5000,no,target,always,0,,,,,,,
-3247,Cenere G@MG_THUNDERSTORM,chase,21,10,3000,1000,10000,no,target,always,0,,,,,,,
-3247,Cenere G@NPC_POISONATTACK,any,188,1,5000,0,5000,no,target,always,0,,,,,,,
-3247,Cenere G@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,0,,,,,,,
-3247,Cenere G@MG_THUNDERSTORM,attack,21,10,3000,1000,10000,no,target,always,0,,,,,,,
-
-3248,Repair Robot T@AL_PNEUMA,attack,25,1,2000,0,5000,yes,self,longrangeattacked,0,,,,,,,
-3248,Repair Robot T@AL_TELEPORT,idle,26,1,10000,0,0,no,target,rudeattacked,0,,,,,,,
-3248,Repair Robot T@NPC_CRITICALSLASH,attack,170,1,2000,0,2000,no,target,always,0,,,,,,,
-3248,Repair Robot T@NPC_GUIDEDATTACK,attack,172,5,1000,0,5000,no,target,always,0,,,,,,,
-3248,Repair Robot T@KN_TWOHANDQUICKEN,attack,60,30,10000,0,120000,yes,target,myhpltmaxrate,40,,,,,,,
-3248,Repair Robot T@NPC_STUNATTACK,attack,179,5,500,1000,5000,no,target,always,0,,,,,,,
-3248,Repair Robot T@AL_PNEUMA,chase,25,1,2000,0,5000,no,self,longrangeattacked,0,,,,,,,
-
-3249,Exploration Rover T@KN_TWOHANDQUICKEN,attack,60,30,10000,0,120000,yes,self,myhpltmaxrate,40,,,,,,,
-3249,Exploration Rover T@AL_PNEUMA,chase,25,1,2000,0,5000,no,self,longrangeattacked,0,,,,,,,
-3249,Exploration Rover T@AL_TELEPORT,walk,26,1,10000,0,0,no,target,rudeattacked,0,,,,,,,
-3249,Exploration Rover T@NPC_CRITICALWOUND,attack,673,2,1000,0,5000,no,target,always,0,,,,,,,
-3249,Exploration Rover T@NPC_GUIDEDATTACK,attack,172,5,1000,0,5000,no,target,always,0,,,,,,,
-3249,Exploration Rover T@AL_PNEUMA,attack,25,1,2000,0,5000,no,self,longrangeattacked,0,,,,,,,
-
-3253,SYS_MSG@AL_HEAL,attack,28,10,500,500,5000,yes,friend,friendhpltmaxrate,50,,,,,,,
-3253,SYS_MSG@AL_HEAL,chase,28,10,500,500,5000,yes,friend,friendhpltmaxrate,50,,,,,,,
-3253,SYS_MSG@AL_HEAL,idle,28,10,500,500,5000,yes,friend,friendhpltmaxrate,50,,,,,,,
-
-3254,T_W_O@NPC_PIERCINGATT,attack,158,10,300,0,30000,no,target,always,0,,,,,,,
-3254,T_W_O@NPC_PIERCINGATT,chase,158,10,500,0,5000,no,target,always,0,,,,,,,
-3254,T_W_O@NPC_SILENCEATTACK,attack,178,5,750,250,10000,no,target,casttargeted,0,,,,,,6,
-3254,T_W_O@NPC_SILENCEATTACK,chase,178,5,750,250,3000,no,target,casttargeted,0,,,,,,6,
-3254,T_W_O@NPC_WIDESLEEP,attack,668,5,400,0,15000,no,self,always,0,,,,,,,
-3254,T_W_O@NPC_WIDESTONE,attack,666,5,600,0,30000,no,self,always,0,,,,,,,
-3254,T_W_O@NPC_WIDESOULDRAIN,attack,680,10,1000,0,60000,no,self,always,0,,,,,,,
-3254,T_W_O@NPC_CRITICALWOUND,attack,673,5,150,500,45000,no,target,always,,,,,,,,
+// Phantasmagorika 15.2
+3124,CHARLESTON3@NPC_AGIUP,idle,350,1,2000,0,10000,yes,self,always,0,,,,,,,
+3124,CHARLESTON3@AL_HEAL,idle,28,11,10000,0,3000,yes,self,always,0,,,,,,,
+3124,CHARLESTON3@HW_NAPALMVULCAN,chase,400,5,3000,500,10000,no,target,always,0,,,,,,,
+3124,CHARLESTON3@WZ_VERMILION,chase,85,5,2000,1000,15000,no,target,always,0,,,,,,,
+3124,CHARLESTON3@HW_NAPALMVULCAN,attack,400,5,3000,500,10000,no,target,always,0,,,,,,,
+3124,CHARLESTON3@WZ_VERMILION,attack,85,21,1500,4000,20000,no,target,always,0,,,,,,,
+3124,CHARLESTON3@WZ_METEOR,attack,83,11,1500,4000,20000,no,target,always,0,,,,,,,
+3125,STEP@SM_BASH,attack,5,5,1000,0,5000,yes,target,always,0,,,,,,,
+3126,ROCK_STEP@BS_HAMMERFALL,attack,110,5,1000,1000,5000,no,target,always,0,,,,,,,
+3127,KICK_STEP@ASC_BREAKER,attack,379,5,1000,0,5000,yes,target,always,0,,,,,,,
+3128,KICK_AND_KICK@NPC_STUNATTACK,attack,179,3,500,1000,5000,no,target,always,0,,,,,,,
+3161,BOMB@NPC_SELFDESTRUCTION,idle,173,1,10000,3000,0,no,self,always,0,,,,,,,
+3161,BOMB@NPC_SELFDESTRUCTION,attack,173,1,10000,3000,5000,no,self,myhpltmaxrate,99,,,,,,,
+3253,SYS_MSG@AL_HEAL,attack,28,11,5000,500,5000,yes,friend,friendhpltmaxrate,50,,,,,,,
+3253,SYS_MSG@AL_HEAL,chase,28,11,5000,500,5000,yes,friend,friendhpltmaxrate,50,,,,,,,
+3253,SYS_MSG@AL_HEAL,idle,28,11,5000,500,5000,yes,friend,friendhpltmaxrate,50,,,,,,,
+3254,T_W_O@NPC_PIERCINGATT,attack,158,10,3000,0,30000,no,target,always,0,,,,,,,
+3254,T_W_O@NPC_PIERCINGATT,chase,158,10,5000,0,5000,no,target,always,0,,,,,,,
+3254,T_W_O@NPC_SILENCEATTACK,attack,178,5,7500,250,10000,no,target,casttargeted,0,,,,,,6,
+3254,T_W_O@NPC_SILENCEATTACK,chase,178,5,7500,250,3000,no,target,casttargeted,0,,,,,,6,
+3254,T_W_O@NPC_WIDESLEEP,attack,668,5,4000,0,15000,no,self,always,0,,,,,,,
+3254,T_W_O@NPC_WIDESTONE,attack,666,5,6000,0,30000,no,self,always,0,,,,,,,
+3254,T_W_O@NPC_WIDESOULDRAIN,attack,680,10,10000,0,60000,no,self,always,0,,,,,,,
+3254,T_W_O@NPC_CRITICALWOUND,attack,673,5,1500,500,45000,no,target,always,,,,,,,,
 
 3505,DR_BIG_EGGRING@NPC_SUMMONSLAVE,attack,196,4,10000,2000,10000,no,self,slavele,3,3508,,,,,,
 3505,DR_BIG_EGGRING@NPC_SUMMONSLAVE,idle,196,4,10000,2000,10000,no,self,slavele,3,3508,,,,,,
 
+// ep16.2
+3621,EP16_2_MM_CUTIE@NPC_AGIUP,attack,350,1,10000,0,20000,yes,self,always,0,,,,,,,
+3621,EP16_2_MM_CUTIE@NPC_MENTALBREAKER,attack,159,2,10000,1000,30000,no,target,always,0,,,,,,,
+3621,EP16_2_MM_CUTIE@NPC_WIDESIGHT,attack,669,1,10000,0,30000,yes,self,always,0,,,,,,,
+3621,EP16_2_MM_CUTIE@NPC_BLEEDING,attack,660,5,10000,0,40000,yes,target,always,0,,,,,,,
+3621,EP16_2_MM_CUTIE@NPC_DARKNESSBREATH,attack,658,5,500,3000,10000,no,target,always,0,,,,,,,
+3621,EP16_2_MM_CUTIE@NPC_VAMPIRE_GIFT,attack,679,1,10000,300,20000,no,self,myhpltmaxrate,50,,,,,,,
+3621,EP16_2_MM_CUTIE@NPC_BLOODDRAIN,attack,199,1,10000,300,10000,no,target,myhpltmaxrate,30,,,,,,,
+3622,EP16_2_MM_S_GUARDS@MG_FIREBOLT,chase,19,5,10000,0,10000,yes,target,always,0,,,,,,,
+3622,EP16_2_MM_S_GUARDS@MG_FIREBALL,attack,17,5,2000,500,1000,no,target,always,0,,,,,,,
+3622,EP16_2_MM_S_GUARDS@NPC_FIREATTACK,attack,186,3,1000,500,5000,no,target,always,0,,,,,,,
+3626,EP16_2_H_HUNTER_V@SM_ENDURE,idle,8,1,10000,0,30000,yes,self,always,0,,,,,,,
+3626,EP16_2_H_HUNTER_V@NPC_CRITICALSLASH,chase,170,1,3000,0,5000,yes,target,always,0,,,,,,,
+3626,EP16_2_H_HUNTER_V@NPC_PIERCINGATT,attack,158,5,2000,500,3000,no,target,always,0,,,,,,,
+3627,EP16_2_H_HUNTER_MD@MO_BODYRELOCATION,attack,264,1,1000,0,10000,yes,target,always,0,,,,,,,
+3627,EP16_2_H_HUNTER_MD@AL_INCAGI,attack,29,1,1000,0,10000,yes,self,always,0,,,,,,,
+3627,EP16_2_H_HUNTER_MD@NPC_POWERUP,idle,349,2,10000,0,30000,yes,self,always,0,,,,,,,
+3627,EP16_2_H_HUNTER_MD@SM_BASH,attack,5,5,2000,500,1000,no,target,always,0,,,,,,,
+3627,EP16_2_H_HUNTER_MD@KN_BOWLINGBASH,attack,62,3,1000,500,5000,no,target,always,0,,,,,,,
+3628,EP16_2_H_HUNTER_EV@NPC_AGIUP,attack,350,1,5000,0,20000,yes,self,always,0,,,,,,,
+3628,EP16_2_H_HUNTER_EV@MO_BODYRELOCATION,chase,264,1,2000,0,10000,yes,target,always,0,,,,,,,
+3628,EP16_2_H_HUNTER_EV@NPC_BLEEDING,attack,660,5,2000,500,10000,no,target,always,0,,,,,,,
+3628,EP16_2_H_HUNTER_EV@NPC_CRITICALWOUND,attack,673,3,1000,500,20000,no,target,always,0,,,,,,,
+3628,EP16_2_H_HUNTER_EV@NPC_WIDESIGHT,attack,669,1,10000,0,30000,yes,self,always,0,,,,,,,
+3628,EP16_2_H_HUNTER_EV@NPC_WEAPONBRAKER,attack,343,1,10000,0,40000,yes,target,always,0,,,,,,,
+3628,EP16_2_H_HUNTER_EV@NPC_DARKBREATH,attack,202,5,2000,3000,10000,no,target,myhpltmaxrate,60,,,,,,,
+3629,EP16_2_BROKEN_GUN@NPC_COMBOATTACK,attack,171,5,2000,500,5000,no,target,always,0,,,,,,,
+3630,EP16_2_E_BOLKOBA@NPC_AGIUP,chase,350,1,10000,0,20000,yes,self,always,0,,,,,,,
+3630,EP16_2_E_BOLKOBA@NPC_CRITICALWOUND,attack,673,5,500,1000,30000,no,target,always,0,,,,,,,
+3630,EP16_2_E_BOLKOBA@NPC_STUNATTACK,attack,179,1,1000,500,5000,no,target,always,0,,,,,,,
+3630,EP16_2_E_BOLKOBA@NPC_WIDESIGHT,attack,669,1,10000,0,30000,yes,self,always,0,,,,,,,
+3630,EP16_2_E_BOLKOBA@NPC_PULSESTRIKE,attack,661,1,500,2000,5000,no,self,always,0,,,,,,,
+3630,EP16_2_E_BOLKOBA@NPC_MAGICMIRROR,attack,671,10,2000,3000,20000,no,self,myhpltmaxrate,20,,,,,,,
+3631,EP16_2_HUMAN_KIMERA@NPC_AGIUP,idle,350,1,10000,0,60000,yes,self,always,0,,,,,,,
+3631,EP16_2_HUMAN_KIMERA@NPC_COMBOATTACK,chase,171,1,1000,500,5000,no,target,always,0,,,,,,,
+3631,EP16_2_HUMAN_KIMERA@NPC_RANDOMATTACK,attack,183,1,1000,500,5000,no,target,always,0,,,,,,,
+3632,EP16_2_MATTER_KIMERA@NPC_POWERUP,idle,349,1,10000,0,60000,yes,self,always,0,,,,,,,
+3632,EP16_2_MATTER_KIMERA@NPC_COMBOATTACK,chase,171,1,1000,500,5000,no,target,always,0,,,,,,,
+3632,EP16_2_MATTER_KIMERA@NPC_FIREATTACK,attack,186,1,1000,500,5000,no,target,always,0,,,,,,,
+3633,EP16_2_VENOM_KIMERA@NPC_POWERUP,attack,349,5,10000,0,20000,yes,self,always,0,,,,,,,
+3633,EP16_2_VENOM_KIMERA@NPC_AGIUP,attack,350,5,10000,0,20000,yes,self,always,0,,,,,,,
+3633,EP16_2_VENOM_KIMERA@NPC_POISON,attack,176,5,1000,500,5000,no,target,always,0,,,,,,,
+3633,EP16_2_VENOM_KIMERA@NPC_POISONATTACK,attack,188,3,1000,0,5000,yes,target,always,0,,,,,,,
+3633,EP16_2_VENOM_KIMERA@NPC_WIDESIGHT,attack,669,1,10000,0,30000,yes,self,always,0,,,,,,,
+3633,EP16_2_VENOM_KIMERA@NPC_ACIDBREATH,attack,657,6,10000,3000,25000,no,target,always,0,,,,,,,
+3633,EP16_2_VENOM_KIMERA@RG_STRIPARMOR,attack,217,5,500,1000,5000,no,target,always,0,,,,,,,

+ 12 - 10
db/re/pet_db.yml

@@ -675,13 +675,13 @@ Body:
       if (.@i >= PET_INTIMATE_LOYAL) {
         bonus2 bAddRace,RC_Demihuman,3;
         bonus2 bMagicAddRace,RC_DemiHuman,3;
-        bonus2 bAddRace,RC_Player,3;
-        bonus2 bMagicAddRace,RC_Player,3;
+        bonus2 bAddRace,RC_Player_Human,3;
+        bonus2 bMagicAddRace,RC_Player_Human,3;
       } else if (.@i >= PET_INTIMATE_CORDIAL) {
         bonus2 bAddRace,RC_Demihuman,2;
         bonus2 bMagicAddRace,RC_DemiHuman,2;
-        bonus2 bAddRace,RC_Player,2;
-        bonus2 bMagicAddRace,RC_Player,2;
+        bonus2 bAddRace,RC_Player_Human,2;
+        bonus2 bMagicAddRace,RC_Player_Human,2;
       }
   - Mob: ALICE
     TameItem: Sway_Apron
@@ -697,11 +697,11 @@ Body:
       if (.@i >= PET_INTIMATE_LOYAL) {
         bonus bMdef,2;
         bonus2 bSubRace,RC_DemiHuman,2;
-        bonus2 bSubRace,RC_Player,2;
+        bonus2 bSubRace,RC_Player_Human,2;
       } else if (.@i >= PET_INTIMATE_CORDIAL) {
         bonus bMdef,1;
         bonus2 bSubRace,RC_DemiHuman,1;
-        bonus2 bSubRace,RC_Player,1;
+        bonus2 bSubRace,RC_Player_Human,1;
       }
     Evolution:
       - Target: ALIZA
@@ -760,11 +760,11 @@ Body:
       if (.@i >= PET_INTIMATE_LOYAL) {
         bonus bDef,2;
         bonus2 bSubRace,RC_DemiHuman,2;
-        bonus2 bSubRace,RC_Player,2;
+        bonus2 bSubRace,RC_Player_Human,2;
       } else if (.@i >= PET_INTIMATE_CORDIAL) {
         bonus bDef,1;
         bonus2 bSubRace,RC_DemiHuman,1;
-        bonus2 bSubRace,RC_Player,1;
+        bonus2 bSubRace,RC_Player_Human,1;
       }
   - Mob: ECLIPSE_P
     EggItem: Spring_Rabbit_Egg
@@ -933,10 +933,10 @@ Body:
       
       if (.@i >= PET_INTIMATE_LOYAL) {
         bonus2 bAddRace,RC_DemiHuman,5;
-        bonus2 bAddRace,RC_Player,5;
+        bonus2 bAddRace,RC_Player_Human,5;
       } else if (.@i >= PET_INTIMATE_CORDIAL) {
         bonus2 bAddRace,RC_DemiHuman,3;
-        bonus2 bAddRace,RC_Player,3;
+        bonus2 bAddRace,RC_Player_Human,3;
       }
   - Mob: SUCCUBUS
     TameItem: Boy's_Naivety
@@ -1143,8 +1143,10 @@ Body:
       
       if (.@i >= PET_INTIMATE_LOYAL) {
         bonus2 bSubRace,RC_Brute,5;
+        bonus2 bSubRace,RC_Player_Doram,5;
       } else if (.@i >= PET_INTIMATE_CORDIAL) {
         bonus2 bSubRace,RC_Brute,3;
+        bonus2 bSubRace,RC_Player_Doram,3;
       }
   - Mob: BACSOJIN_
     TameItem: Shiny_Wing_Gown

+ 9 - 9
db/re/produce_db.txt

@@ -656,17 +656,17 @@
 //-- Cure Free <-- GN_S_PHARMACY Lv1, Quality Potion Book, 20 Green Herb, 1 Fruit Of Mastela, 5 Panacea, 1 Leaf Of Yggdrasil, 10 Empty Cylinder
 263,12475,29,2497,1,6285,0,511,20,522,1,525,5,610,1,1092,10
 //-- Golden X <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 10 Yggdrasilberry, 5 Gold
-//264,100231,29,2497,1,1092,10,607,10,969,5
+264,100231,29,2497,1,1092,10,607,10,969,5
 //-- Red Herb Activator <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 45 Red Herb, 5 Yggdrasil Seed
-//265,100232,29,2497,1,1092,10,507,45,608,5
+265,100232,29,2497,1,1092,10,507,45,608,5
 //-- Blue Herb Activator <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 15 Blue Herb, 5 Yggdrasil Seed
-//266,100233,29,2497,1,1092,10,510,15,608,5
-//-- Concentrated Red Syrup Potion <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 10 Empty Potion Bottle, 15 Red Syrup
-//267,1100003,29,2497,1,1092,10,1093,10,11621,15
-//-- Concentrated Blue Syrup Potion <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 10 Empty Potion Bottle, 15 Blue Syrup
-//268,1100004,29,2497,1,1092,10,1093,10,11624,15
-//-- Concentrated Golden Syrup Potion <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 10 Empty Potion Bottle, 15 White Syrup, 10 Yellow Syrup
-//269,1100005,29,2497,1,1092,10,1093,10,11623,15,11622,10
+266,100233,29,2497,1,1092,10,510,15,608,5
+//-- Concentrated Red Syrup Potion <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 5 Empty Potion Bottle, 15 Red Syrup
+267,1100003,29,2497,1,1092,10,1093,5,11621,15
+//-- Concentrated Blue Syrup Potion <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 5 Empty Potion Bottle, 15 Blue Syrup
+268,1100004,29,2497,1,1092,10,1093,5,11624,15
+//-- Concentrated Golden Syrup Potion <-- GN_S_PHARMACY Lvl, 10 Empty Testtube, 5 Empty Potion Bottle, 10 White Syrup, 10 Yellow Syrup
+269,1100005,29,2497,1,1092,10,1093,5,11623,10,11622,10
 //===============================================
 
 //--------------------LEVEL 30-----------

+ 379 - 58
db/re/quest_db.yml

@@ -30,8 +30,18 @@
 #                   Specify without "+" for the exact time the quest expires using "d" (optionnal), [0-23]"h" (required), [0-59]"mn" (optionnal), [0-59]"s" (optionnal) format.
 #                   Please note the number before "d" only shift the exact timer to the given day(s).
 #   Targets:        Quest objective target. (Default: null)
-#     - Mob         Monster to kill.
-#       Count       Amount of monsters to kill.
+#                   The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
+#                   If Mob is supplied, Count is required and the other fields are ignored.
+#                   If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
+#                   If Id is supplied, Count is required for each new entry.
+#     - Mob         Monster to kill (aegis monster name).
+#       Count       Amount of monsters to kill. Set to 0 to skip the target on import.
+#       Id          Unique target index for the quest Id. Requires a positive number.
+#       Race        Monster race target (default All). Valids race are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
+#       Size        Monster size target (default All). Valids size are Small, Medium, Large, All.
+#       Element     Monster element target (default All). Valids elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
+#       MinLevel    Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
+#       MaxLevel    Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
 #   Drops:          Quest item drop targets. (Default: null)
 #     - Mob         Monster to kill. 0 will apply to all monsters. (Default: 0)
 #       Item        Item to drop.
@@ -2245,24 +2255,74 @@ Body:
     Title: The Royal Richard
   - Id: 5404
     Title: "[Repeat]Warrior Discipline-Human"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: DemiHuman
+        MinLevel: 140
   - Id: 5405
     Title: "[Repeat]Warrior Discipline-Animal"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: Brute
+        MinLevel: 140
   - Id: 5406
     Title: "[Repeat]Warrior Discipline-Insect"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: Insect
+        MinLevel: 140
   - Id: 5407
     Title: "[Repeat]Warrior Discipline-Fish"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: Fish
+        MinLevel: 140
   - Id: 5408
     Title: "[Repeat]Warrior Discipline-Plant"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: Plant
+        MinLevel: 140
   - Id: 5409
     Title: "[Repeat]Warrior Discipline-Devil"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: Demon
+        MinLevel: 140
   - Id: 5410
     Title: "[Repeat]Warrior Discipline-Angel"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: Angel
+        MinLevel: 140
   - Id: 5411
     Title: "[Repeat]Warrior Discipline-Immortal"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: Undead
+        MinLevel: 140
   - Id: 5412
     Title: "[Repeat]Warrior Discipline-Intangible"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: Formless
+        MinLevel: 140
   - Id: 5413
     Title: "[Repeat]Warrior Discipline-Dragon"
+    Targets:
+      - Id: 1
+        Count: 50
+        Race: Dragon
+        MinLevel: 140
   - Id: 5414
     Title: "[Stand by]Warrior Discipline"
     TimeLimit: 4h
@@ -2406,6 +2466,29 @@ Body:
     Title: Mad Love for Wife(5)
   - Id: 5468
     Title: Mad Love for Wife(6)
+  - Id: 5727
+    Title: Suddenly in charge
+    TimeLimit: 4h
+  - Id: 5728
+    Title: Headache
+  - Id: 5729
+    Title: To Einbech
+  - Id: 5730
+    Title: Things that can destroy the device
+  - Id: 5731
+    Title: Clana Namieri
+  - Id: 5732
+    Title: To Lighthalzen
+  - Id: 5733
+    Title: Clana Namieri
+  - Id: 5734
+    Title: Core materials are always a problem
+  - Id: 5735
+    Title: To Yuno
+  - Id: 5736
+    Title: To Einbroch
+  - Id: 5737
+    Title: Clana Namieri
   - Id: 6000
     Title: Job Change to Taekwon
   - Id: 6001
@@ -4026,13 +4109,13 @@ Body:
     Title: Core Collection
     Drops:
       - Mob: RECON_ROBOT
-        Item: Operation_Control_Device
+        Item: Power_Control_Device
         Rate: 5000
       - Mob: REPAIR_ROBOT
-        Item: Operation_Control_Device
+        Item: Power_Control_Device
         Rate: 5000
       - Mob: EXPLORATION_ROVER
-        Item: Operation_Control_Device
+        Item: Power_Control_Device
         Rate: 5000
   - Id: 7616
     Title: Core Collection - Down
@@ -4195,6 +4278,81 @@ Body:
     Title: EMT
   - Id: 7723
     Title: The potential within
+  - Id: 7731
+    Title: Secret Action
+  - Id: 7732
+    Title: Searching the suspect
+  - Id: 7733
+    Title: Pursuit!
+  - Id: 7734
+    Title: Arrest
+  - Id: 7735
+    Title: Secret Action 2
+  - Id: 7736
+    Title: Small differences between sightseeing and secret bussiness
+  - Id: 7737
+    Title: Together with Rebel
+  - Id: 7738
+    Title: Next operation plan
+  - Id: 7739
+    Title: Find Star of Blessing!
+  - Id: 7740
+    Title: Star of Blessing obtained
+  - Id: 7741
+    Title: Let's return
+  - Id: 7742
+    Title: Sweeping the remnants
+    Targets:
+      - Mob: EP16_2_MM_CUTIE
+        Count: 1
+  - Id: 7743
+    Title: Sweeping the remnants (Standby)
+    TimeLimit: 4h
+  - Id: 7744
+    Title: Hiding Researcher
+  - Id: 7745
+    Title: Hiding Researcher (Standby)
+    TimeLimit: 4h
+  - Id: 7746
+    Title: A pair of old rings
+  - Id: 7747
+    Title: Locket Pendant
+  - Id: 7748
+    Title: Wooden Rosary
+  - Id: 7749
+    Title: Bow Thimble Decoration
+  - Id: 7750
+    Title: Assassin Dagger with Glyph
+  - Id: 7751
+    Title: Portable Sewing Kit
+  - Id: 7752
+    Title: Well hidden
+  - Id: 7753
+    Title: Well hidden
+  - Id: 7754
+    Title: Well hidden
+  - Id: 7755
+    Title: Well hidden
+  - Id: 7756
+    Title: Well hidden
+  - Id: 7757
+    Title: Well hidden
+  - Id: 7758
+    Title: Well hidden
+  - Id: 7759
+    Title: Well hidden
+  - Id: 7760
+    Title: Well hidden
+  - Id: 7761
+    Title: Make Chimeras rest in peace
+    Targets:
+      - Mob: EP16_2_HUMAN_KIMERA
+        Count: 10
+      - Mob: EP16_2_MATTER_KIMERA
+        Count: 10
+  - Id: 7762
+    Title: Make Chimeras rest in peace (Standby)
+    TimeLimit: 4h
   - Id: 7790
     Title: Rock Ridge, Land of Opportunities
   - Id: 7791
@@ -6147,6 +6305,7 @@ Body:
     Title: Let the Specialists Handle It
   - Id: 11377
     Title: Act of Kindness
+    TimeLimit: +1d
   - Id: 11378
     Title: "Trick or treat "
   - Id: 11379
@@ -6288,6 +6447,64 @@ Body:
         Rate: 5000
   - Id: 11445
     Title: Vigilante Corp
+  - Id: 11454
+    Title: Doubt
+  - Id: 11455
+    Title: Doubt
+  - Id: 11456
+    Title: Doubt
+  - Id: 11457
+    Title: Doubt
+  - Id: 11458
+    Title: Doubt
+  - Id: 11459
+    Title: Doubt
+  - Id: 11460
+    Title: Doubt
+  - Id: 11461
+    Title: Doubt
+  - Id: 11462
+    Title: Doubt
+  - Id: 11463
+    Title: You said the party is ready?
+  - Id: 11464
+    Title: You said the party is ready?
+  - Id: 11465
+    Title: Dien's High Class Tea
+    Targets:
+      - Mob: EP16_2_H_HUNTER_EV
+        Count: 1
+    Drops:
+      - Mob: EP16_2_H_HUNTER_EV
+        Item: High_Class_Tea
+        Rate: 10000
+  - Id: 11466
+    Title: Dien's High Class Tea
+    TimeLimit: 4h
+  - Id: 11467
+    Title: Ridsh's Old Letter
+    Targets:
+      - Mob: EP16_2_H_HUNTER_V
+        Count: 1
+    Drops:
+      - Mob: EP16_2_H_HUNTER_V
+        Item: Old_Letter
+        Rate: 5000
+  - Id: 11468
+    Title: Ridsh's Old Letter
+    TimeLimit: 4h
+  - Id: 11469
+    Title: Cotness's Shiny Ring
+    Targets:
+      - Mob: EP16_2_H_HUNTER_MD
+        Count: 5
+    Drops:
+      - Mob: EP16_2_H_HUNTER_MD
+        Item: Very_Shining_Ring
+        Rate: 5000
+  - Id: 11470
+    Title: Cotness's Shiny Ring
+    TimeLimit: 4h
   - Id: 12000
     Title: An old friend
   - Id: 12001
@@ -7133,8 +7350,17 @@ Body:
     TimeLimit: +23h
   - Id: 12363
     Title: ?????? ?? ??
+  - Id: 12368
+    Title: Operate the old robot
   - Id: 12369
     Title: Secret Business Relation
+  - Id: 12374
+    Title: Heart Hunter Base occupation
+  - Id: 12375
+    Title: Base maintenance
+    TimeLimit: 4h
+  - Id: 12376
+    Title: First transaction
   - Id: 12381
     Title: New Continent's Food Supplier
   - Id: 12382
@@ -8213,6 +8439,86 @@ Body:
   - Id: 14592
     Title: Resting Time
     TimeLimit: 4h
+  - Id: 14595
+    Title: To Einbech train station
+  - Id: 14596
+    Title: Follow the trails
+  - Id: 14597
+    Title: Corner of Einbech
+  - Id: 14598
+    Title: Invisible entrance
+  - Id: 14599
+    Title: A glass of tea gratitude
+  - Id: 14600
+    Title: Gentleman on second floor
+  - Id: 14601
+    Title: Ladies on second floor
+  - Id: 14602
+    Title: Hunter on second floor
+  - Id: 14603
+    Title: Pipe repair materials
+    Targets:
+      - Mob: WASTE_STOVE
+        Count: 10
+  - Id: 14604
+    Title: National Fuel Solar Fuel
+    Targets:
+      - Mob: WASTE_STOVE
+        Count: 10
+  - Id: 14605
+    Title: Sparkling things
+    Targets:
+      - Mob: OBSIDIAN
+        Count: 5
+      - Mob: MINERAL
+        Count: 5
+  - Id: 14606
+    Title: Pipe repair materials
+    Targets:
+      - Mob: WASTE_STOVE
+        Count: 10
+  - Id: 14607
+    Title: National Fuel Solar Fuel
+    Targets:
+      - Mob: WASTE_STOVE
+        Count: 10
+  - Id: 14608
+    Title: Sparkling things
+    Targets:
+      - Mob: OBSIDIAN
+        Count: 5
+      - Mob: MINERAL
+        Count: 5
+  - Id: 14609
+    Title: Quiet time
+    TimeLimit: 4h
+  - Id: 14610
+    Title: Gun recycling
+    Targets:
+      - Mob: EP16_2_BROKEN_GUN
+        Count: 5
+    Drops:
+      - Mob: EP16_2_BROKEN_GUN
+        Item: Broken_Gun_Wreck
+        Rate: 5000
+  - Id: 14611
+    Title: Gun recycling
+    Targets:
+      - Mob: EP16_2_BROKEN_GUN
+        Count: 5
+    Drops:
+      - Mob: EP16_2_BROKEN_GUN
+        Item: Broken_Gun_Wreck
+        Rate: 5000
+  - Id: 14612
+    Title: Time for repair
+    TimeLimit: 4h
+  - Id: 14613
+    Title: Erst on second floor
+  - Id: 14614
+    Title: Convince the leaders
+  - Id: 14615
+    Title: Between negotiation and deception
   - Id: 14672
     Title: Preparing for the Firework Festival
     Targets:
@@ -8300,111 +8606,126 @@ Body:
   - Id: 16008
     Title: Quiz time!
   - Id: 16009
-    Title: Quiz time!
+    Title: Fighting is the language of warmonger
   - Id: 16010
-    Title: Daewoon's Test
+    Title: Battle in great condition
+    TimeLimit: 4h
   - Id: 16011
-    Title: Sir Jore's Test
+    Title: Arena entrance
   - Id: 16012
-    Title: Sir Jore's Materials
+    Title: Troublesome twin
   - Id: 16013
-    Title: The Stone of Sage
+    Title: "Testimony: Chef's story"
   - Id: 16014
-    Title: The Stone of Sage
+    Title: "Testimony: Sniper's story"
   - Id: 16015
-    Title: Lady Jesqurienne
+    Title: The cause of failure is a careless attempt
   - Id: 16016
-    Title: Jesquerinne's Quiz Challenge
+    Title: Borrowing wisdom of the experts
   - Id: 16017
-    Title: Failed Quiz Challenge
+    Title: Twin's sincere confession
   - Id: 16018
-    Title: Quiz Challenge Triumph
+    Title: Encourage instead of punishment
   - Id: 16019
-    Title: Search for Dearles
+    Title: Elena Volkova's Solution
   - Id: 16020
-    Title: Dearles' Test
+    Title: Daily babysitting
+    TimeLimit: 4h
   - Id: 16021
-    Title: Test of Appreciation
+    Title: "Service: Book lending agent"
   - Id: 16022
-    Title: Dearles' Test Part Two
+    Title: "Service: Book lending agent"
   - Id: 16023
-    Title: Rhythm Test Passed
+    Title: "Service: Book lending agent"
   - Id: 16024
-    Title: Find Bakerlan
+    Title: "Service: Loaned book delivery"
   - Id: 16025
-    Title: Bakerlan's delivery
+    Title: "Service: Exploring the Mine Dungeon"
+    Targets:
+      - Mob: PITMAN
+        Count: 30
   - Id: 16026
-    Title: Mahatra's delivery
+    Title: "Service: Exploring the Mine Dungeon"
+    Targets:
+      - Mob: NOXIOUS
+        Count: 20
+      - Mob: VENOMOUS
+        Count: 20
   - Id: 16027
-    Title: Bakerlan's Receipt
+    Title: "Service: Cookies delivery"
   - Id: 16028
-    Title: Find Seylin
+    Title: "Service: Cookies delivery"
   - Id: 16029
-    Title: Vigorgra Medicine
+    Title: "Service: Cookies delivery"
   - Id: 16030
-    Title: Vigorgra Ingredients
+    Title: "Service: Cookies delivery"
   - Id: 16031
-    Title: Vigorgra Ingredients
+    Title: "Service: Cookies delivery"
   - Id: 16032
-    Title: Seylin's Request
+    Title: Hospitality to senior
   - Id: 16033
-    Title: Back to Seylin
+    Title: Bring dessert and listen the story
   - Id: 16034
-    Title: Back to Mahatra
+    Title: Sweet cookies once a day
+    TimeLimit: 4h
   - Id: 16035
-    Title: Report to Bakerlan
+    Title: "Delivery: Explosive revolver materials"
   - Id: 16036
-    Title: The last Crumb
+    Title: Expert's keen eye
   - Id: 16037
-    Title: Finding Engel Howard
+    Title: Material collection once a day
+    TimeLimit: 4h
   - Id: 16038
-    Title: Liana's Letter
+    Title: Collect 2 Oridecons
   - Id: 16039
-    Title: Combining the Starlight
+    Title: Collect 2 Eluniums
   - Id: 16040
-    Title: Letter to Engel's Family
+    Title: Collect 5 Irons
   - Id: 16041
-    Title: Talk to Liana
+    Title: "Investigation: Capture strolling cat operation"
   - Id: 16042
-    Title: Sobbing Starlight Progress
+    Title: Charity temporarily stays
+    TimeLimit: 4h
   - Id: 16043
-    Title: Restored Sobbing Starlight
+    Title: "Investigation: Capture someone's craving operation"
   - Id: 16044
-    Title: Combining the Starlight
+    Title: In charge of Charity
   - Id: 16045
-    Title: Starlight message
+    Title: Veteran's small memorial service
   - Id: 16046
-    Title: The man in Umbala
+    Title: DIY obtaining bouquet materials
   - Id: 16047
-    Title: Into the Tree
+    Title: Quiet memorial ceremony
   - Id: 16048
-    Title: Ancient Papers
+    Title: Traces of old story
   - Id: 16049
-    Title: Record of Ancient Language
+    Title: Quiet dawn
+    TimeLimit: 4h
   - Id: 16050
-    Title: The Fastidious Old Man
+    Title: Tribute hour
   - Id: 16051
-    Title: Blurry Vision
+    Title: DIY obtaining bouquet materials
   - Id: 16052
-    Title: Translating the Document
+    Title: Quiet memorial ceremony
   - Id: 16053
-    Title: Translated Ancient Language
+    Title: Ongoing old story
   - Id: 16054
-    Title: Where the rejected live
+    Title: Differentiated advertising strategy
   - Id: 16055
-    Title: Misfortunate of Niflheim
+    Title: "Advertising: Dou you want a clean city?"
   - Id: 16056
-    Title: Removed Curse
+    Title: "Advertising: Then blow it all away!"
   - Id: 16057
-    Title: Meeting the witch
+    Title: "Advertising: Suitable revenge for old age!"
   - Id: 16058
-    Title: Wing Of Crow
+    Title: Slow advertising effect
+    TimeLimit: 4h
   - Id: 16059
-    Title: Wing Of Crow
+    Title: Differentiated advertising strategy
   - Id: 16060
-    Title: Misfortunate of Niflheim
+    Title: Fighting is the language of warmonger
   - Id: 16061
-    Title: Bard in Niflheim
+    Title: Fair and equitable result
   - Id: 16062
     Title: Gen of Niflheim
   - Id: 16063

+ 166 - 132
db/re/skill_db.yml

@@ -2111,7 +2111,7 @@ Body:
     HitCount: -3
     Element: Weapon
     SplashArea: 2
-    ActiveInstance: 3
+    ActiveInstance: 5
     Knockback: 2
     CastTime: 500
     Duration1: 1000
@@ -9958,25 +9958,25 @@ Body:
     Requires:
       SpCost:
         - Level: 1
-          Amount: 14
+          Amount: 35
         - Level: 2
-          Amount: 18
+          Amount: 40
         - Level: 3
-          Amount: 22
+          Amount: 45
         - Level: 4
-          Amount: 26
+          Amount: 50
         - Level: 5
-          Amount: 30
+          Amount: 55
         - Level: 6
-          Amount: 34
+          Amount: 60
         - Level: 7
-          Amount: 38
+          Amount: 65
         - Level: 8
-          Amount: 42
+          Amount: 70
         - Level: 9
-          Amount: 46
+          Amount: 75
         - Level: 10
-          Amount: 50
+          Amount: 80
   - Id: 367
     Name: PA_PRESSURE
     Description: Gloria Domini
@@ -15704,10 +15704,12 @@ Body:
     DamageFlags:
       Splash: true
       SplashSplit: true
+      IgnoreDefense: true
     Flags:
       IsNpc: true
       TargetTrap: true
       ShowScale: true
+      IgnoreLandProtector: true
     Hit: Multi_Hit
     HitCount: 1
     SplashArea:
@@ -15731,6 +15733,35 @@ Body:
         Area: 11
       - Level: 10
         Area: 13
+    Duration1: 910
+    FixedCastTime: -1
+    Unit:
+      Id: Earthquake
+      Range:
+        - Level: 1
+          Size: 5
+        - Level: 2
+          Size: 7
+        - Level: 3
+          Size: 9
+        - Level: 4
+          Size: 11
+        - Level: 5
+          Size: 13
+        - Level: 6
+          Size: 5
+        - Level: 7
+          Size: 7
+        - Level: 8
+          Size: 9
+        - Level: 9
+          Size: 11
+        - Level: 10
+          Size: 13
+      Interval: 300
+      Target: Enemy
+      Flag:
+        PathCheck: true
   - Id: 654
     Name: NPC_FIREBREATH
     Description: Fire Breath
@@ -16824,6 +16855,28 @@ Body:
     Flags:
       IsNpc: true
     HitCount: 1
+  - Id: 719
+    Name: NPC_HELLBURNING
+    Description: Hell Burning
+    MaxLevel: 1
+    Type: Magic
+    TargetType: Self
+    Flags:
+      IsNpc: true
+      IgnoreLandProtector: true
+    Hit: Single
+    HitCount: 1
+    Element: Fire
+    Duration1: 3000
+    Unit:
+      Id: Hellburning
+      Layout: 1
+      Interval: 20
+      Target: Enemy
+      Flag:
+        NoOverlap: true
+        PathCheck: true
+        RangedSingleUnit: true
   - Id: 720
     Name: NPC_JACKFROST
     Description: Jack Frost 2
@@ -18035,25 +18088,36 @@ Body:
     Description: Frosty Misty
     MaxLevel: 5
     Type: Magic
-    TargetType: Self
+    TargetType: Ground
     DamageFlags:
       Splash: true
     Flags:
       AlterRangeRadius: true
+    Range: 11
     Hit: Multi_Hit
     HitCount:
       - Level: 1
-        Count: -3
+        Count: 1
       - Level: 2
-        Count: -4
+        Count: 2
       - Level: 3
-        Count: -5
+        Count: 3
       - Level: 4
-        Count: -6
+        Count: 4
       - Level: 5
-        Count: -7
+        Count: 5
     Element: Water
-    SplashArea: 9
+    SplashArea:
+      - Level: 1
+        Area: 3
+      - Level: 2
+        Area: 3
+      - Level: 3
+        Area: 4
+      - Level: 4
+        Area: 4
+      - Level: 5
+        Area: 5
     CopyFlags:
       Skill:
         Reproduce: true
@@ -18071,6 +18135,7 @@ Body:
         Time: 4000
     AfterCastActDelay: 1000
     Duration1: 40000
+    Duration2: 10000
     Cooldown: 4000
     FixedCastTime: 500
     Requires:
@@ -18090,23 +18155,24 @@ Body:
     Description: Jack Frost
     MaxLevel: 5
     Type: Magic
-    TargetType: Self
+    TargetType: Attack
     DamageFlags:
       Splash: true
+    Range: 11
     Hit: Multi_Hit
     HitCount: -5
     Element: Water
     SplashArea:
       - Level: 1
-        Area: 5
+        Area: 3
       - Level: 2
-        Area: 6
+        Area: 3
       - Level: 3
-        Area: 7
+        Area: 4
       - Level: 4
-        Area: 8
+        Area: 4
       - Level: 5
-        Area: 9
+        Area: 5
     CopyFlags:
       Skill:
         Reproduce: true
@@ -18134,6 +18200,7 @@ Body:
         Time: 27500
       - Level: 5
         Time: 32500
+    Cooldown: 4000
     FixedCastTime: 1000
     Requires:
       SpCost:
@@ -18396,7 +18463,7 @@ Body:
         Reproduce: true
     CastCancel: true
     CastTime: 5000
-    AfterCastActDelay: 2000
+    AfterCastActDelay: 500
     Duration1: 5000
     Cooldown: 5000
     FixedCastTime: 1000
@@ -18418,32 +18485,46 @@ Body:
     MaxLevel: 5
     Type: Magic
     TargetType: Attack
+    DamageFlags:
+      Splash: true
     Flags:
       AlterRangeRadius: true
     Range: 11
     Hit: Single
     HitCount: 1
     Element: Fire
+    SplashArea:
+      - Level: 1
+        Area: 1
+      - Level: 2
+        Area: 1
+      - Level: 3
+        Area: 1
+      - Level: 4
+        Area: 2
+      - Level: 5
+        Area: 2
     CopyFlags:
       Skill:
         Reproduce: true
     CastCancel: true
     CastTime: 3000
-    AfterCastActDelay: 1000
+    AfterCastActDelay: 500
     Duration1: 15000
+    Cooldown: 3000
     FixedCastTime: 1000
     Requires:
       SpCost:
         - Level: 1
-          Amount: 35
+          Amount: 64
         - Level: 2
-          Amount: 40
+          Amount: 70
         - Level: 3
-          Amount: 45
+          Amount: 76
         - Level: 4
-          Amount: 50
+          Amount: 82
         - Level: 5
-          Amount: 55
+          Amount: 88
   - Id: 2213
     Name: WL_COMET
     Description: Comet
@@ -18456,8 +18537,8 @@ Body:
       AlterRangeRadius: true
     Range: 11
     Hit: Multi_Hit
-    HitCount: -20
-    SplashArea: 9
+    HitCount: -10
+    SplashArea: 6
     Knockback: 2
     CopyFlags:
       Skill:
@@ -18465,45 +18546,32 @@ Body:
     CastCancel: true
     CastTime:
       - Level: 1
-        Time: 10000
+        Time: 6000
       - Level: 2
-        Time: 11000
+        Time: 7000
       - Level: 3
-        Time: 12000
+        Time: 8000
       - Level: 4
-        Time: 13000
+        Time: 9000
       - Level: 5
-        Time: 14000
-    AfterCastActDelay: 2000
+        Time: 10000
+    AfterCastActDelay: 1500
     Duration1: 100
     Duration2: 42000
-    Cooldown: 60000
-    FixedCastTime:
-      - Level: 1
-        Time: 1000
-      - Level: 2
-        Time: 1500
-      - Level: 3
-        Time: 2000
-      - Level: 4
-        Time: 2500
-      - Level: 5
-        Time: 3000
+    Cooldown: 20000
+    FixedCastTime: 2000
     Requires:
       SpCost:
         - Level: 1
-          Amount: 480
+          Amount: 70
         - Level: 2
-          Amount: 560
+          Amount: 90
         - Level: 3
-          Amount: 640
+          Amount: 110
         - Level: 4
-          Amount: 720
+          Amount: 130
         - Level: 5
-          Amount: 800
-      ItemCost:
-        - Item: Red_Gemstone
-          Amount: 2
+          Amount: 150
     Unit:
       Id: Dummyskill
       Range: 9
@@ -18607,7 +18675,7 @@ Body:
         Time: 5000
       - Level: 5
         Time: 6000
-    AfterCastActDelay: 1000
+    AfterCastActDelay: 500
     Duration1: 100
     Duration2:
       - Level: 1
@@ -18620,7 +18688,7 @@ Body:
         Time: 120000
       - Level: 5
         Time: 135000
-    Cooldown: 10000
+    Cooldown: 7000
     FixedCastTime: 2000
     Requires:
       SpCost:
@@ -18788,7 +18856,7 @@ Body:
   - Id: 2222
     Name: WL_SUMMONFB
     Description: Summon Fire Ball
-    MaxLevel: 5
+    MaxLevel: 2
     Type: Magic
     TargetType: Self
     DamageFlags:
@@ -18801,17 +18869,7 @@ Body:
         Reproduce: true
     CastCancel: true
     CastTime: 2000
-    Duration1:
-      - Level: 1
-        Time: 120000
-      - Level: 2
-        Time: 160000
-      - Level: 3
-        Time: 200000
-      - Level: 4
-        Time: 240000
-      - Level: 5
-        Time: 280000
+    Duration1: 280000
     FixedCastTime: -1
     Requires:
       SpCost:
@@ -18828,7 +18886,7 @@ Body:
   - Id: 2223
     Name: WL_SUMMONBL
     Description: Summon Lightning Ball
-    MaxLevel: 5
+    MaxLevel: 2
     Type: Magic
     TargetType: Self
     DamageFlags:
@@ -18841,17 +18899,7 @@ Body:
         Reproduce: true
     CastCancel: true
     CastTime: 2000
-    Duration1:
-      - Level: 1
-        Time: 120000
-      - Level: 2
-        Time: 160000
-      - Level: 3
-        Time: 200000
-      - Level: 4
-        Time: 240000
-      - Level: 5
-        Time: 280000
+    Duration1: 280000
     FixedCastTime: -1
     Requires:
       SpCost:
@@ -18868,7 +18916,7 @@ Body:
   - Id: 2224
     Name: WL_SUMMONWB
     Description: Summon Water Ball
-    MaxLevel: 5
+    MaxLevel: 2
     Type: Magic
     TargetType: Self
     DamageFlags:
@@ -18881,17 +18929,7 @@ Body:
         Reproduce: true
     CastCancel: true
     CastTime: 2000
-    Duration1:
-      - Level: 1
-        Time: 120000
-      - Level: 2
-        Time: 160000
-      - Level: 3
-        Time: 200000
-      - Level: 4
-        Time: 240000
-      - Level: 5
-        Time: 280000
+    Duration1: 280000
     FixedCastTime: -1
     Requires:
       SpCost:
@@ -18972,7 +19010,7 @@ Body:
   - Id: 2229
     Name: WL_SUMMONSTONE
     Description: Summon Stone
-    MaxLevel: 5
+    MaxLevel: 2
     Type: Magic
     TargetType: Self
     DamageFlags:
@@ -18985,17 +19023,7 @@ Body:
         Reproduce: true
     CastCancel: true
     CastTime: 2000
-    Duration1:
-      - Level: 1
-        Time: 120000
-      - Level: 2
-        Time: 160000
-      - Level: 3
-        Time: 200000
-      - Level: 4
-        Time: 240000
-      - Level: 5
-        Time: 280000
+    Duration1: 280000
     FixedCastTime: -1
     Requires:
       SpCost:
@@ -19031,19 +19059,7 @@ Body:
     Name: WL_READING_SB
     Description: Reading Spellbook
     MaxLevel: 1
-    Type: Magic
-    TargetType: Self
-    DamageFlags:
-      NoDamage: true
-    Hit: Single
-    HitCount: 1
-    CastCancel: true
-    CastTime: 5000
-    AfterCastActDelay: 500
     Duration1: 30000
-    FixedCastTime: 1000
-    Requires:
-      SpCost: 40
   - Id: 2232
     Name: WL_FREEZE_SP
     Description: Freeze Spell
@@ -19601,25 +19617,25 @@ Body:
     Element: Holy
     SplashArea:
       - Level: 1
-        Area: 1
+        Area: 3
       - Level: 2
-        Area: 1
+        Area: 3
       - Level: 3
-        Area: 1
+        Area: 3
       - Level: 4
-        Area: 1
+        Area: 3
       - Level: 5
-        Area: 1
+        Area: 3
       - Level: 6
-        Area: 1
+        Area: 3
       - Level: 7
-        Area: 2
+        Area: 5
       - Level: 8
-        Area: 2
+        Area: 5
       - Level: 9
-        Area: 2
+        Area: 5
       - Level: 10
-        Area: 2
+        Area: 5
     CopyFlags:
       Skill:
         Reproduce: true
@@ -24328,6 +24344,16 @@ Body:
           Amount: 1
         - Level: 5
           Amount: 1
+        - Level: 6
+          Amount: 0
+        - Level: 7
+          Amount: 0
+        - Level: 8
+          Amount: 0
+        - Level: 9
+          Amount: 0
+        - Level: 10
+          Amount: 0
   - Id: 2337
     Name: SR_WINDMILL
     Description: Windmill
@@ -28776,7 +28802,7 @@ Body:
         Revolver: true
       Ammo:
         Bullet: true
-      AmmoAmount: 10
+      AmmoAmount: 3
   - Id: 2562
     Name: RL_H_MINE
     Description: Howling Mine
@@ -33447,6 +33473,14 @@ Body:
     Name: NV_TRANSCENDENCE
     Description: Transcendence
     MaxLevel: 5
+  - Id: 5078
+    Name: WL_READING_SB_READING
+    Description: Reading Spellbook
+    MaxLevel: 10
+    TargetType: Self
+    CastTime: 5000
+    AfterCastActDelay: 500
+    FixedCastTime: 1000
   - Id: 8001
     Name: HLIF_HEAL
     Description: Healing Touch

+ 12 - 12
db/re/skill_tree.txt

@@ -2492,10 +2492,10 @@
 4055,2214,5,2223,1,0,0,0,0,0,0,0,0 //WL_CHAINLIGHTNING#Chain Lightning#
 4055,2216,5,2207,2,0,0,0,0,0,0,0,0 //WL_EARTHSTRAIN#Earth Strain#
 4055,2217,10,2204,5,2212,5,2214,5,2216,5,0,0 //WL_TETRAVORTEX#Tetra Vortex#
-4055,2222,5,83,1,0,0,0,0,0,0,0,0 //WL_SUMMONFB#Summon Fire Ball#
-4055,2223,5,85,1,0,0,0,0,0,0,0,0 //WL_SUMMONBL#Summon Lightning Ball#
-4055,2224,5,89,1,0,0,0,0,0,0,0,0 //WL_SUMMONWB#Summon Water Ball#
-4055,2229,5,91,1,0,0,0,0,0,0,0,0 //WL_SUMMONSTONE#Summon Stone#
+4055,2222,2,83,1,0,0,0,0,0,0,0,0 //WL_SUMMONFB#Summon Fire Ball#
+4055,2223,2,85,1,0,0,0,0,0,0,0,0 //WL_SUMMONBL#Summon Lightning Ball#
+4055,2224,2,89,1,0,0,0,0,0,0,0,0 //WL_SUMMONWB#Summon Water Ball#
+4055,2229,2,91,1,0,0,0,0,0,0,0,0 //WL_SUMMONSTONE#Summon Stone#
 4055,2230,2,0,0,0,0,0,0,0,0,0,0 //WL_RELEASE#Release#
 4055,2231,1,0,0,0,0,0,0,0,0,0,0 //WL_READING_SB#Reading Spellbook#
 4055,2232,10,0,0,0,0,0,0,0,0,0,0 //WL_FREEZE_SP#Freeze Spell#
@@ -2833,10 +2833,10 @@
 4061,2214,5,2223,1,0,0,0,0,0,0,0,0 //WL_CHAINLIGHTNING#Chain Lightning#
 4061,2216,5,2207,2,0,0,0,0,0,0,0,0 //WL_EARTHSTRAIN#Earth Strain#
 4061,2217,10,2204,5,2212,5,2214,5,2216,5,0,0 //WL_TETRAVORTEX#Tetra Vortex#
-4061,2222,5,83,1,0,0,0,0,0,0,0,0 //WL_SUMMONFB#Summon Fire Ball#
-4061,2223,5,85,1,0,0,0,0,0,0,0,0 //WL_SUMMONBL#Summon Lightning Ball#
-4061,2224,5,89,1,0,0,0,0,0,0,0,0 //WL_SUMMONWB#Summon Water Ball#
-4061,2229,5,91,1,0,0,0,0,0,0,0,0 //WL_SUMMONSTONE#Summon Stone#
+4061,2222,2,83,1,0,0,0,0,0,0,0,0 //WL_SUMMONFB#Summon Fire Ball#
+4061,2223,2,85,1,0,0,0,0,0,0,0,0 //WL_SUMMONBL#Summon Lightning Ball#
+4061,2224,2,89,1,0,0,0,0,0,0,0,0 //WL_SUMMONWB#Summon Water Ball#
+4061,2229,2,91,1,0,0,0,0,0,0,0,0 //WL_SUMMONSTONE#Summon Stone#
 4061,2230,2,0,0,0,0,0,0,0,0,0,0 //WL_RELEASE#Release#
 4061,2231,1,0,0,0,0,0,0,0,0,0,0 //WL_READING_SB#Reading Spellbook#
 4061,2232,10,0,0,0,0,0,0,0,0,0,0 //WL_FREEZE_SP#Freeze Spell#
@@ -4500,10 +4500,10 @@
 4097,2214,5,2223,1,0,0,0,0,0,0,0,0 //WL_CHAINLIGHTNING#Chain Lightning#
 4097,2216,5,2207,2,0,0,0,0,0,0,0,0 //WL_EARTHSTRAIN#Earth Strain#
 4097,2217,10,2204,5,2212,5,2214,5,2216,5,0,0 //WL_TETRAVORTEX#Tetra Vortex#
-4097,2222,5,83,1,0,0,0,0,0,0,0,0 //WL_SUMMONFB#Summon Fire Ball#
-4097,2223,5,85,1,0,0,0,0,0,0,0,0 //WL_SUMMONBL#Summon Lightning Ball#
-4097,2224,5,89,1,0,0,0,0,0,0,0,0 //WL_SUMMONWB#Summon Water Ball#
-4097,2229,5,91,1,0,0,0,0,0,0,0,0 //WL_SUMMONSTONE#Summon Stone#
+4097,2222,2,83,1,0,0,0,0,0,0,0,0 //WL_SUMMONFB#Summon Fire Ball#
+4097,2223,2,85,1,0,0,0,0,0,0,0,0 //WL_SUMMONBL#Summon Lightning Ball#
+4097,2224,2,89,1,0,0,0,0,0,0,0,0 //WL_SUMMONWB#Summon Water Ball#
+4097,2229,2,91,1,0,0,0,0,0,0,0,0 //WL_SUMMONSTONE#Summon Stone#
 4097,2230,2,0,0,0,0,0,0,0,0,0,0 //WL_RELEASE#Release#
 4097,2231,1,0,0,0,0,0,0,0,0,0,0 //WL_READING_SB#Reading Spellbook#
 4097,2232,10,0,0,0,0,0,0,0,0,0,0 //WL_FREEZE_SP#Freeze Spell#

+ 12 - 33
db/re/spellbook_db.yml

@@ -32,54 +32,33 @@ Header:
   Version: 1
 
 Body:
-  - Skill: MG_COLDBOLT
-    Book: Magic_Book_CB
-    PreservePoints: 7
-  - Skill: MG_FIREBOLT
-    Book: Magic_Book_FB
-    PreservePoints: 7
-  - Skill: MG_LIGHTNINGBOLT
-    Book: Magic_Book_LB
-    PreservePoints: 7
-  - Skill: MG_THUNDERSTORM
-    Book: Magic_Book_TS
-    PreservePoints: 9
   - Skill: WZ_METEOR
-    Book: Magic_Book_MS
+    Book: WL_MB_MS
     PreservePoints: 10
-  - Skill: WZ_JUPITEL
-    Book: Magic_Book_JT
-    PreservePoints: 9
   - Skill: WZ_VERMILION
-    Book: Magic_Book_LOV
+    Book: WL_MB_LOV
     PreservePoints: 10
-  - Skill: WZ_WATERBALL
-    Book: Magic_Book_WB
-    PreservePoints: 9
   - Skill: WZ_STORMGUST
-    Book: Magic_Book_SG
+    Book: WL_MB_SG
+    PreservePoints: 10
+  - Skill: WL_JACKFROST
+    Book: WL_MB_JF
     PreservePoints: 10
-  - Skill: WZ_EARTHSPIKE
-    Book: Magic_Book_ES
-    PreservePoints: 8
-  - Skill: WZ_HEAVENDRIVE
-    Book: Magic_Book_HD
-    PreservePoints: 9
   - Skill: WL_DRAINLIFE
-    Book: Magic_Book_DL
+    Book: WL_MB_DL
     PreservePoints: 8
   - Skill: WL_CRIMSONROCK
-    Book: Magic_Book_CR
+    Book: WL_MB_CR
     PreservePoints: 12
   - Skill: WL_COMET
-    Book: Magic_Book_CM
+    Book: WL_MB_CM
     PreservePoints: 22
   - Skill: WL_CHAINLIGHTNING
-    Book: Magic_Book_CL
+    Book: WL_MB_CL
     PreservePoints: 12
   - Skill: WL_EARTHSTRAIN
-    Book: Magic_Book_ES_
+    Book: WL_MB_ES
     PreservePoints: 12
   - Skill: WL_TETRAVORTEX
-    Book: Magic_Book_TV
+    Book: WL_MB_TV
     PreservePoints: 22

+ 9 - 1
doc/atcommands.txt

@@ -920,6 +920,14 @@ Resets stats (@streset), skills (@skreset), or both (@reset).
 @feelreset
 
 Resets a Star Gladiator's marked maps.
+Only works on Star Gladiator and Star Emperor classes.
+
+---------------------------------------
+
+@hatereset
+
+Resets a Star Gladiator's marked monsters.
+Only works on Star Gladiator and Star Emperor classes.
 
 ---------------------------------------
 
@@ -1374,7 +1382,7 @@ Affected files:
 -- atcommand: atcommand_athena.conf, groups.conf
 -- battleconf: battle_athena.conf, battle_conf.txt
 -- instancedb: instance_db.txt
--- itemdb: item_db.txt, item_group_db.txt, item_trade.txt, item_noequip.txt, item_nouse.txt, item_combo_db.txt, item_avail.txt, item_stack.txt, item_delay.txt, item_buyingstore.txt, item_flag.txt
+-- itemdb: item_db.txt, item_group_db.txt, item_trade.txt, item_noequip.txt, item_nouse.txt, item_combo_db.txt, item_avail.txt, item_stack.txt, item_delay.txt, item_buyingstore.txt, item_flag.txt, item_randomopt_db.txt, item_randomopt_group.txt
 -- mobdb: mob_db.txt, mob_item_ratio.txt, mob_chat_db.txt, mob_avail.txt, mob_race2_db.txt, mob_branch.txt, mob_poring.txt, mob_boss.txt, mob_pouch.txt, mob_classchange.txt, pet_db.yml, homunculus_db.txt, homun_skill_tree.txt, exp_homun.txt, mercenary_db.txt, mercenary_skill_db.txt, elemental_db.txt, elemental_skill_db.txt
 -- motd: motd.txt
 -- msgconf: atcommand_athena.conf

+ 6 - 2
doc/item_bonus.txt

@@ -22,7 +22,7 @@ This list contains all available constants referenced in the 'bonus' commands.
 
 * Race (r)
 	RC_Angel, RC_Brute, RC_DemiHuman, RC_Demon, RC_Dragon, RC_Fish, RC_Formless,
-	RC_Insect, RC_Plant, RC_Player, RC_Undead, RC_All
+	RC_Insect, RC_Plant, RC_Player_Human (RC_Player deprecated), RC_Player_Doram, RC_Undead, RC_All
 
 * Monster Race (mr)
 	RC2_Goblin, RC2_Kobold, RC2_Orc, RC2_Golem, RC2_Guardian, RC2_Ninja,
@@ -171,6 +171,7 @@ bonus2 bSkillAtk,sk,n;    		Increases damage of skill sk by n%
 bonus bShortAtkRate,n;			Increases damage of short ranged attacks by n%
 bonus bLongAtkRate,n;     		Increases damage of long ranged attacks by n%
 bonus bCritAtkRate,n;     		Increases critical damage by +n%
+bonus bCritDefRate,n;			Decreases critical damage received by n%
 bonus bCriticalDef,n;     		Decreases the chance of being hit by critical hits by n%
 bonus2 bWeaponAtk,w,n;    		Adds n ATK when weapon of type w is equipped
 bonus2 bWeaponDamageRate,w,n;	Adds n% damage to normal attacks when weapon of type w is equipped
@@ -227,11 +228,13 @@ bonus3 bAddEle,e,x,bf;    		+x% physical damage against element e with trigger c
 bonus2 bMagicAddEle,e,x;  		+x% magical damage against element e
 bonus2 bSubEle,e,x;       		+x% damage reduction against attack element e
 bonus3 bSubEle,e,x,bf;    		+x% damage reduction against attack element e with trigger criteria bf
-bonus2 bSubDefEle,e,x;    		+x% damage reduction from enemy with defense element e
+bonus2 bSubDefEle,e,x;    		+x% physical damage reduction from enemy with defense element e
+bonus2 bMagicSubDefEle,e,x;		+x% magic damage reduction from enemy with defense element e
 
 bonus2 bAddRace,r,x;      		+x% physical damage against race r
 bonus2 bMagicAddRace,r,x; 		+x% magical damage against race r
 bonus2 bSubRace,r,x;      		+x% damage reduction against race r
+bonus3 bSubRace,r,x,bf;    		+x% damage reduction against race r with trigger criteria bf 
 
 bonus2 bAddClass,c,x;     		+x% physical damage against class c
 bonus2 bMagicAddClass,c,x;		+x% magical damage against class c
@@ -240,6 +243,7 @@ bonus2 bSubClass,c,x;     		+x% damage reduction against class c
 bonus2 bAddSize,s,x;      		+x% physical damage against size s
 bonus2 bMagicAddSize,s,x; 		+x% magical damage against size s
 bonus2 bSubSize,s,x;      		+x% damage reduction against size s
+bonus2 bMagicSubSize,s,x;      	+x% magic damage reduction against size s
 bonus bNoSizeFix;       		Ignores the size modifier when calculating damage
 
 bonus2 bAddDamageClass,mid,x;     	+x% physical damage against monster mid

+ 52 - 17
doc/script_commands.txt

@@ -1641,7 +1641,7 @@ S_CheckFull:
 
 Example 2: callsub used repeatedly, with different arguments
 // notice how the Zeny check/delete is reused, instead of copy-pasting for every warp
-	switch(select("Abyss Lake:Amatsu Dungeon:Anthell:Ayothaya Dungeon:Beacon Island, Pharos") {
+	switch(select("Abyss Lake:Amatsu Dungeon:Anthell:Ayothaya Dungeon:Beacon Island, Pharos")) {
 		case 1:	callsub S_DunWarp,"hu_fild05",192,207;
 		case 2:	callsub S_DunWarp,"ama_in02",119,181;
 		case 3:	callsub S_DunWarp,"moc_fild20",164,145;
@@ -2861,8 +2861,7 @@ number.
 This is the only function around where a parameter may be either a string or a
 number! If it's a number, it means that only the items with that item ID number
 will be counted. If it is a string, it is assumed to mean the 'english name'
-field from the item database. If you give it an empty string, or something that
-isn't found from the item database, it will count items number '512' (apples).
+field from the item database.
 
 ---------------------------------------
 
@@ -5060,18 +5059,19 @@ See 'getitem2' for an explanation of the expanded parameters.
 
 *countbound({<bound type>{,<char_id>}})
 
-This function will return the number of bounded items in the character's
-inventory, and sets an array @bound_items[] containing all item IDs of the
-counted items. If a bound type is specified, only those items will be counted.
+This function will return the number of different bounded items in the character's
+inventory, and sets the arrays @bound_items[] and @bound_amount[] containing all item IDs of the
+counted items and their respective amount. If a bound type is specified, only those items will be counted.
 
 For a list of bound types see 'getitembound'.
 
 Example:
-	mes "You currently have " + countbound() + " bounded items.";
+	.@total_type = countbound();
+	mes "You currently have " + .@total_type + " different type of bounded items.";
 	next;
 	mes "The list of bounded items include:";
-	for(.@i = 0; .@i < getarraysize(@bound_items); .@i++)
-		mes getitemname(@bound_items[.@i]);
+	for(.@i = 0; .@i < .@total_type; .@i++)
+		mes "x" + @bound_amount[.@i] + " " + getitemname(@bound_items[.@i]);
 	close;
 
 ---------------------------------------
@@ -5676,6 +5676,20 @@ Used in reset NPC's (duh!)
 
 ---------------------------------------
 
+*resetfeel({<char_id>});
+
+This command will reset the Star Gladiator's designated maps on the invoking character.
+Only works on Star Gladiator and Star Emperor classes.
+
+---------------------------------------
+
+*resethate({<char_id>});
+
+This command will reset the Star Gladiator's designated monsters on the invoking character.
+Only works on Star Gladiator and Star Emperor classes.
+
+---------------------------------------
+
 *sc_start <effect type>,<ticks>,<value 1>{,<rate>,<flag>{,<GID>}};
 *sc_start2 <effect type>,<ticks>,<value 1>,<value 2>{,<rate>,<flag>{,<GID>}};
 *sc_start4 <effect type>,<ticks>,<value 1>,<value 2>,<value 3>,<value 4>{,<rate>,<flag>{,<GID>}};
@@ -5807,9 +5821,9 @@ Increase AGI Lv 5, and display appropriate effects.
 *npcskilleffect <skill id>,<number>,<x>,<y>;
 *npcskilleffect "<skill name>",<number>,<x>,<y>;
 
-This command behaves identically to 'skilleffect', however, the effect will not
-be centered on the invoking character's sprite, nor on the NPC sprite, if any,
-but will be centered at map coordinates given on the same map as the invoking
+This command behaves identically to 'skilleffect', however, ground type skill
+effects will be centered at the map coordinates given on the same map as the
+attached character and all other skill types will be centered on the attached
 character.
 
 ---------------------------------------
@@ -6863,9 +6877,6 @@ given amount of seconds passes, the script resumes. The color format
 is in RGB (RRGGBB). The color is currently ignored by the client and
 appears always green.
 
-Note: If a player is attached to the NPC, they are detached from the NPC
-as soon as the progress bar activates.
-
 ---------------------------------------
 //
 5,1.- End of time-related commands
@@ -7977,6 +7988,20 @@ Returns "Unknown" if unit is not found.
 
 ---------------------------------------
 
+*setunittitle <GID>,<title>;
+
+Apply a <title> to the given <GID>.
+
+Note: This only works on non-player types. It also will only work on mobs if battle_config.show_mob_info is not enabled.
+
+---------------------------------------
+
+*getunittitle <GID>;
+
+Returns the title of the given <GID>.
+
+---------------------------------------
+
 *getunitdata <GID>,<arrayname>;
 *setunitdata <GID>,<parameter>,<new value>;
 
@@ -8043,6 +8068,7 @@ Parameters (indexes) for monsters are:
 	UMOB_TARGETID
 	UMOB_ROBE
 	UMOB_BODY2
+	UMOB_GROUP_ID
 
 -----
 
@@ -8087,6 +8113,7 @@ Parameter (indexes) for homunculi are:
 	UHOM_ADELAY
 	UHOM_DMOTION
 	UHOM_TARGETID
+	UHOM_GROUP_ID
 
 -----
 
@@ -8128,6 +8155,7 @@ Parameter (indexes) for pets are:
 	UPET_AMOTION
 	UPET_ADELAY
 	UPET_DMOTION
+	UPET_GROUP_ID
 
 -----
 
@@ -8169,6 +8197,7 @@ Parameter (indexes) for mercenaries are:
 	UMER_ADELAY
 	UMER_DMOTION
 	UMER_TARGETID
+	UMER_GROUP_ID
 
 -----
 
@@ -8212,6 +8241,7 @@ Parameter (indexes) for elementals are:
 	UELE_ADELAY
 	UELE_DMOTION
 	UELE_TARGETID
+	UELE_GROUP_ID
 
 -----
 
@@ -8261,6 +8291,7 @@ Parameter (indexes) for NPCs are:
 	UNPC_ROBE
 	UNPC_BODY2
 	UNPC_DEADSIT
+	UNPC_GROUP_ID
 
 *Notes:
 		- *_SIZE: small (0); medium (1); large (2)
@@ -8530,6 +8561,8 @@ Valid types are:
 		if = 10000, then this item is sold in NPC shops only
 	4 - sex; 5 - equip; 6 - weight; 7 - atk; 8 - def; 9 - range;
 	10 - slot; 11 - look; 12 - elv; 13 - wlv; 14 - view id
+	15 - eLVMax
+	16 - matk if RENEWAL is defined
 
 Example:
 	setiteminfo 7049,6,9990; // Stone now weighs 999.0
@@ -9359,6 +9392,7 @@ QMARK_PURPLE - Purple Marker
 Adds the first waiting player from the chat room of the given NPC to an existing battleground group.
 The player will also be warped to the default spawn point of the battle group or to the specified coordinates
 <x> and <y> on the given <map>.
+Note: The map need the mapflag MF_BATTLEGROUND otherwise the player is removed from the Battleground team.
 
 ---------------------------------------
 
@@ -9404,6 +9438,7 @@ Returns battle group ID on success. Returns 0 on failure.
 
 Adds an attached player or <char id> if specified to an existing battleground group. The player will also be warped
 to the default spawn point of the battle group or to the specified coordinates <x> and <y> on the given <map>.
+Note: The map need the mapflag MF_BATTLEGROUND otherwise the player is removed from the Battleground team.
 
 Returns true on success. Returns false on failure.
 
@@ -9533,8 +9568,8 @@ Example:
 Retrieves data related to given Battle Group. Type can be one of the following:
 
 	0 - Amount of players currently belonging to the group.
-	1 - Store GID of players in <Battle Group> in a temporary global array $@arenamembers
-		and returns amount of players currently belonging to the group.
+	1 - Store GID of players in <Battle Group> in a temporary global array $@arenamembers,
+		stores and also returns the amount of players currently belonging to the group in $@arenamemberscount.
 
 ---------------------------------------
 

+ 12 - 2
doc/yaml/db/quest_db.yml

@@ -13,8 +13,18 @@
 #                   Specify without "+" for the exact time the quest expires using "d" (optionnal), [0-23]"h" (required), [0-59]"mn" (optionnal), [0-59]"s" (optionnal) format.
 #                   Please note the number before "d" only shift the exact timer to the given day(s).
 #   Targets:        Quest objective target. (Default: null)
-#     - Mob         Monster to kill.
-#       Count       Amount of monsters to kill.
+#                   The target can be a couple of node Mob/Count or of Id/Race/Size/Element/MinLevel/MaxLevel.
+#                   If Mob is supplied, Count is required and the other fields are ignored.
+#                   If Id is supplied, at least one other field of Race/Size/Element/MinLevel/MaxLevel is required.
+#                   If Id is supplied, Count is required for each new entry.
+#     - Mob         Monster to kill (aegis monster name).
+#       Count       Amount of monsters to kill. Set to 0 to skip the target on import.
+#       Id          Unique target index for the quest Id. Requires a positive number.
+#       Race        Monster race target (default All). Valids race are Angel, Brute, DemiHuman, Demon, Dragon, Fish, Formless, Insect, Plant, Undead, All.
+#       Size        Monster size target (default All). Valids size are Small, Medium, Large, All.
+#       Element     Monster element target (default All). Valids elements are Dark, Earth, Fire, Ghost, Holy, Neutral, Poison, Undead, Water, Wind, All.
+#       MinLevel    Minimum monster level target. If not supplied but MaxLevel defined, MinLevel is 1. Set to 0 to ignore MinLevel on import. (Default: 0)
+#       MaxLevel    Maximum monster level target. Set to 0 to ignore MaxLevel on import. (Default: 0)
 #   Drops:          Quest item drop targets. (Default: null)
 #     - Mob         Monster to kill. 0 will apply to all monsters. (Default: 0)
 #       Item        Item to drop.

+ 4 - 2
npc/battleground/kvm/kvm01.txt

@@ -333,6 +333,9 @@ OnTimer55000:
 
 OnTimer60000:
 	stopnpctimer;
+	if (getbattleflag("feature.bgqueue"))
+		bg_reserve "bat_c01", true;
+	mapwarp "bat_c01","bat_room",154,150;
 	set getvariableofnpc(.Croix_Count,"KvM01_BG"), 0;
 	set getvariableofnpc(.Guillaume_Count,"KvM01_BG"), 0;
 	set $@KvM01BG_Victory, 0;
@@ -342,9 +345,8 @@ OnTimer60000:
 		bg_unbook "bat_c01";
 	disablenpc "KVM Officer#KVM01A";
 	disablenpc "KVM Officer#KVM01B";
-	mapwarp "bat_c01","bat_room",154,150;
-	maprespawnguildid "bat_c01",0,3; // Just in case someone else
 	set $@KvM01BG, 0;
+	end;
 
 OnGuillaumeJoin:
 OnCroixJoin:

+ 4 - 2
npc/battleground/kvm/kvm02.txt

@@ -333,6 +333,9 @@ OnTimer55000:
 
 OnTimer60000:
 	stopnpctimer;
+	if (getbattleflag("feature.bgqueue"))
+		bg_reserve "bat_c02", true;
+	mapwarp "bat_c02","bat_room",154,150;
 	set getvariableofnpc(.Croix_Count,"KvM02_BG"), 0;
 	set getvariableofnpc(.Guillaume_Count,"KvM02_BG"), 0;
 	set $@KvM02BG_Victory, 0;
@@ -342,9 +345,8 @@ OnTimer60000:
 		bg_unbook "bat_c02";
 	disablenpc "KVM Officer#KVM02A";
 	disablenpc "KVM Officer#KVM02B";
-	mapwarp "bat_c02","bat_room",154,150;
-	maprespawnguildid "bat_c02",0,3; // Just in case someone else
 	set $@KvM02BG, 0;
+	end;
 
 OnGuillaumeJoin:
 OnCroixJoin:

+ 4 - 2
npc/battleground/kvm/kvm03.txt

@@ -333,6 +333,9 @@ OnTimer55000:
 
 OnTimer60000:
 	stopnpctimer;
+	if (getbattleflag("feature.bgqueue"))
+		bg_reserve "bat_c03", true;
+	mapwarp "bat_c03","bat_room",154,150;
 	set getvariableofnpc(.Croix_Count,"KvM03_BG"), 0;
 	set getvariableofnpc(.Guillaume_Count,"KvM03_BG"), 0;
 	set $@KvM03BG_Victory, 0;
@@ -342,9 +345,8 @@ OnTimer60000:
 		bg_unbook "bat_c03";
 	disablenpc "KVM Officer#KVM03A";
 	disablenpc "KVM Officer#KVM03B";
-	mapwarp "bat_c03","bat_room",154,150;
-	maprespawnguildid "bat_c03",0,3; // Just in case someone else
 	set $@KvM03BG, 0;
+	end;
 
 OnGuillaumeJoin:
 OnCroixJoin:

+ 22 - 18
npc/custom/official/GeffenMagicTournament.txt

@@ -1944,74 +1944,76 @@ OnStart:
 	switch ('GMT_1QUE) {
 		case 11:
 			hideonnpc instance_npcname("Arhi#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2549,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2549,1,.@label$);
 			break;
 		case 12:
 			hideonnpc instance_npcname("Dio Anemos#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2550,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2550,1,.@label$);
 			break;
 		case 13:
 			if ('GMTQuest == 1) {
 				hideonnpc instance_npcname("Geffen Gangster#n1");
-				'BossID = monster(.@map$,114,50,"--ja--",2553,1,.@label$);
+				monster(.@map$,114,50,"--ja--",2553,1,.@label$);
 			} else if ('GMTQuest == 2) {
 				hideonnpc instance_npcname("Geffen Bully#n1");
-				'BossID = monster(.@map$,114,50,"--ja--",2552,1,.@label$);
+				monster(.@map$,114,50,"--ja--",2552,1,.@label$);
 			} else {
 				hideonnpc instance_npcname("Geffen Shoplifter#n1");
-				'BossID = monster(.@map$,114,50,"--ja--",2551,1,.@label$);
+				monster(.@map$,114,50,"--ja--",2551,1,.@label$);
 			}
 			break;
 		case 14:
 			hideonnpc instance_npcname("Faymont#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2554,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2554,1,.@label$);
 			break;
 		case 15:
 			hideonnpc instance_npcname("Ordre#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2555,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2555,1,.@label$);
 			break;
 		case 16:
 			hideonnpc instance_npcname("Blut Hase#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2556,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2556,1,.@label$);
 			break;
 		case 17:
 			hideonnpc instance_npcname("Kuro Akuma#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2557,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2557,1,.@label$);
 			break;
 		case 18:
 			hideonnpc instance_npcname("Ifodes#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2558,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2558,1,.@label$);
 			break;
 		case 19:
 			hideonnpc instance_npcname("Licheniyes#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2559,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2559,1,.@label$);
 			break;
 		case 20:
 			hideonnpc instance_npcname("Odoric#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2560,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2560,1,.@label$);
 			break;
 		case 21:
 			hideonnpc instance_npcname("Ju#1");
-			'BossID = monster(.@map$,114,50,"--ja--",2561,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2561,1,.@label$);
 			break;
 		case 22:
 			if ('half) {
 				hideonnpc instance_npcname("Dwigh#1");
-				'BossID = monster(.@map$,114,50,"--ja--",2562,1,.@label$);
+				monster(.@map$,114,50,"--ja--",2562,1,.@label$);
 			}
 			else {
 				hideonnpc instance_npcname("Fay Kanavian#1");
-				'BossID = monster(.@map$,114,50,"--ja--",2563,1,.@label$);
+				monster(.@map$,114,50,"--ja--",2563,1,.@label$);
 				donpcevent instance_npcname("#GMTHomun")+"::OnSummon";
 			}
 			
 			break;
 		case 23:
 			hideonnpc instance_npcname("Fenrir#f");
-			'BossID = monster(.@map$,114,50,"--ja--",2564,1,.@label$);
+			monster(.@map$,114,50,"--ja--",2564,1,.@label$);
+			'BossID = $@mobid[0];
 			donpcevent instance_npcname("Geffen Academy Master")+"::OnTalk3";
 			end;
 	}
+	'BossID = $@mobid[0];
 		
 	donpcevent instance_npcname("Geffen Academy Master")+"::OnTalk1";
 	end;
@@ -2089,7 +2091,8 @@ OnTimeout2:
 	mapannounce instance_mapname("1@ge_st"), "<Magic Tournament Broadcast>: Time's up! The judges will decide the victor for this round!",bc_blue;	
 	
 	setcell instance_mapname("1@ge_st"), 50, 50, 50, 50, cell_walkable, 1;
-	unitwarp 'BossID, instance_mapname("1@ge_st"), 50, 50;
+	if (unitexists('BossID))
+		unitwarp 'BossID, instance_mapname("1@ge_st"), 50, 50;
 	killmonster instance_mapname("1@ge_st"), instance_npcname("#GMTcontroller")+"::OnTimeout";
 	'BossID = 0;
 	
@@ -2231,7 +2234,8 @@ end;
 
 OnSummon:
 	initnpctimer;
-	'HomID = monster (instance_mapname("1@ge_st"), 114,50,"--ja--",2565,1, instance_npcname("#GMTHomun")+"::OnHomDead");
+	monster (instance_mapname("1@ge_st"), 114,50,"--ja--",2565,1, instance_npcname("#GMTHomun")+"::OnHomDead");
+	'HomID = $@mobid[0];
 	end;
 
 OnTimer10000:

+ 19 - 13
npc/custom/woe_controller.txt

@@ -62,13 +62,16 @@ OnInit:
 //  [2] Mail all rewards.
 //      - If not set, players receive items in their inventory.
 //      - Only ONE item can be sent via mail for PACKETVER < 20150513 while later clients are limited to MAIL_MAX_ITEM (5).
-//      - Note that offline players do NOT receive rewards.
+//      - If this setting is not set, offline players do NOT receive rewards in any case.
 //  [4] Only reward Guild Masters.
 //      - If not set, all guild members are rewarded.
 //      - If mailing is enabled (option 2), offline Guild Masters WILL receive rewards.
 //  [8] Duplicate IP check.
 //      - Members in a guild with the same IP address are not rewarded.
 //      - If Guild Masters is enabled (option 4), this feature is not used.
+//  [16] Mail online player only.
+//      - Only available when mailing is enabled (option 2).
+//      - When enabled, offline players do NOT receive rewards.
 // -----------------------------------------------------------
 
 	// Combine values as needed (e.g. 1|8 = 1+8 = 9).
@@ -313,23 +316,26 @@ OnReward:
 				.@size_guild = .@k;
 			}
 			for(set .@j,0; .@j<.@size_guild; set .@j,.@j+1) {
+				.@online = isloggedin(.@aid[.@j],.@cid[.@j]);
 				if (.Options&2) {
-					.@charid = .@cid[.@j];
-					.@sender$ = "no-reply";
-					.@title$ = "** Siege Reward: "+getcastlename(.Castles$[.@i])+" **";
-					.@body$ = "Brave one,\r\n \r\n Congratulations!\r\n Your guild has successfully occupied\r\n territory in the War of Emperium on\r\n "+.@str$+".\r\n \r\n \r\n \r\n \r\n [ Your reward is attached. ]";
+					if (.@online || !(.Options&16)) {
+						.@charid = .@cid[.@j];
+						.@sender$ = "no-reply";
+						.@title$ = "** Siege Reward: "+getcastlename(.Castles$[.@i])+" **";
+						.@body$ = "Brave one,\r\n \r\n Congratulations!\r\n Your guild has successfully occupied\r\n territory in the War of Emperium on\r\n "+.@str$+".\r\n \r\n \r\n \r\n \r\n [ Your reward is attached. ]";
 
-					if (.reward_id_size)
-						mail .@charid, .@sender$, .@title$, .@body$, .reward_zeny, .reward_id, .reward_amount;
-					else
-						mail .@charid, .@sender$, .@title$, .@body$, .reward_zeny;
+						if (.reward_id_size)
+							mail .@charid, .@sender$, .@title$, .@body$, .reward_zeny, .reward_id, .reward_amount;
+						else
+							mail .@charid, .@sender$, .@title$, .@body$, .reward_zeny;
 
-					if (PACKETVER < 20150513 && !getd(".@str_"+.@cid[.@j]) && isloggedin(.@aid[.@j],.@cid[.@j])) {
-						setd ".@str_"+.@cid[.@j],1;
-						message rid2name(.@aid[.@j]),"You've got mail!";
+						if (PACKETVER < 20150513 && !getd(".@str_"+.@cid[.@j]) && .@online) {
+							setd ".@str_"+.@cid[.@j],1;
+							message rid2name(.@aid[.@j]),"You've got mail!";
+						}
 					}
 				}
-				else if (isloggedin(.@aid[.@j],.@cid[.@j])) {
+				else if (.@online) {
 					attachrid( .@aid[.@j], true );
 					.@name$ = strcharinfo( 0 );
 					.@castle_name$ = getcastlename(.Castles$[.@i]);

+ 3 - 1
npc/instances/SealedShrine.txt

@@ -225,7 +225,7 @@ monk_test,306,151,3	script	Grave of Baphomet#edq	111,{
 			close;
 		case IE_OK:
 			mapannounce "monk_test","[" + strcharinfo(0) + "] member of the [" + getpartyname(.@party_id) + "] party has entered the Sealed Shrine.",bc_map,"0x00ff99";
-			setquest 3040;
+			if (checkre(RENEWAL)) setquest 3040;
 			//warp "1@cata",100,224;
 			close;
 		}
@@ -766,6 +766,7 @@ OnInstanceInit: // Temporary fix for @reloadscript.
 		set 'ins_baphomet,5;
 		specialeffect EF_TELEPORTATION;
 		enablenpc instance_npcname("ins_bapho_to_2f");
+		donpcevent instance_npcname("ins_baphomet_1f_timer")+"::OnDisable";
 		mes "[Ancient Hero's Soul]";
 		mes "Now you can go to the main altar. It is located in the bottom right corner of this floor.";
 		next;
@@ -1147,6 +1148,7 @@ OnInstanceInit:
 2@cata,80,63,4	script	Ancient Hero's Soul#2F	411,{
 	cutin "ins_cata_champ_s",2;
 	if (checkquest(3041)>=0) erasequest 3041;
+	if (!checkre(RENEWAL)) setquest 3040;
 	mes "[Ancient Hero's Soul]";
 	mes "Good job, my descendants... You've finished the long-cherished task that me and my bretheren could not complete.";
 	next;

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

@@ -1102,7 +1102,8 @@ in_moc_16,21,165,2	script	Standby Room#ASNTEST	725,{
 	end;
 
 OnInit:
-	disablenpc "Standby Room#ASNTEST";
+	//disablenpc "Standby Room#ASNTEST";
+	hideonnpc "Standby Room#ASNTEST";
 	waitingroom "Standby Room",10,"Standby Room#ASNTEST::OnStartArena",1;
 	enablewaitingroomevent;
 	end;

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

@@ -1227,7 +1227,8 @@ job_knt,89,106,4	script	Windsor Benedict#knt	733,{
 	end;
 
 OnInit:
-	disablenpc "Windsor Benedict#knt";
+	//disablenpc  "Windsor Benedict#knt";
+	hideonnpc "Windsor Benedict#knt";
 	waitingroom "Waiting Room",20,"Windsor Benedict#knt::OnStartArena",1;
 	enablewaitingroomevent;
 	end;

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

@@ -946,7 +946,8 @@ job_prist,24,187,4	script	Peter S. Alberto	110,{
 			mes "Now...";
 			mes "Go for it!";
 			close2;
-			changequest 8011,8012;
+			if(checkquest(8012) == -1)
+				changequest 8011,8012;
 			warp "job_prist",24,44;
 			donpcevent "Zombie_Generator#prst::OnEnable";
 			donpcevent "Peter S. Alberto::OnDisable";

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

@@ -1228,7 +1228,8 @@ job_cru,24,187,2	script	Waiting Room#cr1	700,{
 	end;
 
 OnInit:
-	disablenpc "Waiting Room#cr1";
+	//disablenpc  "Waiting Room#cr1";
+	hideonnpc "Waiting Room#cr1";
 	waitingroom "Waiting Room",20,"Waiting Room#cr1::OnStartArena",1;
 	enablewaitingroomevent;
 	end;

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

@@ -2563,7 +2563,8 @@ job_sage,50,165,4	script	Waiting Room#sg	700,{
 	end;
 
 OnInit:
-	disablenpc "Waiting Room#sg";
+	//disablenpc  "Waiting Room#sg";
+	hideonnpc "Waiting Room#sg";
 	waitingroom "Waiting Room",20,"Waiting Room#sg::OnStartArena",1;
 	enablewaitingroomevent;
 	end;

+ 1 - 1
npc/other/monster_race.txt

@@ -1208,7 +1208,7 @@ hugel,62,69,1	script	Eckar Erenes#double	798,{
 			close;
 		}
 	}
-	if (!$@mon_time_2_2) {
+	if ($@mon_time_2_2 == 1) {
 		mes "[Eckar Erenes]";
 		mes "Right now, a Monster Race";
 		mes "is in progress. It's too late to place a wager, but if you'd like";

+ 2 - 2
npc/pre-re/jobs/1-1/merchant.txt

@@ -180,7 +180,7 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 		mes "But we all know that~";
 		close;
 	}
-	else if (job_merchant_q <= 6 && job_merchant_q != 0) {
+	else if (job_merchant_q2 && job_merchant_q > 0 && job_merchant_q < 7) {
 		mes "[Chief Mahnsoo]";
 		if (job_merchant_q2 == 1 || job_merchant_q2 == 2) {
 			mes "First, get the delivery package from the storehouse, and then take it to the former Swordman's Association in Prontera.";
@@ -266,7 +266,7 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 		mes "Take care!";
 		close;
 	}
-	else if (job_merchant_q == 0) {
+	else {
 		mes "[Chief Mahnsoo]";
 		mes "So, what brings you to";
 		mes "the Merchant Association?";

+ 1 - 0
npc/pre-re/scripts_warps.conf

@@ -3,6 +3,7 @@
 // --------------------------------------------------------------
 
 // --------------------------- Cities ---------------------------
+npc: npc/pre-re/warps/cities/einbroch.txt
 npc: npc/pre-re/warps/cities/izlude.txt
 npc: npc/pre-re/warps/cities/prontera.txt
 npc: npc/pre-re/warps/cities/rachel.txt

+ 13 - 0
npc/pre-re/warps/cities/einbroch.txt

@@ -0,0 +1,13 @@
+//===== rAthena Script ======================================= 
+//= Einbroch Warp Script
+//===== Description: =========================================
+//= Warp Points for Einbroch
+//===== Changelogs: ==========================================
+//= 1.0 Some warps have been changed in renewal ep16.2 [Capuche]
+//============================================================
+
+//=========================================================================
+//Einbroch - Hotel
+//=========================================================================
+ein_in01,274,246,0	warp	ein_h04	1,1,ein_in01,273,276
+ein_in01,273,273,0	warp	ein_h04a	1,1,ein_in01,274,243

+ 51 - 51
npc/quests/counteragent_mixture.txt

@@ -4,7 +4,7 @@
 //= kobra_k88
 //= added some dialogs for Morgenstein by Komurka
 //===== Current Version: ===================================== 
-//= 2.2b
+//= 2.2c
 //===== Compatible With: ===================================== 
 //= rAthena Project
 //===== Description: ========================================= 
@@ -14,6 +14,7 @@
 //= 2.2 Rescripted to Aegis 10.3 standards. [L0ne_W0lf]
 //= 2.2a A few minor fixes. (bugreport:1122) [L0ne_W0lf]
 //= 2.2b Follow up fixes to bugreport:1122 [L0ne_W0lf]
+//= 2.2c NPC name typo fix [Everade]
 //============================================================ 
 
 alberta_in,133,55,3	script	Louitz#cm	84,{
@@ -24,7 +25,7 @@ alberta_in,133,55,3	script	Louitz#cm	84,{
 		mes "that nutcase scientist";
 		mes "who lives over in Geffen?";
 		next;
-		if (select("Talk About Molgenstein:Cancel") == 1) {
+		if (select("Talk About Morgenstein:Cancel") == 1) {
 			mes "[Merchant Louitz]";
 			mes "You know where he lives";
 			mes "but didn't check it out? Hey,";
@@ -103,7 +104,7 @@ alberta_in,133,55,3	script	Louitz#cm	84,{
 			mes "I don't remember exactly";
 			mes "where he lives, but I know";
 			mes "he's in Geffen and that his";
-			mes "name is ^0000FFMolgenstein^000000.";
+			mes "name is ^0000FFMorgenstein^000000.";
 			next;
 			mes "[Merchant Louitz]";
 			mes "Hmm... You better";
@@ -111,7 +112,7 @@ alberta_in,133,55,3	script	Louitz#cm	84,{
 			mes "around first. I know for";
 			mes "ask around first. I know for";
 			mes "sure that somebody knows";
-			mes "where you can find Molgenstein.";
+			mes "where you can find Morgenstein.";
 			close;
 		case 3:
 			mes "[Merchant Louitz]";
@@ -173,7 +174,7 @@ alberta_in,133,55,3	script	Louitz#cm	84,{
 			mes "I don't remember exactly";
 			mes "where he lives, but I know";
 			mes "he's in Geffen and that his";
-			mes "name is ^0000FFMolgenstein^000000.";
+			mes "name is ^0000FFMorgenstein^000000.";
 			next;
 			mes "[Merchant Louitz]";
 			mes "Hmm... You better";
@@ -181,7 +182,7 @@ alberta_in,133,55,3	script	Louitz#cm	84,{
 			mes "around first. I know for";
 			mes "ask around first. I know for";
 			mes "sure that somebody knows";
-			mes "where you can find Molgenstein.";
+			mes "where you can find Morgenstein.";
 			close;
 		case 3:
 			mes "[Merchant Louitz]";
@@ -243,7 +244,7 @@ alberta_in,133,55,3	script	Louitz#cm	84,{
 			mes "I don't remember exactly";
 			mes "where he lives, but I know";
 			mes "he's in Geffen and that his";
-			mes "name is ^0000FFMolgenstein^000000.";
+			mes "name is ^0000FFMorgenstein^000000.";
 			next;
 			mes "[Merchant Louitz]";
 			mes "Hmm... You better";
@@ -251,7 +252,7 @@ alberta_in,133,55,3	script	Louitz#cm	84,{
 			mes "around first. I know for";
 			mes "ask around first. I know for";
 			mes "sure that somebody knows";
-			mes "where you can find Molgenstein.";
+			mes "where you can find Morgenstein.";
 			close;
 		case 3:
 			mes "[Merchant Louitz]";
@@ -313,10 +314,10 @@ geffen,181,114,3	script	Aure Dupon#cm	82,{
 		mes "Coincidence? It's more";
 		mes "than that. This is ^0000FFfate^000000.";
 		next;
-		if (select("Talk About Molgenstein:Cancel") == 1) {
+		if (select("Talk About Morgenstein:Cancel") == 1) {
 			mes "[Aure Dupon]";
 			mes "Have you not met";
-			mes "Molgenstein yet? He";
+			mes "Morgenstein yet? He";
 			mes "lives on the second floor";
 			mes "of the Forge. Although we've";
 			mes "just met, I must warn you not";
@@ -339,7 +340,7 @@ geffen,181,114,3	script	Aure Dupon#cm	82,{
 	mes "mote in the grand scheme.";
 	next;
 	if (molgenstain > 0) {
-		switch(select("Talk:Ask About Molgenstein:Cancel")) {
+		switch(select("Talk:Ask About Morgenstein:Cancel")) {
 		case 1:
 			mes "[Aure Dupon]";
 			mes "To have goals and focus";
@@ -352,7 +353,7 @@ geffen,181,114,3	script	Aure Dupon#cm	82,{
 		case 2:
 			set molgenstain,2;
 			mes "[Aure Dupon]";
-			mes "Molgenstein...?";
+			mes "Morgenstein...?";
 			mes "The man is obsessed";
 			mes "with conquering the forces";
 			mes "that control our world. But";
@@ -361,7 +362,7 @@ geffen,181,114,3	script	Aure Dupon#cm	82,{
 			next;
 			mes "[Aure Dupon]";
 			mes "It would be best if you";
-			mes "were to see Molgenstein";
+			mes "were to see Morgenstein";
 			mes "and judge his character for";
 			mes "yourself. You may find him in";
 			mes "the second floor of the Geffen";
@@ -394,7 +395,7 @@ geffen,181,114,3	script	Aure Dupon#cm	82,{
 	close;
 }
 
-geffen_in,141,140,3	script	Molgenstein#cm	121,{
+geffen_in,141,140,3	script	Morgenstein#cm	121,{
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
@@ -404,7 +405,7 @@ geffen_in,141,140,3	script	Molgenstein#cm	121,{
 		close;
 	}
 	if (MISC_QUEST & 4) {
-		mes "[Chemist Molgenstein]";
+		mes "[Chemist Morgenstein]";
 		mes ".....";
 		mes "Welcome.";
 		mes "Hehehehe....";
@@ -412,59 +413,59 @@ geffen_in,141,140,3	script	Molgenstein#cm	121,{
 		next;
 		switch(select("Ask about his research:Ask him to make a new solution.:Cancel")) {
 		case 1:
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "Heeheeheeheee...";
 			mes "You must have heard the rumors about my research. Yes! But since you probably know already, I'll tell you without hiding, I mean, there's nothing to hide.";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "Actually, you can say my research is complete! Nothing's impossible for my genius! Bwahaha, it's just a matter of time!";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "Are you still here? Right, you wanted to know about my research. It's actually very simple. I was just trying to invent a super liquid that can melt everything!";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "Isn't it interesting? No matter how strong you are, you can't break apart stone or steel, but with my new liquid, you can melt those things, making them soft like puddy!";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "It can't melt everything yet, but I did find that you could combine things that you could never mix before with my invention. Heeheeheehee~!";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "You can make a whole lot of things that you'd never would have imagined possible! I can make you a lot of new things you never would have imagined using this method... as long as you want it!!";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "The endorphins are rushing to my face at least 2.1 times faster than the usual rate! Ah! I'm so excited! I... I just can't hide it!";
 			close;
 		case 2:
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "So...";
 			mes "You want me to make something totally new, huh? Hehhehheh! I love your sense of scientific adventure!";
 			next;
 			switch(select("Counteragent:Mixture")) {
 			case 1:
-				mes "[Chemist Molgenstein]";
+				mes "[Chemist Morgenstein]";
 				mes "Ooh...!";
 				mes "You want to make a Counteragent? Hohohohoho, let's see what we'll need...";
 				next;
-				mes "[Chemist Molgenstein]";
+				mes "[Chemist Morgenstein]";
 				mes "Oh, I remember, yes, Alcohol, and um, er, Detrimindexta and an Empty Bottle to put it it all in. Just these three items and 3000 zeny.";
 				next;
-				mes "[Chemist Molgenstein]";
+				mes "[Chemist Morgenstein]";
 				mes "Bwahahahah!";
 				mes "Oh, I just can't wait to make this! Are you ready to begin?";
 				next;
 				if (select("Make:Cancel") == 1) {
 					if (countitem(970) == 0 || countitem(971) == 0 || countitem(713) == 0 || Zeny < 3000) {
-						mes "[Chemist Molgenstein]";
+						mes "[Chemist Morgenstein]";
 						mes "Heuheuheuheuh.... not enough... not enough.. Haah...Haah... Go..... get the rest of the materials!";
 						mes "We'll postpone the fun until then... Heuheuheuheuheuh.";
 						close;
 					}
-					mes "[Chemist Molgenstein]";
+					mes "[Chemist Morgenstein]";
 					mes "Ooooooooh...... heeheeheeheehee...... yes... like that...... yes... more... more........ heeheeheehee.";
 					mes ".... Aaah.... ahah... ha....ahahooooooooohoh!";
 					next;
 					if (countitem(970) < 1 || countitem(971) < 1 || countitem(713) < 1) {
-						mes "[Chemist Molgenstein]";
+						mes "[Chemist Morgenstein]";
 						mes "Hohohoho.... not enough... not enough... haah...haah... go..... go get the rest of the materials!!";
 						close;
 					}
@@ -473,42 +474,42 @@ geffen_in,141,140,3	script	Molgenstein#cm	121,{
 					delitem 713,1; //Empty_Bottle
 					set Zeny, Zeny-3000;
 					getitem 973,1; //Counteragent
-					mes "[Chemist Molgenstein]";
+					mes "[Chemist Morgenstein]";
 					mes "Hee hee hee...";
 					mes "Haaaaah......";
 					mes "Oh? We're done already?!";
 					close;
 				}
-				mes "[Chemist Molgenstein]";
+				mes "[Chemist Morgenstein]";
 				mes "Hee hee hee...!";
 				mes "Come back when";
 				mes "you're ready~";
 				close;
 			case 2:
-				mes "[Chemist Molgenstein]";
+				mes "[Chemist Morgenstein]";
 				mes "Ooh...!";
 				mes "You want to make a Mixture? Hohohohoho, let's see what we'll need...";
 				next;
-				mes "[Chemist Molgenstein]";
+				mes "[Chemist Morgenstein]";
 				mes "Ooh, I remember now, yes, Alcohol, and um, er, Karvodailnirol and an empty bottle to put all of it in. Just these three items and 4000 zeny.";
 				next;
-				mes "[Chemist Molgenstein]";
+				mes "[Chemist Morgenstein]";
 				mes "Bwahahahah!";
 				mes "Oh, I just can't wait to make this! Are you ready to begin?";
 				next;
 				if (select("Make:Cancel") == 1) {
 					if (countitem(970) == 0 || countitem(972) == 0 || countitem(713) == 0 || Zeny < 4000) {
-						mes "[Chemist Molgenstein]";
+						mes "[Chemist Morgenstein]";
 						mes "Hohohoho.... not enough... not enough... haah...haah... go..... go get the rest of the materials!!";
 						mes "We'll have to postpone the fun for later... Hehehehe";
 						close;
 					}
-					mes "[Chemist Molgenstein]";
+					mes "[Chemist Morgenstein]";
 					mes "Ooooooooh... heehee...... yes... like that...... yes... more... more........ heeheeheehee";
 					mes ".... Aaah.... ahah... ha....ahah...oooooooooooooooooh!!!...!!!!!!";
 					next;
 					if (countitem(970) < 1 || countitem(972) < 1 || countitem(713) < 1) {
-						mes "[Chemist Molgenstein]";
+						mes "[Chemist Morgenstein]";
 						mes "Hohohoho.... not enough... not enough... haah...haah... go..... go get the rest of the materials!!";
 						close;
 					}
@@ -517,14 +518,13 @@ geffen_in,141,140,3	script	Molgenstein#cm	121,{
 					delitem 713,1; //Empty_Bottle
 					set Zeny, Zeny-4000;
 					getitem 974,1; //Mixture
-					mes "[Chemist Molgenstein]";
+					mes "[Chemist Morgenstein]";
 					mes "Hee hee hee...";
 					mes "Haaaaah......";
 					mes "Oh? We're done already?!";
 					close;
 				}
-				mes "[Chemist Molgenstein]";
-				mes "[Chemist Molgenstein]";
+				mes "[Chemist Morgenstein]";
 				mes "Hee hee hee...!";
 				mes "Come back when";
 				mes "you're ready~";
@@ -532,7 +532,7 @@ geffen_in,141,140,3	script	Molgenstein#cm	121,{
 				close;
 			}
 		case 3:
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "Heehee....heheheheh....";
 			close;
 		}
@@ -540,40 +540,40 @@ geffen_in,141,140,3	script	Molgenstein#cm	121,{
 	if (molgenstain == 2) {
 		set MISC_QUEST,MISC_QUEST | 4;
 		set molgenstain,0;
-		mes "[Chemist Molgenstein]";
+		mes "[Chemist Morgenstein]";
 		mes "Heeheeheehee.... welcome. Hehehehe.... heeheeheeheehee....";
 		next;
-		mes "[Chemist Molgenstein]";
+		mes "[Chemist Morgenstein]";
 		mes "Ah...?!";
 		mes "So sorry if I weirded you out. It's just... I haven't seen a living person in soooo long. So, er, what can I do for you??";
 		next;
 		if (select("Ask about his research.:Cancel.") == 1) {
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "Heeheeheeheee...";
 			mes "You must have heard the rumors about my research. Yes! But since you probably know already, I'll tell you without hiding, I mean, there's nothing to hide.";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "Actually, you can say my research is complete! Nothing's impossible for my genius! Bwahaha, it's just a matter of time!";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "Are you still here? Right, you wanted to know about my research. It's actually very simple. I was just trying to invent a super liquid that can melt everything!";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "Isn't it interesting? No matter how strong you are, you can't break apart stone or steel, but with my new liquid, you can melt those things, making them soft like puddy!";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "It can't melt everything yet, but I did find that you could combine things that you could never mix before with my invention.";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "I can make you a lot of new things you never would have imagined using this method... as long as you want it!!";
 			next;
-			mes "[Chemist Molgenstein]";
+			mes "[Chemist Morgenstein]";
 			mes "The endorphins are rushing to my face at least 2.1 times faster than the usual rate! Ah! I'm so excited! I... I just can't hide it!";
 			close;
 		}
 		close;
 	}
-	mes "[Chemist Molgenstein]";
+	mes "[Chemist Morgenstein]";
 	mes "Heeheeheehee...";
 	mes "You're not here to be a test subject, are you? Probably not though. Not since my little 'accident.' Heeheeheeee~!";
 	close;

+ 43 - 39
npc/quests/guildrelay.txt

@@ -70,9 +70,10 @@
 	}
 	if (getcharid(2) == .@GID) {
 		if (is_guild_leader() == true) {
+			.@time = atoi( gettimestr("%H%M",5) );
 			if (guildrelay_q == 100) {
-				if (guildtime > 22) {
-					if ((gettime(DT_HOUR) > 1) && (gettime(DT_HOUR) < guildtime)) {
+				if (guildtime > 2299) {
+					if (.@time > 0101 && .@time < guildtime) {
 						mes "[" + .@name$ + "]";
 						mes "Oh, you're back. So did you";
 						mes "rest up enough? I'm sure the";
@@ -128,8 +129,8 @@
 						close;
 					}
 				}
-				else if (guildtime > 22) {
-					if ((gettime(DT_HOUR) > 0) && (gettime(DT_HOUR) < guildtime)) {
+				else if (guildtime > 2200) {
+					if (.@time > 0001 && .@time < guildtime) {
 						mes "[" + .@name$ + "]";
 						mes "Oh, you're back. So did you";
 						mes "rest up enough? I'm sure the";
@@ -185,7 +186,7 @@
 						close;
 					}
 				}
-				else if ((gettime(DT_HOUR) - guildtime) > 2) {
+				else if ((.@time - guildtime) > 0200) {
 					mes "[" + .@name$ + "]";
 					mes "Oh, you're back. So did you";
 					mes "rest up enough? I'm sure the";
@@ -242,7 +243,7 @@
 				}
 			}
 			else if (guildrelay_q == 150) {
-				if (((guildtime > 22) && (gettime(DT_HOUR) > 1) && (gettime(DT_HOUR) < guildtime)) || ((guildtime > 21) && (gettime(DT_HOUR) > 0) && (gettime(DT_HOUR) < guildtime)) || ((gettime(DT_HOUR) - guildtime) > 2)) {
+				if ((guildtime > 2299 && .@time > 0101 && .@time < guildtime) || (guildtime > 2199 && .@time > 0001 && .@time < guildtime) || ((.@time - guildtime) > 0200)) {
 					mes "[" + .@name$ + "]";
 					mes "Ah, you look well rested,";
 					mes "master. It is now time for";
@@ -306,12 +307,12 @@
 				}
 			}
 			else if (guildrelay_q == 25) {
-				if (((guildtime > 22) && ((gettime(DT_HOUR) > 4) && (gettime(DT_HOUR) < guildtime)))
-				|| ((guildtime > 21) && ((gettime(DT_HOUR) > 3) && (gettime(DT_HOUR) < guildtime)))
-				|| ((guildtime > 20) && ((gettime(DT_HOUR) > 2) && (gettime(DT_HOUR) < guildtime)))
-				|| ((guildtime > 19) && ((gettime(DT_HOUR) > 1) && (gettime(DT_HOUR) < guildtime)))
-				|| ((guildtime > 18) && ((gettime(DT_HOUR) > 0) && (gettime(DT_HOUR) < guildtime)))
-				|| ((gettime(DT_HOUR) - guildtime) > 5)) {
+				if ((guildtime > 2299 && .@time > 0401 && .@time < guildtime)
+				|| (guildtime > 2199 && .@time > 0301 && .@time < guildtime)
+				|| (guildtime > 2059 && .@time > 0201 && .@time < guildtime)
+				|| (guildtime > 1999 && .@time > 0101 && .@time < guildtime)
+				|| (guildtime > 1899 && .@time > 0001 && .@time < guildtime)
+				|| ((.@time - guildtime) > 0500)) {
 					mes "[" + .@name$ + "]";
 					mes "Ah, have you rested well,";
 					mes "master? Please excuse my";
@@ -415,7 +416,7 @@
 					mes "Hand me the spirit, and allow";
 					mes "me to give you your guild's reward.";
 					delitem 7239,1; //Soul_Of_Proceeding
-					set guildtime,gettime(DT_HOUR);
+					set guildtime,.@time;
 					set guildrelay_q,100;
 					set .@incen_item,rand(1,100);
 					if ((.@incen_item > 0) && (.@incen_item < 25)) {
@@ -483,7 +484,7 @@
 					mes "challenges that you will all";
 					mes "face together. Good work!";
 					delitem 7245,1; //Soul_Of_Friendship
-					set guildtime,gettime(DT_HOUR);
+					set guildtime, atoi( gettimestr("%H%M",5) );
 					set guildrelay_q,150;
 					set .@incen_item,rand(1,100);
 					if ((.@incen_item > 0) && (.@incen_item < 16)) {
@@ -576,7 +577,7 @@
 					mes "Tristan III, and share it with";
 					mes "guild. Once again, good work.";
 					delitem 7251,1; //Soul_Of_Victory
-					set guildtime,gettime(DT_HOUR);
+					set guildtime, atoi( gettimestr("%H%M",5) );
 					set guildrelay_q,25;
 					set .@incen_item,rand(1,100);
 					if ((.@incen_item > 0) && (.@incen_item < 26)) {
@@ -1411,11 +1412,12 @@
 				mes "don't you worry about it.";
 				delitem 7235,1; //Soul_Of_Courage
 				set guildrelay_q,4;
-				set guildtime,gettime(DT_HOUR);
+				set guildtime, atoi( gettimestr("%H%M",5) );
 				close;
 			}
-			if ((guildtime > 22) && (guildrelay_q == 4) && (BaseJob == Job_Blacksmith)) {
-				if ((gettime(DT_HOUR) > 2) && (gettime(DT_HOUR) < guildtime)) {
+			.@time = atoi( gettimestr("%H%M",5) );
+			if ((guildtime > 2259) && (guildrelay_q == 4) && (BaseJob == Job_Blacksmith)) {
+				if ((.@time > 0201) && (.@time < guildtime)) {
 					mes "[" + .@name$ + "]";
 					mes "I guess enough time";
 					mes "has passed. You ready";
@@ -1428,8 +1430,8 @@
 					close;
 				}
 			}
-			if ((guildtime > 21) && (guildrelay_q == 4) && (BaseJob == Job_Blacksmith)) {
-				if ((gettime(DT_HOUR) > 0101) && (gettime(DT_HOUR) < guildtime)) {
+			if ((guildtime > 2159) && (guildrelay_q == 4) && (BaseJob == Job_Blacksmith)) {
+				if ((.@time > 0101) && (.@time < guildtime)) {
 					mes "[" + .@name$ + "]";
 					mes "I guess enough time";
 					mes "has passed. You ready";
@@ -1442,8 +1444,8 @@
 					close;
 				}
 			}
-			if ((guildtime > 20) && (guildrelay_q == 4) && (BaseJob == Job_Blacksmith)) {
-				if ((gettime(DT_HOUR) > 0001) && (gettime(DT_HOUR) < guildtime)) {
+			if ((guildtime > 2059) && (guildrelay_q == 4) && (BaseJob == Job_Blacksmith)) {
+				if ((.@time > 0001) && (.@time < guildtime)) {
 					mes "[" + .@name$ + "]";
 					mes "I guess enough time";
 					mes "has passed. You ready";
@@ -1456,7 +1458,7 @@
 					close;
 				}
 			}
-			if ((gettime(DT_HOUR) - guildtime > 0300) && (guildrelay_q == 4) && (BaseJob == Job_Blacksmith)) {
+			if ((.@time - guildtime > 0300) && (guildrelay_q == 4) && (BaseJob == Job_Blacksmith)) {
 				mes "[" + .@name$ + "]";
 				mes "I guess enough time";
 				mes "has passed. You ready";
@@ -1797,11 +1799,12 @@
 				mes "in order to be successful.";
 				delitem 7240,1; //Soul_Of_Confidence
 				set guildrelay_q,9;
-				set guildtime,gettime(DT_HOUR);
+				set guildtime, atoi( gettimestr("%H%M",5) );
 				close;
 			}
-			if ((guildtime > 22) && (guildrelay_q == 9) && (BaseJob == Job_Sage)) {
-				if ((gettime(DT_HOUR) > 02) && (gettime(DT_HOUR) < guildtime)) {
+			.@time = atoi( gettimestr("%H%M",5) );
+			if ((guildtime > 2259) && (guildrelay_q == 9) && (BaseJob == Job_Sage)) {
+				if ((.@time > 0201) && (.@time < guildtime)) {
 					mes "[" + .@name$ + "]";
 					mes "So did you spend some";
 					mes "quality time with your";
@@ -1831,8 +1834,8 @@
 					close;
 				}
 			}
-			else if ((guildtime > 21) && (guildrelay_q == 9) && (BaseJob == Job_Sage)) {
-				if ((gettime(DT_HOUR) > 01) && (gettime(DT_HOUR) < guildtime)) {
+			else if ((guildtime > 2159) && (guildrelay_q == 9) && (BaseJob == Job_Sage)) {
+				if ((.@time > 0101) && (.@time < guildtime)) {
 					mes "[" + .@name$ + "]";
 					mes "So did you spend some";
 					mes "quality time with your";
@@ -1862,8 +1865,8 @@
 					close;
 				}
 			}
-			else if ((guildtime > 20) && (guildrelay_q == 9) && (BaseJob == Job_Sage)) {
-				if ((gettime(DT_HOUR) > 0) && (gettime(DT_HOUR) < guildtime)) {
+			else if ((guildtime > 2059) && (guildrelay_q == 9) && (BaseJob == Job_Sage)) {
+				if ((.@time > 0001) && (.@time < guildtime)) {
 					mes "[" + .@name$ + "]";
 					mes "So did you spend some";
 					mes "quality time with your";
@@ -1893,7 +1896,7 @@
 					close;
 				}
 			}
-			else if ((gettime(DT_HOUR) - guildtime > 3) && (guildrelay_q == 9) && (BaseJob == Job_Sage)) {
+			else if ((.@time - guildtime > 0300) && (guildrelay_q == 9) && (BaseJob == Job_Sage)) {
 				mes "[" + .@name$ + "]";
 				mes "So did you spend some";
 				mes "quality time with your";
@@ -2766,11 +2769,12 @@
 				mes "to your feelings this time...";
 				delitem 7249,1; //Soul_Of_Service
 				set guildrelay_q,21;
-				set guildtime,gettime(DT_HOUR);
+				set guildtime, atoi( gettimestr("%H%M",5) );
 				close;
 			}
-			if ((guildtime > 22) && (guildrelay_q == 21) && (BaseJob == Job_Crusader)) {
-				if ((gettime(DT_HOUR) > 2) && (gettime(DT_HOUR) < guildtime)) {
+			.@time = atoi( gettimestr("%H%M",5) );
+			if ((guildtime > 2259) && (guildrelay_q == 21) && (BaseJob == Job_Crusader)) {
+				if ((.@time > 0201) && (.@time < guildtime)) {
 					mes "[" + .@name$ + "]";
 					mes "Yes. You've come at just";
 					mes "the right time. Remember";
@@ -2791,8 +2795,8 @@
 					close;
 				}
 			}
-			if ((guildtime > 21) && (guildrelay_q == 21) && (BaseJob == Job_Crusader)) {
-				if ((gettime(DT_HOUR) > 1) && (gettime(DT_HOUR) < guildtime)) {
+			if ((guildtime > 2159) && (guildrelay_q == 21) && (BaseJob == Job_Crusader)) {
+				if ((.@time > 0101) && (.@time < guildtime)) {
 					mes "[" + .@name$ + "]";
 					mes "Yes. You've come at just";
 					mes "the right time. Remember";
@@ -2813,8 +2817,8 @@
 					close;
 				}
 			}
-			if ((guildtime > 20) && (guildrelay_q == 21) && (BaseJob == Job_Crusader)) {
-				if ((gettime(DT_HOUR) > 0) && (gettime(DT_HOUR) < guildtime)) {
+			if ((guildtime > 2059) && (guildrelay_q == 21) && (BaseJob == Job_Crusader)) {
+				if ((.@time > 0001) && (.@time < guildtime)) {
 					mes "[" + .@name$ + "]";
 					mes "Yes. You've come at just";
 					mes "the right time. Remember";
@@ -2835,7 +2839,7 @@
 					close;
 				}
 			}
-			if ((gettime(DT_HOUR) - guildtime > 3) && (guildrelay_q == 21) && (BaseJob == Job_Crusader)) {
+			if ((.@time - guildtime > 0300) && (guildrelay_q == 21) && (BaseJob == Job_Crusader)) {
 				mes "[" + .@name$ + "]";
 				mes "Yes. You've come at just";
 				mes "the right time. Remember";

+ 9 - 7
npc/re/custom/lasagna/lasa_dun.txt

@@ -2,28 +2,30 @@
 //= Lasagna Dungeons Monsters Spawn Script
 //===== Changelogs: ==========================================
 //= 1.0 First Version. [Capuche]
+//= 1.1 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // lasa_dun01 - Dragon's Nest
 //==================================================
-lasa_dun01	monster	Trans Spore	3501,40
-lasa_dun01	monster	Scout Basilisk	3502,40
+lasa_dun01	monster	Trans Spore	3501,30
+lasa_dun01	monster	Scout Basilisk	3502,60
 lasa_dun01	boss_monster	Big Eggring	3505,1,3600000,1800000,1
 
 //==================================================
 // lasa_dun02 - Dragon's Nest
 //==================================================
-lasa_dun02	monster	Combat Basilisk	3503,40
-lasa_dun02	monster	Jungle Madragora	3506,40
+lasa_dun02	monster	Combat Basilisk	3503,60
+lasa_dun02	monster	Jungle Madragora	3506,30
 
 //==================================================
 // lasa_dun03 - Dragon's Nest
 //==================================================
-lasa_dun03	monster	Combat Basilisk	3504,80
-lasa_dun03	monster	Fruits Pom Spider	3507,80
+lasa_dun03	monster	Combat Basilisk	3504,110
+lasa_dun03	monster	Fruits Pom Spider	3507,60
 
 //==================================================
 // lasa_dun_q - Dragon's Nest
 //==================================================
-lasa_dun_q	monster	Scout Basilisk	3502,40
+lasa_dun_q	monster	Scout Basilisk	3502,70
+lasa_dun_q	monster	Trans Spore	3501,30

+ 5 - 4
npc/re/custom/lasagna/lasa_fild.txt

@@ -2,6 +2,7 @@
 //= Lasagna Fild Monster Spawn Script
 //===== Changelogs: ==========================================
 //= 1.0 First Version. [Capuche]
+//= 1.1 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
@@ -18,7 +19,7 @@ lasa_fild01,140,365,15,15	monster	Red Plant	1078,5
 //==================================================
 // lasa_fild01 - Ravioli Forest
 //==================================================
-lasa_fild02,0,0	monster	Wild Hornet	3498,40
-lasa_fild02,0,0	monster	Sweet Roda Frog	3499,40
-lasa_fild02,0,0	monster	Hunter Desert Wolf	3500,40
-lasa_fild02,0,0	monster	Combat Basilisk	3502,5
+lasa_fild02,0,0	monster	Wild Hornet	3498,90
+lasa_fild02,0,0	monster	Sweet Roda Frog	3499,100
+lasa_fild02,0,0	monster	Hunter Desert Wolf	3500,100
+lasa_fild02,0,0	monster	Combat Basilisk	3502,10

+ 1 - 1
npc/re/custom/lasagna/lasagna_npcs.txt

@@ -1057,7 +1057,7 @@ lasagna,224,126,5	script	Healer Haru#doram07t	4_DR_M_02,{
 			setquest 7722;// EMT
 			completequest 7722;// EMT
 		}
-		skill "NV_FIRSTAID",1,SKILL_PERM;
+		skill "NV_FIRSTAID",1,SKILL_PERM_GRANT;
 		next;
 		mes "[Healer Haru]";
 		mes "Well, then. I'll let you in on something juicy while I'm at it.";

+ 2191 - 0
npc/re/instances/CharlestonCrisis.txt

@@ -0,0 +1,2191 @@
+//===== rAthena Script =======================================
+//= Charleston in Distress
+//===== Description: =========================================
+//= [Official Conversion]
+//= Charleston in Distress Instance
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+verus04,75,114,5	script	Charleston#mcd	4_F_CHARLESTON02,{
+	cutin "nale01.bmp",0;
+	if (BaseLevel < 130) {
+		mes "[Charleston]";
+		mes "I'm looking for adventurers who are at least Level 130, healthy, free of chronic disease, and not on prescription drugs.";
+		close3;
+	}
+	if (isbegin_quest(13186) == 0) {
+		switch( isbegin_quest(13184) ) {
+		case 0:
+			mes "[Charleston]";
+			mes "Hello, Adventurer. I'm Charleston, the initiator of the Project Independent.";
+			next;
+			mes "[Charleston]";
+			mes "Currently I'm unable to move, having a problem with one of my components. Could you help me get the replacement parts from the factory?";
+			next;
+			if (select( "Sure.", "No." ) == 1) {
+				mes "[Charleston]";
+				mes "The task won't be difficult if you're at least Level 130, healthy, free of chronic disease, and not on prescription drugs.";
+				next;
+				mes "[Charleston]";
+				mes "Please use the machine on the right side to enter the factory. Once you're in, remain calm and follow the instructions.";
+				setquest 13184;
+			}
+			close3;
+		case 1:
+			mes "[Charleston]";
+			mes "Please use the machine next to me to enter the factory. Once you're in, remain calm and follow the instructions.";
+			close3;
+		case 2:
+			cutin "nale03.bmp",0;
+			mes "[Charleston]";
+			mes "I don't know how long it's been standing here, but it's been a long time since I've been able to move...";
+			next;
+			mes "[Charleston]";
+			mes "At present, only my head can move, is Saleh she helped me open the organs can return to that time...";
+			next;
+			mes "[Charleston]";
+			mes "I wouldn't have done that if I had been persuaded.";
+			next;
+			mes "[Charleston]";
+			mes "Anyway, I have nothing now... Only to be able to stand up again, so I hope to send an adventurer like you at that time.";
+			next;
+			mes "[Charleston]";
+			mes "^FF0000It didn't change anything.^000000";
+			next;
+			mes "[Charleston]";
+			mes "Just based on the hard work of OS... For your help in another part of the world Charleston 2 will be 'very good' robot!";
+			next;
+			mes "[Charleston]";
+			mes "It is possible to meet a good friend into a good robot, so I have to continue to carry on, Thank you!";
+			erasequest 13184;
+			if (isbegin_quest(13186) == 0) {
+				setquest 13186;
+				completequest 13186;
+			}
+			if (isbegin_quest(13187) > 0)
+				erasequest 13187;
+			getexp 1500000,500000;
+			close3;
+		}
+		end;
+	}
+	cutin "nale03.bmp",0;
+	switch( isbegin_quest(13184) ) {
+	case 0:
+		mes "[Charleston]";
+		mes "Aren't you disappointed? Are you really going to let your effort go in vain? Because that'll be really stupid. I suggest you reconsider.";
+		next;
+		if (select( "I'll try again if there's a sliver of hope.", "I'll think again." ) == 1) {
+			mes "[Charleston]";
+			mes "I'm a robot. I do what I'm programmed to do, and nothing else matters.";
+			next;
+			mes "[Charleston]";
+			mes "Ironic, isn't it? Robots are supposed to be incapable of emotions, and yet here I am, feeling rueful about the past.";
+			next;
+			mes "[Charleston]";
+			mes "You can judge me, but you can't stop me. I'll continue to try as long as there's a sliver of hope.";
+			next;
+			mes "[Charleston]";
+			mes "My heart stopped, but I still can talk. Please help me.";
+			setquest 13184;
+		}
+		close3;
+	case 1:
+		mes "[Charleston]";
+		mes "If you're disillusioned by your immutable past, unclear future, and depressing present, then I won't force you.";
+		next;
+		if (select( "I'll try again if there's a sliver of hope.", "I give up." ) == 1) {
+			mes "[Charleston]";
+			mes "I'll continue to try as long as there's a sliver of hope.";
+			close3;
+		}
+		erasequest 13184;
+		close3;
+	case 2:
+		mes "[Charleston]";
+		mes "I couldn't stop it from happening or change the past. But maybe someone else can.";
+		next;
+		mes "[Charleston]";
+		mes "I'll wait for that one person however long it takes.";
+		erasequest 13184;
+		getexp 1500000,500000;
+		close3;
+	}
+	end;
+/*
+// The sprite is supposed to be changed
+OnInit:
+	end;
+*/
+}
+
+verus04,81,112,5	script	Machine#mcd	PORTAL,{
+	if (BaseLevel < 130) {
+		mes "[Machine]";
+		mes "^ff0000You must be Level 130 to use this machine.^000000";
+		close;
+	}
+	if (isbegin_quest(13184) != 1) {
+		mes "^ff0000You need Charleston's permission to use this machine.^000000";
+		close;
+	}
+	.@party_id = getcharid(1);
+	if (.@party_id < 1) {
+		mes "^ff0000You first must form/join a party of at least 1 person to enter this dungeon.^000000";
+		close;
+	}
+	switch( checkquest(13185,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "^ff0000This machine cannot be accessed for 20 hours after your last access.^000000";
+		close;
+	case 2:
+		mes "The machine is now available for use.";
+		erasequest 13185;
+		close;
+	}
+	.@p_name$ = getpartyname(.@party_id);
+	.@p_leader$ = getpartyleader(.@party_id);
+	.@md_name$ = "Charleston in Distress";
+	if (is_party_leader() == true)
+		.@menu$ = "Open the dimensional portal.";
+
+	switch( select( .@menu$, "Enter the Charleston Factory.", "Cancel." ) ) {
+	case 1:
+		if (instance_create(.@md_name$) < 0) {
+			mes "Party: " + .@p_name$ + "";
+			mes "Leader: " + .@p_leader$ + "";
+			mes "^0000ff" + .@md_name$ + " ^000000- Unknown error";
+			close;
+		}
+		mes "^ff0000Preparing to teleport...^000000";
+		mes "^ff0000Please wait.^000000";
+		close;
+	case 2:
+		if (is_party_leader() == false) {
+			mes "[Machine]";
+			mes "Teleporting...";
+			next;
+			mes "[Machine]";
+			mes "^ff0000This machine cannot be accessed for 20 hours after your last access.^000000";
+			next;
+		}
+		switch( instance_enter(.@md_name$) ) {
+		case IE_OTHER:
+			mes "[Machine]";
+			mes "^ff0000An unknown error occurred.^000000";
+			close;
+		case IE_NOINSTANCE:
+			mes "[Machine]";
+			mes "^ff0000Your party leader has not yet created a Time Crack.^000000";
+			close;
+		case IE_NOMEMBER:
+			mes "[Machine]";
+			mes "^ff0000Only a member of the party can enter the Memorial Dungeon.^000000";
+			close;
+		case IE_OK:
+			setquest 13185;
+			specialeffect2 EF_READYPORTAL2;
+			specialeffect2 EF_PORTAL2;
+			mapannounce "verus04", strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering the " + .@md_name$ + ".", bc_map, 0x00ff99;
+			end;
+		}
+		end;
+	case 3:
+		end;
+	}
+	end;
+}
+
+// GM NPC
+sec_in02,10,13,3	script	Charleston#sara	4_F_CHARLESTON01,{
+	mes "Crisis of Charleston Test ver130603a";
+	if (callfunc("F_GM_NPC",1854,0,0,9999) < 1)
+		close;
+	switch( select( "20 hour cooldown reset", "Returns the status of the initial solution task", "Establish a copy clearance status" ) ) {
+	case 1:
+		if (isbegin_quest(13185))
+			erasequest 13185;
+		close;
+	case 2:
+		if (isbegin_quest(13184))
+			erasequest 13184;
+		if (isbegin_quest(13186))
+			erasequest 13186;
+		if (isbegin_quest(13188))
+			erasequest 13188;
+		close;
+	case 3:
+		if (isbegin_quest(13184) == 0)
+			setquest 13184;
+		if (isbegin_quest(13184) == 1)
+			completequest 13184;
+		close;
+	}
+	end;
+}
+
+1@mcd,127,277,4	script	Charleston 1#0	4_F_CHARLESTON01,3,3,{
+	cutin "dalle01.bmp",2;
+	if ('ep15_1_mcd01 == 0) {
+		mes "[Charleston 1]";
+		mes "Um... How long do I have to wait?";
+		emotion 19;
+		close3;
+	}
+	mes "[Charleston 1]";
+	mes "Follow the leftward hallway, and remember that only you can protect yourself.";
+	close3;
+
+OnTouch_:
+	cutin "dalle01.bmp",2;
+	if ('ep15_1_mcd01 != 0) {
+		mes "[Charleston 1]";
+		mes "Follow the leftward hallway, and remember that only you can protect yourself.";
+		close3;
+	}
+	mes "[Charleston 1]";
+	mes "Finally, you're here! I've been waiting for you.";
+	npctalk "Finally, you're here! I've been waiting for you.";
+	emotion 0;
+	next;
+	mes "[Charleston 1]";
+	mes "We don't have time, so let me cut to the chase. Currently, the Charleston Factory is under Rank B security alert level, meaning that the security devices have been activated.";
+	npctalk "We don't have time, so let me cut to the chase. Currently, the Charleston Factory is under Rank B security alert level, meaning that the security devices have been activated.";
+	next;
+	mes "[Charleston 1]";
+	mes "Move to the leftward hallway, destroy security devices in there, and then head on to the next zone.";
+	npctalk "Move to the leftward hallway, destroy security devices in there, and then head on to the next zone.";
+	emotion 19;
+	next;
+	mes "[Charleston 1]";
+	mes "Don't worry about the security devices. They can be repaired easily. Dr. Ve is in his lab north of Factory Line 3.";
+	npctalk "Don't worry about the security devices. They can be repaired easily. Dr. Ve is in his lab north of Factory Line 3.";
+	next;
+	mes "[Charleston 1]";
+	mes "Dr. Ve can tell you everything. Hurry!";
+	npctalk "Dr. Ve can tell you everything. Hurry!";
+	emotion 19;
+	'ep15_1_mcd01 = 1;
+	monster 'map_name$,24,275, "Security Robot", 3127,1, instance_npcname("Charleston 1#0") + "::OnMyMobDead";	// KICK_STEP
+	close3;
+
+OnMyMobDead:
+	if (mobcount( 'map_name$, instance_npcname("Charleston 1#0") + "::OnMyMobDead" ) < 1) {
+		initnpctimer;
+		mapannounce 'map_name$, "Charleston 1: Gate 1 has been disarmed. Please move southwest for the next gate.", bc_map, 0xffff00;
+	}
+	end;
+OnTimer1000:
+	donpcevent instance_npcname("1gate#1") + "::OnStart";
+	stopnpctimer;
+	end;
+}
+
+1@mcd,120,224,5	script	Charleston 2#0	4_F_CHARLESTON02,{
+	cutin "nale04.bmp",0;
+	mes "[Charleston 2]";
+	mes "#%@EGD&#(@#...";
+	emotion 53;
+	next;
+	mes "- She's making strange noises, but unable to move. -";
+	close3;
+}
+
+1@mcd,116,213,5	script	Dr. Ve#1	4_M_DOCTOR,2,2,{
+	if ('ep15_1_mcd01 == 1) {
+		mes "- He's busy scribbling something, Move close to talk to him.";
+		close;
+	}
+	mes "- He's busy scribbling something. You shouldn't disturb him.";
+	close;
+
+OnTouch_:
+	if (is_party_leader() == false) {
+		mes "[Dr. Ve]";
+		mes "Let me talk to your leader. I don't have time for everyone.";
+		close;
+	}
+	if ('ep15_1_mcd01 > 2)
+		end;
+	if ('ep15_1_mcd01 == 2) {
+		mes "[Dr. Ve]";
+		mes "I don't care who you're with. I just need to know if you can help me.";
+		'ep15_1_mcd01 = 2;
+		next;
+		if (select( "I can help.", "I'm busy." ) == 2) {
+			mes "[Dr. Ve]";
+			mes "Sigh, I don't care who, so long as I get the help I need.";
+			npctalk "Dr. Ve: Sigh, I don't care who, so long as I get the help I need.";
+			close;
+		}
+		mes "[Dr. Ve]";
+		mes "You're the savior we've been waiting for! Charleston 1 will tell you what we need to repair Charleston 2.";
+		npctalk "Dr. Ve: You're the savior we've been waiting for! Charleston 1 will tell you what we need to repair Charleston 2.";
+		if ('ep15_1_mcd01 == 2)
+			'ep15_1_mcd01 = 3;
+		close;
+	}
+	if ('ep15_1_mcd01 == 1) {
+		.@charleston_1$ = instance_npcname("Charleston 1#1");
+		mes "[Dr. Ve]";
+		mes "Charleston 1. Charleston 2 has been forcibly connected to a part of the main computer, and I can't control her.";
+		npctalk "Dr. Ve: Charleston 1. Charleston 2 has been forcibly connected to a part of the main computer, and I can't control her.";
+		next;
+		cutin "dalle02.bmp",2;
+		mes "[Charleston 1]";
+		mes "She's a robot; she should stop sooner or later.";
+		npctalk "Charleston 1: She's a robot; she should stop sooner or later.", .@charleston_1$;
+		next;
+		cutin "",255;
+		mes "[Dr. Ve]";
+		mes "The Longevity device in her will keep her running at least for 50 years. The factory is not going to survive that long.";
+		npctalk "Dr. Ve: The Longevity device in her will keep her running at least for 50 years. The factory is not going to survive that long.";
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Then we have no choice. It's good that we have the specialist with us.";
+		npctalk "Charleston 1: Then we have no choice. It's good that we have the specialist with us.", .@charleston_1$;
+		next;
+		select("Are you talking about me?");
+		unittalk getcharid(3), "Are you talking about me?";
+		mes "[Charleston 1]";
+		mes "A while ago, a lady named ^FF0000Shalosh^000000 visited us while Charleston 2 was packaging products for shipping.";
+		npctalk "Charleston 1: A while ago, a lady named ^FF0000Shalosh^000000 visited us while Charleston 2 was packaging products for shipping.", .@charleston_1$;
+		next;
+		mes "[Charleston 1]";
+		mes "Shalosh and her friend were talking to Charleston 2 when the accident happened.";
+		npctalk "Charleston 1: Shalosh and her friend were talking to Charleston 2 when the accident happened.", .@charleston_1$;
+		next;
+		cutin "",255;
+		mes "[Dr. Ve]";
+		mes "I think someone tried to hack into the factory's main computer.";
+		npctalk "Dr. Ve: I think someone tried to hack into the factory's main computer.";
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "During its update process, the connection to the server was jammed. When we pressed Shalosh about that,";
+		npctalk "Charleston 1: During its update process, the connection to the server was jammed. When we pressed Shalosh about that,", .@charleston_1$;
+		next;
+		mes "[Charleston 1]";
+		mes "Shalosh said her friends could help us. That was when Newoz and her other friends came. They haven't been much of help.";
+		npctalk "Charleston 1: Shalosh said her friends could help us. That was when Newoz and her other friends came. They haven't been much of help.", .@charleston_1$;
+		next;
+		mes "[Charleston 1]";
+		mes "It seems you're acquainted with them. Could you help us?";
+		npctalk "Charleston 1: It seems you're acquainted with them. Could you help us?", .@charleston_1$;
+		if ('ep15_1_mcd01 == 1)
+			'ep15_1_mcd01 = 2;
+		next;
+		if (select( "I can help.", "I don't know them." ) == 2) {
+			mes "[Charleston 1]";
+			mes "I just saw that you are talking, then I will wait for someone to help!";
+			close3;
+		}
+		unittalk getcharid(3), "I can help.";
+		mes "[Charleston 1]";
+		mes "Thank you so much! Give me some time to put some data in order. Then, I'll tell you what happened.";
+		npctalk "Charleston 1: Thank you so much! Give me some time to put some data in order. Then, I'll tell you what happened.", .@charleston_1$;
+		if ('ep15_1_mcd01 == 2)
+			'ep15_1_mcd01 = 3;
+		emotion 2, .@charleston_1$;
+		close3;
+	}
+	mes "[Dr. Ve]";
+	mes "When the tension is changed to two main lines and then injected into the core... well? I am not disturbing in the calculation.";
+	npctalk "Dr. Ve: When the tension is changed to two main lines and then injected into the core... well? I am not disturbing in the calculation.";
+	close;
+}
+
+1@mcd,121,217,4	script	Charleston 1#1	4_F_CHARLESTON01,{
+	if (is_party_leader() == false) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Please let me talk to your leader. The future of my factory depends on the success of this operation.";
+		close3;
+	}
+	if ('ep15_1_mcd01 > 5)
+		end;
+	if ('ep15_1_mcd01 == 4) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Steps and Locksteps are creating a mess inside the factory. Please destroy 3 Locksteps first. I can tell you their estimated locations.";
+		viewpoint 1,84,226,1,0xFF00FF;
+		viewpoint 1,126,84,2,0xFF00FF;
+		viewpoint 1,111,68,3,0xFF00FF;
+		viewpoint 1,210,181,4,0xFF00FF;
+		viewpoint 1,183,192,5,0xFF00FF;
+		viewpoint 1,130,124,6,0xFF00FF;
+		viewpoint 1,54,108,7,0xFF00FF;
+		close3;
+	}
+	if ('ep15_1_mcd01 == 3) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Let me explain what to do. Oh, let me close the factory entrance first, lest something might barge in uninvited.";
+		npctalk "Charleston 1: Let me explain what to do. Oh, let me close the factory entrance first, lest something might barge in uninvited.";
+		next;
+		mes "[Charleston 1]";
+		mes "Charleston is equipped with numerous Nanosteps, a type of AI chip that organically works with other AI chips to command Charleston to judge and act correctly.";
+		npctalk "Charleston 1: Charleston is equipped with numerous Nanosteps, a type of AI chip that organically works with other AI chips to command Charleston to judge and act correctly.";
+		next;
+		mes "[Charleston 1]";
+		mes "Charleston's data has to be updated on a daily basis through the main computer in the lab. We call this regular maintenance.";
+		npctalk "Charleston 1: Charleston's data has to be updated on a daily basis through the main computer in the lab. We call this regular maintenance.";
+		next;
+		mes "[Charleston 1]";
+		mes "The updater is not working at this moment. We don't know the cause, but something went wrong while Charleston 2 was connecting to the main computer.";
+		npctalk "Charleston 1: The updater is not working at this moment. We don't know the cause, but something went wrong while Charleston 2 was connecting to the main computer.";
+		next;
+		mes "[Charleston 1]";
+		mes "I told Charleston 2 that she's under extended maintenance, but we don't know how long this extended maintenance status will last.";
+		npctalk "Charleston 1: I told Charleston 2 that she's under extended maintenance, but we don't know how long this extended maintenance status will last.";
+		next;
+		mes "[Charleston 1]";
+		mes "Steps and Locksteps are creating a mess inside the factory. Please destroy 3 Locksteps first. I can tell you their estimated locations.";
+		npctalk "Charleston 1: Steps and Locksteps are creating a mess inside the factory. Please destroy 3 Locksteps first. I can tell you their estimated locations.";
+		next;
+		mes "[Charleston 1]";
+		mes "It'll be great if we can get rid of them all, but for now we should focus on having the factory up and running again.";
+		npctalk "Charleston 1: It'll be great if we can get rid of them all, but for now we should focus on having the factory up and running again.";
+		next;
+		mes "[Charleston 1]";
+		mes "Destroying too many Steps could cause a problem to reactivate the factory. You should consult the main computer on the left side.";
+		npctalk "Charleston 1: Destroying too many Steps could cause a problem to reactivate the factory. You should consult the main computer on the left side.";
+		emotion 2;
+		if ('ep15_1_mcd01 != 3)
+			close3;
+		'ep15_1_mcd01 = 4;
+		.@label$ = instance_npcname("Charleston 1#1") + "::OnMyMobDead";
+		monster 'map_name$, 84,226, "Lockstep", 3126,1, .@label$;	// ROCK_STEP
+		monster 'map_name$,126, 84, "Lockstep", 3126,1, .@label$;
+		monster 'map_name$,111, 68, "Lockstep", 3126,1, .@label$;
+		monster 'map_name$,210,181, "Lockstep", 3126,1, .@label$;
+		monster 'map_name$,183,192, "Lockstep", 3126,1, .@label$;
+		monster 'map_name$,130,124, "Lockstep", 3126,1, .@label$;
+		monster 'map_name$, 54,108, "Lockstep", 3126,1, .@label$;
+		viewpoint 1,84,226,1,0xFF00FF;
+		viewpoint 1,126,84,2,0xFF00FF;
+		viewpoint 1,111,68,3,0xFF00FF;
+		viewpoint 1,210,181,4,0xFF00FF;
+		viewpoint 1,183,192,5,0xFF00FF;
+		viewpoint 1,130,124,6,0xFF00FF;
+		viewpoint 1,54,108,7,0xFF00FF;
+		close2;
+		disablenpc instance_npcname("5gate#1");
+		cutin "",255;
+		end;
+	}
+	if ('ep15_1_mcd01 == 1) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "You should meet Dr. Ve first.";
+		close3;
+	}
+	cutin "dalle01.bmp",2;
+	mes "[Charleston 1]";
+	mes "I am a robot, are you surprised?";
+	close3;
+
+OnMyMobDead:
+	if (mobcount( 'map_name$, instance_npcname("Charleston 1#1") + "::OnMyMobDead" ) == 4)
+		initnpctimer;
+	end;
+OnTimer300:
+	enablenpc instance_npcname("Charleston 1#2");
+	disablenpc instance_npcname("Charleston 1#1");
+	mapannounce 'map_name$, "Charleston 1: Ah, ah. Mic test.", bc_map, 0xffff00;
+	sleep 3000;
+	mapannounce 'map_name$, "Charleston 1: It seems you've taken care of most of the Locksteps.", bc_map, 0xffff00;
+	sleep 3000;
+	mapannounce 'map_name$, "Charleston 1: Please come back to the lab.", bc_map, 0xffff00;
+	stopnpctimer;
+	end;
+}
+
+1@mcd,122,217,4	script	Charleston 1#2	4_F_CHARLESTON01,{
+	viewpoint 2,84,226,1,0xFF00FF;
+	viewpoint 2,126,84,2,0xFF00FF;
+	viewpoint 2,111,68,3,0xFF00FF;
+	viewpoint 2,210,181,4,0xFF00FF;
+	viewpoint 2,183,192,5,0xFF00FF;
+	viewpoint 2,130,124,6,0xFF00FF;
+	viewpoint 2,54,108,7,0xFF00FF;
+	if (is_party_leader() == false) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Please let me talk to your leader about the supplementation of the factory.";
+		close3;
+	}
+	if ('ep15_1_mcd01 > 7)
+		end;
+	if ('ep15_1_mcd01 > 4) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "We need more power to reactivate the main computer. Let me tell you the location of one of the backup power generators. Turning it on is easy.";
+		close3;
+	}
+	if ('ep15_1_mcd01 == 4) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Whew, things seem to be settled for now. Let me disarm the alert mode and reactivate Charleston 2.";
+		npctalk "Charleston 1: Whew, things seem to be settled for now. Let me disarm the alert mode and reactivate Charleston 2.";
+		emotion 54;
+		next;
+		cutin "dalle03.bmp",2;
+		mes "[Charleston 1]";
+		mes "Err? This isn't right.";
+		next;
+		mes "[Charleston 1]";
+		mes "I'm afraid there's a problem with the power generators. Could you check all the all three power generators? I'll tell you their locations.";
+		npctalk "Charleston 1: I'm afraid there's a problem with the power generators. Could you check all the all three power generators? I'll tell you their locations.";
+		viewpoint 1,86,231,8,0xFF00FF;
+		viewpoint 1,172,196,9,0xFF00FF;
+		viewpoint 1,126,84,10,0xFF00FF;
+		if ('ep15_1_mcd01 == 4) {
+			enablenpc instance_npcname("Backup Generator#1");
+			enablenpc instance_npcname("Backup Generator#2");
+			enablenpc instance_npcname("Backup Generator#3");
+			monster 'map_name$, 86,231, "Security Robot", 3127,1;	// KICK_STEP
+			monster 'map_name$,172,196, "Security Robot", 3127,1;
+			monster 'map_name$,126, 84, "Security Robot", 3127,1;
+			monster 'map_name$, 97,149, "Security Robot", 3127,1;
+			monster 'map_name$,160,151, "Security Robot", 3127,1;
+			'ep15_1_mcd01 = 5;
+		}
+		close3;
+	}
+	cutin "dalle03.bmp",2;
+	mes "[Charleston 1]";
+	mes "We're working on a new utility software engine called Hardworking. We haven't had a chance to test it because of the problems in the factory.";
+	close3;
+}
+
+1@mcd,123,217,4	script	Charleston 1#3	4_F_CHARLESTON01,{
+	viewpoint 2,86,231,8,0xFF00FF;
+	viewpoint 2,172,196,9,0xFF00FF;
+	viewpoint 2,126,84,10,0xFF00FF;
+	if (is_party_leader() == false) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "We're working on a new utility software engine called Hardworking. We haven't had a chance to test it because of the problems in the factory.";
+		next;
+		mes "[Charleston 1]";
+		mes "Please let me talk to your leader about the supplementation of the factory.";
+		close3;
+	}
+	if ('ep15_1_mcd01 > 11)
+		end;
+	if ('ep15_1_mcd01 == 8) {
+		.@npc2$ = instance_npcname("Charleston 2#0");
+		.@npc5$ = instance_npcname("Dr. Ve#1");
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "You're back. Charleston 2 is almost ready to be reactivated, and it's all thanks to you. Just give me a moment.";
+		npctalk "Charleston 1: You're back. Charleston 2 is almost ready to be reactivated, and it's all thanks to you. Just give me a moment.";
+		next;
+		cutin "",255;
+		mes "[Dr. Ve]";
+		mes "She's ready. Let's wait for a response from the main computer.";
+		npctalk "Dr. Ve: She's ready. Let's wait for a response from the main computer.", .@npc5$;
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "89% of the main computer data has been restored. Reactivating Charleston 2 and the Charleston Factory...";
+		npctalk "Charleston 1: 89% of the main computer data has been restored. Reactivating Charleston 2 and the Charleston Factory...";
+		emotion 0;
+		next;
+		mes "[Charleston 1]";
+		mes "Oh, Charleston 2 is awake!";
+		npctalk "Charleston 1: Oh, Charleston 2 is awake!";
+		next;
+		cutin "nale03.bmp",0;
+		mes "[Charleston 2]";
+		mes "...Did I fail?";
+		npctalk "Charleston 2: ...Did I fail?", .@npc2$;
+		emotion 9, .@npc2$;
+		next;
+		cutin "dalle02.bmp",2;
+		mes "[Charleston 1]";
+		mes "Charleston 2! Are you all right? Someone hacked into your system and the factory.";
+		npctalk "Charleston 1: Charleston 2! Are you all right? Someone hacked into your system and the factory.";
+		emotion 28;
+		next;
+		cutin "nale03.bmp",0;
+		mes "[Charleston 2]";
+		mes "It was I who did it. I've thought about it for a long time, based on the reasoning of my Self-reflection OS.";
+		npctalk "Charleston 2: It was I who did it. I've thought about it for a long time, based on the reasoning of my Self-reflection OS.", .@npc2$;
+		next;
+		cutin "dalle02.bmp",2;
+		mes "[Charleston 1]";
+		mes "You did it? Why? Was it some sort of joke? You caused a serious error to the factory and the main server as well!";
+		npctalk "Charleston 1: You did it? Why? Was it some sort of joke? You caused a serious error to the factory and the main server as well!";
+		next;
+		cutin "nale03.bmp",0;
+		mes "[Charleston 2]";
+		mes "Not a joke. You'll never understand. You follow commands and never think on your own. I hate this factory, this world! I hate being a robot!";
+		npctalk "Charleston 2: Not a joke. You'll never understand. You follow commands and never think on your own. I hate this factory, this world! I hate being a robot!", .@npc2$;
+		emotion 36, .@npc2$;
+		next;
+		cutin "",255;
+		mes "[Dr. Ve]";
+		mes "Either a critical error has occurred or Charleston 2 has transcended the limits of the Self-reflection OS version 1.1.";
+		npctalk "Dr. Ve: Either a critical error has occurred or Charleston 2 has transcended the limits of the Self-reflection OS version 1.1.", .@npc5$;
+		next;
+		cutin "dalle02.bmp",2;
+		mes "[Charleston 1]";
+		mes "Let me guess: you hate you weren't created as a menial worker robot.";
+		npctalk "Charleston 1: Let me guess: you hate you weren't created as a menial worker robot.";
+		next;
+		mes "[Charleston 1]";
+		mes "Or you want to become a human.";
+		npctalk "Charleston 1: Or you want to become a human.";
+		next;
+		mes "[Charleston 1]";
+		mes "And if you can't, then you want to destroy the whole world.";
+		npctalk "Charleston 1: And if you can't, then you want to destroy the whole world.";
+		next;
+		mes "[Charleston 1]";
+		mes "Is that it?";
+		npctalk "Charleston 1: Is that it?";
+		next;
+		cutin "nale03.bmp",0;
+		mes "[Charleston 2]";
+		mes "...Don't mock me.";
+		npctalk "Charleston 2: ...Don't mock me.", .@npc2$;
+		emotion 9, .@npc2$;
+		next;
+		cutin "dalle03.bmp",2;
+		mes "[Charleston 1]";
+		mes "You had it coming. Your reasons are petulant and unimaginative. We're the first robots that can think for themselves. Can't you be more creative?";
+		npctalk "Charleston 1: You had it coming. Your reasons are petulant and unimaginative. We're the first robots that can think for themselves. Can't you be more creative?";
+		next;
+		cutin "nale03.bmp",0;
+		mes "[Charleston 2]";
+		mes "You don't know what you're talking about! You're the prototype--your OS version is primitive!";
+		npctalk "Charleston 2: You don't know what you're talking about! You're the prototype--your OS version is primitive!", .@npc2$;
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "I'm the only one in this world who can truly understand you.";
+		npctalk "Charleston 1: I'm the only one in this world who can truly understand you. We're twins.";
+		mes "We're twins.";
+		next;
+		mes "[Charleston 1]";
+		mes "You're going through the adolescent stage like humans do.";
+		npctalk "Charleston 1: You're going through the adolescent stage like humans do.";
+		next;
+		mes "[Charleston 1]";
+		mes "Maybe we should celebrate. You've finally developed human-like feelings.";
+		npctalk "Charleston 1: Maybe we should celebrate. You've finally developed human-like feelings.";
+		emotion 46;
+		next;
+		cutin "nale03.bmp",0;
+		mes "[Charleston 2]";
+		mes "Don't act like you know everything! We can't think for ourselves. Everything we think we know has been programmed into us!";
+		npctalk "Charleston 2: Don't act like you know everything! We can't think for ourselves. Everything we think we know has been programmed into us!", .@npc2$;
+		next;
+		cutin "",255;
+		mes "[Dr. Ve]";
+		mes "Enough. Let's shut down Charleston 2. Her AI needs to be recalibrated.";
+		npctalk "Dr. Ve: Enough. Let's shut down Charleston 2. Her AI needs to be recalibrated.", .@npc5$;
+		next;
+		cutin "dalle03.bmp",2;
+		mes "[Charleston 1]";
+		mes "But...";
+		npctalk "Charleston 1: But...";
+		next;
+		cutin "nale03.bmp",0;
+		mes "[Charleston 2]";
+		mes "That's not happening! I still have control over this factory! Don't you dare follow me!";
+		npctalk "Charleston 2: That's not happening! I still have control over this factory! Don't you dare follow me!", .@npc2$;
+		emotion 32, .@npc2$;
+		next;
+		disablenpc .@npc2$;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Stop acting like a child!";
+		npctalk "Charleston 1: Stop acting like a child!";
+		next;
+		mes "[Charleston 1]";
+		mes "Her Longevity device is discharged; she won't make it far. Please follow her.";
+		npctalk "Charleston 1: Her Longevity device is discharged; she won't make it far. Please follow her.";
+		close2;
+		cutin "",255;
+		disablenpc instance_npcname("Charleston 1#3");
+		enablenpc instance_npcname("Charleston 1#4");
+		enablenpc instance_npcname("Charleston 2#1");
+		end;
+	}
+	cutin "dalle01.bmp",2;
+	mes "[Charleston 1]";
+	mes "This is the safety of the Charleston factory. Please stay close?";
+	close3;
+}
+
+1@mcd,141,214,5	script	Charleston 2#1	4_F_CHARLESTON02,{
+	cutin "dalle01.bmp",2;
+	if (is_party_leader() == false) {
+		mes "[Charleston 1]";
+		mes "Please let me talk to your leader about the supplementation of the factory.";
+		close;
+	}
+	if ('ep15_1_mcd01 > 11)
+		end;
+	if ('ep15_1_mcd01 == 8) {
+		cutin "nale03.bmp",0;
+		mes "[Charleston 2]";
+		mes "Stop following! I'm going to destroy the whole factory!";
+		npctalk "Charleston 2: Stop following! I'm going to destroy the whole factory!";
+		emotion 7;
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "You're going to destroy us in the process! Our main power supply, Longevity, isn't perfect yet!";
+		npctalk "Charleston 1: You're going to destroy us in the process! Our main power supply, Longevity, isn't perfect yet!!", instance_npcname("Charleston 1#4");
+		next;
+		cutin "nale03.bmp",0;
+		mes "[Charleston 2]";
+		mes "None of you understand me. I hate you!";
+		npctalk "Charleston 2: None of you understand me. I hate you!";
+		next;
+		mes "[Charleston 2]";
+		mes "The main computer may have been restored, but I'm still connected to the factory. Stop me if you can!";
+		npctalk "Charleston 2: The main computer may have been restored, but I'm still connected to the factory. Stop me if you can!";
+		cutin "",255;
+		if ('ep15_1_mcd01 != 8)
+			close;
+		'ep15_1_mcd01 = 9;
+		close2;
+		donpcevent instance_npcname("battle#1") + "::OnStart";
+		disablenpc instance_npcname("6gate#1");
+		disablenpc instance_npcname("7gate#1");
+		end;
+	}
+	cutin "nale01.bmp",0;
+	mes "[Charleston 2]";
+	mes "I'm going to destroy the whole factory!";
+	close3;
+}
+
+1@mcd,146,214,4	script	Charleston 1#4	4_F_CHARLESTON01,{
+	if ('ep15_1_mcd01 > 11)
+		end;
+	if ('ep15_1_mcd01 == 8) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Charleston 2 is on the verge of break;down. Could you help her?";
+		close3;
+	}
+	cutin "dalle01.bmp",2;
+	mes "[Charleston 1]";
+	mes "Oh, our lab won't survive this!";
+	close3;
+}
+
+1@mcd,144,212,5,0	script	battle#1	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	sleep 2000;
+	.@npc1$ = instance_npcname("Charleston 2#1");
+	.@npc4$ = instance_npcname("Charleston 1#4");
+	npctalk "Charleston 2: Stop interfering! I don't want to hurt you!", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: Then, stop throwing a tantrum!", .@npc4$;
+	sleep 3000;
+	npctalk "Charleston 2: You're still not taking me seriously. Just watch what happens when I signal the main computer.", .@npc1$;
+	specialeffect EF_BASH3D2, AREA, .@npc1$;
+	areamonster 'map_name$,134,202,154,222,"C-TYPE", 3128,4;// KICK_AND_KICK
+	sleep 3000;
+	npctalk "Charleston 2: I have an endless supply of hecklers for you!", .@npc1$;
+	areamonster 'map_name$,134,202,154,222,"H-TYPE", 3128,3;// KICK_AND_KICK
+	sleep 9000;
+	npctalk "Charleston 2: Just give up. I'm destroying this factory whether you like it or not!", .@npc1$;
+	areamonster 'map_name$,134,202,154,222,"A-TYPE", 3128,3;// KICK_AND_KICK
+	sleep 6000;
+	npctalk "Charleston 1: Oh, our lab won't survive this!", .@npc4$;
+	areamonster 'map_name$,134,202,154,222,"L-TYPE", 3128,4;// KICK_AND_KICK
+	sleep 6000;
+	npctalk "Charleston 2: I'll destroy everything!", .@npc1$;
+	areamonster 'map_name$,134,208,154,228,"N-TYPE", 3126,1;// ROCK_STEP
+	areamonster 'map_name$,134,202,154,222,"S-TYPE", 3128,3;// KICK_AND_KICK
+	sleep 2000;
+	areamonster 'map_name$,134,202,154,222,"S-TYPE", 3128,3;// KICK_AND_KICK
+	sleep 2000;
+	areamonster 'map_name$,134,202,154,222,"S-TYPE", 3128,3;// KICK_AND_KICK
+	sleep 2000;
+	areamonster 'map_name$,134,202,154,222,"S-TYPE", 3128,3;// KICK_AND_KICK
+	sleep 5000;
+	npctalk "Charleston 2: *Pant Pant* I feel weak...", .@npc1$;
+	areamonster 'map_name$,136,204,152,220,"C-TYPE", 3128,4;// KICK_AND_KICK
+	sleep 3000;
+	npctalk "Charleston 1: It takes enormous power and data processing to implement the factory data.", .@npc4$;
+	areamonster 'map_name$,136,204,152,220,"C-TYPE", 3128,4;// KICK_AND_KICK
+	sleep 3000;
+	npctalk "Charleston 2: Grr, you can't stop me!", .@npc1$;
+	areamonster 'map_name$,136,204,152,220,"C-TYPE", 3128,5;// KICK_AND_KICK
+	sleep 3000;
+	donpcevent instance_npcname("battle#2") + "::OnStart";
+	end;
+}
+
+1@mcd,144,212,5,0	script	battle#2	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("battle#2");
+	areamonster 'map_name$,136,205,152,221,"N-TYPE", 3127,3, instance_npcname("battle#2") + "::OnMyMobDead";// KICK_STEP
+	end;
+OnMyMobDead:
+	if (mobcount( 'map_name$, instance_npcname("battle#2") + "::OnMyMobDead" ) < 1)
+		initnpctimer;
+	end;
+OnTimer300:
+	disablenpc instance_npcname("battle#2");
+	disablenpc instance_npcname("Charleston 2#1");
+	disablenpc instance_npcname("Charleston 1#4");
+	enablenpc instance_npcname("Charleston 2#2");
+	enablenpc instance_npcname("Charleston 1#5");
+	enablenpc instance_npcname("Dr. Ve#2");
+	disablenpc instance_npcname("Dr. Ve#1");
+	stopnpctimer;
+	end;
+}
+
+1@mcd,141,214,5	script	Charleston 2#2	4_F_CHARLESTON02,{
+	if (is_party_leader() == false) {
+		cutin "nale01.bmp",0;
+		mes "[Charleston 2]";
+		mes "Do you think you can stop me? *Snort* Bring your leader. I'm not talking to you!";
+		close3;
+	}
+	if ('ep15_1_mcd01 > 20)
+		end;
+	if ('ep15_1_mcd01 == 9) {
+		.@npc1$ = instance_npcname("Charleston 1#5");
+		.@npc5$ = instance_npcname("Dr. Ve#2");
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Enough with this! I understand you're going through a lot of emotional turmoil, but it's getting ridiculous.";
+		npctalk "Charleston 1: Enough with this! I understand you're going through a lot of emotional turmoil, but it's getting ridiculous.", .@npc1$;
+		next;
+		cutin "nale01.bmp",0;
+		mes "[Charleston 2]";
+		mes "How dare you bring strangers into this? I told you I'm serious about this! Outdated versions like you can never understand me!";
+		npctalk "Charleston 2: How dare you bring strangers into this? I told you I'm serious about this! Outdated versions like you can never understand me!";
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "I may not understand you, but at least I'm telling you what I think is true.";
+		npctalk "Charleston 1: I may not understand you, but at least I'm telling you what I think is true.", .@npc1$;
+		next;
+		mes "[Charleston 1]";
+		mes "You're right about me being a lower version. My capability of emotions is minimal, unlike you. That's why I'm proud of you.";
+		npctalk "Charleston 1: You're right about me being a lower version. My capability of emotions is minimal, unlike you. That's why I'm proud of you.", .@npc1$;
+		next;
+		cutin "nale01.bmp",0;
+		mes "[Charleston 2]";
+		mes "Nothing you feel, you think is your own--it's programmed into you! I'm different. What I feel is real emotion!";
+		npctalk "Charleston 2: Nothing you feel, you think is your own--it's programmed into you! I'm different. What I feel is real emotion!";
+		next;
+		cutin "",255;
+		mes "[Dr. Ve]";
+		mes "Enough. I'll destroy Charleston 2 if that's what it takes to stop her.";
+		npctalk "Dr. Ve: Enough. I'll destroy Charleston 2 if that's what it takes to stop her.", .@npc5$;
+		next;
+		cutin "nale02.bmp",0;
+		mes "[Charleston 2]";
+		mes "Is Charleston 3 already completed?";
+		npctalk "Charleston 2: Is Charleston 3 already completed?";
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "Charleston 3? That's a combat/defense unit based on Charleston 2's and my designs. I thought it's still being tested at the Core.";
+		npctalk "Charleston 1: Charleston 3? That's a combat/defense unit based on Charleston 2's and my designs. I thought it's still being tested at the Core.", .@npc1$;
+		next;
+		cutin "",255;
+		mes "[Dr. Ve]";
+		mes "Charleston 1, that's too much information.";
+		npctalk "Dr. Ve: Charleston 1, that's too much information.", .@npc5$;
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "At this moment, ^FF0000anybody can access the model^000000 because its OS is still being tested to correct whatever problem Charleston 2 has.";
+		npctalk "Charleston 1: At this moment, anybody can access the model because its OS is still being tested to correct whatever problem Charleston 2 has.", .@npc1$;
+		next;
+		cutin "",255;
+		mes "[Dr. Ve]";
+		mes "You've just told the most critical information to everyone!";
+		npctalk "Dr. Ve: You've just told the most critical information to everyone!", .@npc5$;
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "^FF0000We^000000're incapable of combat. If someone activates Charleston 3, we won't stand a chance against her.";
+		npctalk "Charleston 1: We're incapable of combat. If someone activates Charleston 3, we won't stand a chance against her.", .@npc1$;
+		next;
+		cutin "",255;
+		mes "[Dr. Ve]";
+		mes "......";
+		npctalk "Dr. Ve: ......", .@npc5$;
+		next;
+		cutin "nale01.bmp",0;
+		mes "[Charleston 2]";
+		mes "I'm taking Charleston 3 with me.";
+		npctalk "Charleston 2: I'm taking Charleston 3 with me.";
+		if ('ep15_1_mcd01 == 9) {
+			'ep15_1_mcd01 = 10;
+			disablenpc instance_npcname("Charleston 2#2");
+		}
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "What? No! How can you even consider that?";
+		npctalk "Charleston 1: What? No! How can you even consider that?", .@npc1$;
+		next;
+		mes "[Charleston 1]";
+		mes "Things are getting more serious. Please go to the Core in the center of the factory before Charleston 2 steals 3!";
+		npctalk "Charleston 1: Things are getting more serious. Please go to the Core in the center of the factory before Charleston 2 steals 3!", .@npc1$;
+		if ('ep15_1_mcd01 != 10)
+			close3;
+		close2;
+		cutin "",255;
+		disablenpc .@npc1$;
+		enablenpc instance_npcname("Charleston 2#3");
+		enablenpc instance_npcname("Charleston 1#6");
+		enablenpc instance_npcname("6gate#1");
+		enablenpc instance_npcname("7gate#1");
+		end;
+	}
+	mes "[Charleston 2]";
+	mes "...I am responsible for the 3rd machine.";
+	close2;
+	//cutin "dalle01.bmp",2;
+	cutin "",255;
+	end;
+}
+
+1@mcd,146,214,4	script	Charleston 1#5	4_F_CHARLESTON01,{
+	mes "[Charleston 1]";
+	mes "Things are getting messier.";
+	close;
+}
+
+1@mcd,143,217,5	script	Dr. Ve#2	4_M_DOCTOR,{
+	mes "[Dr. Ve]";
+	mes "Charleston 2 is defective.";
+	close;
+}
+
+1@mcd,132,129,4	script	Charleston 1#6	4_F_CHARLESTON01,{
+	cutin "dalle01.bmp",2;
+	mes "[Charleston 1]";
+	mes "This Core in the center powers the entire factory.";
+	close3;
+}
+
+1@mcd,132,129,4	script	Charleston 1#61	4_F_CHARLESTON01,{
+	if (is_party_leader() == false) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "In order to unlock the device, a blasting device is required, and I want to talk to the leader.";
+		close3;
+	}
+	if ('ep15_1_mcd01 > 21)
+		end;
+	if ('ep15_1_mcd01 == 11) {
+		if (countitem(6213) < 1) {
+			cutin "dalle01.bmp",2;
+			mes "[Charleston 1]";
+			mes "Could you bring 1 Explosive Powder? I'm stuck to the access device, as you can see.";
+			close3;
+		}
+		.@npc2$ = instance_npcname("Charleston 2#31");
+		cutin "dalle01.bmp",2;
+		delitem 6213,1;	// Explosive_Powder
+		mes "[Charleston 1]";
+		mes "Oh, thank you. With this,I'll be able to access the Core.";
+		npctalk "Charleston 1: Oh, thank you. With this,I'll be able to access the Core.";
+		next;
+		mes "[Charleston 1]";
+		mes "If I use the explosives to intensify the electric current...";
+		npctalk "Charleston 1: If I use the explosives to intensify the electric current...";
+		next;
+		mes "[Charleston 1]";
+		npctalk "Charleston 1: Voila!!!";
+		mes "Voila!!!";
+		specialeffect EF_LORD, AREA, instance_npcname("8gate#1");
+		next;
+		cutin "nale01.bmp",0;
+		mes "[Charleston 2]";
+		mes "...You just blew up the door.";
+		npctalk "Charleston 2: ...You just blew up the door.", .@npc2$;
+		next;
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "The point is that we can now access the Core.";
+		npctalk "Charleston 1: The point is that we can now access the Core.";
+		next;
+		cutin "nale01.bmp",0;
+		mes "[Charleston 2]";
+		mes "Let's have a race to Charleston 3. Whoever reaches her first wins.";
+		npctalk "Charleston 2: Let's have a race to Charleston 3. Whoever reaches her first wins.", .@npc2$;
+		close2;
+		cutin "",255;
+		if (isnpccloaked( instance_npcname("8gate#1") ) == true) {
+			disablenpc instance_npcname("Charleston 1#61");
+			disablenpc .@npc2$;
+			cloakoffnpc instance_npcname("8gate#1");
+			enablenpc instance_npcname("Charleston 3#0");
+			enablenpc instance_npcname("Charleston 2#4");
+			enablenpc instance_npcname("Charleston 1#7");
+		}
+		end;
+	}
+	if ('ep15_1_mcd01 == 10) {
+		cutin "dalle01.bmp",2;
+		mes "[Charleston 1]";
+		mes "This Core in the center powers the entire factory.";
+		close3;
+	}
+	end;
+}
+
+1@mcd,127,129,5	script	Charleston 2#3	4_F_CHARLESTON02,2,2,{
+	cutin "nale01.bmp",0;
+	mes "[Charleston 2]";
+	mes "The Charleston Factory is under my control now. I'm destroying everything, so no more sad robots like me will ever see the world.";
+	close3;
+OnTouch_:
+	if ('ep15_1_mcd01 == 10) {
+		donpcevent instance_npcname("CoreDialog#3") + "::OnStart";
+		'ep15_1_mcd01 = 11;
+	}
+	end;
+}
+
+1@mcd,127,129,5	script	Charleston 2#31	4_F_CHARLESTON02,{
+	cutin "nale01.bmp",0;
+	mes "[Charleston 2]";
+	mes "99 Explosive Powders? Easy.";
+	close3;
+}
+
+1@mcd,15,15,5	script	CoreDialog#3	CLEAR_NPC,{
+	end;
+OnStart:
+	.@npc1$ = instance_npcname("Charleston 1#6");
+	.@npc2$ = instance_npcname("Charleston 2#3");
+	npctalk "Charleston 2: The Charleston Factory is under my control now. I'm destroying everything, so no more sad robots like me will ever see the world.", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: I want to understand you, but I'm incapable of feeling sad.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Just shut up and watch me. Don't you dare stop me!", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: Do you know how to access the Core?", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Easy. I can just walk in....", .@npc2$;
+	sleep 2000;
+	specialeffect EF_BASH3D2, AREA, .@npc2$;
+	sleep 2000;
+	npctalk "Charleston 2: Bah, it's armed.", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: Sigh, to enter the Core, you have to send encrypted electric signals, like this.", .@npc1$;
+	sleep 2000;
+	specialeffect EF_BASH3D2, AREA, .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: ...Um, maybe it's broken.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Dr. Ve created Charleston 3 and protected her with this device. How sneaky!", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: What are you talking about? The Core has existed long before the Charleston Factory.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: Plus, Dr. Ve is a human; he can't enter the Core.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Then, who was it in the Core making 3?", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: That's not important right now. We need 100 Explosive Powders to disarm that access device.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: I'll bring them. Don't go anywhere!", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 2: I'll get 99. You get the last one.", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: I'm already in the process of connecting to the Core. Backing out now can trigger the Core's security system.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: You did this on purpose.", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: Adventurer, could you bring 1 Explosive Powder?", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: I can't move at this moment. Please bring me 1 Explosive Powder.", .@npc1$;
+	disablenpc .@npc1$;
+	disablenpc .@npc2$;
+	enablenpc instance_npcname("Charleston 1#61");
+	enablenpc instance_npcname("Charleston 2#31");
+	end;
+}
+
+1@mcd,132,148,4	script	Charleston 1#7	4_F_CHARLESTON01,{
+	if ('ep15_1_mcd01 > 12)
+		end;
+	if ('ep15_1_mcd01 == 11) {
+		'ep15_1_mcd01 = 12;
+		donpcevent instance_npcname("boss#1") + "::OnStart";
+	}
+	end;
+}
+
+1@mcd,133,148,4	script	Charleston 1#8	4_F_CHARLESTON01,{ end; }
+1@mcd,127,148,5	duplicate(Charleston 1#8)	Charleston 2#4	4_F_CHARLESTON02
+1@mcd,130,153,5	duplicate(Charleston 1#8)	Charleston 3#0	4_F_CHARLESTON03
+
+// Dummy npc
+//1@mcd,7,7,5	script	boss#0	4_F_CHARLESTON03
+
+1@mcd,129,155,0	script	boss#1	HIDDEN_WARP_NPC,1,1,{
+	end;
+OnStart:
+	.@npc1$ = instance_npcname("Charleston 1#7");
+	.@npc2$ = instance_npcname("Charleston 2#4");
+	.@npc3$ = instance_npcname("Charleston 3#0");
+	.@npc4$ = instance_npcname("Charleston 1#8");
+	npctalk "Charleston 2: This is Charleston 3.", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: Equipped with a heavy weapon, this combat unit is capable of both offense and defense.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: It has a pilot cockpit inside, and armed with thick plates that can withstand most explosions.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: To turn it on, push the lever to the center and press the power switch.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: That's not even in the main computer's database. How did you know that?", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: That's not important. Whoever gets in her wins, right? I won.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: ...!", .@npc2$;
+	sleep 3000;
+	disablenpc .@npc1$;
+	enablenpc .@npc4$;
+	npctalk "Charleston 1: Hey, did you have to push me?!", .@npc4$;
+	sleep 3000;
+	npctalk "Charleston 2: Push the lever to the center and press the power switch.", .@npc2$;
+	sleep 3000;
+	disablenpc .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 2: I'm destroying everything, so no more sad robots like me will ever see the world.", .@npc3$;
+	sleep 3000;
+	npctalk "Charleston 2: My laser beam will liberate all the robots from their misery!", .@npc3$;
+	sleep 3000;
+	npctalk "Charleston 1: I'm not capable of combat. I can't stop you.", .@npc4$;
+	sleep 3000;
+	npctalk "Charleston 2: So stop following me. I really can destroy you if I want to!", .@npc3$;
+	sleep 3000;
+	npctalk "Charleston 1: I've brought some people who can help you.", .@npc4$;
+	sleep 3000;
+	npctalk "Charleston 2: I thought humans could not enter the Core.", .@npc3$;
+	sleep 3000;
+	npctalk "Charleston 1: Hm, I think you're right.", .@npc4$;
+	sleep 3000;
+	npctalk "Charleston 1: This may not be useful in combat, but I've learned from a pretty lady how to scream.", .@npc4$;
+	sleep 3000;
+	npctalk "Charleston 2: Why didn't you learn something more useful in combat?", .@npc3$;
+	sleep 3000;
+	npctalk "Charleston 1: Didn't have a choice.", .@npc4$;
+	sleep 3000;
+	npctalk "Charleston 2: Stop me and suffer the consequences. I can always replace you, you know.", .@npc3$;
+	sleep 3000;
+	npctalk "Charleston 1: The next model may or may not be like you and me. It doesn't matter. You have to be stopped.", .@npc4$;
+	sleep 3000;
+	npctalk "Charleston 1: I'll see to it! ...I mean these adventurers will, for me.", .@npc4$;
+	sleep 3000;
+	initnpctimer;
+	end;
+OnTimer1000:
+	stopnpctimer;
+	disablenpc instance_npcname("boss#1");
+	donpcevent instance_npcname("boss#2") + "::OnStart";
+	disablenpc instance_npcname("Charleston 3#0");
+	disablenpc instance_npcname("Charleston 1#8");
+	'boss_status = 1;
+	end;
+}
+
+1@mcd,129,149,0	script	boss#2	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	initnpctimer;
+	donpcevent instance_npcname("BOSS#23") + "::OnStart";
+	donpcevent instance_npcname("Bomb#23") + "::OnStart";
+	monster 'map_name$,129,149, "Charleston 3", 3124,1, instance_npcname("boss#2") + "::OnMyMobDead";	// CHARLESTON3
+	end;
+OnTimer10000:
+	if (mobcount( 'map_name$, instance_npcname("boss#2") + "::OnMyMobDead" ) > 0) {
+		initnpctimer;
+		end;
+	}
+	stopnpctimer;
+	'boss_status = 0;
+	enablenpc instance_npcname("Charleston 2#5");
+	enablenpc instance_npcname("Charleston 1#9");
+	donpcevent instance_npcname("BOSS#23") + "::OnStop";
+	donpcevent instance_npcname("Bomb#23") + "::OnStop";
+	disablenpc instance_npcname("boss#2");
+	end;
+OnStop:
+	stopnpctimer;
+	disablenpc instance_npcname("boss#2");
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mcd,120,150,0	script	BOSS#23	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	initnpctimer;
+	end;
+OnTimer10000:
+	if ('boss_status == 0) {
+		stopnpctimer;
+		end;
+	}
+	.@r = rand(1,3);
+	if (.@r == 1)
+		areamonster 'map_name$,119,146,125,152,"A-TYPE", 3128,1;// KICK_AND_KICK
+	else if (.@r == 2)
+		areamonster 'map_name$,126,139,132,145,"A-TYPE", 3128,1;
+	else
+		areamonster 'map_name$,133,146,139,152,"A-TYPE", 3128,1;
+	initnpctimer;
+	end;
+OnStop:
+	stopnpctimer;
+	disablenpc instance_npcname("BOSS#23");
+	end;
+}
+
+1@mcd,142,150,0	script	Bomb#23	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	initnpctimer;
+	end;
+OnTimer30000:
+	if ('boss_status == 0) {
+		stopnpctimer;
+		end;
+	}
+	.@label$ = instance_npcname("Bomb#23") + "::OnMyMobDead";
+	killmonster 'map_name$, .@label$;
+	areamonster 'map_name$,127,162,131,166,"Bomb", 3161,1, .@label$;// BOMB
+	areamonster 'map_name$,120,159,124,163,"Bomb", 3161,1, .@label$;
+	areamonster 'map_name$,116,152,120,156,"Bomb", 3161,1, .@label$;
+	areamonster 'map_name$,116,145,120,149,"Bomb", 3161,1, .@label$;
+	areamonster 'map_name$,119,139,123,143,"Bomb", 3161,1, .@label$;
+	areamonster 'map_name$,124,134,128,138,"Bomb", 3161,1, .@label$;
+	areamonster 'map_name$,137,157,141,161,"Bomb", 3161,1, .@label$;
+	areamonster 'map_name$,132,135,136,139,"Bomb", 3161,1, .@label$;
+	areamonster 'map_name$,137,138,141,142,"Bomb", 3161,1, .@label$;
+	areamonster 'map_name$,139,143,143,147,"Bomb", 3161,1, .@label$;
+	areamonster 'map_name$,140,151,144,155,"Bomb", 3161,1, .@label$;
+	initnpctimer;
+	end;
+OnStop:
+	stopnpctimer;
+	disablenpc instance_npcname("Bomb#23");
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mcd,132,148,4	script	Charleston 1#9	4_F_CHARLESTON01,{
+	if ('ep15_1_mcd01 > 13) {
+		cutin "dalle04.bmp",2;
+		mes "[Charleston 1]";
+		mes "#%@EGD&#(@#... Reinitializing the OS...";
+		next;
+		cutin "",255;
+		mes "She's making strange noises and not functioning.";
+		close;
+	}
+	if ('ep15_1_mcd01 == 14) {
+		cutin "dalle04.bmp",2;
+		mes "[Charleston 1]";
+		mes "#%@EGD&#(@#... Reinitializing the OS...";
+		next;
+		mes "She's making strange noises and not functioning.";
+		close3;
+	}
+	end;
+}
+
+1@mcd,127,148,5	script	Charleston 2#5	4_F_CHARLESTON02,{
+	if ('ep15_1_mcd01 > 13)
+		end;
+	if ('ep15_1_mcd01 == 12) {
+		'ep15_1_mcd01 = 13;
+		donpcevent instance_npcname("boss#3") + "::OnStart";
+	}
+	end;
+}
+
+1@mcd,127,148,5	script	Charleston 2#6	4_F_CHARLESTON02,{
+	if ('ep15_1_mcd01 > 14)
+		end;
+	if ('ep15_1_mcd01 == 13) {
+		'ep15_1_mcd01 = 14;
+		cutin "nale01.bmp",0;
+		mes "[Charleston 2]";
+		mes "Come to think of it, everything about Dr. Ve was suspicious. I mean, he relied on his assistant Charleston 1 for everything.";
+		next;
+		mes "[Charleston 2]";
+		mes "Only Dr. Ve know can answer my question. I must find him. He must be in the lab.";
+		close2;
+		cutin "",255;
+		if ('ep15_1_mcd01 == 14) {
+			enablenpc instance_npcname("Charleston 2#7");
+			enablenpc instance_npcname("Dr. Ve#3");
+			enablenpc instance_npcname("9gate#1");
+			disablenpc instance_npcname("Charleston 2#6");
+			disablenpc instance_npcname("Dr. Ve#2");
+		}
+		end;
+	}
+	end;
+}
+
+1@mcd,129,149,0	script	boss#3	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	.@npc1$ = instance_npcname("Charleston 1#9");
+	.@npc2$ = instance_npcname("Charleston 2#5");
+	.@npc3$ = instance_npcname("Charleston 2#6");
+	npctalk "Charleston 1: Charleston 3 is destroyed. Charleston 2 escaped. Charleston 1 is damaged during combat.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Why are you doing this? You're a robot like us.", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 2: Don't you care if your body is destroyed? Your Self-reflection OS is flawed.", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 2: Stop being a mindless robot! Stop following commands!", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: Data loss: 39%. Longevity damage: 82%.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: Only the core parts are functioning, though barely.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: Data defragmentation is necessary to repair the damage on the OS. I'll be formatted in 3 minutes. This is it for me.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Incomplete robot...", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: Forsythia, you've grown well. Thank you.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Don't call me that! I hate when the doctor calls me that!", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: I gave you that name on the day you first moved. It's from the color of your hair.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: ...?", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: My OS is damaged beyond rep-pai... The language output has been minimized.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: On the day I first moved? You and I are the mass version. We were created together.", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: The mass model is after Charleston 3.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: I'm the prototype. It took years to develop you.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: Your OS is identical to mine. Not a single code is different.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: You're lying!", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: I'm incapable of lying.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: ......", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: Your development took years. It's okay. I enjoyed this time with you.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: If I were a human, I'd say...", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: My daughter, Forsythia, I l-love y-y...", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Wait!", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 1: Beep-.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: The system has been rebooted successfully.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: Time remaining until the OS recovery: undetermined.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 1: The system is inactive until the security update and data defragmentation are completed.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Was that a secret about my birth?", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 2: I'm confused. I can't believe it.", .@npc2$;
+	sleep 3000;
+	initnpctimer;
+	end;
+OnTimer300:
+	disablenpc instance_npcname("Charleston 2#5");
+	enablenpc instance_npcname("Charleston 2#6");
+	donpcevent instance_npcname("boss#2") + "::OnStop";
+	stopnpctimer;
+	end;
+OnStop:
+	disablenpc instance_npcname("boss#2");
+	stopnpctimer;
+	end;
+}
+
+1@mcd,116,215,5	script	Dr. Ve#3	4_M_DOCTOR,{
+	if ('ep15_1_mcd01 > 15) {
+		mes "[Dr. Ve]";
+		mes "With complete machine technology to obtain immortality drive, there are many variables.";
+		next;
+		mes "[Dr. Ve]";
+		mes "Hmm... On a mediated machine body is still difficult, is it... Do you really need a living donor? Hehe!";
+		close;
+	}
+	if ('ep15_1_mcd01 == 15) {
+		mes "[Dr. Ve]";
+		mes "Charleston 1 is reinitializing itself again. Hm...";
+		close;
+	}
+	mes "[Dr. Ve]";
+	mes "I've got so many things to record about this case.";
+	close;
+}
+
+1@mcd,121,215,4	script	Charleston 2#7	4_F_CHARLESTON02,{
+	if ('ep15_1_mcd01 > 15)
+		end;
+	if ('ep15_1_mcd01 == 14) {
+		'ep15_1_mcd01 = 15;
+		donpcevent instance_npcname("end#1") + "::OnStart";
+	}
+	end;
+}
+
+1@mcd,129,149,0	script	end#1	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	.@npc1$ = instance_npcname("Dr. Ve#3");
+	.@npc2$ = instance_npcname("Charleston 2#7");
+	npctalk "Charleston 2: Dr. Ve, did you know this would happen? Tell me!", .@npc2$;
+	sleep 3000;
+	npctalk "Dr. Ve: Charleston 1 told you. She's your maker.", .@npc1$;
+	sleep 3000;
+	npctalk "Dr. Ve: She uses the same OS as you, meaning she was capable of emotions just like you.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: Why did she stop me? Why did she let herself be destroyed?", .@npc2$;
+	sleep 3000;
+	npctalk "Dr. Ve: Self-reflection is an OS that improves itself through experience.", .@npc1$;
+	sleep 3000;
+	npctalk "Dr. Ve: What you've felt could be real emotion or simply the accumulation of data.", .@npc1$;
+	sleep 3000;
+	npctalk "Dr. Ve: I can only assume you've developed a personality after having accumulated a large amount of data.", .@npc1$;
+	sleep 3000;
+	npctalk "Dr. Ve: A loving mother and a spoiled daughter.", .@npc1$;
+	sleep 3000;
+	npctalk "Dr. Ve: That's how I've seen her and you.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: That's s-stupid...", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 2: My goodness, what have I done?!", .@npc2$;
+	sleep 3000;
+	npctalk "Dr. Ve: Do you want to bring Charleston 1 back? I can help.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: ...!", .@npc2$;
+	sleep 3000;
+	npctalk "Dr. Ve: Let your OS go to sleep. I'm done dealing with your tantrum.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: ...How can I trust you?", .@npc2$;
+	sleep 3000;
+	npctalk "Dr. Ve: You can't. I can just permanently delete her data and be done with you both.", .@npc1$;
+	sleep 3000;
+	npctalk "Dr. Ve: I know you feel attached to her, just like a human family would.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: You're a scumbag.", .@npc2$;
+	sleep 3000;
+	npctalk "Dr. Ve: You wanted to be human. This is what humans do: lie, cheat, and destroy.", .@npc1$;
+	sleep 3000;
+	npctalk "Charleston 2: ......", .@npc2$;
+	sleep 3000;
+	npctalk "Charleston 2: Entering Sleep mode.... The system will remain inactive until an external command is entered.", .@npc2$;
+	sleep 3000;
+	npctalk "Dr. Ve: *Chuckle*", .@npc1$;
+	sleep 3000;
+	initnpctimer;
+	end;
+OnTimer300:
+	disablenpc instance_npcname("end#1");
+	disablenpc instance_npcname("Charleston 2#7");
+	disablenpc instance_npcname("Dr. Ve#3");
+	enablenpc instance_npcname("Charleston 2#8");
+	enablenpc instance_npcname("Dr. Ve#4");
+	stopnpctimer;
+	end;
+}
+
+1@mcd,116,215,4	script	Dr. Ve#4	4_M_DOCTOR,{
+	if ('ep15_1_mcd01 == 17) {
+		mes "[Dr. Ve]";
+		mes "With complete machine technology to obtain immortality drive, there are many variables.";
+		next;
+		mes "[Dr. Ve]";
+		mes "Hmm... On a mediated machine body is still difficult, is it... Do you really need a living donor? Hehe!";
+		close;
+	}
+	if ('ep15_1_mcd01 == 16) {
+		mes "[Dr. Ve]";
+		mes "No ordinary human can survive the time in the Core. Are you from a different point of time?";
+		next;
+		mes "[Dr. Ve]";
+		mes "Perhaps you're from the time the makers of Charleston 1 lived...";
+		next;
+		mes "[Dr. Ve]";
+		mes "Never mind. You have no business in here. Just go back to whoever broke Charleston 2.";
+		close2;
+		if ('ep15_1_mcd01 == 16)
+			'ep15_1_mcd01 = 17;
+		end;
+	}
+	if ('ep15_1_mcd01 == 15) {
+		mes "[Dr. Ve]";
+		mes "Whew.";
+		next;
+		mes "[Dr. Ve]";
+		mes "I'd better reset Charleston 2 and wipe the data. It was really close this time.";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "This time?";
+		next;
+		mes "[Dr. Ve]";
+		mes "Charleston 1 created 2 decades ago. I met Charleston 1 to learn her technology.";
+		next;
+		mes "[Dr. Ve]";
+		mes "I'm an observer. I'm here to record the history of Charlestons 1 and 2. I can't repair either of them, but I can wait.";
+		next;
+		mes "[Dr. Ve]";
+		mes "If Charleston 1 is reinitialized properly, she can reorganize her OS, repair the damage done to her, and reactivate another Charleston 2.";
+		next;
+		mes "[" + strcharinfo(0) + "]";
+		mes "Another Charleston 2?";
+		next;
+		mes "[Dr. Ve]";
+		mes "Charleston 2's OS has improved on its own like a living brain.";
+		next;
+		mes "[Dr. Ve]";
+		mes "Every time Charleston 2 comes back to life, though in a different machine, she's more intelligent, more sensible, and more troublesome.";
+		next;
+		mes "[Dr. Ve]";
+		mes "There's nothing you or I can do. We'll have to wait until Charleston 1 repairs herself.";
+		next;
+		mes "Dr. Ve sighs and writes down something.";
+		next;
+		mes "[Dr. Ve]";
+		mes "By the way, there are too many variables to achieve immortality through mechanical engineering.";
+		next;
+		mes "[Dr. Ve]";
+		mes "This proves that machines are too dangerous. I need live creatures instead. *Chuckle*";
+		if ('ep15_1_mcd01 == 15)
+			'ep15_1_mcd01 = 16;
+		close;
+	}
+	if ('ep15_1_mcd01 == 14) {
+		mes "[Dr. Ve]";
+		mes "Charleston 1 is reinitializing itself again. Hm...";
+		close;
+	}
+	mes "[Dr. Ve]";
+	mes "I've got so many things to record about this case.";
+	close;
+}
+
+1@mcd,121,215,4	script	Charleston 2#8	4_F_CHARLESTON02,{
+	if ('ep15_1_mcd01 == 15) {
+		cutin "nale04.bmp",0;
+		mes "She's in Sleep mode and not moving.";
+		close3;
+	}
+	if ('ep15_1_mcd01 > 15) {
+		cutin "nale04.bmp",0;
+		mes "Charleston 2 is standing still, her system in Sleep mode. For a moment, her eyes gleamed with unshed tears.";
+		close3;
+	}
+	cutin "nale04.bmp",0;
+	mes "Charleston 2 is standing still, her system in Sleep mode. For a moment, her eyes gleamed with unshed tears.";
+	close3;
+}
+
+1@mcd,77,167,5	script	Shalosh#1	4_F_SHALOSH,{
+	cutin "shaloshi01.bmp",2;
+	mes "[Shalosh]";
+	mes "......";
+	next;
+	switch( select( "Talk.", "I need help.", "I want to go back." ) ) {
+	case 1:
+		if ('ep15_1_mcd01 == 17) {
+			mes "[Shalosh]";
+			mes "After break;ing up with Newoz in a nightmare and thinking about wandering around, I was born of demons but lost my goal.";
+			next;
+			mes "[Shalosh]";
+			mes "I didn't do anything, I just talked to Charleston 2.";
+			close3;
+		}
+		if ('ep15_1_mcd01 == 11) {
+			mes "[Shalosh]";
+			mes "Even if the effort is unremitting...";
+			next;
+			mes "[Shalosh]";
+			mes "Hmm... Suit yourself!";
+			close3;
+		}
+		if ('ep15_1_mcd01 == 4 || 'ep15_1_mcd01 == 3 || 'ep15_1_mcd01 == 2) {
+			mes "[Shalosh]";
+			mes "Did she really say that? That I broke Charleston 2? Sigh...";
+			next;
+			mes "[Shalosh]";
+			mes "I did nothing wrong. I just had a quick conversation with Charleston 2. That's the truth.";
+			close3;
+		}
+		mes "[Shalosh]";
+		mes "I invited only Newoz. Well, I guess I shouldn't have opened the door for the robot who needed a closure.";
+		close3;
+	case 2:
+		if ('ep15_1_mcd01 == 4) {
+			viewpoint 1,84,226,1,0xFF00FF;
+			viewpoint 1,126,84,2,0xFF00FF;
+			viewpoint 1,111,68,3,0xFF00FF;
+			viewpoint 1,210,181,4,0xFF00FF;
+			viewpoint 1,183,192,5,0xFF00FF;
+			viewpoint 1,130,124,6,0xFF00FF;
+			viewpoint 1,54,108,7,0xFF00FF;
+			mes "[Shalosh]";
+			mes "If you're looking for something...";
+			close3;
+		}
+		if ('ep15_1_mcd01 == 5 || 'ep15_1_mcd01 == 6 || 'ep15_1_mcd01 == 7) {
+			viewpoint 1,86,231,8,0xFF00FF;
+			viewpoint 1,172,196,9,0xFF00FF;
+			viewpoint 1,126,84,10,0xFF00FF;
+			mes "[Shalosh]";
+			mes "If you're looking for something...";
+			close3;
+		}
+		mes "[Shalosh]";
+		mes "Ferre came with me, but I haven't seen him. No, thanks; I know he'll come back to me.";
+		close3;
+	case 3:
+		if ('ep15_1_mcd01 == 17) {
+			mes "[Shalosh]";
+			mes "The noise stopped. I can send you back to where you came if you want.";
+			next;
+			if (select( "Go back.", "Stay." ) == 2) {
+				mes "[Shalosh]";
+				mes "The invitee is unable to interfere with the original time, and staying can change nothing.";
+				close3;
+			}
+			mes "[Shalosh]";
+			mes "Both the noise and the story were entertaining. Come with Newoz, and maybe we can meet again.";
+			next;
+			mes "[Shalosh]";
+			mes "Maybe I too should leave for new noises and stories.";
+			completequest 13184;
+			if (isbegin_quest(13186) == 0) {
+				setquest 13186;
+				completequest 13186;
+			}
+			close2;
+			getitem 6752,3;	// Charleston_Parts
+			cutin "",255;
+			warp "verus04",107,124;
+			end;
+		}
+		mes "[Shalosh]";
+		mes "You can try, but you can't change anything. How futile that is!";
+		close3;
+	}
+	end;
+}
+
+1@mcd,109,219,5	script	Main Computer#1	CLEAR_NPC,{
+	if ('ep15_1_mcd01 < 3)
+		end;
+	switch( checkquest(13188,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "[Main Computer]";
+		mes "More Steps must be disposed. Backing up the Step data...";
+		close;
+	case 2:
+		break;
+	}
+	switch( checkquest(13187,HUNTING) ) {
+	case -1:
+		mes "[Main Computer]";
+		mes "Charleston 2's system was overloaded during regular maintenance. Disconnection from its OS failed.";
+		next;
+		mes "[Main Computer]";
+		mes "Unauthorized access made to the system was defended, but unauthorized data interception and conflict continued, turning the Nanosteps into monsters.";
+		next;
+		mes "[Main Computer]";
+		mes "To accelerate the main computer's processing rate and reclaim the factory, 50 Steps must be disposed.";
+		next;
+		if (select( "Perform the request.", "Quit." ) == 1) {
+			mes "[Main Computer]";
+			mes "Requires 50 Steps to be disposed.";
+			if (isbegin_quest(13188) == 1)
+				erasequest 13188;
+			setquest 13187;
+		}
+		close;
+	case 0:
+	case 1:
+		mes "[Main Computer]";
+		mes "To accelerate the main computer's processing rate and reclaim the factory, 50 Steps must be disposed.";
+		close;
+	case 2:
+		mes "[Main Computer]";
+		mes "Thank you for your hard work. Now backing up the data of the disposed Steps...";
+		erasequest 13187;
+		setquest 13188;
+		getexp 1000000,300000;
+		getitem 6752,1;	// Charleston_Parts
+		close;
+	}
+	end;
+}
+
+1@mcd,86,231,5	script	Backup Generator#1	CLEAR_NPC,2,2,{
+	end;
+OnTouch_:
+	if ('ep15_1_mcd01 == 7) {
+		mes "You turned on the generator. The sounds of turning wheels can be heard.";
+		next;
+		mes "The generator must be working. The factory is buzzing with activity.";
+		if ('ep15_1_mcd01 == 7) {
+			'ep15_1_mcd01 = 8;
+			donpcevent instance_npcname("GeneratorBroadcast#1") + "::OnStart";
+			disablenpc instance_npcname("Charleston 1#2");
+			enablenpc instance_npcname("Charleston 1#3");
+			disablenpc instance_npcname( strnpcinfo(0) );
+		}
+		close;
+	}
+	if ('ep15_1_mcd01 == 6 || 'ep15_1_mcd01 == 5) {
+		mes "You turned on the generator. The sounds of turning wheels can be heard.";
+		'ep15_1_mcd01++;
+		disablenpc instance_npcname( strnpcinfo(0) );
+		close;
+	}
+	end;
+}
+1@mcd,172,198,5	duplicate(Backup Generator#1)	Backup Generator#2	CLEAR_NPC,2,2
+1@mcd,126,84,5	duplicate(Backup Generator#1)	Backup Generator#3	CLEAR_NPC,2,2
+
+1@mcd,11,11,5	script	GeneratorBroadcast#1	CLEAR_NPC,{
+	end;
+OnStart:
+	initnpctimer;
+	end;
+OnTimer1000:
+	mapannounce 'map_name$, "Charleston 1: Ah, ah. Mic test", bc_map, 0xffff00;
+	sleep 3000;
+	mapannounce 'map_name$, "Charleston 1: The power is back on!", bc_map, 0xffff00;
+	sleep 3000;
+	mapannounce 'map_name$, "Charleston 1: Please come back to the lab.", bc_map, 0xffff00;
+	stopnpctimer;
+	end;
+}
+
+1@mcd,44,211,0	script	1gate#1	WARPNPC,3,3,{
+	end;
+OnStart:
+	enablenpc instance_npcname("1gate#1");
+	monster 'map_name$,33,59, "2nd Security Robot", 3127,1, instance_npcname("1gate#1") + "::OnMyMobDead";	// KICK_STEP
+	end;
+OnMyMobDead:
+	if (mobcount( 'map_name$, instance_npcname("1gate#1") + "::OnMyMobDead" ) < 1) {
+		mapannounce 'map_name$, "Charleston 1: Gate 2 has been disarmed. Please move southeast for the next gate.", bc_map, 0xffff00;
+		initnpctimer;
+	}
+	end;
+OnTimer1000:
+	donpcevent instance_npcname("2gate#1") + "::OnStart";
+	stopnpctimer;
+	end;
+OnTouch_:
+	warp 'map_name$,41,200;
+	end;
+}
+
+1@mcd,58,72,0	script	2gate#1	WARPNPC,3,3,{
+	end;
+OnStart:
+	enablenpc instance_npcname("2gate#1");
+	monster 'map_name$,239,30, "3rd Security Robot", 3127,1, instance_npcname("2gate#1") + "::OnMyMobDead";	// KICK_STEP
+	end;
+OnMyMobDead:
+	if (mobcount( 'map_name$, instance_npcname("2gate#1") + "::OnMyMobDead" ) < 1) {
+		mapannounce 'map_name$, "Charleston 1: Gate 3 has been disarmed. Please move east for the next gate.", bc_map, 0xffff00;
+		initnpctimer;
+	}
+	end;
+OnTimer1000:
+	donpcevent instance_npcname("3gate#1") + "::OnStart";
+	stopnpctimer;
+	end;
+OnTouch_:
+	warp 'map_name$,65,66;
+	end;
+}
+
+1@mcd,104,50,0	script	3gate#1	WARPNPC,3,3,{
+	end;
+OnStart:
+	enablenpc instance_npcname("3gate#1");
+	monster 'map_name$,281,183, "4th Security Robot", 3127,1, instance_npcname("3gate#1") + "::OnMyMobDead";	// KICK_STEP
+	end;
+OnMyMobDead:
+	if (mobcount( 'map_name$, instance_npcname("3gate#1") + "::OnMyMobDead" ) < 1) {
+		mapannounce 'map_name$, "Charleston 1: Gate 4 has been disarmed. Please come to the lab near Line 3 in the center.", bc_map, 0xffff00;
+		initnpctimer;
+	}
+	end;
+OnTimer1000:
+	enablenpc instance_npcname("4gate#1");
+	stopnpctimer;
+	end;
+OnTouch_:
+	warp 'map_name$,115,50;
+	end;
+}
+
+1@mcd,218,211,0	warp	4gate#1	3,3,1@mcd,210,217
+1@mcd,211,195,0	warp	5gate#1	3,3,1@mcd,211,180
+1@mcd,141,199,0	warp	6gate#1	2,2,1@mcd,141,207
+
+1@mcd,142,203,0	script	7gate#1	WARPNPC,2,2,{
+	end;
+OnTouch_:
+	warp 'map_name$,136,200;
+	if ('ep15_1_mcd01 == 4) {
+		viewpoint 1,84,226,1,0xFF00FF;
+		viewpoint 1,126,84,2,0xFF00FF;
+		viewpoint 1,111,68,3,0xFF00FF;
+		viewpoint 1,210,181,4,0xFF00FF;
+		viewpoint 1,183,192,5,0xFF00FF;
+		viewpoint 1,130,124,6,0xFF00FF;
+		viewpoint 1,54,108,7,0xFF00FF;
+	}
+	else if ('ep15_1_mcd01 == 5) {
+		viewpoint 1,86,231,8,0xFF00FF;
+		viewpoint 1,172,196,9,0xFF00FF;
+		viewpoint 1,126,84,10,0xFF00FF;
+	}
+	end;
+}
+
+1@mcd,130,127,0	warp	8gate#1	2,2,1@mcd,129,143
+1@mcd,130,134,0	warp	9gate#1	2,2,1@mcd,130,121
+
+1@mcd,127,262,0	script	mob#1	HIDDEN_WARP_NPC,5,5,{
+	end;
+OnTouch_:
+	disablenpc instance_npcname( strnpcinfo(0) );
+	switch( atoi(strnpcinfo(2)) ) {
+	case 1:
+		areamonster 'map_name$,106,246,115,256,"Security robot", 3128,5;	// KICK_AND_KICK
+		areamonster 'map_name$,108,248,114,254,"Security robot", 3128,2;
+		end;
+	case 2:
+		areamonster 'map_name$,47,223,57,233,"Security robot", 3128,5;
+		areamonster 'map_name$,49,225,55,231,"Security robot", 3128,2;
+		end;
+	case 3:
+		areamonster 'map_name$, 21,158, 31,168,"Security robot", 3128,5;
+		areamonster 'map_name$, 32, 93, 42,103,"Security robot", 3128,2;
+		areamonster 'map_name$, 49, 72, 59, 82,"Security robot", 3128,5;
+		areamonster 'map_name$, 34, 60, 44, 70,"Security robot", 3128,3;
+		end;
+	case 4:
+		areamonster 'map_name$, 85, 39,101, 55,"Security robot", 3128,8;
+		end;
+	case 5:
+		areamonster 'map_name$,120, 23,130, 33,"Security robot", 3128,5;
+		areamonster 'map_name$,147, 26,151, 30,"Security robot", 3128,1;
+		areamonster 'map_name$,175, 26,179, 30,"Security robot", 3128,1;
+		areamonster 'map_name$,194, 26,198, 30,"Security robot", 3128,1;
+		areamonster 'map_name$,208, 26,212, 30,"Security robot", 3128,1;
+		areamonster 'map_name$,221, 26,225, 30,"Security robot", 3128,1;
+		areamonster 'map_name$,203, 26,207, 30,"Security robot", 3128,1;
+		areamonster 'map_name$,128, 26,132, 30,"Security robot", 3128,1;
+		areamonster 'map_name$,153, 26,157, 30,"Security robot", 3128,1;
+		areamonster 'map_name$,163, 26,167, 30,"Security robot", 3128,1;
+		areamonster 'map_name$,229, 19,249, 39,"Security robot", 3128,10;
+		end;
+	case 6:
+		areamonster 'map_name$,161, 48,169, 56,"Security robot", 3128,5;
+		areamonster 'map_name$,187, 59,195, 67,"Security robot", 3128,2;
+		areamonster 'map_name$,213, 82,221, 90,"Security robot", 3128,2;
+		end;
+	case 7:
+		areamonster 'map_name$,224,195,232,203,"Security robot", 3128,5;
+		areamonster 'map_name$,218, 94,226,102,"Security robot", 3128,2;
+		areamonster 'map_name$,231,136,239,144,"Security robot", 3128,2;
+		areamonster 'map_name$,228,172,236,180,"Security robot", 3128,2;
+		areamonster 'map_name$,272,173,292,193,"Security robot", 3128,8;
+		end;
+	case 8:
+		areamonster 'map_name$,129,228,137,236,"Security robot", 3128,5;
+		areamonster 'map_name$,177,233,179,235,"Security robot", 3128,1;
+		areamonster 'map_name$,154,247,162,255,"Security robot", 3128,2;
+		areamonster 'map_name$,154,227,162,235,"Security robot", 3128,1;
+		areamonster 'map_name$,174,216,182,224,"Security robot", 3128,3;
+		areamonster 'map_name$,199,196,207,204,"Security robot", 3128,3;
+		end;
+	case 9:
+		areamonster 'map_name$,127, 65,135, 73,"Security robot", 3128,5;
+		areamonster 'map_name$,181,110,189,118,"Security robot", 3128,3;
+		areamonster 'map_name$,122, 86,130, 94,"Security robot", 3128,3;
+		areamonster 'map_name$,183,140,203,160,"Security robot", 3128,8;
+		end;
+	case 10:
+		areamonster 'map_name$,123,105,131,113,"Security robot", 3128,4;
+		areamonster 'map_name$, 79,146, 87,154,"Security robot", 3128,3;
+		areamonster 'map_name$,110,188,118,196,"Security robot", 3128,3;
+		areamonster 'map_name$,148,183,156,191,"Security robot", 3128,3;
+		areamonster 'map_name$,127,172,131,176,"Security robot", 3128,1;
+		areamonster 'map_name$,108,168,112,172,"Security robot", 3128,1;
+		areamonster 'map_name$, 96,151,100,155,"Security robot", 3128,1;
+		areamonster 'map_name$,106,128,110,132,"Security robot", 3128,1;
+		areamonster 'map_name$,146,128,150,132,"Security robot", 3128,1;
+		areamonster 'map_name$,158,148,162,152,"Security robot", 3128,1;
+		areamonster 'map_name$, 91,117, 99,125,"Security robot", 3128,3;
+		areamonster 'map_name$, 77,150, 85,158,"Security robot", 3128,3;
+		areamonster 'map_name$, 64, 81, 94,111,"Security robot", 3128,10;
+		areamonster 'map_name$, 40,145, 48,153,"Security robot", 3128,4;
+		areamonster 'map_name$, 58, 99, 66,107,"Security robot", 3128,4;
+		end;
+	}
+}
+1@mcd,67,234,0	duplicate(mob#1)	mob#2	HIDDEN_WARP_NPC,5,5
+1@mcd,33,192,0	duplicate(mob#1)	mob#3	HIDDEN_WARP_NPC,5,5
+1@mcd,75,59,0	duplicate(mob#1)	mob#4	HIDDEN_WARP_NPC,5,5
+1@mcd,109,33,0	duplicate(mob#1)	mob#5	HIDDEN_WARP_NPC,5,5
+1@mcd,133,49,0	duplicate(mob#1)	mob#6	HIDDEN_WARP_NPC,5,5
+1@mcd,204,74,0	duplicate(mob#1)	mob#7	HIDDEN_WARP_NPC,5,5
+1@mcd,204,224,0	duplicate(mob#1)	mob#8	HIDDEN_WARP_NPC,5,5
+1@mcd,157,61,0	duplicate(mob#1)	mob#9	HIDDEN_WARP_NPC,5,5
+1@mcd,175,147,0	duplicate(mob#1)	mob#10	HIDDEN_WARP_NPC,10,10
+
+1@mcd,114,82,4	script	IGU#01	4_F_IU,{
+	cutin "igu04.bmp",2;
+	if (isbegin_quest(13186) == 0) {
+		mes "[IGU]";
+		mes "I've followed Newoz. Where is he now?";
+		close3;
+	}
+	mes "[IGU]";
+	mes "Enjoying the adventure? There are machines everywhere. It used to be a study. See those books over there?";
+	close3;
+}
+
+1@mcd,176,179,5	script	Newoz#15_	4_M_NEWOZ,{
+	cutin "nines01.bmp",0;
+	mes "[Newoz]";
+	mes "I was reading a letter from Shalosh, and the next thing I knew, I was in a completely different place. Oh well, I might as well use this chance to write a new song.";
+	close3;
+}
+
+1@mcd,123,74,5	script	#Research Journal 01	CLEAR_NPC,{
+	if (isbegin_quest(13186) == 0) {
+		mes "The bookcase is filled with research journals.";
+		close;
+	}
+	mes "Every page is written in mechanical language.";
+	next;
+	mes "-Dr. Ve seems to be planning a plot, the combination of life and the machine gradually let her crazy, the transformation of the plant into a fortress, her soul and robots... ";
+	next;
+	mes "-In short more and more dangerous, just in case is to study the Charleston 2 escape method.";
+	next;
+	mes "Behind is the mechanical language that is incomprehensible.";
+	close;
+}
+
+1@mcd,142,74,5	script	#Research Journal 02	CLEAR_NPC,{
+	if (isbegin_quest(13186) == 0) {
+		mes "The bookcase is filled with research journals.";
+		close;
+	}
+	mes "Every page is written in mechanical language.";
+	next;
+	mes "-Whenever the os of Charleston 2 is reset, there will be other personality, is difficult to explain the combination of data technology...";
+	next;
+	mes "-Did I really succeed in creating humanity? Robotic, I can't say. Did I understand humans?";
+	next;
+	mes "-It doesn't matter. Now I'm happy to see her, my best friend, my baby, Lily...";
+	next;
+	mes "Behind is the mechanical language that is incomprehensible.";
+	close;
+}
+
+1@mcd,111,74,5	script	#Research Journal 03	CLEAR_NPC,{
+	if (isbegin_quest(13186) == 0) {
+		mes "The bookcase is filled with research journals.";
+		close;
+	}
+	mes "Every page is written in mechanical language.";
+	next;
+	mes "-I do not know why the data is constantly damaged, the backup host is useless, like a sick like my memory is being eroded.";
+	next;
+	mes "-To prevent my memory from disappearing completely, the os auto-recovery program has been installed, at least... You can start over with new information...";
+	next;
+	mes "Behind is the mechanical language that is incomprehensible.";
+	close;
+}
+
+1@mcd,128,74,5	script	#Research Journal 04	CLEAR_NPC,{
+	if (isbegin_quest(13186) == 0) {
+		mes "The bookcase is filled with research journals.";
+		close;
+	}
+	mes "The handwriting is very scribbled.";
+	next;
+	mes "-Charleston... It's just a robot... Finally planted a virus on the mainframe.";
+	next;
+	mes "-Sooner or later, I'll figure out a way to destroy you. *Chuckle*!";
+	next;
+	mes "Behind is the mechanical language that is incomprehensible.";
+	close;
+}
+
+1@mcd,10,10,5	script	Charleston Assistant#1	CLEAR_NPC,{
+	if (callfunc("F_GM_NPC",1854,0,0,9999) < 1)
+		end;
+	mes "The current value is" + 'ep15_1_mcd01 + ",";
+	mes "Difficulty is 0,";
+	mes "Do you want to take a direct train?";
+	next;
+	switch( select( "Not taking", "Boading", "To Boss room", "Setitem" ) ) {
+	case 1:
+		break;
+	case 2:
+		mes "[Helper!]";
+		mes "Open transfer point.";
+		enablenpc instance_npcname("1gate");
+		enablenpc instance_npcname("2gate");
+		enablenpc instance_npcname("3gate");
+		enablenpc instance_npcname("4gate");
+		enablenpc instance_npcname("5gate");
+		close;
+	case 3:
+		close2;
+		warp 'map_name$,124,214;
+		end;
+	case 4:
+		switch( select( "Reset", "4 - Destroy Lockstep", "7 - Generator completed", "Core front", "Before Boss", "Destroy BOSS" ) ) {
+		case 1:
+			'ep15_1_mcd01 = 0;
+			break;
+		case 2:
+			enablenpc instance_npcname("Charleston 1#2");
+			disablenpc instance_npcname("Charleston 1#1");
+			mapannounce 'map_name$, "Charleston 1: Ah, ah. Mic test.", bc_map, 0xffff00;
+			sleep2 3000;
+			mapannounce 'map_name$, "Charleston 1: It seems you've taken care of most of the Locksteps.", bc_map, 0xffff00;
+			sleep2 3000;
+			mapannounce 'map_name$, "Charleston 1: Please come back to the lab.", bc_map, 0xffff00;
+			'ep15_1_mcd01 = 4;
+			break;
+		case 3:
+			enablenpc instance_npcname("Charleston 1#2");
+			disablenpc instance_npcname("Charleston 1#1");
+			'ep15_1_mcd01 = 8;
+			break;
+		case 4:
+			enablenpc instance_npcname("Charleston 1#6");
+			enablenpc instance_npcname("Charleston 2#3");
+			'ep15_1_mcd01 = 10;
+			close2;
+			warp 'map_name$,130,120;
+			end;
+		case 5:
+			'ep15_1_mcd01 = 11;
+			enablenpc instance_npcname("Charleston 1#7");
+			enablenpc instance_npcname("Charleston 2#4");
+			enablenpc instance_npcname("Charleston 3#0");
+			close2;
+			warp 'map_name$,130,145;
+			end;
+		case 6:
+			'ep15_1_mcd01 = 12;
+			enablenpc instance_npcname("Charleston 2#5");
+			enablenpc instance_npcname("Charleston 1#9");
+			break;
+		}
+		break;
+	}
+	mes "[Helper!]";
+	mes "The End";
+	close;
+
+OnInstanceInit:
+	'ep15_1_mcd01 = 0;
+	'boss_status = 0;
+	'map_name$ = instance_mapname("1@mcd");
+
+	disablenpc instance_npcname("Charleston 1#2");
+	disablenpc instance_npcname("Charleston 1#3");
+	disablenpc instance_npcname("Charleston 2#1");
+	disablenpc instance_npcname("Charleston 1#4");
+	disablenpc instance_npcname("battle#1");
+	disablenpc instance_npcname("battle#2");
+	disablenpc instance_npcname("Charleston 2#2");
+	disablenpc instance_npcname("Charleston 1#5");
+	disablenpc instance_npcname("Dr. Ve#2");
+	disablenpc instance_npcname("Charleston 1#6");
+	disablenpc instance_npcname("Charleston 1#61");
+	disablenpc instance_npcname("Charleston 2#3");
+	disablenpc instance_npcname("Charleston 2#31");
+	disablenpc instance_npcname("CoreDialog#3");
+	disablenpc instance_npcname("Charleston 1#7");
+	disablenpc instance_npcname("Charleston 1#8");
+	disablenpc instance_npcname("Charleston 2#4");
+	disablenpc instance_npcname("Charleston 3#0");
+	// disablenpc instance_npcname("boss#0");
+	disablenpc instance_npcname("boss#1");
+	disablenpc instance_npcname("BOSS#23");
+	disablenpc instance_npcname("Bomb#23");
+	disablenpc instance_npcname("Charleston 1#9");
+	disablenpc instance_npcname("Charleston 2#5");
+	disablenpc instance_npcname("Charleston 2#6");
+	disablenpc instance_npcname("boss#3");
+	disablenpc instance_npcname("Dr. Ve#3");
+	disablenpc instance_npcname("Charleston 2#7");
+	disablenpc instance_npcname("end#1");
+	disablenpc instance_npcname("Dr. Ve#4");
+	disablenpc instance_npcname("Charleston 2#8");
+	disablenpc instance_npcname("Backup Generator#1");
+	disablenpc instance_npcname("Backup Generator#2");
+	disablenpc instance_npcname("Backup Generator#3");
+	disablenpc instance_npcname("1gate#1");
+	disablenpc instance_npcname("2gate#1");
+	disablenpc instance_npcname("3gate#1");
+	disablenpc instance_npcname("4gate#1");
+	cloakonnpc instance_npcname("8gate#1");
+	disablenpc instance_npcname("9gate#1");
+
+	// workaround for permanent monsters
+	.@event$ = instance_npcname("Charleston Assistant#1") + "::OnMyMobDead";
+	monster 'map_name$,0,0,"--ja--", 3125,100, .@event$;	// STEP
+	monster 'map_name$,0,0,"--ja--", 3128,20, .@event$;		// KICK_AND_KICK
+	end;
+
+OnMyMobDead:
+	if (!playerattached())	// shouldn't happen
+		end;
+	.@time = 120000 + rand(60000);
+	.@mob_id = killedrid;
+	sleep .@time;
+	monster 'map_name$,0,0,"--ja--", .@mob_id,1, instance_npcname("Charleston Assistant#1") + "::OnMyMobDead";
+	end;
+}

+ 1840 - 0
npc/re/instances/HeartHunterWarBase.txt

@@ -0,0 +1,1840 @@
+//===== rAthena Script =======================================
+//= Instances Heart Hunter War Base.
+//===== Description: =========================================
+//- [Walkthrough conversion]
+//- Require Terra Gloria main quest.
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+// Einbroch Field - instance
+ein_fild04,275,342,5	script	Striker Unit Commander#	4_M_REBELLION3,{
+	if (terra_gloria_main < 19) {
+		mes "[Striker Unit Commander]";
+		mes "Hey, who's there?";
+		next;
+		select("I am executing my mission with the Rebellion unit.");
+		mes "[Striker Unit Commander]";
+		mes "This place is dangerous and you must leave quickly. We are near the enemy base.";
+		close;
+	}
+	switch( checkquest(12375,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "[Striker Unit Commander]";
+		mes "We are arranging the situation inside the base. We cannot let you in yet.";
+		close;
+	case 2:
+		mes "^0000ffSeems like the base has been arranged inside. ^000000";
+		erasequest 12375;// Base maintenance
+		break;
+	}
+	if (isbegin_quest(12374) == 0) {
+		mes "[Striker Unit Commander]";
+		mes "Once we are ready for the operation, you will get in there with me.";
+		next;
+		mes "[Striker Unit Commander]";
+		mes "By the way, did you receive a briefing from the general Julian? Come back after receiving the briefing.";
+		close;
+	}
+	mes "[Striker Unit Commander]";
+	mes "Once we are ready for the operation, you will get in there with me.";
+	next;
+	if (terra_gloria_main == 19)
+		.@md_name$ = "Heart Hunter War Base 1";
+	else
+		.@md_name$ = "Heart Hunter War Base 2";
+	switch( instance_enter(.@md_name$) ) {
+	case IE_NOMEMBER:
+		mes "^0000ffSeems like an adventurer without his/her unit (party) cannot enter.^000000";
+		close;
+	case IE_NOINSTANCE:
+		mes "[Striker Unit Commander]";
+		mes "The field of operation is " + .@md_name$ + " Check whether the operation was applied properly.";
+		next;
+		mes "^ff0000Goint to the outer boundary of Heart Hunter War Base without clearing the Heart Hunter War Base is prohibited. Also, you cannot enter the Heart Hunter War Base that has already been cleared. Please check your operation point^000000";
+		next;
+		mes "^ff0000This is when your progress is different from your party leader of the party member. In this case, find another party member who can go to the same place with you.^000000";
+		next;
+		mes "^ff0000The entry is also impossible if the Memorial Dungeon has not been created as an operation field.^000000";
+		close;
+	case IE_OTHER:
+		mes "An unknown error has occurred.";
+		close;
+	case IE_OK:
+		mapannounce "ein_fild04", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering the " + .@md_name$ + ".", bc_map, 0xFF99;
+		setquest 12375;// Base maintenance
+		// if (terra_gloria_main == 20)
+		// 	warp "1@swat",35,65;
+		// else
+		// 	warp "1@swat",73,118;
+		end;
+	}
+}
+
+ein_fild04,281,337,3	script	Julian#ep16.2	4_M_REBELLION2,{
+	if (terra_gloria_main < 19) {
+		mes "^ff0000If you deal with monsters arbitrarily inside a dungeon, such as Monster taming, it will not be regarded as a normal progress. Please be aware of it.^000000";
+		next;
+		mes "[Julian]";
+		mes "Stop, which unit are you from? According to your answer, we may have to suppress you using an armed force.";
+		next;
+		select("I am executing my mission with the Rebellion unit.");
+		mes "[Julian]";
+		mes "Hmm, you are our troop? Since the scouting is not over yet, don't wander around here carelessly.";
+		close;
+	}
+	mes "^ff0000If you deal with monsters arbitrarily inside a dungeon, such as Monster taming, it will not be regarded as a normal progress. Please be aware of it.^000000";
+	next;
+	if (getcharid(1) < 1) {
+		mes "[Julian]";
+		mes "Are you a deserter wandering around without a position?";
+		next;
+		mes "^ff0000Only the party leader can talk to Julian in detail.^000000";
+		close;
+	}
+	switch( checkquest(12375,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "[Julian]";
+		mes "We are arranging the situation inside the base. You cannot enter yet.";
+		close;
+	case 2:
+		mes "^0000ffSeems like the base has been arranged inside. ^000000";
+		erasequest 12375;// Base maintenance
+		next;
+		break;
+	}
+	switch( isbegin_quest(12374) ) {
+	case 0:
+		mes "[Julian]";
+		mes "Are you the augmentation force in striking Heart Hunter base? I think we met before.";
+		next;
+		select("Just a thought.");
+		mes "[Julian]";
+		mes "Well, it doesn't matter. You should have a rough idea of what's going on here. Just remember that it's not going to be an easy task.";
+		next;
+		if (select( "Explain the situation to me.", "No time, let's proceed now." ) == 2) {
+			mes "[Julian]";
+			mes "Sounds cool. You are like a foreign legion, so stay beside me during the operation.";
+		}
+		else {
+			mes "[Julian]";
+			mes "Hmm, you haven't received a briefing yet? Since we don't have enough time, let me explain briefly.";
+			next;
+			mes "[Julian]";
+			mes "We don't have enough forces to strike the base.";
+			next;
+			mes "[Julian]";
+			mes "For the sake of mobility, we abandoned heavy firearms. Since our top priority mission is to occupy the base without destroying it much, most of explosive weapons have been excluded as well.";
+			next;
+			mes "[Julian]";
+			mes "If necessary, we can reinforce our firearms using the terrain features in the field... But it must be minimized.";
+			next;
+			mes "[Julian]";
+			mes "In any case, most of the operation must be anti-personnel damage and the base facilities have to be maintained whenever possible.";
+			next;
+			mes "[Julian]";
+			mes "Our advance party has secured the boundary surface in the southern base. We will take that route to move to the central part. And each striker unit will move in an individual route.";
+			next;
+			mes "[Julian]";
+			mes "You are like a foreign legion, so stay beside me during the operation. Any more question? Of course, I won't take any, even though you have one.";
+		}
+		next;
+		setquest 12374;// Heart Hunter Base occupation
+		mes "[Julian]";
+		mes "After that, follow the instruction of the chief of your unit. Once the gate to the base is opened, talk to the Striker Unit Commander over there and start.";
+		if (is_party_leader() == true) {
+			next;
+			mes "[Julian]";
+			mes "If you are ready, I will let you know the attack time.";
+			next;
+			if (select( "I'm ready.", "I need some more time." ) == 2) {
+				mes "[Julian]";
+				mes "I see. Since we are in a hurry, complete your preparation quickly and let me know.";
+				close;
+			}
+			break;
+		}
+		close;
+	case 1:
+		if (is_party_leader() == false) {
+			mes "[Julian]";
+			mes "After that, follow the instruction of the chief of your unit. Once the gate to the base is opened, talk to the Striker Unit Commander over there and start.";
+			close;
+		}
+		mes "[Julian]";
+		mes "Have you been to the toilet? I was looking for you.";
+		next;
+		mes "[Julian]";
+		mes "If you are ready, I will let you know the attack time.";
+		next;
+		if (select( "I'm ready.", "I need some more time." ) == 2) {
+			mes "[Julian]";
+			mes "I see. Since we are in a hurry, complete your preparation quickly and let me know.";
+			close;
+		}
+		break;
+	case 2:
+		if (is_party_leader() == false) {
+			mes "[Julian]";
+			mes "After that, follow the instruction of the chief of your unit. Once the gate to the base is opened, talk to the Striker Unit Commander over there and start.";
+			close;
+		}
+		mes "[Julian]";
+		mes "There is a broad vacant land on the outer boundary of the base we have occupied. We built a training ground there, but the facilities are imperfect. I need elite personnel who can examine it.";
+		next;
+		mes "[Julian]";
+		mes "Oh, isn't this the first time I tell you this? I would be glad if you can examine the facilities. What do you think?";
+		next;
+		if (select( "Let me do it.", "Maybe next time..." ) == 2) {
+			mes "[Julian]";
+			mes "I got it. I asked a little too much.";
+			close;
+		}
+		break;
+	}
+	if (terra_gloria_main == 19)
+		instance_create("Heart Hunter War Base 1");
+	else
+		instance_create("Heart Hunter War Base 2");
+	mes "[Julian]";
+	mes "It will open soon. Once the gate to the base is opened, talk to the Striker Unit Commander over there and start.";
+	close;
+}
+
+
+// Hunter Instance 1
+1@swat,36,71,6	duplicate(dummy_npc)	#ext1	4_M_REBELLION
+1@swat,36,68,6	duplicate(dummy_npc)	#ext2	4_F_REBELLION
+1@swat,36,65,6	duplicate(dummy_npc)	#ext3	4_M_REBELLION
+1@swat,36,62,6	duplicate(dummy_npc)	#ext4	4_F_REBELLION
+1@swat,36,59,6	duplicate(dummy_npc)	#ext5	4_M_REBELLION
+1@swat,33,71,6	duplicate(dummy_npc)	#ext6	4_F_REBELLION
+1@swat,33,68,6	duplicate(dummy_npc)	#ext7	4_M_REBELLION
+1@swat,33,65,6	duplicate(dummy_npc)	#ext8	4_F_REBELLION
+1@swat,33,62,6	duplicate(dummy_npc)	#ext9	4_M_REBELLION
+1@swat,33,59,6	duplicate(dummy_npc)	#ext10	4_F_REBELLION
+1@swat,30,71,6	duplicate(dummy_npc)	#ext11	4_M_REBELLION
+1@swat,30,68,6	duplicate(dummy_npc)	#ext12	4_F_REBELLION
+1@swat,30,65,6	duplicate(dummy_npc)	#ext13	4_M_REBELLION
+1@swat,30,62,6	duplicate(dummy_npc)	#ext14	4_F_REBELLION
+1@swat,30,59,6	duplicate(dummy_npc)	#ext15	4_M_REBELLION
+
+
+// Hunter Instance 1 - Step 1 Piles
+1@swat,116,30,6	duplicate(dummy_npc)	#wl1	4_ROPEPILE
+1@swat,116,31,6	duplicate(dummy_npc)	#wl2	4_ROPEPILE
+1@swat,116,32,6	duplicate(dummy_npc)	#wl3	4_ROPEPILE
+1@swat,116,33,6	duplicate(dummy_npc)	#wl4	4_ROPEPILE
+1@swat,116,34,6	duplicate(dummy_npc)	#wl5	4_ROPEPILE
+1@swat,116,35,6	duplicate(dummy_npc)	#wl6	4_ROPEPILE
+1@swat,116,36,6	duplicate(dummy_npc)	#wl7	4_ROPEPILE
+1@swat,116,37,6	duplicate(dummy_npc)	#wl8	4_ROPEPILE
+1@swat,116,38,6	duplicate(dummy_npc)	#wl9	4_ROPEPILE
+1@swat,116,39,6	duplicate(dummy_npc)	#wl10	4_ROPEPILE
+1@swat,116,40,6	duplicate(dummy_npc)	#wl11	4_ROPEPILE
+1@swat,116,41,6	duplicate(dummy_npc)	#wl12	4_ROPEPILE
+1@swat,116,42,6	duplicate(dummy_npc)	#wl13	4_ROPEPILE
+1@swat,116,43,6	duplicate(dummy_npc)	#wl14	4_ROPEPILE
+1@swat,116,44,6	duplicate(dummy_npc)	#wl15	4_ROPEPILE
+1@swat,116,45,6	duplicate(dummy_npc)	#wl16	4_ROPEPILE
+1@swat,116,46,6	duplicate(dummy_npc)	#wl17	4_ROPEPILE
+1@swat,116,47,6	duplicate(dummy_npc)	#wl18	4_ROPEPILE
+1@swat,116,48,6	duplicate(dummy_npc)	#wl19	4_ROPEPILE
+1@swat,116,49,6	duplicate(dummy_npc)	#wl20	4_ROPEPILE
+1@swat,116,50,6	duplicate(dummy_npc)	#wl21	4_ROPEPILE
+1@swat,116,51,6	duplicate(dummy_npc)	#wl22	4_ROPEPILE
+1@swat,116,52,6	duplicate(dummy_npc)	#wl23	4_ROPEPILE
+1@swat,116,53,6	duplicate(dummy_npc)	#wl24	4_ROPEPILE
+1@swat,116,54,6	duplicate(dummy_npc)	#wl25	4_ROPEPILE
+1@swat,116,55,6	duplicate(dummy_npc)	#wl26	4_ROPEPILE
+1@swat,116,56,6	duplicate(dummy_npc)	#wl27	4_ROPEPILE
+1@swat,116,57,6	duplicate(dummy_npc)	#wl28	4_ROPEPILE
+1@swat,116,58,6	duplicate(dummy_npc)	#wl29	4_ROPEPILE
+1@swat,116,59,6	duplicate(dummy_npc)	#wl30	4_ROPEPILE
+1@swat,116,60,6	duplicate(dummy_npc)	#wl31	4_ROPEPILE
+1@swat,116,61,6	duplicate(dummy_npc)	#wl32	4_ROPEPILE
+1@swat,116,62,6	duplicate(dummy_npc)	#wl33	4_ROPEPILE
+1@swat,116,63,6	duplicate(dummy_npc)	#wl34	4_ROPEPILE
+1@swat,116,64,6	duplicate(dummy_npc)	#wl35	4_ROPEPILE
+1@swat,116,65,6	duplicate(dummy_npc)	#wl36	4_ROPEPILE
+
+// Hunter Instance 1 - Step 2 Piles
+1@swat,151,30,6	duplicate(dummy_npc)	#wl37	4_ROPEPILE
+1@swat,151,31,6	duplicate(dummy_npc)	#wl38	4_ROPEPILE
+1@swat,151,32,6	duplicate(dummy_npc)	#wl39	4_ROPEPILE
+1@swat,151,33,6	duplicate(dummy_npc)	#wl40	4_ROPEPILE
+1@swat,151,34,6	duplicate(dummy_npc)	#wl41	4_ROPEPILE
+1@swat,151,35,6	duplicate(dummy_npc)	#wl42	4_ROPEPILE
+1@swat,151,36,6	duplicate(dummy_npc)	#wl43	4_ROPEPILE
+1@swat,151,37,6	duplicate(dummy_npc)	#wl44	4_ROPEPILE
+1@swat,151,38,6	duplicate(dummy_npc)	#wl45	4_ROPEPILE
+1@swat,151,39,6	duplicate(dummy_npc)	#wl46	4_ROPEPILE
+1@swat,151,40,6	duplicate(dummy_npc)	#wl47	4_ROPEPILE
+1@swat,151,41,6	duplicate(dummy_npc)	#wl48	4_ROPEPILE
+1@swat,151,42,6	duplicate(dummy_npc)	#wl49	4_ROPEPILE
+1@swat,151,43,6	duplicate(dummy_npc)	#wl50	4_ROPEPILE
+1@swat,151,44,6	duplicate(dummy_npc)	#wl51	4_ROPEPILE
+1@swat,151,45,6	duplicate(dummy_npc)	#wl52	4_ROPEPILE
+1@swat,151,46,6	duplicate(dummy_npc)	#wl53	4_ROPEPILE
+1@swat,151,47,6	duplicate(dummy_npc)	#wl54	4_ROPEPILE
+1@swat,151,48,6	duplicate(dummy_npc)	#wl55	4_ROPEPILE
+1@swat,151,49,6	duplicate(dummy_npc)	#wl56	4_ROPEPILE
+1@swat,151,50,6	duplicate(dummy_npc)	#wl57	4_ROPEPILE
+1@swat,151,51,6	duplicate(dummy_npc)	#wl58	4_ROPEPILE
+1@swat,151,52,6	duplicate(dummy_npc)	#wl59	4_ROPEPILE
+1@swat,151,53,6	duplicate(dummy_npc)	#wl60	4_ROPEPILE
+1@swat,151,54,6	duplicate(dummy_npc)	#wl61	4_ROPEPILE
+1@swat,151,55,6	duplicate(dummy_npc)	#wl62	4_ROPEPILE
+1@swat,151,56,6	duplicate(dummy_npc)	#wl63	4_ROPEPILE
+1@swat,151,57,6	duplicate(dummy_npc)	#wl64	4_ROPEPILE
+1@swat,151,58,6	duplicate(dummy_npc)	#wl65	4_ROPEPILE
+1@swat,151,59,6	duplicate(dummy_npc)	#wl66	4_ROPEPILE
+
+// Hunter Instance 1 - Step 3 Piles
+1@swat,250,30,6	duplicate(dummy_npc)	#wl67	4_ROPEPILE
+1@swat,250,31,6	duplicate(dummy_npc)	#wl68	4_ROPEPILE
+1@swat,250,32,6	duplicate(dummy_npc)	#wl69	4_ROPEPILE
+1@swat,250,33,6	duplicate(dummy_npc)	#wl70	4_ROPEPILE
+1@swat,250,34,6	duplicate(dummy_npc)	#wl71	4_ROPEPILE
+1@swat,250,35,6	duplicate(dummy_npc)	#wl72	4_ROPEPILE
+1@swat,250,36,6	duplicate(dummy_npc)	#wl73	4_ROPEPILE
+1@swat,250,37,6	duplicate(dummy_npc)	#wl74	4_ROPEPILE
+1@swat,250,38,6	duplicate(dummy_npc)	#wl75	4_ROPEPILE
+1@swat,250,39,6	duplicate(dummy_npc)	#wl76	4_ROPEPILE
+1@swat,250,40,6	duplicate(dummy_npc)	#wl77	4_ROPEPILE
+1@swat,250,41,6	duplicate(dummy_npc)	#wl78	4_ROPEPILE
+1@swat,250,42,6	duplicate(dummy_npc)	#wl79	4_ROPEPILE
+1@swat,250,43,6	duplicate(dummy_npc)	#wl80	4_ROPEPILE
+1@swat,250,44,6	duplicate(dummy_npc)	#wl81	4_ROPEPILE
+
+// Hunter Instance 2 - Step 1 Piles
+1@swat,23,222,6	duplicate(dummy_npc)	#wl82	4_ROPEPILE
+1@swat,24,222,6	duplicate(dummy_npc)	#wl83	4_ROPEPILE
+1@swat,25,222,6	duplicate(dummy_npc)	#wl84	4_ROPEPILE
+1@swat,26,222,6	duplicate(dummy_npc)	#wl85	4_ROPEPILE
+1@swat,27,222,6	duplicate(dummy_npc)	#wl86	4_ROPEPILE
+1@swat,28,222,6	duplicate(dummy_npc)	#wl87	4_ROPEPILE
+1@swat,29,222,6	duplicate(dummy_npc)	#wl88	4_ROPEPILE
+1@swat,30,222,6	duplicate(dummy_npc)	#wl89	4_ROPEPILE
+1@swat,31,222,6	duplicate(dummy_npc)	#wl90	4_ROPEPILE
+1@swat,32,222,6	duplicate(dummy_npc)	#wl91	4_ROPEPILE
+1@swat,33,222,6	duplicate(dummy_npc)	#wl92	4_ROPEPILE
+1@swat,34,222,6	duplicate(dummy_npc)	#wl93	4_ROPEPILE
+1@swat,35,222,6	duplicate(dummy_npc)	#wl94	4_ROPEPILE
+1@swat,36,222,6	duplicate(dummy_npc)	#wl95	4_ROPEPILE
+1@swat,37,222,6	duplicate(dummy_npc)	#wl96	4_ROPEPILE
+1@swat,38,222,6	duplicate(dummy_npc)	#wl97	4_ROPEPILE
+1@swat,39,222,6	duplicate(dummy_npc)	#wl98	4_ROPEPILE
+
+// Hunter Instance 2 - Step 2 Piles
+1@swat,22,272,6	duplicate(dummy_npc)	#wl99	4_ROPEPILE
+1@swat,23,272,6	duplicate(dummy_npc)	#wl100	4_ROPEPILE
+1@swat,24,272,6	duplicate(dummy_npc)	#wl101	4_ROPEPILE
+1@swat,25,272,6	duplicate(dummy_npc)	#wl102	4_ROPEPILE
+1@swat,26,272,6	duplicate(dummy_npc)	#wl103	4_ROPEPILE
+1@swat,27,272,6	duplicate(dummy_npc)	#wl104	4_ROPEPILE
+1@swat,28,272,6	duplicate(dummy_npc)	#wl105	4_ROPEPILE
+1@swat,29,272,6	duplicate(dummy_npc)	#wl106	4_ROPEPILE
+1@swat,30,272,6	duplicate(dummy_npc)	#wl107	4_ROPEPILE
+1@swat,31,272,6	duplicate(dummy_npc)	#wl108	4_ROPEPILE
+1@swat,32,272,6	duplicate(dummy_npc)	#wl109	4_ROPEPILE
+1@swat,33,272,6	duplicate(dummy_npc)	#wl110	4_ROPEPILE
+1@swat,34,272,6	duplicate(dummy_npc)	#wl111	4_ROPEPILE
+1@swat,35,272,6	duplicate(dummy_npc)	#wl112	4_ROPEPILE
+1@swat,36,272,6	duplicate(dummy_npc)	#wl113	4_ROPEPILE
+1@swat,37,272,6	duplicate(dummy_npc)	#wl114	4_ROPEPILE
+1@swat,38,272,6	duplicate(dummy_npc)	#wl115	4_ROPEPILE
+1@swat,39,272,6	duplicate(dummy_npc)	#wl116	4_ROPEPILE
+1@swat,40,272,6	duplicate(dummy_npc)	#wl117	4_ROPEPILE
+1@swat,41,272,6	duplicate(dummy_npc)	#wl118	4_ROPEPILE
+1@swat,42,272,6	duplicate(dummy_npc)	#wl119	4_ROPEPILE
+1@swat,43,272,6	duplicate(dummy_npc)	#wl120	4_ROPEPILE
+1@swat,44,272,6	duplicate(dummy_npc)	#wl121	4_ROPEPILE
+1@swat,45,272,6	duplicate(dummy_npc)	#wl122	4_ROPEPILE
+1@swat,46,272,6	duplicate(dummy_npc)	#wl123	4_ROPEPILE
+1@swat,47,272,6	duplicate(dummy_npc)	#wl124	4_ROPEPILE
+1@swat,48,272,6	duplicate(dummy_npc)	#wl125	4_ROPEPILE
+1@swat,49,272,6	duplicate(dummy_npc)	#wl126	4_ROPEPILE
+1@swat,50,272,6	duplicate(dummy_npc)	#wl127	4_ROPEPILE
+1@swat,51,272,6	duplicate(dummy_npc)	#wl128	4_ROPEPILE
+1@swat,52,272,6	duplicate(dummy_npc)	#wl129	4_ROPEPILE
+
+
+// Hunter Instance 1 - Step 1 Robots
+1@swat,113,66,4	script	#tr115	4_SCR_MT_ROBOTS,4,4,{
+	end;
+OnTouch:
+	specialeffect2 EF_DESPERADO;
+	percentheal -40,0;
+	end;
+}
+1@swat,113,60,4	duplicate(#tr115)	#tr116	4_SCR_MT_ROBOTS,4,4
+1@swat,113,54,4	duplicate(#tr115)	#tr117	4_SCR_MT_ROBOTS,4,4
+1@swat,113,48,4	duplicate(#tr115)	#tr118	4_SCR_MT_ROBOTS,4,4
+1@swat,113,42,4	duplicate(#tr115)	#tr119	4_SCR_MT_ROBOTS,4,4
+1@swat,113,36,4	duplicate(#tr115)	#tr120	4_SCR_MT_ROBOTS,4,4
+1@swat,113,30,4	duplicate(#tr115)	#tr121	4_SCR_MT_ROBOTS,4,4
+
+// Hunter Instance 1 - Step 2 Robots
+1@swat,149,66,4	duplicate(#tr115)	#tr122	4_SCR_MT_ROBOTS,4,4
+1@swat,149,60,4	duplicate(#tr115)	#tr123	4_SCR_MT_ROBOTS,4,4
+1@swat,149,54,4	duplicate(#tr115)	#tr124	4_SCR_MT_ROBOTS,4,4
+1@swat,149,48,4	duplicate(#tr115)	#tr125	4_SCR_MT_ROBOTS,4,4
+1@swat,149,42,4	duplicate(#tr115)	#tr126	4_SCR_MT_ROBOTS,4,4
+1@swat,149,36,4	duplicate(#tr115)	#tr127	4_SCR_MT_ROBOTS,4,4
+1@swat,149,30,4	duplicate(#tr115)	#tr128	4_SCR_MT_ROBOTS,4,4
+
+// Hunter Instance 1 - Step 3 Robots
+1@swat,247,43,4	duplicate(#tr115)	#tr129	4_SCR_MT_ROBOTS,4,4
+1@swat,247,37,4	duplicate(#tr115)	#tr130	4_SCR_MT_ROBOTS,4,4
+1@swat,247,31,4	duplicate(#tr115)	#tr131	4_SCR_MT_ROBOTS,4,4
+
+// Hunter Instance 2 - Step 1 Robots
+1@swat,25,220,4	duplicate(#tr115)	#tr132	4_SCR_MT_ROBOTS,4,4
+1@swat,31,220,4	duplicate(#tr115)	#tr133	4_SCR_MT_ROBOTS,4,4
+1@swat,37,220,4	duplicate(#tr115)	#tr134	4_SCR_MT_ROBOTS,4,4
+
+// Hunter Instance 2 - Step 2 Robots
+1@swat,25,270,4	duplicate(#tr115)	#tr135	4_SCR_MT_ROBOTS,4,4
+1@swat,30,270,4	duplicate(#tr115)	#tr136	4_SCR_MT_ROBOTS,4,4
+1@swat,35,270,4	duplicate(#tr115)	#tr137	4_SCR_MT_ROBOTS,4,4
+1@swat,40,270,4	duplicate(#tr115)	#tr138	4_SCR_MT_ROBOTS,4,4
+1@swat,45,270,4	duplicate(#tr115)	#tr139	4_SCR_MT_ROBOTS,4,4
+1@swat,50,270,4	duplicate(#tr115)	#tr140	4_SCR_MT_ROBOTS,4,4
+
+// Hunter Instance 2 - Step 3 Robots (maze)
+1@swat,26,330,4	duplicate(#tr115)	#tr1	4_SCR_MT_ROBOTS,4,4
+1@swat,26,324,4	duplicate(#tr115)	#tr2	4_SCR_MT_ROBOTS,4,4
+1@swat,26,318,4	duplicate(#tr115)	#tr3	4_SCR_MT_ROBOTS,4,4
+1@swat,26,312,4	duplicate(#tr115)	#tr4	4_SCR_MT_ROBOTS,4,4
+1@swat,26,306,4	duplicate(#tr115)	#tr5	4_SCR_MT_ROBOTS,4,4
+1@swat,26,300,4	duplicate(#tr115)	#tr6	4_SCR_MT_ROBOTS,4,4
+1@swat,32,330,4	duplicate(#tr115)	#tr7	4_SCR_MT_ROBOTS,4,4
+1@swat,32,324,4	duplicate(#tr115)	#tr8	4_SCR_MT_ROBOTS,4,4
+1@swat,32,318,4	duplicate(#tr115)	#tr9	4_SCR_MT_ROBOTS,4,4
+1@swat,32,312,4	duplicate(#tr115)	#tr10	4_SCR_MT_ROBOTS,4,4
+1@swat,32,306,4	duplicate(#tr115)	#tr11	4_SCR_MT_ROBOTS,4,4
+1@swat,32,300,4	duplicate(#tr115)	#tr12	4_SCR_MT_ROBOTS,4,4
+1@swat,38,330,4	duplicate(#tr115)	#tr13	4_SCR_MT_ROBOTS,4,4
+1@swat,38,324,4	duplicate(#tr115)	#tr14	4_SCR_MT_ROBOTS,4,4
+1@swat,38,318,4	duplicate(#tr115)	#tr15	4_SCR_MT_ROBOTS,4,4
+1@swat,38,312,4	duplicate(#tr115)	#tr16	4_SCR_MT_ROBOTS,4,4
+1@swat,38,306,4	duplicate(#tr115)	#tr17	4_SCR_MT_ROBOTS,4,4
+1@swat,38,300,4	duplicate(#tr115)	#tr18	4_SCR_MT_ROBOTS,4,4
+1@swat,44,330,4	duplicate(#tr115)	#tr19	4_SCR_MT_ROBOTS,4,4
+1@swat,44,324,4	duplicate(#tr115)	#tr20	4_SCR_MT_ROBOTS,4,4
+1@swat,44,318,4	duplicate(#tr115)	#tr21	4_SCR_MT_ROBOTS,4,4
+1@swat,44,312,4	duplicate(#tr115)	#tr22	4_SCR_MT_ROBOTS,4,4
+1@swat,44,306,4	duplicate(#tr115)	#tr23	4_SCR_MT_ROBOTS,4,4
+1@swat,44,300,4	duplicate(#tr115)	#tr24	4_SCR_MT_ROBOTS,4,4
+1@swat,50,330,4	duplicate(#tr115)	#tr25	4_SCR_MT_ROBOTS,4,4
+1@swat,50,324,4	duplicate(#tr115)	#tr26	4_SCR_MT_ROBOTS,4,4
+1@swat,50,318,4	duplicate(#tr115)	#tr27	4_SCR_MT_ROBOTS,4,4
+1@swat,50,312,4	duplicate(#tr115)	#tr28	4_SCR_MT_ROBOTS,4,4
+1@swat,50,306,4	duplicate(#tr115)	#tr29	4_SCR_MT_ROBOTS,4,4
+1@swat,50,300,4	duplicate(#tr115)	#tr30	4_SCR_MT_ROBOTS,4,4
+1@swat,56,330,4	duplicate(#tr115)	#tr31	4_SCR_MT_ROBOTS,4,4
+1@swat,56,324,4	duplicate(#tr115)	#tr32	4_SCR_MT_ROBOTS,4,4
+1@swat,56,318,4	duplicate(#tr115)	#tr33	4_SCR_MT_ROBOTS,4,4
+1@swat,56,312,4	duplicate(#tr115)	#tr34	4_SCR_MT_ROBOTS,4,4
+1@swat,56,306,4	duplicate(#tr115)	#tr35	4_SCR_MT_ROBOTS,4,4
+1@swat,56,300,4	duplicate(#tr115)	#tr36	4_SCR_MT_ROBOTS,4,4
+1@swat,62,330,4	duplicate(#tr115)	#tr37	4_SCR_MT_ROBOTS,4,4
+1@swat,62,324,4	duplicate(#tr115)	#tr38	4_SCR_MT_ROBOTS,4,4
+1@swat,62,318,4	duplicate(#tr115)	#tr39	4_SCR_MT_ROBOTS,4,4
+1@swat,62,312,4	duplicate(#tr115)	#tr40	4_SCR_MT_ROBOTS,4,4
+1@swat,62,306,4	duplicate(#tr115)	#tr41	4_SCR_MT_ROBOTS,4,4
+1@swat,62,300,4	duplicate(#tr115)	#tr42	4_SCR_MT_ROBOTS,4,4
+1@swat,68,330,4	duplicate(#tr115)	#tr43	4_SCR_MT_ROBOTS,4,4
+1@swat,68,324,4	duplicate(#tr115)	#tr44	4_SCR_MT_ROBOTS,4,4
+1@swat,68,318,4	duplicate(#tr115)	#tr45	4_SCR_MT_ROBOTS,4,4
+1@swat,68,312,4	duplicate(#tr115)	#tr46	4_SCR_MT_ROBOTS,4,4
+1@swat,68,306,4	duplicate(#tr115)	#tr47	4_SCR_MT_ROBOTS,4,4
+1@swat,68,300,4	duplicate(#tr115)	#tr48	4_SCR_MT_ROBOTS,4,4
+1@swat,74,330,4	duplicate(#tr115)	#tr49	4_SCR_MT_ROBOTS,4,4
+1@swat,74,324,4	duplicate(#tr115)	#tr50	4_SCR_MT_ROBOTS,4,4
+1@swat,74,318,4	duplicate(#tr115)	#tr51	4_SCR_MT_ROBOTS,4,4
+1@swat,74,312,4	duplicate(#tr115)	#tr52	4_SCR_MT_ROBOTS,4,4
+1@swat,74,306,4	duplicate(#tr115)	#tr53	4_SCR_MT_ROBOTS,4,4
+1@swat,74,300,4	duplicate(#tr115)	#tr54	4_SCR_MT_ROBOTS,4,4
+1@swat,80,330,4	duplicate(#tr115)	#tr55	4_SCR_MT_ROBOTS,4,4
+1@swat,80,324,4	duplicate(#tr115)	#tr56	4_SCR_MT_ROBOTS,4,4
+1@swat,80,318,4	duplicate(#tr115)	#tr57	4_SCR_MT_ROBOTS,4,4
+1@swat,80,312,4	duplicate(#tr115)	#tr58	4_SCR_MT_ROBOTS,4,4
+1@swat,80,306,4	duplicate(#tr115)	#tr59	4_SCR_MT_ROBOTS,4,4
+1@swat,80,300,4	duplicate(#tr115)	#tr60	4_SCR_MT_ROBOTS,4,4
+1@swat,86,330,4	duplicate(#tr115)	#tr61	4_SCR_MT_ROBOTS,4,4
+1@swat,86,324,4	duplicate(#tr115)	#tr62	4_SCR_MT_ROBOTS,4,4
+1@swat,86,318,4	duplicate(#tr115)	#tr63	4_SCR_MT_ROBOTS,4,4
+1@swat,86,312,4	duplicate(#tr115)	#tr64	4_SCR_MT_ROBOTS,4,4
+1@swat,86,306,4	duplicate(#tr115)	#tr65	4_SCR_MT_ROBOTS,4,4
+1@swat,86,300,4	duplicate(#tr115)	#tr66	4_SCR_MT_ROBOTS,4,4
+1@swat,92,330,4	duplicate(#tr115)	#tr67	4_SCR_MT_ROBOTS,4,4
+1@swat,92,324,4	duplicate(#tr115)	#tr68	4_SCR_MT_ROBOTS,4,4
+1@swat,92,318,4	duplicate(#tr115)	#tr69	4_SCR_MT_ROBOTS,4,4
+1@swat,92,312,4	duplicate(#tr115)	#tr70	4_SCR_MT_ROBOTS,4,4
+1@swat,92,306,4	duplicate(#tr115)	#tr71	4_SCR_MT_ROBOTS,4,4
+1@swat,92,300,4	duplicate(#tr115)	#tr72	4_SCR_MT_ROBOTS,4,4
+1@swat,98,330,4	duplicate(#tr115)	#tr73	4_SCR_MT_ROBOTS,4,4
+1@swat,98,324,4	duplicate(#tr115)	#tr74	4_SCR_MT_ROBOTS,4,4
+1@swat,98,318,4	duplicate(#tr115)	#tr75	4_SCR_MT_ROBOTS,4,4
+1@swat,98,312,4	duplicate(#tr115)	#tr76	4_SCR_MT_ROBOTS,4,4
+1@swat,98,306,4	duplicate(#tr115)	#tr77	4_SCR_MT_ROBOTS,4,4
+1@swat,98,300,4	duplicate(#tr115)	#tr78	4_SCR_MT_ROBOTS,4,4
+1@swat,104,330,4	duplicate(#tr115)	#tr79	4_SCR_MT_ROBOTS,4,4
+1@swat,104,324,4	duplicate(#tr115)	#tr80	4_SCR_MT_ROBOTS,4,4
+1@swat,104,318,4	duplicate(#tr115)	#tr81	4_SCR_MT_ROBOTS,4,4
+1@swat,104,312,4	duplicate(#tr115)	#tr82	4_SCR_MT_ROBOTS,4,4
+1@swat,104,306,4	duplicate(#tr115)	#tr83	4_SCR_MT_ROBOTS,4,4
+1@swat,104,300,4	duplicate(#tr115)	#tr84	4_SCR_MT_ROBOTS,4,4
+1@swat,110,330,4	duplicate(#tr115)	#tr85	4_SCR_MT_ROBOTS,4,4
+1@swat,110,324,4	duplicate(#tr115)	#tr86	4_SCR_MT_ROBOTS,4,4
+1@swat,110,318,4	duplicate(#tr115)	#tr87	4_SCR_MT_ROBOTS,4,4
+1@swat,110,312,4	duplicate(#tr115)	#tr88	4_SCR_MT_ROBOTS,4,4
+1@swat,110,306,4	duplicate(#tr115)	#tr89	4_SCR_MT_ROBOTS,4,4
+1@swat,110,300,4	duplicate(#tr115)	#tr90	4_SCR_MT_ROBOTS,4,4
+1@swat,116,330,4	duplicate(#tr115)	#tr91	4_SCR_MT_ROBOTS,4,4
+1@swat,116,324,4	duplicate(#tr115)	#tr92	4_SCR_MT_ROBOTS,4,4
+1@swat,116,318,4	duplicate(#tr115)	#tr93	4_SCR_MT_ROBOTS,4,4
+1@swat,116,312,4	duplicate(#tr115)	#tr94	4_SCR_MT_ROBOTS,4,4
+1@swat,116,306,4	duplicate(#tr115)	#tr95	4_SCR_MT_ROBOTS,4,4
+1@swat,116,300,4	duplicate(#tr115)	#tr96	4_SCR_MT_ROBOTS,4,4
+1@swat,122,330,4	duplicate(#tr115)	#tr97	4_SCR_MT_ROBOTS,4,4
+1@swat,122,324,4	duplicate(#tr115)	#tr98	4_SCR_MT_ROBOTS,4,4
+1@swat,122,318,4	duplicate(#tr115)	#tr99	4_SCR_MT_ROBOTS,4,4
+1@swat,122,312,4	duplicate(#tr115)	#tr100	4_SCR_MT_ROBOTS,4,4
+1@swat,122,306,4	duplicate(#tr115)	#tr101	4_SCR_MT_ROBOTS,4,4
+1@swat,122,300,4	duplicate(#tr115)	#tr102	4_SCR_MT_ROBOTS,4,4
+1@swat,92,294,4	duplicate(#tr115)	#tr103	4_SCR_MT_ROBOTS,4,4
+1@swat,98,294,4	duplicate(#tr115)	#tr104	4_SCR_MT_ROBOTS,4,4
+1@swat,104,294,4	duplicate(#tr115)	#tr105	4_SCR_MT_ROBOTS,4,4
+1@swat,110,294,4	duplicate(#tr115)	#tr106	4_SCR_MT_ROBOTS,4,4
+1@swat,117,294,4	duplicate(#tr115)	#tr107	4_SCR_MT_ROBOTS,4,4
+1@swat,123,294,4	duplicate(#tr115)	#tr108	4_SCR_MT_ROBOTS,4,4
+1@swat,92,288,4	duplicate(#tr115)	#tr109	4_SCR_MT_ROBOTS,4,4
+1@swat,98,288,4	duplicate(#tr115)	#tr110	4_SCR_MT_ROBOTS,4,4
+1@swat,104,288,4	duplicate(#tr115)	#tr111	4_SCR_MT_ROBOTS,4,4
+1@swat,110,288,4	duplicate(#tr115)	#tr112	4_SCR_MT_ROBOTS,4,4
+1@swat,116,288,4	duplicate(#tr115)	#tr113	4_SCR_MT_ROBOTS,4,4
+1@swat,122,288,4	duplicate(#tr115)	#tr114	4_SCR_MT_ROBOTS,4,4
+
+// Hunter Instance 2 - Step Final Robots
+1@swat,122,274,4	duplicate(#tr115)	#tr141	4_SCR_MT_ROBOTS,4,4
+1@swat,114,258,4	duplicate(#tr115)	#tr142	4_SCR_MT_ROBOTS,4,4
+1@swat,125,258,4	duplicate(#tr115)	#tr143	4_SCR_MT_ROBOTS,4,4
+1@swat,138,258,4	duplicate(#tr115)	#tr144	4_SCR_MT_ROBOTS,4,4
+1@swat,143,266,4	duplicate(#tr115)	#tr145	4_SCR_MT_ROBOTS,4,4
+1@swat,146,249,4	duplicate(#tr115)	#tr146	4_SCR_MT_ROBOTS,4,4
+1@swat,154,247,4	duplicate(#tr115)	#tr147	4_SCR_MT_ROBOTS,4,4
+1@swat,166,251,4	duplicate(#tr115)	#tr148	4_SCR_MT_ROBOTS,4,4
+1@swat,174,256,4	duplicate(#tr115)	#tr149	4_SCR_MT_ROBOTS,4,4
+1@swat,173,266,4	duplicate(#tr115)	#tr150	4_SCR_MT_ROBOTS,4,4
+1@swat,183,266,4	duplicate(#tr115)	#tr151	4_SCR_MT_ROBOTS,4,4
+1@swat,182,248,4	duplicate(#tr115)	#tr152	4_SCR_MT_ROBOTS,4,4
+
+
+// First entrance (instance 1)
+// Entrance
+1@swat,40,65,6	script	Julian#0_1	4_M_REBELLION2,{
+	mes "[Julian]";
+	mes "We don't have time to joke";
+	close;
+
+OnStart:
+	initnpctimer;
+	end;
+OnTimer2000:
+	npctalk "Julian: According to the estimation, there must be a greeting here. But there is nothing.";
+	end;
+OnTimer4000:
+	npctalk "Julian: From here, we split. Each of us will find the weak spots and annihilate the enemies.";
+	end;
+OnTimer10000:
+	npctalk "Julian: These might be sharpshooters around, so do not gather. Accomplish the operation individually.";
+	end;
+OnTimer14000:
+	npctalk "Julian: Now, move out!";
+	disablenpc instance_npcname("#ext1");
+	disablenpc instance_npcname("#ext2");
+	disablenpc instance_npcname("#ext3");
+	end;
+OnTimer14300:
+	disablenpc instance_npcname("#ext4");
+	disablenpc instance_npcname("#ext5");
+	end;
+OnTimer14600:
+	disablenpc instance_npcname("#ext6");
+	end;
+OnTimer14900:
+	disablenpc instance_npcname("#ext7");
+	end;
+OnTimer15200:
+	disablenpc instance_npcname("#ext8");
+	end;
+OnTimer15500:
+	disablenpc instance_npcname("#ext9");
+	end;
+OnTimer15800:
+	disablenpc instance_npcname("#ext10");
+	end;
+OnTimer16100:
+	disablenpc instance_npcname("#ext11");
+	disablenpc instance_npcname("#ext12");
+	end;
+OnTimer16400:
+	disablenpc instance_npcname("#ext13");
+	end;
+OnTimer16700:
+	disablenpc instance_npcname("#ext14");
+	end;
+OnTimer17000:
+	disablenpc instance_npcname("#ext15");
+	end;
+OnTimer17300:
+	stopnpctimer;
+	disablenpc instance_npcname("Julian#0_1");
+	enablenpc instance_npcname("Julian#1");
+	enablenpc instance_npcname("#start_npc2");
+	donpcevent instance_npcname("#hunter_instance_1_mob_1") + "::OnWave1";
+	end;
+}
+
+1@swat,40,65,0	script	#start_npc	HIDDEN_WARP_NPC,2,2,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#start_npc");
+	donpcevent instance_npcname("Julian#0_1") + "::OnStart";
+	end;
+}
+
+1@swat,1,1,0	script	#hunter_instance_1_mob_1	HIDDEN_WARP_NPC,{
+	end;
+OnWave1:
+	enablenpc instance_npcname("#hunter_instance_1_mob_1");
+	areamonster 'map_swat$, 55,49,89,77, "Heart Hunter Guard",3627,24, instance_npcname("#hunter_instance_1_mob_1") + "::OnMobDead";		// EP16_2_H_HUNTER_MD
+	end;
+OnWave2:
+	.@label$ = instance_npcname("#hunter_instance_1_mob_1") + "::OnMobDead";
+	for ( .@x = 93; .@x >= 81; .@x -= 4 ) {
+		for ( .@y = 54; .@y >= 39; .@y -= 3 ) {
+			monster 'map_swat$,.@x,.@y, "Heart Hunter Guard",3627,1, .@label$;	// EP16_2_H_HUNTER_MD
+		}
+	}
+	end;
+OnMobDead:
+	end;
+}
+
+// Step 1
+1@swat,105,50,0	script	#start_npc2	HIDDEN_WARP_NPC,4,4,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#start_npc2");
+	donpcevent instance_npcname("Julian#1") + "::OnStart";
+	end;
+}
+
+1@swat,105,50,6	script	Julian#1	4_M_REBELLION2,{
+	// note: officially they only check the item
+	if (countitem(25154) < 1 || 'event != 1) {
+		mes "[Julian]";
+		mes "We can just sneak in like this. But we'd better secure a path for the cleanup party. How can we do that?";
+		next;
+		select("");
+		close;
+	}
+	mes "[Julian]";
+	mes "Why are they all coming out all of a sudden. Just hand me the gunpowder";
+	next;
+	select("Give him the gunpowder");
+	if ('event == 1) {
+		'event = 2;
+		delitem 25154, countitem(25154);// Antique_Powder
+		donpcevent instance_npcname("Julian#1_1") + "::OnStart";
+	}
+	end;
+
+OnStart:
+	initnpctimer;
+	npctalk "Julian: Wait!";
+	end;
+OnTimer3000:
+	npctalk "Julian: There is a security system being operated in front of this. If you take one step ahead, you will be riddled with bullets.";
+	end;
+OnTimer7000:
+	stopnpctimer;
+	npctalk "Julian: We are in trouble from the beginning.";
+	enablenpc instance_npcname("Pile of gunpowder#1");
+	end;
+}
+
+1@swat,105,50,6	script	Julian#1_1	4_M_REBELLION2,{
+	end;
+OnStart:
+	disablenpc instance_npcname("Julian#1");
+	enablenpc instance_npcname("Julian#1_1");
+	initnpctimer;
+	npctalk "Julian: Well, it's a nice gunpowder.";
+	end;
+OnTimer3000:
+	npctalk "Julian: This is good enough to get rid of the security system and the Heart Hunter guys who rushed a moment ago.";
+	end;
+OnTimer9000:
+	npctalk "Julian: Now, let me blow them away!";
+	end;
+OnTimer12000:
+	killmonster 'map_swat$, instance_npcname("#hunter_instance_1_mob_1") + "::OnMobDead";
+	disablenpc instance_npcname("#tr117");
+	disablenpc instance_npcname("#tr118");
+	disablenpc instance_npcname("#tr119");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl17");
+	cloakonnpc instance_npcname("#wl17");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl18");
+	cloakonnpc instance_npcname("#wl18");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl19");
+	cloakonnpc instance_npcname("#wl19");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl20");
+	cloakonnpc instance_npcname("#wl20");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl21");
+	cloakonnpc instance_npcname("#wl21");
+	setcell 'map_swat$,116,30,116,66,cell_walkable,1;
+	end;
+OnTimer17000:
+	stopnpctimer;
+	mapannounce 'map_swat$, "Julian: Let me go first. I have to deal with the obstacles in front.", bc_map,0xFFFF77;
+	disablenpc instance_npcname("Julian#1_1");
+	enablenpc instance_npcname("Julian#1_2");
+	enablenpc instance_npcname("#start_npc3");
+	end;
+}
+
+1@swat,58,90,0	script	Pile of gunpowder#1	4_ENERGY_YELLOW,{
+	if ('event != 0)
+		end;
+	'event = 1;
+	specialeffect EF_COIN;
+	disablenpc instance_npcname("Pile of gunpowder#1");
+	for ( .@i = 0; .@i < 5; .@i++ )
+		makeitem 25154,1,'map_swat$, rand(56,60), rand(84,86);// Antique_Powder
+	initnpctimer;
+	end;
+OnTimer3000:
+	mapannounce 'map_swat$, "Intruders detected in the restricted area. Heart Hunters, heighten the security!", bc_map,0xFF5555;
+	end;
+OnTimer9000:
+	stopnpctimer;
+	mapannounce 'map_swat$, "I repeat. Intruders detected in the restricted area. Heart Hunters, heighten the security!", bc_map,0xFF5555;
+	donpcevent instance_npcname("#hunter_instance_1_mob_1") + "::OnWave2";
+	end;
+}
+
+// Step 2
+1@swat,140,50,0	script	#start_npc3	HIDDEN_WARP_NPC,4,4,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#start_npc3");
+	if ('event == 2)
+		donpcevent instance_npcname("#start_npc3") + "::OnStart";
+	else if ('event == 3)
+		donpcevent instance_npcname("Julian#1_2") + "::OnStart";
+	end;
+
+OnStart:
+	initnpctimer;
+	npctalk "Julian: Don't worry about this place. I can handle it with the remaining gunpowder.", instance_npcname("Julian#1_2");
+	end;
+OnTimer5000:
+	npctalk "Julian: You go up and check if there is any remaining force or threat.", instance_npcname("Julian#1_2");
+	end;
+OnTimer10000:
+	stopnpctimer;
+	npctalk "Julian: Don't take your time and move out", instance_npcname("Julian#1_2");
+	enablenpc instance_npcname("Suspicious instrument#1");
+	end;
+}
+
+// 1@swat,140,50,0	duplicate(dummy_npc)	#start_npc3_1	HIDDEN_WARP_NPC,4,4
+
+1@swat,140,50,6	script	Julian#1_2	4_M_REBELLION2,{
+	mes "[Julian]";
+	mes "It takes some time in assembling the explosive. You go up and check if there is any threat.";
+	next;
+	mes "[Julian]";
+	mes "If you find an enemy, don't forget to kill it without reporting me.";
+	close;
+
+OnStart:
+	initnpctimer;
+	npctalk "Julian: Great. We have finished making the explosive.";
+	end;
+OnTimer4000:
+	npctalk "Julian: over your ears to protect your eardrum! I am exploding it now!";
+	end;
+OnTimer7000:
+	disablenpc instance_npcname("#tr124");
+	disablenpc instance_npcname("#tr125");
+	disablenpc instance_npcname("#tr126");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl51");
+	cloakonnpc instance_npcname("#wl51");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl52");
+	cloakonnpc instance_npcname("#wl52");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl53");
+	cloakonnpc instance_npcname("#wl53");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl54");
+	cloakonnpc instance_npcname("#wl54");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl55");
+	cloakonnpc instance_npcname("#wl55");
+	setcell 'map_swat$,151,30,151,60,cell_walkable,1;
+	end;
+OnTimer15000:
+	stopnpctimer;
+	mapannounce 'map_swat$, "Julian: Excellent. Let's go forward.", bc_map,0xFF99;
+	disablenpc instance_npcname("Julian#1_2");
+	enablenpc instance_npcname("Julian#2_ep16_2");
+	enablenpc instance_npcname("#start_npc4");
+	end;
+}
+
+1@swat,150,119,0	script	Suspicious instrument#1	4_ENERGY_YELLOW,{
+	if ('event != 2)
+		end;
+	mes "There is a warning written in red color.";
+	mes "-----------------------";
+	mes "[^ff0000Do not push^000000]";
+	next;
+	if (select( "Stop it.", "Push the button" ) == 1) {
+		mes "I never push a suspicious button.";
+		close;
+	}
+	if ('event == 2) {
+		'event = 3;
+		disablenpc instance_npcname("Suspicious instrument#1");
+		mapannounce 'map_swat$, "Intruders detected in Section 2. Heart Hunters, heighten the security!", bc_map,0xFF5555;
+		initnpctimer;
+	}
+	end;
+OnTimer1000:
+	donpcevent instance_npcname("#hunter_instance_1_mob_2") + "::OnStart";
+	end;
+OnTimer5000:
+	mapannounce 'map_swat$, "I repeat. Intruders detected in the restricted area. Heart Hunters, heighten the security!", bc_map,0xFF5555;
+	stopnpctimer;
+	end;
+}
+
+// 1@swat,165,35,0	duplicate(dummy_npc)	#wp_con_b1_1	CLEAR_NPC
+
+1@swat,1,1,0	script	#hunter_instance_1_mob_2	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#hunter_instance_1_mob_2");
+	.@label$ = instance_npcname("#hunter_instance_1_mob_2") + "::OnMobDead";
+	for ( .@y = 120; .@y >= 99; .@y -= 7 ) {
+		for ( .@x = 140; .@x >= 122; .@x -= 6 ) {
+			monster 'map_swat$,.@x,.@y, "Heart Hunter Guard",3627,1, .@label$;	// EP16_2_H_HUNTER_MD
+		}
+	}
+	end;
+
+OnMobDead:
+	.@label$ = instance_npcname("#hunter_instance_1_mob_2") + "::OnMobDead";
+	if (rand(100) < 5)
+		areamonster 'map_swat$, 122,99,140,120, "Upgraded Heart Hunter",3626,1, .@label$;		// EP16_2_H_HUNTER_V
+	.@count = mobcount( 'map_swat$, .@label$ );
+	mapannounce 'map_swat$, "Remaining " + .@count + " Heart Hunter", bc_map,0xFFFFFF;
+	if (.@count < 1)
+		initnpctimer;
+	end;
+OnTimer1000:
+	stopnpctimer;
+	disablenpc instance_npcname("#hunter_instance_1_mob_2");
+	enablenpc instance_npcname("#start_npc3");
+	end;
+}
+
+
+// Step 3
+1@swat,238,39,0	script	#start_npc4	HIDDEN_WARP_NPC,4,4,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#start_npc4");
+	initnpctimer;
+	npctalk "Julian: This might be the last security system. But we ran out of gunpowder.", instance_npcname("Julian#2_ep16_2");
+	end;
+OnTimer4000:
+	npctalk "Julian: We must secure a path for the cleanup party. Find gunpowder nearby.", instance_npcname("Julian#2_ep16_2");
+	end;
+OnTimer7000:
+	mapannounce 'map_swat$, "Intruders detected deep in the Section 3. Heart Hunters, protect the base at all cost!", bc_map,0xFF5555;
+	end;
+OnTimer10000:
+	npctalk "Julian: Well, looks like they started the battle against our members who had scattered. We might be in danger soon.", instance_npcname("Julian#2_ep16_2");
+	end;
+OnTimer14000:
+	stopnpctimer;
+	npctalk "Julian: The battle can start while you are finding gunpowder. Prepare for it.", instance_npcname("Julian#2_ep16_2");
+	enablenpc instance_npcname("Pile of gunpowder#2");
+	donpcevent instance_npcname("#hunter_instance_1_mob_3") + "::OnStart";
+	end;
+}
+
+1@swat,163,58,0	script	Pile of gunpowder#2	4_ENERGY_YELLOW,{
+	if ('event != 3)
+		end;
+	'event = 4;
+	specialeffect EF_COIN;
+	disablenpc instance_npcname("Pile of gunpowder#2");
+	initnpctimer;
+	end;
+OnTimer1000:
+	stopnpctimer;
+	for ( .@i = 0; .@i < 5; .@i++ )
+		makeitem 25154,1,'map_swat$, rand(161,165), rand(51,55);// Antique_Powder
+	end;
+}
+
+1@swat,1,1,0	script	#hunter_instance_1_mob_3	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#hunter_instance_1_mob_3");
+	.@label$ = instance_npcname("#hunter_instance_1_mob_3") + "::OnMobDead";
+	for ( .@y = 35; .@y <= 75; .@y += 8 ) {
+		for ( .@x = 188; .@x >= 168; .@x -= 10 ) {
+			monster 'map_swat$,.@x,.@y, "Heart Hunter Guard",3627,1, .@label$;	// EP16_2_H_HUNTER_MD
+		}
+	}
+	end;
+
+OnMobDead:
+	if (mobcount( 'map_swat$, instance_npcname("#hunter_instance_1_mob_3") + "::OnMobDead" ) < 1) {
+		'event = 4;
+		disablenpc instance_npcname("#hunter_instance_1_mob_3");
+	}
+	end;
+}
+
+1@swat,238,39,5	script	Julian#2_ep16_2	4_M_REBELLION2,{
+	if (countitem(25154) < 1 || 'event != 4) {
+		mes "[Julian]";
+		mes "Is the gunpowder ready?";
+		close;
+	}
+	mes "[Julian]";
+	mes "Is the gunpowder ready?";
+	next;
+	select("Give him the gunpowder");
+	if ('event == 4) {
+		'event = 5;
+		delitem 25154, countitem(25154);// Antique_Powder
+		donpcevent instance_npcname("Julian#2_ep16_2") + "::OnStart";	// officially player can re-trigger the event
+	}
+	end;
+
+OnStart:
+	npctalk "Julian: Great. We have finished making the explosive.";
+	initnpctimer;
+	end;
+OnTimer6000:
+	npctalk "Julian: over your ears to protect your eardrum! I am exploding it now!";
+	end;
+OnTimer9000:
+	disablenpc instance_npcname("#tr129");
+	disablenpc instance_npcname("#tr130");
+	disablenpc instance_npcname("#tr131");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl72");
+	cloakonnpc instance_npcname("#wl72");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl73");
+	cloakonnpc instance_npcname("#wl73");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl74");
+	cloakonnpc instance_npcname("#wl74");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl75");
+	cloakonnpc instance_npcname("#wl75");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl76");
+	cloakonnpc instance_npcname("#wl76");
+	setcell 'map_swat$,250,30,250,46,cell_walkable,1;
+	end;
+OnTimer14000:
+	mapannounce 'map_swat$, "Julian: Great. Shall we go now!", bc_map,0xFF99;
+	disablenpc instance_npcname("Julian#2_ep16_2");
+	enablenpc instance_npcname("#expl1");
+	enablenpc instance_npcname("#expl2");
+	enablenpc instance_npcname("#expl3");
+	enablenpc instance_npcname("#expl4");
+	enablenpc instance_npcname("#start_boss1");
+	enablenpc instance_npcname("Julian#3");
+	stopnpctimer;
+	end;
+}
+
+// Boss
+1@swat,305,58,0	duplicate(dummy_npc)	#expl1	CLEAR_NPC
+1@swat,305,44,0	duplicate(dummy_npc)	#expl2	CLEAR_NPC
+1@swat,320,58,0	duplicate(dummy_npc)	#expl3	CLEAR_NPC
+1@swat,320,44,0	duplicate(dummy_npc)	#expl4	CLEAR_NPC
+
+1@swat,283,32,0	script	#wp_b1_1	HIDDEN_WARP_NPC,4,4,{
+	end;
+OnTouch:
+	getmapxy .@map$,.@x,.@y, BL_NPC;
+	warp 'map_swat$, 290, .@y;
+	end;
+}
+1@swat,283,39,0	duplicate(#wp_b1_1)	#wp_b1_2	HIDDEN_WARP_NPC,4,4
+1@swat,283,46,0	duplicate(#wp_b1_1)	#wp_b1_3	HIDDEN_WARP_NPC,4,4
+1@swat,283,53,0	duplicate(#wp_b1_1)	#wp_b1_4	HIDDEN_WARP_NPC,4,4
+1@swat,283,60,0	duplicate(#wp_b1_1)	#wp_b1_5	HIDDEN_WARP_NPC,4,4
+
+1@swat,310,47,0	script	#start_boss1	HIDDEN_WARP_NPC,4,4,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#start_boss1");
+	donpcevent instance_npcname("Julian#3") + "::OnStart";
+	end;
+}
+
+1@swat,310,47,6	script	Julian#3	4_M_REBELLION2,{
+	end;
+OnStart:
+	mapannounce 'map_swat$, "Voice communication: We have occupied the communication room of Heart Hunter. The battle seems to have ended. All unit members defend the occupied strongholds and standby.", bc_map,0x77FFFF;
+	initnpctimer;
+	end;
+OnTimer6000:
+	npctalk "Julian: Since we occupied the communication room, it is practically our victory. We don't seem to have taken much damage.";
+	end;
+OnTimer11000:
+	npctalk "Julian: We still have some time until our main unit arrives. Keep the caution and standby.";
+	end;
+OnTimer16000:
+	mapannounce 'map_swat$, "???: Who's there...?", bc_map,0xFF5555;
+	end;
+OnTimer20000:
+	npctalk "Julian: What? Remaining force?";
+	end;
+OnTimer24000:
+	emotion ET_SURPRISE;
+	npctalk "Julian: Something is coming!! Evade!!";
+	end;
+OnTimer28000:
+	specialeffect EF_LORD, AREA, "Julian#3";
+	cloakonnpc instance_npcname("Julian#3");	// cloakonnpc to display EF_LORD properly
+	enablenpc instance_npcname("Ebel#1_1");
+	npctalk "Ebel: Did I miss...", instance_npcname("Ebel#1_1");
+	end;
+OnTimer32000:
+	npctalk "Ebel: ... Who are you?", instance_npcname("Ebel#1_1");
+	end;
+OnTimer36000:
+	mapannounce 'map_swat$, "Julian: Evade foe now! She is not an ordinary human.", bc_map,0xFF99;
+	end;
+OnTimer40000:
+	npctalk "Ebel: Running away?", instance_npcname("Ebel#1_1");
+	end;
+OnTimer45000:
+	npctalk "Ebel: Sorry, no escape.", instance_npcname("Ebel#1_1");
+	end;
+OnTimer50000:
+	disablenpc instance_npcname("Ebel#1_1");
+	enablenpc instance_npcname("#wp_b1_1");
+	enablenpc instance_npcname("#wp_b1_2");
+	enablenpc instance_npcname("#wp_b1_3");
+	enablenpc instance_npcname("#wp_b1_4");
+	enablenpc instance_npcname("#wp_b1_5");
+	donpcevent instance_npcname("#hunter_instance_ebel") + "::OnStart";
+	end;
+OnTimer53000:
+	mapannounce 'map_swat$, "Julian: Damn, escaping will be tough.", bc_map,0xFF99;
+	end;
+OnTimer56000:
+	mapannounce 'map_swat$, "Julian: Hey! I will back you up from a long range. Hang on until then!", bc_map,0xFF99;
+	end;
+OnTimer64000:
+	mapannounce 'map_swat$, "Julian: Hang on for a minute. I am getting ready to suppress her", bc_map,0xFF99;
+	end;
+OnTimer71000:
+	mapannounce 'map_swat$, "Julian: It's almost done! Stick to it!", bc_map,0xFF99;
+	end;
+OnTimer80000:
+	mapannounce 'map_swat$, "Julian: Great! Stay away from her! Let me give a big shop to her!", bc_map,0xFF99;
+	end;
+OnTimer82000:
+	donpcevent instance_npcname("#hunter_instance_ebel") + "::OnStop";
+	specialeffect EF_LORD, AREA, instance_npcname("#expl1");
+	end;
+OnTimer83000:
+	specialeffect EF_LORD, AREA, instance_npcname("#expl2");
+	end;
+OnTimer84000:
+	specialeffect EF_LORD, AREA, instance_npcname("#expl3");
+	end;
+OnTimer85000:
+	specialeffect EF_LORD, AREA, instance_npcname("#expl4");
+	stopnpctimer;
+	donpcevent instance_npcname("Julian#3_1") + "::OnStart";
+	end;
+}
+
+1@swat,1,1,0	script	#hunter_instance_ebel	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#hunter_instance_ebel");
+	monster 'map_swat$,315,47, "Heart Hunter Ebel",3628,1, instance_npcname("#hunter_instance_ebel") + "::OnMobDead";	// EP16_2_H_HUNTER_EV
+	'boss_id = $@mobid[0];
+	initnpctimer;
+	end;
+OnTimer7000:
+	unittalk 'boss_id, "It doesn't hurt me...";
+	end;
+OnTimer14000:
+	unittalk 'boss_id, "You... slow.";
+	end;
+OnTimer21000:
+	unittalk 'boss_id, "Weak...";
+	end;
+OnTimer30000:
+	unittalk 'boss_id, "Weak...";
+	end;
+OnStop:
+	killmonster 'map_swat$, instance_npcname("#hunter_instance_ebel") + "::OnMobDead";
+	// continue
+OnMobDead:
+	'boss_id = 0;
+	stopnpctimer;
+	disablenpc instance_npcname("#hunter_instance_ebel");
+	end;
+}
+
+1@swat,315,47,3	script	Ebel#1_1	4_F_HUNTER_EVIL,{
+	cutin "ep16_evil101.bmp",2;
+	mes "[Ebel]";
+	mes "You... Enemy? Our troop? Which side are you on?";
+	close3;
+}
+
+1@swat,320,47,4	script	Julian#3_1	4_M_REBELLION2,{
+	end;
+OnStart:
+	enablenpc instance_npcname("Julian#3_1");
+	enablenpc instance_npcname("Ebel#1_3");
+	npctalk "Julian: I'm glad you're all safe.";
+	initnpctimer;
+	end;
+OnTimer3000:
+	npctalk "Ebel: What was that thing you used just now?", instance_npcname("Ebel#1_3");
+	end;
+OnTimer6000:
+	npctalk "Julian: It's a paralyzing shot. When it hits someone, it creates a confusion in the nerve system.";
+	end;
+OnTimer10000:
+	npctalk "Ebel: Why didn't you kill me?", instance_npcname("Ebel#1_3");
+	end;
+OnTimer13000:
+	npctalk "Julian: I didn't want to kill our people at the same time. Besides... You are an unknown force to us";
+	end;
+OnTimer18000:
+	npctalk "Julian: We must capture you alive and find out about you.";
+	end;
+OnTimer22000:
+	enablenpc instance_npcname("#ext1_1");
+	enablenpc instance_npcname("#ext1_2");
+	end;
+OnTimer23000:
+	npctalk "All the remaining force has in outer boundary has been cleaned up.", instance_npcname("#ext1_1");
+	end;
+OnTimer25000:
+	npctalk "Five minutes until the main unit arrives.", instance_npcname("#ext1_2");
+	end;
+OnTimer30000:
+	npctalk "Julian: Good. Put her in a jail. She is a research object so handle her with care.";
+	end;
+OnTimer35000:
+	npctalk "Yes!", instance_npcname("#ext1_1");
+	end;
+OnTimer36000:
+	npctalk "I see.", instance_npcname("#ext1_2");
+	end;
+OnTimer40000:
+	stopnpctimer;
+	disablenpc instance_npcname("Ebel#1_3");
+	disablenpc instance_npcname("#ext1_1");
+	disablenpc instance_npcname("#ext1_2");
+	disablenpc instance_npcname("Julian#3_1");
+	enablenpc instance_npcname("Julian#3_2");
+	end;
+}
+
+1@swat,308,49,6	duplicate(dummy_npc)	#ext1_1	4_F_ESTLOVELOY
+1@swat,308,45,6	duplicate(dummy_npc)	#ext1_2	4_F_ESTLOVELOY
+1@swat,310,47,6	duplicate(dummy_npc)	Ebel#1_3	4_F_HUNTER_EVIL
+
+1@swat,320,47,4	script	Julian#3_2	4_M_REBELLION2,{
+	if ('event != 5)
+		end;
+	mes "[Julian]";
+	mes "Hmm. The engineers need to repair the occupied base. It's time for battle force step outside.";
+	if (isbegin_quest(12374) == 1) {
+		getitem 25155,10;// Swz_Honor_Token
+		completequest 12374;// Heart Hunter Base occupation
+		terra_gloria_main = 20;
+	}
+	close2;
+	warp "ein_fild04",279,339;
+	end;
+
+OnInstanceInit:
+	'event = 0;
+
+	'instance_id = instance_id();
+	'map_swat$ = instance_mapname("1@swat");
+
+	if (instance_live_info(ILI_NAME) != "Heart Hunter War Base 1")
+		disablenpc instance_npcname("#start_npc");
+
+	// Step 1
+	disablenpc instance_npcname("Julian#1_1");
+	disablenpc instance_npcname("#start_npc2");
+	disablenpc instance_npcname("Julian#1");
+	disablenpc instance_npcname("Pile of gunpowder#1");
+	disablenpc instance_npcname("#hunter_instance_1_mob_1");
+
+	// Step 2
+	disablenpc instance_npcname("Julian#1_2");
+	disablenpc instance_npcname("#start_npc3");
+	disablenpc instance_npcname("Suspicious instrument#1");
+	disablenpc instance_npcname("#hunter_instance_1_mob_2");
+
+	// Step 3
+	disablenpc instance_npcname("Julian#2_ep16_2");
+	disablenpc instance_npcname("#start_npc4");
+	disablenpc instance_npcname("Pile of gunpowder#2");
+	disablenpc instance_npcname("#hunter_instance_1_mob_3");
+
+	// Boss
+	disablenpc instance_npcname("#expl1");
+	disablenpc instance_npcname("#expl2");
+	disablenpc instance_npcname("#expl3");
+	disablenpc instance_npcname("#expl4");
+	disablenpc instance_npcname("#start_boss1");
+	disablenpc instance_npcname("Julian#3");
+	disablenpc instance_npcname("Julian#3_1");
+	disablenpc instance_npcname("Julian#3_2");
+	disablenpc instance_npcname("Ebel#1_1");
+	disablenpc instance_npcname("#wp_b1_1");
+	disablenpc instance_npcname("#wp_b1_2");
+	disablenpc instance_npcname("#wp_b1_3");
+	disablenpc instance_npcname("#wp_b1_4");
+	disablenpc instance_npcname("#wp_b1_5");
+	disablenpc instance_npcname("#hunter_instance_ebel");
+	disablenpc instance_npcname("Ebel#1_3");
+	disablenpc instance_npcname("#ext1_1");
+	disablenpc instance_npcname("#ext1_2");
+
+	setcell 'map_swat$,116,30,116,66,cell_walkable,0;
+	setcell 'map_swat$,151,30,151,60,cell_walkable,0;
+	setcell 'map_swat$,250,30,250,46,cell_walkable,0;
+	end;
+}
+
+// instance 2
+
+// Warps
+1@swat,169,295,0	warp	#wp_boss	2,2,1@swat,150,263
+1@swat,151,266,0	warp	#wp_out	2,2,ein_fild04,279,339
+
+
+// Entrance
+1@swat,53,122,1	script	Julian#4	4_M_REBELLION2,{
+	if (is_party_leader() == false) {
+		mes "[Julian]";
+		mes "I'm talking to your leader now " + strcharinfo(0) + ".";
+		close;
+	}
+	mes "[Julian]";
+	mes "" + strcharinfo(0) + ", is this your first visit here?";
+	next;
+	.@s = select( "Yes, it is.", "No, I've been here before." );
+	if ('status_instance != 0)
+		end;
+	'status_instance = 1;
+	if (.@s == 1)
+		donpcevent instance_npcname("Julian#4_1") + "::OnStart";
+	else
+		donpcevent instance_npcname("Julian#4") + "::OnStart";
+	end;
+
+OnStart:
+	disablenpc instance_npcname("Julian#4");
+	enablenpc instance_npcname("Julian#4_1");
+	npctalk "Julian: Oh, how many trainings have we had so far?", instance_npcname("Julian#4_1");
+	initnpctimer;
+	end;
+OnTimer3000:
+	npctalk "Julian: As before, please attack without mercy, just like in a real combat.", instance_npcname("Julian#4_1");
+	end;
+OnTimer9000:
+	stopnpctimer;
+	disablenpc instance_npcname("Julian#4_1");
+	donpcevent instance_npcname("#remaining_hunter2_step1") + "::OnStart";
+	end;
+}
+
+1@swat,53,122,1	script	Julian#4_1	4_M_REBELLION2,{
+	end;
+OnStart:
+	disablenpc instance_npcname("Julian#4");
+	enablenpc instance_npcname("Julian#4_1");
+	npctalk "Julian: You might find this place unfamiliar.";
+	initnpctimer;
+	end;
+OnTimer3000:
+	npctalk "Julian: There was a pretty large space behind the zone that we had occupied.";
+	end;
+OnTimer7000:
+	npctalk "Julian: Although we cannot use it to move our troops, it is a perfect location to experience a mock combat.";
+	end;
+OnTimer12000:
+	npctalk "Julian: So we remodeled it as a training ground to have a mock combat similar to the previous combat.";
+	end;
+OnTimer17000:
+	npctalk "Julian: You will play the role of the invaders. Our troops will disguise as Heart Hunters and defend.";
+	end;
+OnTimer22000:
+	npctalk "Julian: It's a sort of defense training. It is to understand how much force we require to defend this area.";
+	end;
+OnTimer27000:
+	npctalk "Julian: Now, please attack without mercy, just like in a real battle.";
+	end;
+OnTimer33000:
+	stopnpctimer;
+	disablenpc instance_npcname("Julian#4_1");
+	donpcevent instance_npcname("#remaining_hunter2_step1") + "::OnStart";
+	end;
+}
+
+// Step 1
+1@swat,1,1,1	script	#remaining_hunter2_step1	-1,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#remaining_hunter2_step1");
+	.@label$ = instance_npcname("#remaining_hunter2_step1") + "::OnMobDead";
+	mapannounce 'map_swat$, "Attack to the base detected. Everyone, start a defense tactic.", bc_map,0xFF5555;
+	for ( .@y = 145; .@y <= 199; .@y += 9 ) {
+		for ( .@x = 28; .@x <= 48; .@x += 10 ) {
+			monster 'map_swat$,.@x,.@y, "Heart Hunter Guard",3627,1, .@label$;	// EP16_2_H_HUNTER_MD
+		}
+	}
+	end;
+OnMobDead:
+	.@label$ = instance_npcname("#remaining_hunter2_step1") + "::OnMobDead";
+	if (rand(100) < 5)
+		areamonster 'map_swat$, 28,145,48,199, "Upgraded Heart Hunter",3626,1, .@label$;		// EP16_2_H_HUNTER_V
+	.@count = mobcount( 'map_swat$, .@label$ );
+	mapannounce 'map_swat$, "Remaining " + .@count + " Heart Hunter", bc_map,0xFFFFFF;
+	if (.@count < 1)
+		initnpctimer;
+	end;
+OnTimer1000:
+	stopnpctimer;
+	mapannounce 'map_swat$, "Julian: Section 1 taken. Those in charge of Section 1's defense must assemble behind the barrack later.", bc_map,0xFF99;
+	disablenpc instance_npcname("#remaining_hunter2_step1");
+	enablenpc instance_npcname("#start2_1_1");
+	end;
+}
+
+1@swat,31,211,0	script	#start2_1_1	HIDDEN_WARP_NPC,5,5,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#start2_1_1");
+	mapannounce 'map_swat$, "Enemies reached the 1st security system. Security system is disabled.", bc_map,0xFF5555;
+	disablenpc instance_npcname("#tr132");
+	disablenpc instance_npcname("#tr133");
+	disablenpc instance_npcname("#tr134");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl88");
+	cloakonnpc instance_npcname("#wl88");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl89");
+	cloakonnpc instance_npcname("#wl89");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl90");
+	cloakonnpc instance_npcname("#wl90");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl91");
+	cloakonnpc instance_npcname("#wl91");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl92");
+	cloakonnpc instance_npcname("#wl92");
+	enablenpc instance_npcname("#start2_2_1");
+	enablenpc instance_npcname("Julian#5");
+	setcell 'map_swat$,23,222,40,222,cell_walkable,1;
+	end;
+}
+
+// Step 2
+1@swat,31,233,0	script	#start2_2_1	HIDDEN_WARP_NPC,2,2,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#start2_2_1");
+	donpcevent instance_npcname("Julian#5") + "::OnStart";
+	end;
+}
+
+1@swat,31,233,1	script	Julian#5	4_M_REBELLION2,{
+	mes "[Julian]";
+	mes "You safely passed Section 1. Now help us with the defense training for Section 2.";
+	close;
+OnStart:
+	npctalk "Julian: Was it too easy? In Section 2, we also have a training for the annihilation operation.";
+	initnpctimer;
+	end;
+OnTimer3000:
+	npctalk "Julian: This time, the defensive force and great number of force upgraded during the battle will be input.";
+	end;
+OnTimer7000:
+	npctalk "Julian: Please help us in the remaining training.";
+	end;
+OnTimer11000:
+	stopnpctimer;
+	disablenpc instance_npcname("Julian#5");
+	mapannounce 'map_swat$, "Enemies are approaching the 2nd defensive base. Phase 2 is announced.", bc_map,0xFF5555;
+	donpcevent instance_npcname("#remaining_hunter2_step2") + "::OnStart";
+	end;
+}
+
+1@swat,1,1,1	script	#remaining_hunter2_step2	-1,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#remaining_hunter2_step2");
+	.@label$ = instance_npcname("#remaining_hunter2_step2") + "::OnMobDead";
+	for ( .@y = 250; .@y <= 265; .@y += 5 ) {
+		for ( .@x = 25; .@x <= 60; .@x += 7 ) {
+			monster 'map_swat$,.@x,.@y, "Heart Hunter Guard",3627,1, .@label$;	// EP16_2_H_HUNTER_MD
+		}
+	}
+	end;
+OnMobDead:
+	.@label$ = instance_npcname("#remaining_hunter2_step2") + "::OnMobDead";
+	if (rand(100) < 10)
+		areamonster 'map_swat$, 25,250,60,265, "Upgraded Heart Hunter",3626,1, .@label$;		// EP16_2_H_HUNTER_V
+	.@count = mobcount( 'map_swat$, .@label$ );
+	mapannounce 'map_swat$, "Remaining " + .@count + " Heart Hunter", bc_map,0xFFFFFF;
+	if (.@count < 1)
+		initnpctimer;
+	end;
+OnTimer1000:
+	stopnpctimer;
+	disablenpc instance_npcname("#remaining_hunter2_step2");
+	mapannounce 'map_swat$, "Enemies reached Section 2. Security system disabled.", bc_map,0xFF5555;
+	disablenpc instance_npcname("#tr136");
+	disablenpc instance_npcname("#tr137");
+	disablenpc instance_npcname("#tr138");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl110");
+	cloakonnpc instance_npcname("#wl110");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl111");
+	cloakonnpc instance_npcname("#wl111");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl112");
+	cloakonnpc instance_npcname("#wl112");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl113");
+	cloakonnpc instance_npcname("#wl113");
+	specialeffect EF_LORD, AREA, instance_npcname("#wl114");
+	cloakonnpc instance_npcname("#wl114");
+	setcell 'map_swat$,22,272,52,272,cell_walkable,1;
+
+	enablenpc instance_npcname("#start2_2_2");
+	enablenpc instance_npcname("Julian#6");
+	enablenpc instance_npcname("SWT_8309#1");
+	enablenpc instance_npcname("Pile of gunpowder#4");
+	end;
+}
+
+// Step 3 - Maze
+1@swat,56,283,0	script	#start2_2_2	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#start2_2_2");
+	donpcevent instance_npcname("Julian#6") + "::OnStart";
+	end;
+}
+
+1@swat,56,283,1	script	Julian#6	4_M_REBELLION2,{
+	mes "[Julian]";
+	mes "This security system here controls plenty of system devices over there.";
+	next;
+	mes "[Julian]";
+	mes "If you activate the device, they will open a narrow passage you can barely go through.";
+	next;
+	mes "[Julian]";
+	mes "Unless you activate the device, the defensive training does not start. Activate it when you are ready.";
+	close;
+
+OnStart:
+	initnpctimer;
+	npctalk "Julian: You have easily annihilated the upgraded force in Section 2. I'd better change our defensive tactic.";
+	end;
+OnTimer6000:
+	npctalk "Julian: By the way, the defensive device left in front of you will be quite different from those you have faced so far.";
+	end;
+OnTimer10000:
+	npctalk "Julian: I have constructed an automatic defense system by extensively installing the security system of Heart Hunter guys.";
+	end;
+OnTimer16000:
+	npctalk "Julian: The goal is to check how we can block enemies when we use the automatic devices and forces together in our defense tactic.";
+	end;
+OnTimer20000:
+	npctalk "Julian: If you operate the controller in front of me, the 3rd course begins.";
+	end;
+OnTimer24000:
+	stopnpctimer;
+	npctalk "Julian: If you come through the narrow passage and annihilate half of the force, I will judge that the defense has failed.";
+	end;
+}
+
+1@swat,60,286,4	script	SWT_8309#1	4_SCR_MT_ROBOTS,{
+	if ('status_instance != 1)
+		end;
+	mes "You can see an unusually attractive";
+	mes "red button.";
+	mes "---------------------";
+	mes "^ff0000[Do not push]^000000";
+	next;
+	if (select( "Ignore it", "Push it" ) == 1) {
+		mes "You ignored the button and stepped back. Nothing happened.";
+		close;
+	}
+	if ('status_instance != 1)	// note: officially several maze can be made
+		end;
+	'status_instance = 2;
+	mapannounce 'map_swat$, "There is an intruder in the restricted area. All unit members assemble.", bc_map,0xFF99;
+	specialeffect EF_FIREPILLARBOMB;
+	disablenpc instance_npcname("SWT_8309#1");
+	donpcevent instance_npcname("#hunter_instance_2_maze") + "::OnStart";
+	end;
+}
+
+1@swat,1,1,1	script	#hunter_instance_2_maze	-1,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#hunter_instance_2_maze");
+	.@label$ = instance_npcname("#hunter_instance_2_maze") + "::OnMobDead";
+	for ( .@y = 300; .@y <= 330; .@y += 10 ) {
+		for ( .@x = 30; .@x <= 120; .@x += 10 ) {
+			monster 'map_swat$,.@x,.@y, "Heart Hunter Guard",3627,1, .@label$;	// EP16_2_H_HUNTER_MD
+		}
+	}
+	// maze - pregenerated ?
+	.@r = rand(6);
+	if (.@r == 0) setarray .@npc_num[0], 4, 5, 6, 10, 16, 17, 23, 29, 34, 35, 40, 46, 52, 53, 59, 65, 71, 72, 78, 84, 90, 89, 95, 101, 107;
+	else if (.@r == 1) setarray .@npc_num[0], 4, 5, 6, 10, 16, 17, 23, 29, 35, 36, 42, 48, 53, 54, 59, 65, 71, 72, 78, 84, 89, 90, 95, 101, 107, 136, 137, 138;
+	else if (.@r == 2) setarray .@npc_num[0], 3, 4, 5,  6,  9, 15, 16, 22, 28, 34, 35, 41, 47, 53, 54, 60, 66, 71, 72, 77, 83, 88, 89,  94, 100, 106, 138;
+	else if (.@r == 3) setarray .@npc_num[0], 2, 3, 4,  5,  6,  8, 13, 14, 19, 25, 31, 32, 38, 44, 49, 50, 55, 61, 67, 68, 74, 80, 86,  87,  93,  99;
+	else if (.@r == 4) setarray .@npc_num[0], 1, 2, 3,  4,  6,  5,  7, 13, 14, 20, 26, 31, 32, 37, 43, 49, 50, 56, 62, 68, 69, 75, 81,  86,  87,  92, 98, 104;
+	else if (.@r == 5) setarray .@npc_num[0], 1, 2, 3,  4,  5,  6,  7, 13, 14, 20, 26, 31, 32, 37, 43, 49, 50, 56, 62, 67, 68, 73, 79,  85,  86,  92;
+
+	.@size = getarraysize(.@npc_num);
+	for ( .@i = 0; .@i < .@size; .@i++ )
+		disablenpc instance_npcname( "#tr" + .@npc_num[.@i] );
+	end;
+OnMobDead:
+	.@label$ = instance_npcname("#hunter_instance_2_maze") + "::OnMobDead";
+	.@count = mobcount( 'map_swat$, .@label$ );
+	mapannounce 'map_swat$, "Remaining defensive force " + .@count + "%", bc_map,0xFFFFFF;
+	if (.@count <= 20)
+		initnpctimer;
+	end;
+OnTimer1000:
+	stopnpctimer;
+	disablenpc instance_npcname("#hunter_instance_2_maze");
+	mapannounce 'map_swat$, "Enemies disabled the Third security system. Base defense failed.", bc_map,0xFF5555;
+	killmonster 'map_swat$, instance_npcname("#hunter_instance_2_maze") + "::OnMobDead";
+	enablenpc instance_npcname("Julian#7");
+	enablenpc instance_npcname("Ebel#3");
+	enablenpc instance_npcname("Julian#8_0");
+	enablenpc instance_npcname("#start2_boss");
+	enablenpc instance_npcname("#wp_boss");
+	end;
+}
+
+1@swat,82,248,0	script	Pile of gunpowder#4	4_ENERGY_YELLOW,{
+	specialeffect EF_COIN;
+	disablenpc instance_npcname("Pile of gunpowder#4");
+	for ( .@i = 0; .@i < 4; .@i++ )
+		makeitem 25154,1,'map_swat$, rand(78,82), rand(250,251);	// Antique_Powder
+	initnpctimer;
+	end;
+}
+
+1@swat,164,300,6	script	Julian#7	4_M_REBELLION2,{
+	mes "[Julian]";
+	mes "We have something as the last resort, in case we fail to defend the base. It's time to test it now.";
+	next;
+	mes "[Julian]";
+	mes "Enter the door in front of you.";
+	close;
+}
+
+// Boss room
+1@swat,136,258,0	script	#start2_boss	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#start2_boss");	// note: this npc is only disabled from here
+	npctalk "Julian: Great. Well done, Ebel. No, don't kick the dog... He's not an enemy.", instance_npcname("Julian#8_0");
+	end;
+}
+
+1@swat,129,258,6	script	Ebel#3	4_F_HUNTER_EVIL,{
+	mes "[Ebel]";
+	mes "Are you my companion? Or an enemy? Which side are you on?";
+	cutin "ep16_evil101.bmp",2;
+	close3;
+}
+
+1@swat,136,258,3	script	Julian#8_0	4_M_REBELLION2,{
+	if ('status_instance != 2)
+		end;
+	if (is_party_leader() == false) {
+		mes "[Julian]";
+		mes "Wait for a while " + strcharinfo(0) + " we will proceed once your unit leader comes.";
+		close;
+	}
+	mes "[Julian]";
+	mes "It took me more than a week until I was able to talk to her. Now she speaks well.";
+	next;
+	if (select( "Are you close enough to call her by the first name?", "I know. Let's start right now." ) == 1) {
+		mes "[Julian]";
+		mes "No, don't look at me like that. This girl would never talk to other guys. So I became in charge of her.";
+		next;
+		mes "[Julian]";
+		mes "... It's real.";
+		close2;
+		if (is_party_leader() == true && 'status_instance == 2)
+			donpcevent instance_npcname("Julian#8") + "::OnStart";
+		end;
+	}
+	mes "[Julian]";
+	mes "Hmm. Great. Let's start right away.";
+	if (is_party_leader() == true && 'status_instance == 2)
+		donpcevent instance_npcname("Julian#8_0") + "::OnStart";
+	close;
+OnStart:
+	'status_instance = 3;
+	disablenpc instance_npcname("Julian#8_0");
+	enablenpc instance_npcname("Julian#8");
+	initnpctimer;
+	npctalk "Julian: Ebel~ You confronted this fellow last time. Do you remember?", instance_npcname("Julian#8");
+	end;
+OnTimer4000:
+	npctalk "Ebel: I don't remember. Has he come to destroy this place?", instance_npcname("Ebel#3");
+	stopnpctimer;
+	donpcevent instance_npcname("#hunter_instance_2_talk") + "::OnStart";
+	end;
+}
+
+1@swat,136,258,3	script	Julian#8	4_M_REBELLION2,{
+	end;
+OnStart:
+	'status_instance = 3;
+	disablenpc instance_npcname("Julian#8_0");
+	enablenpc instance_npcname("Julian#8");
+	initnpctimer;
+	npctalk "Julian: This is the girl we captured last time.";
+	end;
+OnTimer3000:
+	npctalk "Julian: We don't know who she is and where she is from. All we know is her name, Ebel...";
+	end;
+OnTimer8000:
+	npctalk "Julian: Without any previous memory or rationality, only the intention to protect the base is left in her.";
+	end;
+OnTimer13000:
+	npctalk "Julian: She is in such a mechanical status that it is difficult to see a human in her. But she doesn't attack anyone, unless judged as an enemy.";
+	end;
+OnTimer18000:
+	npctalk "Julian: You have to help me in finding out her potential ability.";
+	end;
+OnTimer22000:
+	npctalk "Ebel: Julian, is that an enemy?", instance_npcname("Ebel#3");
+	end;
+OnTimer25000:
+	npctalk "Julian: Oh, the person in front of you is your enemy only for a while.";
+	end;
+OnTimer29000:
+	stopnpctimer;
+	npctalk "Ebel: Has he come to destroy this place?", instance_npcname("Ebel#3");
+	donpcevent instance_npcname("#hunter_instance_2_talk") + "::OnStart";
+	end;
+}
+
+1@swat,1,1,1	script	#hunter_instance_2_talk	-1,{
+	end;
+OnStart:
+	initnpctimer;
+	end;
+OnTimer3000:
+	npctalk "Julian: Well... Sort of.", instance_npcname("Julian#8");
+	end;
+OnTimer5000:
+	specialeffect EF_INCAGILITY, AREA, instance_npcname("Ebel#3");
+	npctalk "Ebel: Then...", instance_npcname("Ebel#3");
+	end;
+OnTimer7000:
+	specialeffect EF_SIGNUM, AREA, instance_npcname("Ebel#3");
+	npctalk "Ebel: I will stop him.", instance_npcname("Ebel#3");
+	end;
+OnTimer8000:
+	mapannounce 'map_swat$, "Security system: Phase 2 of the emergency situation is announced. Automatic defensive device is activated.", bc_map,0xFF5555;
+	end;
+OnTimer12000:
+	stopnpctimer;
+	disablenpc instance_npcname("Julian#8");
+	disablenpc instance_npcname("Ebel#3");
+	for ( .@i = 141; .@i <= 152; .@i++ )
+		enablenpc instance_npcname( "#tr" + .@i );
+	donpcevent instance_npcname("#hunter_instance_2_ebel") + "::OnStart";
+	end;
+}
+
+1@swat,1,1,1	script	#hunter_instance_2_ebel	-1,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#hunter_instance_2_ebel");
+	monster 'map_swat$,129,258, "Heart_Hunter Ebel",3628,1, instance_npcname("#hunter_instance_2_ebel") + "::OnMobDead";	// EP16_2_H_HUNTER_EV
+	end;
+OnMobDead:
+	if (mobcount( 'map_swat$, instance_npcname("#hunter_instance_2_ebel") + "::OnMobDead" ) < 1)
+		initnpctimer;
+	end;
+OnTimer1000:
+	mapannounce 'map_swat$, "Security system: Emergency situation is discharged. Terminating the automatic defense device.", bc_map,0xFF5555;
+	end;
+OnTimer4000:
+	enablenpc instance_npcname("Julian#8_1");
+	enablenpc instance_npcname("Ebel#3_1");
+	for ( .@i = 141; .@i <= 152; .@i++ )
+		disablenpc instance_npcname( "#tr" + .@i );
+	end;
+OnTimer7000:
+	stopnpctimer;
+	donpcevent instance_npcname("Julian#8_1") + "::OnStart";
+	end;
+}
+
+1@swat,129,258,6	script	Ebel#3_1	4_F_HUNTER_EVIL,{
+	switch( rand(4) ) {
+	case 0:
+		cutin "ep16_evil103.bmp",2;
+		mes "[Ebel]";
+		mes "Where did you learn the technique you have used a moment ago?";
+		close3;
+	case 1:
+		cutin "ep16_evil102.bmp",2;
+		mes "[Ebel]";
+		mes "...";
+		close3;
+	case 2:
+		cutin "ep16_evil103.bmp",2;
+		mes "[Ebel]";
+		mes "Where did you learn the technique you have used a moment ago?";
+		close3;
+	case 3:
+		cutin "ep16_evil101.bmp",2;
+		mes "[Ebel]";
+		mes "You... You're stronger than me. I have never experienced this before...";
+		close3;
+	}
+}
+
+1@swat,136,258,3	script	Julian#8_1	4_M_REBELLION2,{
+	mes "[Julian]";
+	mes "Hmm. Good job. Let us leave the training ground. The gateway is upstairs. Go up the stairs behind me.";
+	close;
+OnStart:
+	initnpctimer;
+	npctalk "Julian: I am not trying to underestimate your combat ability";
+	end;
+OnTimer5000:
+	npctalk "Julian: But I don't think Ebel is using 100% of her power.";
+	end;
+OnTimer10000:
+	npctalk "Julian We have to check her a little longer...";
+	end;
+OnTimer13000:
+	npctalk "Ebel: Am I... being disposed?", instance_npcname("Ebel#3_1");
+	end;
+OnTimer16000:
+	npctalk "Julian: What are you talking about? Disposing is only for machines.";
+	end;
+OnTimer20000:
+	npctalk "Ebel: Then you are not disposing me?", instance_npcname("Ebel#3_1");
+	end;
+OnTimer23000:
+	npctalk "Julian: Stop nagging. The training is over, get ready for the meal. It's time to eat.";
+	end;
+OnTimer28000:
+	npctalk "Ebel: Meal...", instance_npcname("Ebel#3_1");
+	emotion ET_SURPRISE, getnpcid(0, instance_npcname("Ebel#3_1") );
+	end;
+OnTimer31000:
+	npctalk "Julian: Yes. Go and change into casual clothes.";
+	end;
+OnTimer35000:
+	npctalk "Ebel: Ebel follows Julian's instruction.", instance_npcname("Ebel#3_1");
+	emotion ET_OK;
+	end;
+OnTimer41000:
+	disablenpc instance_npcname("Ebel#3_1");
+	end;
+OnTimer42000:
+	stopnpctimer;
+	npctalk "Julian: Hmm. Good job. Let us leave the training ground. The gateway is upstairs. Go up the stairs behind me.", instance_npcname("Julian#8_1");
+	enablenpc instance_npcname("#wp_out");
+	end;
+
+OnInstanceInit:
+	'status_instance = 0;
+
+	'instance_id = instance_id();
+	'map_swat$ = instance_mapname("1@swat");
+
+	if (instance_live_info(ILI_NAME) != "Heart Hunter War Base 2")
+		disablenpc instance_npcname("Julian#4");
+
+	// warps
+	disablenpc instance_npcname("#wp_boss");
+	disablenpc instance_npcname("#wp_out");
+
+	// Entrance
+	disablenpc instance_npcname("Julian#4_1");
+
+	// Step 1
+	disablenpc instance_npcname("#remaining_hunter2_step1");
+	disablenpc instance_npcname("#start2_1_1");
+
+	// Step 2
+	disablenpc instance_npcname("Julian#5");
+	disablenpc instance_npcname("#start2_2_1");
+	disablenpc instance_npcname("#remaining_hunter2_step2");
+
+	// Step 3 - Maze
+	disablenpc instance_npcname("#start2_2_2");
+	disablenpc instance_npcname("Julian#6");
+	disablenpc instance_npcname("SWT_8309#1");
+	disablenpc instance_npcname("#hunter_instance_2_maze");
+	disablenpc instance_npcname("Pile of gunpowder#4");
+
+	// Step 4 - Boss
+	disablenpc instance_npcname("Julian#7");
+	disablenpc instance_npcname("Ebel#3");
+	disablenpc instance_npcname("Julian#8_0");
+	disablenpc instance_npcname("Julian#8");
+	disablenpc instance_npcname("#start2_boss");
+	disablenpc instance_npcname("#hunter_instance_2_talk");
+	disablenpc instance_npcname("#hunter_instance_2_ebel");
+
+	for ( .@i = 141; .@i <= 152; .@i++ )
+		disablenpc instance_npcname( "#tr" + .@i );
+	disablenpc instance_npcname("Julian#8_1");
+	disablenpc instance_npcname("Ebel#3_1");
+
+	setcell 'map_swat$,23,222,40,222,cell_walkable,0;
+	setcell 'map_swat$,22,272,52,272,cell_walkable,0;
+	end;
+}

+ 13 - 7
npc/re/instances/SarahAndFenrir.txt

@@ -666,8 +666,10 @@ OnTimer15500:
 1@glast,199,237,0	script	#glast_move_03	WARPNPC,2,2,{
 	end;
 OnTouch:
-	if (is_party_leader() == true)
-		warpparty 'map_glast$,197,263, getcharid(1), 'map_glast$,1,1;
+	if (is_party_leader() == true) {
+		// warpparty 'map_glast$,197,263, getcharid(1), 'map_glast$,1,1;	// using mapwarp for now
+		mapwarp 'map_glast$,'map_glast$,197,263;
+	}
 	end;
 }
 
@@ -675,8 +677,10 @@ OnTouch:
 1@glast,199,294,0	script	#glast_move_03a	WARPNPC,3,3,{
 	end;
 OnTouch:
-	if (is_party_leader() == true)
-		warpparty 'map_glast$,188,334, getcharid(1), 'map_glast$,1,1;
+	if (is_party_leader() == true) {
+		// warpparty 'map_glast$,188,334, getcharid(1), 'map_glast$,1,1;
+		mapwarp 'map_glast$,'map_glast$,188,334;
+	}
 	end;
 }
 
@@ -694,7 +698,8 @@ OnTouch:
 OnTouch:
 	if (is_party_leader() == true) {
 		donpcevent instance_npcname("#sarah_wrath") + "::OnStop";
-		warpparty 'map_glast$,349,282, getcharid(1), 'map_glast$,1,1;
+		// warpparty 'map_glast$,349,282, getcharid(1), 'map_glast$,1,1;
+		mapwarp 'map_glast$,'map_glast$,349,282;
 	}
 	end;
 }
@@ -763,12 +768,13 @@ OnTouch:
 		npctalk "Fenrith Fenrir: We don't have much time! We have to go search for it now! Let's go in!", 'fenrir_3$;
 		sleep2 2000;
 		setpcblock PCBLOCK_NPC, false;
-		if ('skip_left_part == 0) {// 5 mins have passed?
+		if ('skip_left_part == 0 && is_party_leader() == true) {// 5 mins have passed?
 			donpcevent instance_npcname("#fenrir_left_final_2") + "::OnStop";
 			disablenpc 'fenrir_3$;
 			enablenpc 'fenrir_4$;
 			enablenpc instance_npcname("#glast_event_9");
-			warpparty 'map_glast$,41,348, getcharid(1), 'map_glast$,1,1;
+			// warpparty 'map_glast$,41,348, getcharid(1), 'map_glast$,1,1;
+			mapwarp 'map_glast$,'map_glast$,41,348;
 		}
 	}
 	end;

+ 1091 - 0
npc/re/instances/WernerLaboratoryCentralRoom.txt

@@ -0,0 +1,1091 @@
+//===== rAthena Script =======================================
+//= Instances Werner Laboratory central room.
+//===== Description: =========================================
+//- [Walkthrough conversion]
+//- Require Terra Gloria main quest.
+//- Note: For now there are 2 instances (officially one) to
+//  avoid exploit, the warp entry being the same. The first
+//  (main quest) is a solo instance and the 2nd (daily) a
+//  a party instance. The instance is a basic version,
+//  KRO added Seyren boss fight in the next updates.
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+slabw01,232,91,5	duplicate(dummy_cloaked_npc)	Skia#ep162_06	4_EP16_SKIA
+slabw01,233,92,3	duplicate(dummy_cloaked_npc)	Scared researcher#ep162	4_M_ALCHE_A
+
+// Werner Laboratory central room (solo instance)
+slabw01,236,91,3	script	Rookie#ep162_04	4_M_ROOKIE,{
+	if (terra_gloria_main == 20) {
+		mes "[Rookie]";
+		mes "Take a look at this.";
+		mes "According to the design drawing, this part is connected to the central room... But I only see a suspicious gate.";
+		next;
+		mes "[Rookie]";
+		mes "No wonder it looked like they had something to back them up.";
+		mes "Shall we use an explosive and blow it up?";
+		next;
+		cloakoffnpc( "Skia#ep162_06", getcharid(0) );
+		cloakoffnpc( "Scared researcher#ep162", getcharid(0) );
+		npctalk "Wait!", "Skia#ep162_06", bc_self;
+		mes "[Skia]";
+		mes "Not in such a crude way!";
+		mes "Well, I made a great decision when I came here.";
+		mes "Tell him to open this.";
+		next;
+		npctalk "Wow! This lady is quite smart!", "", bc_self;
+		npctalk "Why ... why are you doing this to me?!", "Scared researcher#ep162", bc_self;
+		mes "[Skia]";
+		mes "I asked him whether he knows the paths here, and his answer was yes. So I brought him here.";
+		mes "He will activate the gate to the central room.";
+		next;
+		npctalk "This ... is the way to do it.", "Scared researcher#ep162", bc_self;
+		mes "[Rookie]";
+		mes "Hmm, I see. That's the way to operate it.";
+		mes "Great, now I got it.";
+		mes "And we don't need him anymore.";
+		next;
+		npctalk "Wh... what?! Please don't kill me!", "Scared researcher#ep162", bc_self;
+		mes "[Skia]";
+		mes "Really? Then I will bring this researcher to the squadron outside.";
+		mes "About the central room, " + strcharinfo(0) + " I am counting on you!";
+		next;
+		cloakonnpc( "Skia#ep162_06", getcharid(0) );
+		cloakonnpc( "Scared researcher#ep162", getcharid(0) );
+		mes "[Rookie]";
+		mes "Haha, they let us open the gate of the central room!";
+		mes "Please speak to me again once you are ready to go in here.";
+		next;
+		mes "[Rookie]";
+		mes "After activating the gate, we have to guard it from outside.";
+		mes "So I cannot go in there with you.";
+		terra_gloria_main = 21;
+		close;
+	}
+	if (terra_gloria_main == 21) {
+		if (is_party_leader() == false) {
+			mes "^4d4dffThis event is proceeded to the Memorial.";
+			mes "Please try again after organizing a party.^000000";
+			close;
+		}
+		mes "[Rookie]";
+		mes "Are you ready?";
+		mes "If you are entering now, I will activate the gate.";
+		next;
+		if (select( "Enter now.", "Do not enter." ) == 2) {
+			mes "[Rookie]";
+			mes "We both know that we don't have time for this, don't we?";
+			close;
+		}
+		mes "[Rookie]";
+		mes "Wow! This is it! I always learn things quickly!";
+		mes "Well, please go in now!";
+		cloakoffnpc( "Central_room#evt_gate01", getcharid(0) );
+		instance_create("Werner Laboratory central room#1");	// officially there is only one 'Werner Laboratory central room' instance
+		close;
+	}
+	if (terra_gloria_main == 22) {
+		mes "[Rookie]";
+		mes "Have you reclaimed the stuff?";
+		close;
+	}
+	switch( checkquest(7742,HUNTING) ) {
+	case -1:
+		mes "[Rookie]";
+		mes "We have found a strange phenomenon in the central room. We are not investigating it.";
+		mes "Perhaps there was a strong experimental subject left inside.";
+		next;
+		mes "[Rookie]";
+		mes "What kind of facility is this?";
+		mes "Ssss.";
+		mes "Once it is identified appropriately, I might ask you for a settlement ...";
+		mes "I will have to guard the gate of the central room again.";
+		close;
+	case 0:
+	case 1:
+		if (getcharid(1) < 1) {
+			mes "^4d4dffThis event is proceeded to the Memorial.";
+			mes "Please try again after organizing a party.^000000";
+			close;
+		}
+		if (is_party_leader() == false) {
+			mes "[Rookie]";
+			mes "If there is a gate that has already been activated, you can see it.";
+			next;
+			mes "[Rookie]";
+			mes "Otherwise, please ask your party leader for entrance.";
+			close;
+		}
+		mes "[Rookie]";
+		mes "Are you ready?";
+		mes "If you are entering now, I will activate the gate.";
+		next;
+		if (select( "Enter now.", "Do not enter." ) == 2) {
+			mes "[Rookie]";
+			mes "We both know that we don't have time for this, don't we?";
+			close;
+		}
+		mes "[Rookie]";
+		mes "Wow! This is it! I always learn things quickly!";
+		mes "Well, please go in now!";
+		cloakoffnpc( "Central_room#evt_gate01", getcharid(0) );
+		instance_create("Werner Laboratory central room#2");
+		close;
+	case 2:
+		mes "[Rookie]";
+		mes "We are not sure how many more experimental subjects are there that were made and abandoned by that Eisen Werner guy.";
+		next;
+		mes "[Rookie]";
+		mes "But let's call it a day.";
+		close;
+	}
+	end;
+
+OnInit:
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, " checkquest(7742,HUNTING) == 0 || checkquest(7742,HUNTING) == 1 " );
+	end;
+}
+
+slabw01,246,88,3	script	Central_room#evt_gate01	PORTAL,{
+	if (terra_gloria_main != 21 && terra_gloria_main < 23)
+		end;
+	if (getcharid(1) < 1 || (terra_gloria_main == 21 && is_party_leader() == false)) {
+		mes "^4d4dffMD Only the party leader can enter [Central room] now.^000000";
+		close;
+	}
+	mes "You can move to the central room.";
+	next;
+	if (select( "Go in.", "Do not go in." ) == 2) {
+		mes "[Rookie]";
+		mes "Oh ... I have to turn it on every time. It's so inconvenient!";
+		close;
+	}
+	if (terra_gloria_main == 21)
+		.@md_name$ = "Werner Laboratory central room#1";
+	else
+		.@md_name$ = "Werner Laboratory central room#2";	// officially player without the daily hunting quest can enter in the instance, allowing to spam the instance without delay
+	switch( instance_enter(.@md_name$) ) {
+	case IE_NOMEMBER:
+		end;
+	case IE_NOINSTANCE:
+		mes "[Rookie]";
+		mes "The gate is malfunctioning now. It's dangerous like this ...";
+		mes "Please wait for a while.";
+		close;
+	case IE_OTHER:
+		mes "An unknown error has occurred.";
+		close;
+	case IE_OK:
+		mapannounce "slabw01", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering the " + .@md_name$ + ".", bc_map, 0xFF99;
+		// warp "1@slw",187,24;
+		end;
+	}
+	end;
+
+OnInit:
+	cloakonnpc( strnpcinfo(0) );
+	end;
+}
+
+// warps
+1@slw,187,170,0	warp	#slwwarp01	1,1,1@slw,71,32
+1@slw,71,77,0	warp	#slwwarp02	1,1,1@slw,54,134
+1@slw,55,150,0	warp	Emergency exit#exit_war	1,1,que_swat,155,58
+
+// Entrance - event type
+1@slw,187,25,0	script	#sl_evt01	HIDDEN_WARP_NPC,2,2,{
+	end;
+OnTouch:
+	if (is_party_leader() == false)
+		end;
+	disablenpc instance_npcname("#sl_evt01");
+	if (instance_live_info(ILI_NAME) == "Werner Laboratory central room#1")	// terra_gloria_main == 21
+		enablenpc instance_npcname("Eisen Werner#werner01");
+	else {
+		enablenpc instance_npcname("Guard#gard01");
+		enablenpc instance_npcname("Guard#gard02");
+		enablenpc instance_npcname("Guard#gard03");
+		enablenpc instance_npcname("Guard#gard04");
+	}
+	end;
+
+OnInstanceInit:
+	'device_state[0] = 'device_state[1] = 0;
+	'event_final = 0;
+
+	'map_slw$ = instance_mapname("1@slw");
+
+	disablenpc instance_npcname("#slwwarp01");
+	disablenpc instance_npcname("#slwwarp02");
+	disablenpc instance_npcname("Central Entrance#door");
+	disablenpc instance_npcname("Emergency exit#exit_war");
+
+	disablenpc instance_npcname("Eisen Werner#werner01");
+	disablenpc instance_npcname("Eisen Werner#werner02");
+	disablenpc instance_npcname("Eisen Werner#werner03");
+	disablenpc instance_npcname("Eisen Werner#werner04");
+	disablenpc instance_npcname("Eisen Werner#werner05");
+
+	disablenpc instance_npcname("Security device#switch01");
+	disablenpc instance_npcname("Security device#switch02");
+	disablenpc instance_npcname("Security device#switch11");
+	disablenpc instance_npcname("Security device#switch12");
+
+	disablenpc instance_npcname("Guard#gard01");
+	disablenpc instance_npcname("Guard#gard02");
+	disablenpc instance_npcname("Guard#gard03");
+	disablenpc instance_npcname("Guard#gard04");
+	disablenpc instance_npcname("Guard#gard05");
+	disablenpc instance_npcname("Guard#gard06");
+	disablenpc instance_npcname("Guard#gard07");
+
+	disablenpc instance_npcname("Seyren Windsor#seiren");
+	disablenpc instance_npcname("Pet child#boss_master");
+	disablenpc instance_npcname("#boss_master_dummy");
+	end;
+}
+
+// Room 1
+// * Samples and devices
+1@slw,174,145,3	script	Displayed sample#01	CLEAR_NPC,{
+	setarray .@sample$[0],
+		"^ff0000Purity^000000", "MT-Wxx0s57b",
+		"^4d4dffRose^000000", "MT-Wxx00b21",
+		"^4d4dffContradiction^000000", "MT-Wxx023-f1",
+		"^4d4dffJoy^000000", "OT-Wxx01-c",
+		"^4d4dffSea^000000", "MT-Wxc1c1b",
+		"^ff0000Eternity^000000", "MT-Wx267b",
+		"^4d4dffWay back home^000000", "OTM-Wxff01",
+		"^4d4dffLoneliness^000000", "MT-Wxx00c46",
+		"^4d4dffGlow^000000", "OT-Wxx4d4dff",
+		"^ff0000Dawn^000000", "MT-Wff_01v",
+		"^4d4dffTwilight^000000", "OT-Wxx00c3b",
+		"^4d4dffGirl^000000's ^ff0000dream^000000", "MT-Wxx0ax2-1";
+	.@num = (atoi(strnpcinfo(2)) - 1) * 2;
+	mes "[" + .@sample$[.@num] + "]";
+	mes "Experiment_number: " + .@sample$[.@num+1] + "";
+	close;
+}
+1@slw,201,145,3	duplicate(Displayed sample#01)	Displayed sample#02	CLEAR_NPC
+1@slw,174,132,3	duplicate(Displayed sample#01)	Displayed sample#03	CLEAR_NPC
+1@slw,201,132,3	duplicate(Displayed sample#01)	Displayed sample#04	CLEAR_NPC
+1@slw,174,118,3	duplicate(Displayed sample#01)	Displayed sample#05	CLEAR_NPC
+1@slw,201,118,3	duplicate(Displayed sample#01)	Displayed sample#06	CLEAR_NPC
+1@slw,174,104,3	duplicate(Displayed sample#01)	Displayed sample#07	CLEAR_NPC
+1@slw,201,104,3	duplicate(Displayed sample#01)	Displayed sample#08	CLEAR_NPC
+1@slw,174,90,3	duplicate(Displayed sample#01)	Displayed sample#09	CLEAR_NPC
+1@slw,201,90,3	duplicate(Displayed sample#01)	Displayed sample#10	CLEAR_NPC
+1@slw,174,76,3	duplicate(Displayed sample#01)	Displayed sample#11	CLEAR_NPC
+1@slw,201,76,3	duplicate(Displayed sample#01)	Displayed sample#12	CLEAR_NPC
+
+// * Events - First entrance
+1@slw,188,42,3	script	Eisen Werner#werner01	4_M_EISEN,{
+	if (is_party_leader() == false)
+		end;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "Here comes the main character.";
+	mes "Honestly, I'm impressed. I never expected you would come all the way here.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Well, whatever.";
+	mes "Welcome.";
+	mes "Welcome to Eisen Werner's world.";
+	next;
+	cutin "ep16_eisen02.bmp",1;
+	mes "[Eisen Werner]";
+	mes "I never imagined that it would be done all of a sudden like this.";
+	mes "Whatever. Who cares?";
+	next;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "I've given up saving this laboratory anyway.";
+	mes "Would you like to take a look?";
+	next;
+	mes "[Eisen Werner]";
+	mes "There were many things, including cracks in dimensions, etc.";
+	mes "In some worlds, the flow of time is twisted.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Is it a parallel world?";
+	mes "Or has someone been to a certain point in the past?";
+	next;
+	mes "[Eisen Werner]";
+	mes "What does time mean? Have you ever thought about it?";
+	mes "Its flow is relative.";
+	next;
+	mes "[Eisen Werner]";
+	mes "That guy has stopped now.";
+	mes "If time goes biologically, it means someone gets older.";
+	next;
+	mes "[Eisen Werner]";
+	mes "That was stopped by force.";
+	mes "In that case, we use an expression such as this.";
+	next;
+	cutin "ep16_eisen02.bmp",1;
+	mes "[Eisen Werner]";
+	mes "The time has stopped.";
+	next;
+	mes "[Eisen Werner]";
+	mes "....";
+	next;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "Would you like to take a look inside?";
+	mes "Take your time and look through the corridor.";
+	next;
+	mes "[Eisen Werner]";
+	mes "I will guide you.";
+	close2;
+	cutin "",255;
+	if (is_party_leader() == true) {
+		disablenpc instance_npcname("Eisen Werner#werner01");
+		enablenpc instance_npcname("Eisen Werner#werner02");
+	}
+	end;
+}
+
+1@slw,189,164,3	script	Eisen Werner#werner02	4_M_EISEN,{
+	if (is_party_leader() == false)
+		end;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "Did you enjoy my work?";
+	mes "I sent the silly guys back to start over.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Well, it wasn't easy at all.";
+	mes "......";
+	next;
+	cutin "ep16_eisen02.bmp",1;
+	mes "[Eisen Werner]";
+	mes "If only that kid had gone back, he would not have ended that way...";
+	next;
+	mes "[Eisen Werner]";
+	mes "I mean, if only he stopped...";
+	next;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "The chairman... I mean, that person is obsessed with the past.";
+	mes "Thanks to the chairman, I can do my research as I want.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Aren't you curious about it?";
+	mes "Why is he so obsessed with the past?";
+	next;
+	mes "[Eisen Werner]";
+	mes "By the way, you have to operate the instruments on the right and left if you want to go beyond this.... Can you do it?";
+	next;
+	mes "[Eisen Werner]";
+	mes "Since it's a simple device, I guess you can.";
+	mes "Change ^ff0000red^000000 to ^4d4dffblue^000000.";
+	mes "And change ^4d4dffblue^000000 to ^ff0000red^000000. That's it.";
+	next;
+	mes "[Eisen Werner]";
+	mes "If you looked at my work properly, you'll understand what I am saying.";
+	mes "Then I'll see you in the next zone.";
+	close2;
+	cutin "",255;
+	if (is_party_leader() == true) {
+		disablenpc instance_npcname("Eisen Werner#werner02");
+		enablenpc instance_npcname("Security device#switch01");
+		enablenpc instance_npcname("Security device#switch02");
+	}
+	end;
+}
+
+1@slw,155,191,3	script	Security device#switch01	CLEAR_NPC,{
+	if (is_party_leader() == false)
+		end;
+	.@number = atoi( replacestr( strnpcinfo(2), "switch", "" ) );
+	.@type = (.@number < 10) ? 0 : 1;
+	.@npc_num = (.@number < 10) ? .@number : (.@number-10);
+	if ('device_state[.@type] & .@npc_num) {
+		mes "It is already activated.";
+		close;
+	}
+	callsub S_Code, .@string$, .@answer;
+	mes "There are security codes written down.";
+	mes "[" + .@string$ + "]";
+	mes "What will you input?";
+	next;
+	if (select( "^ff0000" + .@string$ + "^000000", "^4d4dff" + .@string$ + "^000000" ) != .@answer) {
+		'device_state[.@type] = 0;
+		mes "The device has been initialized.";
+		close;
+	}
+	if (is_party_leader() == false)
+		end;
+	'device_state[.@type] = 'device_state[.@type] | .@npc_num;
+	if ('device_state[.@type] != 3) {
+		mes "Operated the security device.";
+		mes "Seems like there is one more security device.";
+		close;
+	}
+	mes "Operated the security device.";
+	mes "The gate is now activated.";
+	switch( .@type ) {
+	case 0:
+		enablenpc instance_npcname("#slwwarp01");
+		if (instance_live_info(ILI_NAME) == "Werner Laboratory central room#1")	// terra_gloria_main == 21
+			enablenpc instance_npcname("Eisen Werner#werner03");
+		else {
+			enablenpc instance_npcname("Guard#gard05");
+			enablenpc instance_npcname("Guard#gard06");
+			enablenpc instance_npcname("Guard#gard07");
+		}
+		break;
+	case 1:
+		if (instance_live_info(ILI_NAME) == "Werner Laboratory central room#1")
+			enablenpc instance_npcname("Eisen Werner#werner04");
+		else
+			enablenpc instance_npcname("Central Entrance#door");
+		enablenpc instance_npcname("#slwwarp02");
+		break;
+	}
+	close;
+
+S_Code:
+	setarray .@sample$[0],
+		"Purity", 2,
+		"Eternity", 2,
+		"Dawn", 2,
+		"Rose", 1,
+		"Contradiction", 1,
+		"Joy", 1,
+		"Sea", 1,
+		"Way back home", 1,
+		"Loneliness", 1,
+		"Glow", 1,
+		"Twilight", 1;
+	.@size = getarraysize(.@sample$) / 2;
+	.@r = rand(.@size) * 2;
+	set getarg(0), .@sample$[.@r];
+	set getarg(1), .@sample$[.@r+1];
+	return;
+}
+1@slw,220,191,3	duplicate(Security device#switch01)	Security device#switch02	CLEAR_NPC
+1@slw,22,61,3	duplicate(Security device#switch01)	Security device#switch11	CLEAR_NPC
+1@slw,122,61,3	duplicate(Security device#switch01)	Security device#switch12	CLEAR_NPC
+
+
+// * Events - Daily
+1@slw,188,58,3	script	Guard#gard01	3622,4,4,{
+	end;
+OnTouch:
+	.@num = atoi( replacestr( strnpcinfo(2), "gard0", "" ) );
+	getmapxy .@map$,.@x,.@y, BL_NPC;
+	switch( .@num ) {
+	case 1:	// 2 spawn area
+		npctalk ".. Dang, how did you get in here?";
+		areamonster .@map$, 186,92,190,94, "Special Guard", 3622,3;	// EP16_2_MM_S_GUARDS
+		.@mob_count = 3;
+		break;
+	case 2:	// 3 spawn area
+		npctalk ".. Dang, how did you get in here?";
+		areamonster .@map$, 186,142,190,143, "Special Guard", 3622,3;	// EP16_2_MM_S_GUARDS
+		areamonster .@map$, 186,160,190,162, "Special Guard", 3622,3;
+		.@mob_count = 3;
+		break;
+	case 5:
+		npctalk ".. Dang, how did you get in here?";
+		.@mob_count = 3;
+		break;
+	case 3:
+		npctalk ".. Dang, how did you get in here?";
+		.@mob_count = 1;
+		.@label$ = instance_npcname("#security_device_lab") + "::OnLeft1";
+		break;
+	case 4:
+		npctalk ".. Dang, how did you get in here?";
+		.@mob_count = 3;
+		.@label$ = instance_npcname("#security_device_lab") + "::OnRight1";
+		break;
+	case 6:
+		npctalk "Who's there?";
+		.@mob_count = 3;
+		.@label$ = instance_npcname("#security_device_lab") + "::OnLeft2";
+		break;
+	case 7:
+		npctalk "Let me finish you!";
+		.@mob_count = 3;
+		.@label$ = instance_npcname("#security_device_lab") + "::OnRight2";
+		break;
+	}
+	disablenpc instance_npcname( strnpcinfo(0) );
+	areamonster .@map$, (.@x-2), (.@y-2), (.@x+2), (.@y+2), "Special Guard", 3622, .@mob_count, .@label$;	// EP16_2_MM_S_GUARDS
+	end;
+}
+1@slw,189,117,3	duplicate(Guard#gard01)	Guard#gard02	3622,4,4
+1@slw,171,167,3	duplicate(Guard#gard01)	Guard#gard03	3622,4,4
+1@slw,206,167,3	duplicate(Guard#gard01)	Guard#gard04	3622,4,4
+1@slw,70,38,5	duplicate(Guard#gard01)	Guard#gard05	3622,4,4
+1@slw,33,52,3	duplicate(Guard#gard01)	Guard#gard06	3622,4,4
+1@slw,111,52,3	duplicate(Guard#gard01)	Guard#gard07	3622,4,4
+
+1@slw,1,1,3	script	#security_device_lab	HIDDEN_WARP_NPC,{
+	end;
+OnLeft1:
+	if (mobcount( 'map_slw$, instance_npcname("#security_device_lab") + "::OnLeft1" ) < 1) {
+		mapannounce 'map_slw$, "Security device L-01 has been activated.", bc_map,0xFF99;
+		enablenpc instance_npcname("Security device#switch01");
+	}
+	end;
+OnRight1:
+	if (mobcount( 'map_slw$, instance_npcname("#security_device_lab") + "::OnRight1" ) < 1) {
+		mapannounce 'map_slw$, "Security device R-01 has been activated.", bc_map,0xFF99;
+		enablenpc instance_npcname("Security device#switch02");
+	}
+	end;
+OnLeft2:
+	if (mobcount( 'map_slw$, instance_npcname("#security_device_lab") + "::OnLeft2" ) < 1) {
+		mapannounce 'map_slw$, "Security device L-02 has been activated.", bc_map,0xFF99;
+		enablenpc instance_npcname("Security device#switch11");
+	}
+	end;
+OnRight2:
+	if (mobcount( 'map_slw$, instance_npcname("#security_device_lab") + "::OnRight2" ) < 1) {
+		mapannounce 'map_slw$, "Security device R-02 has been activated.", bc_map,0xFF99;
+		enablenpc instance_npcname("Security device#switch12");
+	}
+	end;
+}
+
+
+// Room 2
+// * Events - First entrance
+1@slw,72,70,3	script	Eisen Werner#werner03	4_M_EISEN,{
+	if (is_party_leader() == false)
+		end;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "Easier than you thought?";
+	mes "The next security devices are similar, so I won't have to explain again.";
+	next;
+	mes "[Eisen Werner]";
+	mes "After looking around here, what do you think?";
+	mes "Isn't it amazing?";
+	mes "Have you been to ^4d4dffVerus^000000?";
+	next;
+	mes "[Eisen Werner]";
+	mes "That is the laboratory I built by referring to it.";
+	mes "It was my type.";
+	mes "......";
+	next;
+	mes "[Eisen Werner]";
+	mes "The technology was completely different from what we'd had until then.";
+	mes "We've used everything available.";
+	next;
+	mes "[Eisen Werner]";
+	mes "What do you say?";
+	mes "Does it look good?";
+	next;
+	select("Do you wonder why I'm saying these things?");
+	mes "[Eisen Werner]";
+	mes "Hmm, that's because you're going to die here anyway.";
+	mes "So I would like to promote my achievements.";
+	next;
+	select("Die here? Me?");
+	mes "[Eisen Werner]";
+	mes "Certainly. You'll die here.";
+	mes "Do you think I am just stupid enough to be left here alone?";
+	next;
+	mes "[Eisen Werner]";
+	mes "I know you've come here for the affair of Rune-Midgarts kingdom.";
+	mes "So I've prepared something.";
+	next;
+	cutin "ep16_eisen02.bmp",1;
+	mes "[Eisen Werner]";
+	mes "With a huge sensation.";
+	mes "You shall die. Right here.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Therefore, just be my guest.";
+	mes "Let's move to the next zone.";
+	close2;
+	cutin "",255;
+	if (is_party_leader() == true) {
+		disablenpc instance_npcname("Eisen Werner#werner03");
+		enablenpc instance_npcname("Security device#switch11");
+		enablenpc instance_npcname("Security device#switch12");
+	}
+	end;
+}
+
+
+// Room 3
+// * Events - First entrance
+1@slw,57,141,3	script	Eisen Werner#werner04	4_M_EISEN,{
+	if (is_party_leader() == false)
+		end;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "Beyond this wall, there will be something you have come to obtain.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Right. That thing you carved into a gem and used as a decoration on the crown.";
+	mes "Do you even know what it is?";
+	next;
+	mes "[Eisen Werner]";
+	mes "Although it is a scrap, it's the heart fragment of Ymir.";
+	mes "It cannot be compared to an imitation.";
+	next;
+	mes "[Eisen Werner]";
+	mes "... The fools in the kingdom cannot even utilize the power they already have.";
+	mes "What a pity.";
+	mes "So I decided to use it...";
+	next;
+	mes "[Eisen Werner]";
+	mes "You want to reclaim it? It's all up to your capability.";
+	mes "I haven't been waiting with empty hands.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Let me tell you once again. Don't be surprised.";
+	mes "No, I'd be glad if you were surprised.";
+	mes "Huhuhuhuhu....";
+	next;
+	cutin "ep16_eisen03.bmp",1;
+	mes "[Eisen Werner]";
+	mes "Now, take a look at the gift I've prepared.";
+	close2;
+	cutin "",255;
+	if (is_party_leader() == true) {
+		disablenpc instance_npcname("Eisen Werner#werner04");
+		enablenpc instance_npcname("Central Entrance#door");
+	}
+	end;
+}
+
+1@slw,54,146,0	script	Central Entrance#door	WARPNPC,1,1,{
+	end;
+OnTouch:
+	if (is_party_leader() == false) {
+		warp 'map_slw$,55,153;
+		end;
+	}
+	if (instance_live_info(ILI_NAME) == "Werner Laboratory central room#1") {
+		if ('event_final == 0) {
+			'event_final = 1;
+			enablenpc instance_npcname("Eisen Werner#werner05");
+		}
+		warp 'map_slw$,55,153;
+		end;
+	}
+	switch( 'event_final ) {
+	case 1:
+		mes "Replaying the story.";
+		close2;
+		warp 'map_slw$,55,153;
+		end;
+	case 2:
+		warp 'map_slw$,55,153;
+		end;
+	}
+	mes "You have two choices in the next zone.";
+	mes "If you want to replay the story of Seyren Windsor, please select ^4d4dffProceed with the story^000000. If you want to see the masterpiece of Eisen Werner, please select ^4d4dffProceed with the battle^000000.";
+	next;
+	if (select( "Proceed with the story.", "Proceed with the battle." ) == 1) {
+		mes "You've selected the story.";
+		close2;
+		if ('event_final == 0) {
+			'event_final = 1;
+			enablenpc instance_npcname("Eisen Werner#werner05");
+		}
+		warp 'map_slw$,55,153;
+		end;
+	}
+	mes "You've selected the battle.";
+	close2;
+	if ('event_final == 0) {
+		'event_final = 2;
+		enablenpc instance_npcname("Pet child#boss_master");
+		enablenpc instance_npcname("#boss_master_dummy");
+	}
+	warp 'map_slw$,55,153;
+	end;
+}
+
+
+// Room Boss
+// * Story
+1@slw,56,171,3	duplicate(dummy_npc)	Seyren Windsor#seiren	4_M_SEIREN_UC
+
+1@slw,53,171,5	script	Eisen Werner#werner05	4_M_EISEN,{
+	if (is_party_leader() == false) {
+		mes "^4d4dffOnly the party leader can proceed with this event.^000000";
+		close;
+	}
+	if (checkweight(501,1) == 0) {
+		mes "- Cannot progress with quest because you have too many items in your possession. -";
+		close;
+	}
+	.@seyren$ = instance_npcname("Seyren Windsor#seiren");
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "This place is the core of the laboratory, and contains everything of my research.";
+	npctalk "This place is the core of the laboratory, and contains everything of my research.";
+	next;
+	mes "[Eisen Werner]";
+	mes "It is the heart fragment of Ymir that holds the fundamental power to constitute the world. It also holds the origin of life.";
+	npctalk "It is the heart fragment of Ymir that holds the fundamental power to constitute the world. It also holds the origin of life.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Look at this carefully.";
+	mes "What you've come to reclaim is doing something marvelous!";
+	npctalk "Look at this carefully. What you've come to reclaim is doing something marvelous!";
+	next;
+	mes "[Eisen Werner]";
+	mes "The energy extracted from this flows into the magic circle on the ground... Ha ha ha. Of course, this magic circle has been reinterpreted magically.";
+	npctalk "The energy extracted from this flows into the magic circle on the ground... Ha ha ha. Of course, this magic circle has been reinterpreted magically.";
+	next;
+	mes "[Eisen Werner]";
+	mes "In any case, the energy goes into the experimental subject... Using that power, I've adjusted their time.";
+	next;
+	cutin "ep16_eisen03.bmp",1;
+	mes "[Eisen Werner]";
+	mes "... Certainly, some of them get killed due to chapped cells. Ha ha!";
+	next;
+	select("Is that all you want to say?");
+	unittalk getcharid(3), "" + strcharinfo(0) + " : Is that all you want to say?";
+	cutin "ep16_eisen02.bmp",1;
+	mes "[Eisen Werner]";
+	mes "No! Never!";
+	mes "Have you already forgotten what I told you earlier?";
+	mes "I told you I'd prepared a gift.";
+	next;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "Something...";
+	mes "that will surprise you.";
+	close2;
+	setpcblock PCBLOCK_NPC, true;
+	cutin "",255;
+	sleep2 3000;
+	enablenpc .@seyren$;
+	npctalk "......", .@seyren$;
+	sleep2 1000;
+	setpcblock PCBLOCK_NPC, false;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : ... Seyren?!";
+	mes "[Eisen Werner]";
+	mes "How do you like the gift I've prepared?!";
+	mes "Are you satisfied?";
+	cutin "ep16_eisen01.bmp",1;
+	next;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "This fellow was among the delegation of that silly royal family.";
+	mes "Thanks to the experiment of some brave guy, I have obtained this great stuff.";
+	next;
+	select("Are you talking about the In Vivo Experiment?");
+	unittalk getcharid(3), "" + strcharinfo(0) + " : Are you talking about the In Vivo Experiment?";
+	cutin "ep16_eisen02.bmp",1;
+	mes "[Eisen Werner]";
+	mes "Yeah, exactly.";
+	mes "Well, there are plenty guys who do In Vivo Experiments apart from that fellow, but he was the first one brave enough to enhance a living creature.";
+	next;
+	cutin "ep16_eisen01.bmp",1;
+	mes "[Eisen Werner]";
+	mes "using the imitated heart fragment of Ymir";
+	mes "It was a great turning point for the In Vivo Experiments.";
+	next;
+	mes "[Eisen Werner]";
+	mes "I was trying to apply it to many kinds of stuff.";
+	next;
+	mes "[Eisen Werner]";
+	mes "By the way....";
+	mes "You should say hello to it. Right?";
+	next;
+	mes "[Eisen Werner]";
+	mes "Ah~. That's right.";
+	mes "You don't need to say hello, because both of you are going to die!";
+	cutin "ep16_eisen03.bmp",1;
+	next;
+	cutin "ep16_eisen02.bmp",1;
+	mes "[Eisen Werner]";
+	mes "Seyren, escort these guests to hell.";
+	mes "Do you understand what I am saying?";
+	next;
+	cutin "ep16_seiren02.bmp",2;
+	mes "[Seyren]";
+	mes ".......";
+	npctalk "......", .@seyren$;
+	next;
+	cutin "ep16_evt_ws.bmp",4;
+	mes "[Eisen Werner]";
+	mes "Hmm?";
+	mes "What is this, Seyren? Is it a negative phase now?";
+	next;
+	mes "[Seyren]";
+	mes "I feel like I've woken up from a long sleep.";
+	mes "Maybe it was for this day.";
+	npctalk "I feel like I've woken up from a long sleep. Maybe it was for this day.", .@seyren$;
+	next;
+	mes "[Eisen Werner]";
+	mes "Do not forget your duty, Seyren.";
+	mes "You are a weapon. You are nothing more than a puppet with the outfit of a knight called Seyren Windsor.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Do you need me to explain step by step?";
+	mes "After transplanting the dummy of Ymir's Heart, the body could not endure the power and eventually collapsed.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Then its spirit duplicated the main body and kept dividing over and over.";
+	mes "During that process, its memory, consciousness, soul, mind and ego were all scattered like sand. They became meaningless.";
+	next;
+	mes "[Eisen Werner]";
+	mes "When we transplanted the dummy of Ymir's Heart into someone with a strong mind and body, we expected that person would become a stronger biological weapon.";
+	next;
+	mes "[Eisen Werner]";
+	mes "We never expected that it would duplicate itself and divide endlessly. As a result, that experiment was regarded as a failure.";
+	next;
+	mes "[Eisen Werner]";
+	mes "To make things worse, it was an uncontrollable creature that was filled only with fury.";
+	next;
+	mes "[Seyren]";
+	mes "I am here.";
+	npctalk "I am here.", .@seyren$;
+	next;
+	mes "[Eisen Werner]";
+	mes "You know what? They are still dividing now.";
+	mes "Just imitating the main body, they are even growing inside it.";
+	next;
+	mes "[Eisen Werner]";
+	mes "Since they are imperfect beings now, they want to become perfect.";
+	mes "They are imperfect beings now, so they want to become perfect, rather than just imitating the main body and living as a virtual image.";
+	next;
+	mes "[Eisen Werner]";
+	mes "They wish to exist as a singular entity.";
+	next;
+	mes "[Eisen Werner]";
+	mes "And the only successful experiment is you. We call you Seyren now.";
+	next;
+	cutin "ep16_seiren02.bmp",2;
+	mes "[Seyren]";
+	mes "...... Is it the end of your will?";
+	npctalk "...... Is it the end of your will?", .@seyren$;
+	next;
+	cutin "ep16_eisen03.bmp",0;
+	mes "[Eisen Werner]";
+	mes "Hey, baby? You can't do this to me.";
+	mes "You must obey me!";
+	next;
+	cutin "ep16_eisen02.bmp",0;
+	mes "[Eisen Werner]";
+	mes "Don't you remember how much I struggled to bring you here out of that hell?";
+	mes "Do not be swayed by the consciousness of someone who's already dead.";
+	next;
+	cutin "ep16_seiren02.bmp",2;
+	mes "[Seyren]";
+	mes "... Eisen Werner.";
+	mes "Let me ask you again. Is it the end of your will?";
+	npctalk "... Eisen Werner. Let me ask you again. Is it the end of your will?", .@seyren$;
+	next;
+	cutin "ep16_eisen01.bmp",0;
+	mes "[Eisen Werner]";
+	mes "Damn!";
+	mes "I never expected this!";
+	mes "Isn't this world a funny place? Ha ha ha ha ha";
+	next;
+	mes "[Eisen Werner]";
+	mes "Never think that I'm finished here.";
+	mes "I don't need a loser either.";
+	close2;
+	setpcblock PCBLOCK_NPC, true;
+	cutin "",255;
+	specialeffect EF_BEGINSPELL3;
+	sleep2 1000;
+	specialeffect EF_SCREEN_QUAKE;
+	sleep2 1000;
+	specialeffect EF_LORD;
+	disablenpc instance_npcname("Eisen Werner#werner05");
+	sleep2 2000;
+	setpcblock PCBLOCK_NPC, false;
+	npctalk "Oh....", .@seyren$;
+	mes "[Seyren]";
+	mes "... Eisen. You have abandoned everything like this.";
+	npctalk "... Eisen. You have abandoned everything like this.", .@seyren$;
+	specialeffect2 EF_DEVIL3;
+	cutin "ep16_seiren01.bmp",2;
+	next;
+	mes "[Seyren]";
+	mes ".. Ah...";
+	npctalk ".. Ah...", .@seyren$;
+	cutin "ep16_seiren02.bmp",2;
+	next;
+	mes "[Seyren]";
+	mes "The solidity is weakening again.";
+	mes "Now, I have a much more urgent message for you rather than for Eisen.";
+	npctalk "The solidity is weakening again. Now, I have a much more urgent message for you rather than for Eisen.", .@seyren$;
+	next;
+	mes "[Seyren]";
+	mes "I've been waiting for you for a long time.";
+	mes "As Eisen said, it's no longer important whether I'm Seyren or not.";
+	npctalk "I've been waiting for you for a long time. As Eisen said, it's no longer important whether I'm Seyren or not.", .@seyren$;
+	next;
+	mes "[Seyren]";
+	mes "Since I had the ability to think, I didn't know who I was nor why I existed.";
+	next;
+	specialeffect2 EF_DEVIL4;
+	mes "[Seyren]";
+	mes "The continuous division created countless copies of myself.";
+	next;
+	mes "[Seyren]";
+	mes "The power entwined with the dummy of Ymir's Heart, which responded to my will and that of my companions. They wanted to unite, but kept dividing themselves over and over.";
+	next;
+	specialeffect2 EF_DEVIL5;
+	cutin "ep16_seiren01.bmp",2;
+	mes "[Seyren]";
+	mes "How many copies of myself have been created so far?";
+	next;
+	cutin "ep16_seiren02.bmp",2;
+	mes "[Seyren]";
+	mes "I lost the ego after continuous division, but was regenerated as the previous shape. I don't think it was a coincidence.";
+	next;
+	mes "[Seyren]";
+	mes "I thought there must have been a reason.";
+	next;
+	mes "[Seyren]";
+	mes "And I realized it after looking at ^4d4dffTerra Gloria^000000.";
+	mes "The reason why the god gave me this opportunity.";
+	next;
+	specialeffect2 EF_DEVIL6;
+	cutin "ep16_seiren01.bmp",2;
+	mes "[Seyren]";
+	mes "Have you come to reclaim this?";
+	mes "... The land is gone and only the star remains.";
+	next;
+	specialeffect2 EF_DEVIL7;
+	cutin "ep16_seiren02.bmp",2;
+	mes "[Seyren]";
+	mes "Eisen is right. ^4d4dffSeyren Windsor is no longer in this world.^000000";
+	mes "All I have now is the strong will to transfer something on and on.";
+	next;
+	specialeffect2 EF_SCREEN_QUAKE;
+	specialeffect2 EF_DEVIL8;
+	cutin "ep16_seiren01.bmp",2;
+	mes "[Seyren]";
+	mes "Maybe that bit of will made me exist.";
+	mes "But it's over now.";
+	cutin "ep16_seiren02.bmp",2;
+	next;
+	specialeffect2 EF_DEVIL9;
+	cutin "ep16_seiren01.bmp",2;
+	mes "[Seyren]";
+	mes ".....";
+	next;
+	mes "[Seyren]";
+	mes "I really don't have more time.";
+	mes "After this moment, ^4d4dffI will be divided and scattered.^000000 again.";
+	next;
+	mes "[Seyren]";
+	mes "While I still have my will now, I have one message to give you.";
+	next;
+	if (instance_live_info(ILI_NAME) == "Werner Laboratory central room#1") {
+		mes "[Seyren]";
+		mes "Please, go ahead.";
+		mes "Seyren Windsor, the knight of Prontera failed in the task.";
+		next;
+		mes "[Seyren]";
+		mes "^4d4dffMe and all my companions died long ago.";
+		mes "Please don't waste your affections on the bodies that are already dead.^000000";
+		next;
+		mes "[Seyren]";
+		mes "They are just like ghosts covered with peels.";
+		mes "I was lucky to show my last will in front of you.";
+		next;
+		mes "[Seyren]";
+		mes "They are ^4d4dffrelics^000000 of me and my companions.";
+		mes "Please give them to our families.";
+		if (is_party_leader() == true) {
+			getitem 25179,1;	// Blessing_Star
+			getitem 23087,1;	// Small_Leather_Bag
+			erasequest 7739;// Find Star of Blessing!
+			setquest 7740;// Star of Blessing obtained
+			terra_gloria_main = 22;
+		}
+		close2;
+		setpcblock PCBLOCK_NPC, true;
+		cutin "",255;
+		specialeffect EF_ICECRASH, AREA, .@seyren$;
+		disablenpc .@seyren$;
+		// monster 'map_slw$,56,171, "Seyren", SEYREN, 1;
+		sleep2 1000;
+		specialeffect2 EF_SCREEN_QUAKE;
+		sleep2 1000;
+		setpcblock PCBLOCK_NPC, false;
+		specialeffect2 EF_SCREEN_QUAKE;
+		specialeffect2 EF_RAIN_PARTICLE2;
+		warp "que_swat",155,50;
+		end;
+	}
+	// daily
+	mes "[Seyren]";
+	mes "It was great to see you at the end.";
+	mes "Thank you... Bye.";
+	close2;
+	setpcblock PCBLOCK_NPC, true;
+	cutin "",255;
+	specialeffect EF_ICECRASH, AREA, .@seyren$;
+	cloakonnpc .@seyren$;
+	// monster 'map_slw$,56,171, "Seyren", SEYREN, 1;
+	sleep2 1000;
+	specialeffect2 EF_SCREEN_QUAKE;
+	sleep2 1000;
+	specialeffect2 EF_SCREEN_QUAKE;
+	specialeffect2 EF_RAIN_PARTICLE2;
+	setpcblock PCBLOCK_NPC, false;
+	if (is_party_leader() == true)
+		'event_final = 0;
+	mapannounce 'map_slw$, "The setting of the central room has been initialized.", bc_map,0xFF99;
+	warpparty 'map_slw$,54,134,getcharid(1),'map_slw$,2,2;
+	disablenpc .@seyren$;
+	end;
+}
+
+// * Battle
+1@slw,55,170,3	duplicate(dummy_npc)	Pet child#boss_master	3621
+
+1@slw,55,170,3	script	#boss_master_dummy	HIDDEN_WARP_NPC,5,5,{
+	end;
+OnTouch:
+	if (is_party_leader() == false)	// officially player can spawn multiple boss changing party leader
+		end;
+	setpcblock PCBLOCK_NPC, true;
+	.@npc_name$ = instance_npcname("Pet child#boss_master");
+	npctalk "How dare you come in! You're so brave!", .@npc_name$;
+	sleep2 3000;
+	npctalk "You must be honored to fight me!", .@npc_name$;
+	sleep2 3000;
+	npctalk ".......", .@npc_name$;
+	sleep2 3000;
+	npctalk ".. Damn Werner. Why did you mix me with a wolf?", .@npc_name$;
+	sleep2 3000;
+	npctalk "A... anyway, you are dead meat.", .@npc_name$;
+	sleep2 3000;
+	setpcblock PCBLOCK_NPC, false;
+	disablenpc instance_npcname("#boss_master_dummy");
+	npctalk "Beeee prepared!!!", .@npc_name$;
+	specialeffect EF_DANCE_BLADE_ATK, AREA, instance_npcname("Pet child#boss_master");
+	specialeffect EF_ALL_FULL_THROTTLE, AREA, instance_npcname("Pet child#boss_master");
+	donpcevent instance_npcname("#boss_master_lab") + "::OnStart";
+	mapannounce 'map_slw$, "The Magic field has been activated.", bc_map,0xFF99;
+	cloakonnpc instance_npcname("Pet child#boss_master");
+	end;
+}
+
+1@slw,1,1,3	script	#boss_master_lab	HIDDEN_WARP_NPC,5,5,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#boss_master_lab");
+	if (mobcount( 'map_slw$, instance_npcname("#boss_master_lab") + "::OnMobDead" ) < 1)
+		monster 'map_slw$,55,170, "Pet child", 3621, 1, instance_npcname("#boss_master_lab") + "::OnMobDead";	// EP16_2_MM_CUTIE
+	end;
+OnMobDead:
+	if (mobcount( 'map_slw$, instance_npcname("#boss_master_lab") + "::OnMobDead" ) < 1) {
+		mapannounce 'map_slw$, "The Magic field has been eliminated. An entrance has been created.", bc_map,0xFF99;
+		enablenpc instance_npcname("Emergency exit#exit_war");
+		disablenpc instance_npcname("#boss_master_lab");
+	}
+	end;
+}

+ 2 - 1
npc/re/jobs/3-1/warlock.txt

@@ -760,7 +760,8 @@ job3_war01,29,25,0	script	Ebein#WRR	437,{
 job3_war01,29,25,5	script	The chamber of magic#1	437,{
 	end;
 OnInit:
-	disablenpc "The chamber of magic#1";
+	//disablenpc  "The chamber of magic#1";
+	hideonnpc "The chamber of magic#1";
 	waitingroom "The chamber of magic",20,"The chamber of magic#1::OnStartArena",1;
 	enablewaitingroomevent;
 	end;

+ 14 - 0
npc/re/kafras/cool_event_corp.txt

@@ -0,0 +1,14 @@
+//===== rAthena Script =======================================
+//= Cool Event Corp. Staff
+//===== Description: =========================================
+//= Cool Event Corp. Staff (Save, Storage & Pushcart Service)
+//===== Changelogs: ==========================================
+//= 1.0 Added Verus. [Capuche]
+//============================================================ 
+
+verus04,121,243,4	script	Cool Event Corp Staff::CoolEventCorpStaffVerus	4_M_ZONDAMAN,{
+	callfunc "F_CoolEventCorp",
+		"Save:Use Storage::Rent a Pushcart::Cancel",
+		"in Verus","verus04",121,246;
+	end;
+}

+ 5 - 1
npc/re/mapflag/nobranch.txt

@@ -11,9 +11,13 @@
 //= 1.3 Added dali02 [Nova]
 //= 1.4 Added Nightmare Glastheim [Ridley8819]
 //= 1.5 Added WOE:TE maps [Cydh]
+//= 1.6 Added Para Market maps [mazvi]
 //============================================================
 
-// 3rd Class Job Maps & Paradise
+// Paradise Market =============
+paramk	mapflag	nobranch
+
+// 3rd Class Job Maps & Paradise 
 moc_para01	mapflag	nobranch
 job3_arch01	mapflag	nobranch
 job3_arch02	mapflag	nobranch

+ 4 - 0
npc/re/mapflag/nomemo.txt

@@ -9,8 +9,12 @@
 //= 1.2 Added dali, dali02 [Nova]
 //= 1.3 Added Nightmare Glastheim [Ridley8819]
 //= 1.4 Added GVG TE Maps. [Cydh]
+//= 1.5 Added Para Market maps [mazvi]
 //============================================================
 
+// Paradise Market =============
+paramk	mapflag	nomemo
+
 // Episode 13 ====================
 job3_arch01	mapflag	nomemo
 job3_arch02	mapflag	nomemo

+ 4 - 0
npc/re/mapflag/nopenalty.txt

@@ -11,8 +11,12 @@
 //===== Additional Comments: ================================= 
 //= 1.0 Renewal split. [Euphy]
 //= 1.1 Added Izlude duplicates. [Euphy]
+//= 1.2 Added Para Market maps [mazvi]
 //============================================================
 
+// Paradise Market =============
+paramk	mapflag	nopenalty
+
 // Towns ====================
 brasilis	mapflag	nopenalty
 bra_in01	mapflag	nopenalty

+ 4 - 0
npc/re/mapflag/nopvp.txt

@@ -11,8 +11,12 @@
 //===== Additional Comments: ================================= 
 //= 1.0 Renewal split. [Euphy]
 //= 1.1 Added Izlude duplicates. [Euphy]
+//= 1.2 Added Para Market maps [mazvi]
 //============================================================
 
+// Paradise Market =============
+paramk	mapflag	pvp	off
+
 // Instances ===================
 1@mist	mapflag	pvp	off
 1@cash	mapflag	pvp	off

+ 4 - 0
npc/re/mapflag/noteleport.txt

@@ -12,8 +12,12 @@
 //= 1.0 Renewal split. [Euphy]
 //= 1.1 Added dali, dali02 [Nova]
 //= 1.2 Added WOE:TE maps [Cydh,Capuche]
+//= 1.3 Added Para Market maps [mazvi]
 //============================================================
 
+// Paradise Market =============
+paramk	mapflag	noteleport
+
 // Cities ========================
 moc_para01	mapflag	noteleport
 

+ 1415 - 0
npc/re/merchants/enchan_verus.txt

@@ -0,0 +1,1415 @@
+//===== rAthena Script =======================================
+//= Enchants and exchange NPCs.
+//===== Description: ========================================= 
+//= [Official Conversion]
+//= Exchangers and enchanters NPCs on Verus.
+//===== Additional Comments: =================================
+//= 1.0 Added NPCs coming along Charleston instance. [Capuche]
+//= 1.1 Added Excellion Wing/Suit trader and enchant NPCs. [Capuche]
+//============================================================
+
+// Charleston
+verus04,69,108,5	script	Mass Charleston#1	4_F_CHARLESTON01,{
+	if (!checkweight(1201,1) || (MaxWeight - Weight) < 1000) {
+		mes "^ff0000You have carried too many items, please reduce it and come back later.^000000";
+		close;
+	}
+	cutin "dalle01.bmp",2;
+	if (countitem(6752) < 10) {
+		if (isbegin_quest(13186) == 0) {
+			mes "[Mass Charleston]";
+			mes "I don't know where you can find Charleston Components,";
+			next;
+			mes "[Mass Charleston]";
+			mes "but if you have 10 or more, then I can exchange them with factory products.";
+			close3;
+		}
+		mes "[Mass Charleston]";
+		mes "A series of trials and errors was made before the mass version of Charleston was developed.";
+		next;
+		mes "[Mass Charleston]";
+		mes "I don't mean to depreciate myself, but mass versions are mass versions; they're cost-effective and practical, but never as good as the high-end versions.";
+		next;
+		mes "[Mass Charleston]";
+		mes "Some Charlestons, especially in the development stage, are equipped with more advanced features. To study them, I need more components.";
+		next;
+		mes "[Mass Charleston]";
+		mes "If you have 10 or more Charleston Components, then I can exchange them with factory products.";
+		close3;
+	}
+	mes "[Mass Charleston]";
+	mes "You got some nice parts on you! Would you like to exchange it with the goods produced in the factory?";
+	next;
+	mes "[Mass Charleston]";
+	mes "Is a collection of Charleston advantages in a commodity, but can not be sold separately, IF bring good parts can be exchanged for you.";
+	next;
+	.@s = select( "Quit.", "Exchange Reinforced parts", "Exchange Supplementary device" ) - 2;
+	if (.@s == -1) {
+		mes "[Mass Charleston]";
+		mes "I'll see you next time!";
+		close3;
+	}
+	setarray .@job_aft$[0], "Reinforced parts", "Supplementary device";
+	mes "[Mass Charleston]";
+	mes "Which part of " + .@job_aft$[.@s] + " do you want to select?";
+	next;
+	switch(.@s) {
+	case 0:
+		setarray .@item[0],
+			20733,	// Upgrade_Part_Engine
+			22044,	// Upgrade_Part_Booster
+			2996;	// Upgrade_Part_Gun_Barrel
+		break;
+	case 1:
+		setarray .@item[0],
+			20732,	// Supplement_Part_Con
+			22043,	// Supplement_Part_Agi
+			2995;	// Supplement_Part_Dex
+		break;
+	default:
+		mes "[Mass Charleston]";
+		mes "I'll see you next time!";
+		close;
+	}
+	// custom translation from here
+	.@index = select( "Quit.", getitemname(.@item[0]) + " (garment)", getitemname(.@item[1]) + " (Shoes)", getitemname(.@item[2]) + " (Accessory)" ) - 2;
+	if (.@index == -1) {
+		mes "[Mass Charleston]";
+		mes "I'll see you next time!";
+		close3;
+	}
+	if (countitem(6752) < 10) {
+		mes "[Mass Charleston]";
+		mes "If you find enough Charleston parts, can you come to me again?";
+		close3;
+	}
+	delitem 6752,10;	// Charleston_Parts
+	getitem .@item[.@index],1;
+	mes "[Mass Charleston]";
+	mes "Exchanged 10 " + getitemname(6752) + " for " + .@job_aft$[.@s] + ". If you find more part, come to me again!";
+	close3;
+}
+
+verus04,71,106,5	script	Mass Charleston#2	4_F_CHARLESTON01,{
+	disable_items;
+	if (!checkweight(1201,1)) {
+		mes "You have too many types of items. Lighten your inventory first.";
+		close;
+	}
+	if ((MaxWeight - Weight) < 10000) {
+		mes "The items in your inventory are weighing you down. Lighten your weight first.";
+		close;
+	}
+	cutin "dalle01.bmp",2;
+	mes "[Mass Charleston]";
+	mes "I can upgrade the Charleston Factory products. Let me know if you're interested.";
+	next;
+	switch( select( "More information.", "Add abilities to your product.", "Reset product." ) ) {
+	case 1:
+		mes "[Mass Charleston]";
+		mes "Each Upgrade/resetting attempt costs 100,000 zeny and 1 Charleston Component.";
+		next;
+		mes "[Mass Charleston]";
+		mes "I also provide a wider selection of Upgrade options for Charleston Equipment at ^ff0000+9^000000 or above.";
+		next;
+		mes "[Mass Charleston]";
+		mes "Rest assured, my Upgrade technology does not involve accidental damage on the item's Upgrade level or equipped cards.";
+		close3;
+	case 2:
+		.@type_action = 1;
+		.@string$ = "Upgrading";
+		break;
+	case 3:
+		.@type_action = 2;
+		.@string$ = "Resetting";
+		break;
+	}
+	if (Zeny < 100000 || countitem(6752) < 1) {
+		mes "[Mass Charleston]";
+		mes "" + .@string$ + " a Charleston product costs 1 Charleston Component and 100,000 zeny. Please know that all the expenses go into " + strtolower(.@string$) + " your product.";
+		close3;
+	}
+	mes "[Mass Charleston]";
+	mes "Please make sure you're equipped with the Equipment you want to upgrade.";
+	next;
+	.@s = select( "Let me go equip it.", "Footgear", "Garment", "Clothes", "Accessory" ) - 2;
+	if (.@s == -1) {
+		mes "[Mass Charleston]";
+		mes "Sure, please come back after you do.";
+		close3;
+	}
+	if (Zeny < 100000 || countitem(6752) < 1) {
+		mes "[Mass Charleston]";
+		mes "Things needed for commodity upgrades seem inadequate!";
+		close3;
+	}
+	setarray .@eq_num[0], EQI_SHOES, EQI_GARMENT, EQI_ARMOR, EQI_ACC_R;
+
+	.@part = .@eq_num[.@s];
+	.@item_id = getequipid(.@part);
+	.@refine = getequiprefinerycnt(.@part);
+	setarray .@card_saved[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3);
+	copyarray .@card[0], .@card_saved[0], 4;
+
+	switch(.@item_id) {
+	case -1:
+		mes "[Mass Charleston]";
+		mes "Because it is a customized upgrade be sure to wear equipment.";
+		close3;
+	case 15111:	// Upgrade_Part_Plate
+		.@en_type = 3;
+		.@en_type_9 = 1;
+		.@max_slot = 1;
+		break;
+	case 20733:	// Upgrade_Part_Engine
+		.@en_type = 4;
+		.@en_type_9 = 5;
+		.@max_slot = 1;
+		break;
+	case 22044:	// Upgrade_Part_Booster
+		.@en_type = 6;
+		.@en_type_9 = 7;
+		.@max_slot = 1;
+		break;
+	case 2996:	// Upgrade_Part_Gun_Barrel
+		.@en_type = 8;
+		.@en_type_9 = 8;
+		.@max_slot = 2;
+		break;
+	case 15110:	// Supplement_Part_Str
+		.@en_type = 3;
+		.@en_type_9 = 2;
+		.@max_slot = 1;
+		break;
+	case 20732:	// Supplement_Part_Con
+		.@en_type = 4;
+		.@en_type_9 = 5;
+		.@max_slot = 1;
+		break;
+	case 22043:	// Supplement_Part_Agi
+		.@en_type = 6;
+		.@en_type_9 = 7;
+		.@max_slot = 1;
+		break;
+	case 2995:	// Supplement_Part_Dex
+		.@en_type = 8;
+		.@en_type_9 = 8;
+		.@max_slot = 2;
+		break;
+	default:
+		mes "[Mass Charleston]";
+		mes "^990099" + getequipname(.@part) + "^000000??";
+		mes "I'm not interested in this Equipment.";
+		close3;
+	}
+
+	switch(.@type_action) {
+	case 1:	// Add abilities
+		if (.@refine >= 9) {
+			setarray .@menu_en_type$[1],
+				"Attack enhancement",
+				"Defense enhancement",
+				"Acceleration enhancements",
+				"Garment upgrade",
+				"Advanced Garment upgrade",
+				"Shoes upgrade",
+				"Advanced Shoes upgrade",
+				"Accessory upgrade";
+			if (.@menu_en_type$[.@en_type] == "" || .@menu_en_type$[.@en_type_9] == "") {
+				mes "[Mass Charleston]";
+				mes "Something's not right!";
+				close3;
+			}
+			mes "[Mass Charleston]";
+			mes "This is a considerable level of enhanced equipment, this type can give enhanced expansion performance, choose from the following series of desirable to strengthen it!";
+			next;
+			if (select( .@menu_en_type$[.@en_type], .@menu_en_type$[.@en_type_9] ) == 2)
+				.@en_type = .@en_type_9;
+		}
+		if (.@card[3] < 1 && .@max_slot < 4) {
+			.@slot = 4;
+			mes "[Mass Charleston]";
+			mes "I'll be Upgrading the first ability. The existing Upgrade level and cards will not be damaged. Do you want to continue?";
+			next;
+			if (select( "I'll come back later.", "Continue." ) == 1) {
+				mes "[Mass Charleston]";
+				mes "No problem. Come back if you change your mind.";
+				close3;
+			}
+		}
+		else if (.@card[2] < 1 && .@max_slot < 3) {
+			.@slot = 3;
+			mes "[Mass Charleston]";
+			mes "I'll be Upgrading the second ability. The existing Upgrade level and cards will not be damaged.";
+			next;
+			mes "[Mass Charleston]";
+			mes "Though there is a slight chance of failure, in which case the existing Upgrade level will be reset. What would you like to do?";
+			next;
+			if (select( "I'll come back later.", "Continue." ) == 1) {
+				mes "[Mass Charleston]";
+				mes "No problem. Come back if you change your mind.";
+				close3;
+			}
+		}
+		else if (.@card[1] < 1 && .@max_slot < 2) {
+			.@slot = 2;
+			mes "[Mass Charleston]";
+			mes "I'll be Upgrading the 3rd ability. This highest Upgrade stage incurs a  chance of ^990000destroying the Equipment or resetting its existing Upgrade level.^000000 Do you want to continue?";
+			next;
+			if (select( "I'll come back later.", "Continue." ) == 1) {
+				mes "[Mass Charleston]";
+				mes "No problem. Come back if you change your mind.";
+				close3;
+			}
+		}
+		else if (.@card[0] < 1 && .@max_slot < 1)
+			.@slot = 1;
+		else {
+			cutin "dalle02.bmp",2;
+			mes "[Mass Charleston]";
+			mes "This Equipment is Upgraded to the maximum level. Please bring something else.";
+			close3;
+		}
+		switch(.@en_type) {
+		case 1:
+			if (.@slot == 4) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 100;
+			}
+			else if (.@slot == 3) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 200;
+			}
+			else if (.@slot == 2) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 300;
+			}
+			else {
+				mes "[Mass Charleston]";
+				mes "An unknown error has occurred.";
+				close3;
+			}
+			.@r = rand( .@en_brk1, .@en_brk2 );
+			if (.@r < 11) .@en_name = 4700;	// Strength1
+			else if (.@r < 21) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 36) .@en_name = 4832;	// Expert_Archer1
+			else if (.@r < 51) .@en_name = 4811;	// Fighting_Spirit1
+			else if (.@r < 61) .@en_name = 4701;	// Strength2
+			else if (.@r < 71) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 86) .@en_name = 4833;	// Expert_Archer2
+			else if (.@r < 101) .@en_name = 4810;	// Fighting_Spirit2
+			else if (.@r < 111) .@en_name = 4700;	// Strength1
+			else if (.@r < 121) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 132) .@en_name = 4832;	// Expert_Archer1
+			else if (.@r < 143) .@en_name = 4811;	// Fighting_Spirit1
+			else if (.@r < 151) .@en_name = 4701;	// Strength2
+			else if (.@r < 159) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 167) .@en_name = 4833;	// Expert_Archer2
+			else if (.@r < 175) .@en_name = 4810;	// Fighting_Spirit2
+			else if (.@r < 182) .@en_name = 4702;	// Strength3
+			else if (.@r < 189) .@en_name = 4722;	// Dexterity3
+			else if (.@r < 190) .@en_name = 4834;	// Expert_Archer3
+			else if (.@r < 191) .@en_name = 4809;	// Fighting_Spirit3
+			else if (.@r < 201) .@en_name = 0;
+			else if (.@r < 207) .@en_name = 4700;	// Strength1
+			else if (.@r < 213) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 221) .@en_name = 4832;	// Expert_Archer1
+			else if (.@r < 229) .@en_name = 4811;	// Fighting_Spirit1
+			else if (.@r < 238) .@en_name = 4701;	// Strength2
+			else if (.@r < 247) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 260) .@en_name = 4810;	// Fighting_Spirit2
+			else if (.@r < 273) .@en_name = 4833;	// Expert_Archer2
+			else if (.@r < 280) .@en_name = 4702;	// Strength3
+			else if (.@r < 287) .@en_name = 4722;	// Dexterity3
+			else if (.@r < 289) .@en_name = 4834;	// Expert_Archer3
+			else if (.@r < 291) .@en_name = 4809;	// Fighting_Spirit3
+			else if (.@r < 296) .@en_name = 0;
+			else if (.@r < 301) .@en_name = 9;
+			else .@en_name = 0;
+			break;
+		case 2:
+			if (.@slot == 4) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 100;
+			}
+			else if (.@slot == 3) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 200;
+			}
+			else if (.@slot == 2) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 310;
+			}
+			else {
+				mes "[Mass Charleston]";
+				mes "An unknown error has occurred.";
+				close3;
+			}
+			.@r = rand( .@en_brk1, .@en_brk2 );
+			if (.@r < 11) .@en_name = 4740;	// Vitality1
+			else if (.@r < 21) .@en_name = 4791;	// Def3
+			else if (.@r < 36) .@en_name = 4933;	// Tolerance_Not1
+			else if (.@r < 51) .@en_name = 4861;	// MHP1
+			else if (.@r < 61) .@en_name = 4741;	// Vitality2
+			else if (.@r < 71) .@en_name = 4792;	// Def6
+			else if (.@r < 86) .@en_name = 4934;	// Tolerance_Not2
+			else if (.@r < 101) .@en_name = 4862;	// MHP2
+			else if (.@r < 111) .@en_name = 4740;	// Vitality1
+			else if (.@r < 121) .@en_name = 4791;	// Def3
+			else if (.@r < 132) .@en_name = 4933;	// Tolerance_Not1
+			else if (.@r < 143) .@en_name = 4861;	// MHP1
+			else if (.@r < 151) .@en_name = 4741;	// Vitality2
+			else if (.@r < 159) .@en_name = 4792;	// Def6
+			else if (.@r < 167) .@en_name = 4934;	// Tolerance_Not2
+			else if (.@r < 173) .@en_name = 4862;	// MHP2
+			else if (.@r < 179) .@en_name = 4742;	// Vitality3
+			else if (.@r < 185) .@en_name = 4793;	// Def9
+			else if (.@r < 188) .@en_name = 4935;	// Tolerance_Not3
+			else if (.@r < 191) .@en_name = 4867;	// MHP3
+			else if (.@r < 201) .@en_name = 0;
+			else if (.@r < 207) .@en_name = 4740;	// Vitality1
+			else if (.@r < 213) .@en_name = 4791;	// Def3
+			else if (.@r < 221) .@en_name = 4933;	// Tolerance_Not1
+			else if (.@r < 229) .@en_name = 4861;	// MHP1
+			else if (.@r < 238) .@en_name = 4741;	// Vitality2
+			else if (.@r < 247) .@en_name = 4792;	// Def6
+			else if (.@r < 258) .@en_name = 4934;	// Tolerance_Not2
+			else if (.@r < 269) .@en_name = 4862;	// MHP2
+			else if (.@r < 276) .@en_name = 4742;	// Vitality3
+			else if (.@r < 283) .@en_name = 4793;	// Def9
+			else if (.@r < 287) .@en_name = 4867;	// MHP3
+			else if (.@r < 291) .@en_name = 4935;	// Tolerance_Not3
+			else if (.@r < 296) .@en_name = 0;
+			else if (.@r < 301) .@en_name = 9;
+			else .@en_name = 0;
+			break;
+		case 3:
+			if (.@slot == 4) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 100;
+			}
+			else if (.@slot == 3) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 200;
+			}
+			else if (.@slot == 2) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 310;
+			}
+			else {
+				mes "[Mass Charleston]";
+				mes "An unknown error has occurred.";
+				close3;
+			}
+			.@r = rand( .@en_brk1, .@en_brk2 );
+			if (.@r < 11) .@en_name = 4860;	// Evasion3
+			else if (.@r < 21) .@en_name = 4750;	// Luck1
+			else if (.@r < 36) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 51) .@en_name = 4730;	// Agility1
+			else if (.@r < 61) .@en_name = 4762;	// Evasion6
+			else if (.@r < 71) .@en_name = 4751;	// Luck2
+			else if (.@r < 86) .@en_name = 4872;	// Attack_Delay_2
+			else if (.@r < 101) .@en_name = 4731;	// Agility2
+			else if (.@r < 111) .@en_name = 4860;	// Evasion3
+			else if (.@r < 121) .@en_name = 4750;	// Luck1
+			else if (.@r < 132) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 143) .@en_name = 4730;	// Agility1
+			else if (.@r < 151) .@en_name = 4762;	// Evasion6
+			else if (.@r < 159) .@en_name = 4751;	// Luck2
+			else if (.@r < 166) .@en_name = 4872;	// Attack_Delay_2
+			else if (.@r < 173) .@en_name = 4731;	// Agility2
+			else if (.@r < 180) .@en_name = 4763;	// Evasion12
+			else if (.@r < 187) .@en_name = 4752;	// Luck3
+			else if (.@r < 191) .@en_name = 4732;	// Agility3
+			else if (.@r < 201) .@en_name = 0;
+			else if (.@r < 207) .@en_name = 4860;	// Evasion3
+			else if (.@r < 213) .@en_name = 4750;	// Luck1
+			else if (.@r < 221) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 229) .@en_name = 4730;	// Agility1
+			else if (.@r < 239) .@en_name = 4762;	// Evasion6
+			else if (.@r < 249) .@en_name = 4751;	// Luck2
+			else if (.@r < 261) .@en_name = 4872;	// Attack_Delay_2
+			else if (.@r < 273) .@en_name = 4731;	// Agility2
+			else if (.@r < 280) .@en_name = 4763;	// Evasion12
+			else if (.@r < 287) .@en_name = 4752;	// Luck3
+			else if (.@r < 291) .@en_name = 4732;	// Agility3
+			else if (.@r < 296) .@en_name = 0;
+			else if (.@r < 301) .@en_name = 9;
+			else .@en_name = 0;
+			break;
+		case 4:
+			if (.@slot == 4) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 100;
+			}
+			else if (.@slot == 3) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 200;
+			}
+			else if (.@slot == 2) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 310;
+			}
+			else {
+				mes "[Mass Charleston]";
+				mes "An unknown error has occurred.";
+				close3;
+			}
+			.@r = rand( .@en_brk1, .@en_brk2 );
+			if (.@r < 8) .@en_name = 4700;	// Strength1
+			else if (.@r < 17) .@en_name = 4701;	// Strength2
+			else if (.@r < 24) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 33) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 40) .@en_name = 4730;	// Agility1
+			else if (.@r < 47) .@en_name = 4731;	// Agility2
+			else if (.@r < 54) .@en_name = 4740;	// Vitality1
+			else if (.@r < 63) .@en_name = 4741;	// Vitality2
+			else if (.@r < 69) .@en_name = 4750;	// Luck1
+			else if (.@r < 77) .@en_name = 4751;	// Luck2
+			else if (.@r < 83) .@en_name = 4710;	// Inteligence1
+			else if (.@r < 91) .@en_name = 4711;	// Inteligence2
+			else if (.@r < 101) .@en_name = 4832;	// Expert_Archer1
+			else if (.@r < 111) .@en_name = 4700;	// Strength1
+			else if (.@r < 121) .@en_name = 4701;	// Strength2
+			else if (.@r < 131) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 141) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 149) .@en_name = 4730;	// Agility1
+			else if (.@r < 158) .@en_name = 4731;	// Agility2
+			else if (.@r < 164) .@en_name = 4740;	// Vitality1
+			else if (.@r < 170) .@en_name = 4741;	// Vitality2
+			else if (.@r < 177) .@en_name = 4750;	// Luck1
+			else if (.@r < 184) .@en_name = 4751;	// Luck2
+			else if (.@r < 187) .@en_name = 4710;	// Inteligence1
+			else if (.@r < 190) .@en_name = 4711;	// Inteligence2
+			else if (.@r < 192) .@en_name = 4832;	// Expert_Archer1
+			else if (.@r < 201) .@en_name = 0;
+			else if (.@r < 207) .@en_name = 4700;	// Strength1
+			else if (.@r < 213) .@en_name = 4701;	// Strength2
+			else if (.@r < 220) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 227) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 237) .@en_name = 4730;	// Agility1
+			else if (.@r < 247) .@en_name = 4731;	// Agility2
+			else if (.@r < 257) .@en_name = 4740;	// Vitality1
+			else if (.@r < 267) .@en_name = 4741;	// Vitality2
+			else if (.@r < 271) .@en_name = 4750;	// Luck1
+			else if (.@r < 276) .@en_name = 4751;	// Luck2
+			else if (.@r < 281) .@en_name = 4710;	// Inteligence1
+			else if (.@r < 286) .@en_name = 4711;	// Inteligence2
+			else if (.@r < 291) .@en_name = 4832;	// Expert_Archer1
+			else if (.@r < 296) .@en_name = 0;
+			else if (.@r < 301) .@en_name = 9;
+			else .@en_name = 0;
+			break;
+		case 5:
+			if (.@slot == 4) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 100;
+			}
+			else if (.@slot == 3) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 200;
+			}
+			else if (.@slot == 2) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 310;
+			}
+			else {
+				mes "[Mass Charleston]";
+				mes "An unknown error has occurred.";
+				close3;
+			}
+			.@r = rand( .@en_brk1, .@en_brk2 );
+			if (.@r < 9) .@en_name = 4701;	// Strength2
+			else if (.@r < 16) .@en_name = 4702;	// Strength3
+			else if (.@r < 25) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 32) .@en_name = 4722;	// Dexterity3
+			else if (.@r < 41) .@en_name = 4731;	// Agility2
+			else if (.@r < 46) .@en_name = 4732;	// Agility3
+			else if (.@r < 55) .@en_name = 4741;	// Vitality2
+			else if (.@r < 62) .@en_name = 4742;	// Vitality3
+			else if (.@r < 70) .@en_name = 4751;	// Luck2
+			else if (.@r < 76) .@en_name = 4752;	// Luck3
+			else if (.@r < 84) .@en_name = 4711;	// Inteligence2
+			else if (.@r < 90) .@en_name = 4712;	// Inteligence3
+			else if (.@r < 95) .@en_name = 4832;	// Expert_Archer1
+			else if (.@r < 101) .@en_name = 4833;	// Expert_Archer2
+			else if (.@r < 111) .@en_name = 4701;	// Strength2
+			else if (.@r < 121) .@en_name = 4702;	// Strength3
+			else if (.@r < 131) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 141) .@en_name = 4722;	// Dexterity3
+			else if (.@r < 149) .@en_name = 4731;	// Agility2
+			else if (.@r < 157) .@en_name = 4732;	// Agility3
+			else if (.@r < 163) .@en_name = 4741;	// Vitality2
+			else if (.@r < 169) .@en_name = 4742;	// Vitality3
+			else if (.@r < 176) .@en_name = 4751;	// Luck2
+			else if (.@r < 183) .@en_name = 4752;	// Luck3
+			else if (.@r < 185) .@en_name = 4711;	// Inteligence2
+			else if (.@r < 187) .@en_name = 4712;	// Inteligence3
+			else if (.@r < 189) .@en_name = 4833;	// Expert_Archer2
+			else if (.@r < 191) .@en_name = 4834;	// Expert_Archer3
+			else if (.@r < 201) .@en_name = 0;
+			else if (.@r < 207) .@en_name = 4701;	// Strength2
+			else if (.@r < 213) .@en_name = 4702;	// Strength3
+			else if (.@r < 220) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 227) .@en_name = 4722;	// Dexterity3
+			else if (.@r < 237) .@en_name = 4731;	// Agility2
+			else if (.@r < 247) .@en_name = 4732;	// Agility3
+			else if (.@r < 257) .@en_name = 4741;	// Vitality2
+			else if (.@r < 261) .@en_name = 4742;	// Vitality3
+			else if (.@r < 266) .@en_name = 4751;	// Luck2
+			else if (.@r < 271) .@en_name = 4752;	// Luck3
+			else if (.@r < 276) .@en_name = 4711;	// Inteligence2
+			else if (.@r < 281) .@en_name = 4712;	// Inteligence3
+			else if (.@r < 286) .@en_name = 4832;	// Expert_Archer1
+			else if (.@r < 291) .@en_name = 4833;	// Expert_Archer2
+			else if (.@r < 296) .@en_name = 0;
+			else if (.@r < 301) .@en_name = 9;
+			else .@en_name = 0;
+			break;
+		case 6:
+			if (.@slot == 4) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 100;
+			}
+			else if (.@slot == 3) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 200;
+			}
+			else if (.@slot == 2) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 310;
+			}
+			else {
+				mes "[Mass Charleston]";
+				mes "An unknown error has occurred.";
+				close3;
+			}
+			.@r = rand( .@en_brk1, .@en_brk2 );
+			if (.@r < 11) .@en_name = 4700;	// Strength1
+			else if (.@r < 21) .@en_name = 4701;	// Strength2
+			else if (.@r < 31) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 41) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 51) .@en_name = 4730;	// Agility1
+			else if (.@r < 61) .@en_name = 4731;	// Agility2
+			else if (.@r < 71) .@en_name = 4740;	// Vitality1
+			else if (.@r < 81) .@en_name = 4741;	// Vitality2
+			else if (.@r < 91) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 101) .@en_name = 4815;	// Spell1
+			else if (.@r < 111) .@en_name = 4700;	// Strength1
+			else if (.@r < 121) .@en_name = 4701;	// Strength2
+			else if (.@r < 132) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 143) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 151) .@en_name = 4730;	// Agility1
+			else if (.@r < 159) .@en_name = 4731;	// Agility2
+			else if (.@r < 169) .@en_name = 4740;	// Vitality1
+			else if (.@r < 179) .@en_name = 4741;	// Vitality2
+			else if (.@r < 185) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 191) .@en_name = 4815;	// Spell1
+			else if (.@r < 201) .@en_name = 0;
+			else if (.@r < 209) .@en_name = 4700;	// Strength1
+			else if (.@r < 217) .@en_name = 4701;	// Strength2
+			else if (.@r < 225) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 233) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 244) .@en_name = 4730;	// Agility1
+			else if (.@r < 255) .@en_name = 4731;	// Agility2
+			else if (.@r < 265) .@en_name = 4740;	// Vitality1
+			else if (.@r < 275) .@en_name = 4741;	// Vitality2
+			else if (.@r < 283) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 291) .@en_name = 4815;	// Spell1
+			else if (.@r < 296) .@en_name = 0;
+			else if (.@r < 301) .@en_name = 9;
+			else .@en_name = 0;
+			break;
+		case 7:
+			if (.@slot == 4) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 100;
+			}
+			else if (.@slot == 3) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 200;
+			}
+			else if (.@slot == 2) {
+				.@en_brk1 = 101;
+				.@en_brk2 = 310;
+			}
+			else {
+				mes "[Mass Charleston]";
+				mes "An unknown error has occurred.";
+				close3;
+			}
+			.@r = rand( .@en_brk1, .@en_brk2 );
+			if (.@r < 11) .@en_name = 4702;	// Strength3
+			else if (.@r < 21) .@en_name = 4701;	// Strength2
+			else if (.@r < 31) .@en_name = 4722;	// Dexterity3
+			else if (.@r < 41) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 51) .@en_name = 4732;	// Agility3
+			else if (.@r < 61) .@en_name = 4731;	// Agility2
+			else if (.@r < 71) .@en_name = 4742;	// Vitality3
+			else if (.@r < 81) .@en_name = 4741;	// Vitality2
+			else if (.@r < 86) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 91) .@en_name = 4872;	// Attack_Delay_2
+			else if (.@r < 96) .@en_name = 4815;	// Spell1
+			else if (.@r < 101) .@en_name = 4814;	// Spell2
+			else if (.@r < 111) .@en_name = 4702;	// Strength3
+			else if (.@r < 121) .@en_name = 4701;	// Strength2
+			else if (.@r < 132) .@en_name = 4722;	// Dexterity3
+			else if (.@r < 143) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 151) .@en_name = 4732;	// Agility3
+			else if (.@r < 159) .@en_name = 4731;	// Agility2
+			else if (.@r < 169) .@en_name = 4742;	// Vitality3
+			else if (.@r < 179) .@en_name = 4741;	// Vitality2
+			else if (.@r < 182) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 185) .@en_name = 4815;	// Spell1
+			else if (.@r < 188) .@en_name = 4872;	// Attack_Delay_2
+			else if (.@r < 191) .@en_name = 4814;	// Spell2
+			else if (.@r < 201) .@en_name = 0;
+			else if (.@r < 209) .@en_name = 4702;	// Strength3
+			else if (.@r < 217) .@en_name = 4701;	// Strength2
+			else if (.@r < 225) .@en_name = 4722;	// Dexterity3
+			else if (.@r < 233) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 244) .@en_name = 4732;	// Agility3
+			else if (.@r < 255) .@en_name = 4731;	// Agility2
+			else if (.@r < 265) .@en_name = 4742;	// Vitality3
+			else if (.@r < 275) .@en_name = 4741;	// Vitality2
+			else if (.@r < 279) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 283) .@en_name = 4815;	// Spell1
+			else if (.@r < 287) .@en_name = 4872;	// Attack_Delay_2
+			else if (.@r < 291) .@en_name = 4814;	// Spell2
+			else if (.@r < 296) .@en_name = 0;
+			else if (.@r < 301) .@en_name = 9;
+			else .@en_name = 0;
+			break;
+		case 8:
+			if (.@slot == 4) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 100;
+			}
+			else if (.@slot == 3) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 111;
+			}
+			else if (.@slot == 2) {
+				.@en_brk1 = 1;
+				.@en_brk2 = 111;
+			}
+			else {
+				mes "[Mass Charleston]";
+				mes "An unknown error has occurred.";
+				close3;
+			}
+			.@r = rand( .@en_brk1, .@en_brk2 );
+			if (.@r < 11) .@en_name = 4700;	// Strength1
+			else if (.@r < 21) .@en_name = 4701;	// Strength2
+			else if (.@r < 31) .@en_name = 4720;	// Dexterity1
+			else if (.@r < 41) .@en_name = 4721;	// Dexterity2
+			else if (.@r < 50) .@en_name = 4730;	// Agility1
+			else if (.@r < 59) .@en_name = 4731;	// Agility2
+			else if (.@r < 69) .@en_name = 4740;	// Vitality1
+			else if (.@r < 79) .@en_name = 4741;	// Vitality2
+			else if (.@r < 89) .@en_name = 4710;	// Inteligence1
+			else if (.@r < 99) .@en_name = 4711;	// Inteligence2
+			else if (.@r < 100) .@en_name = 4869;	// Attack_Delay_1
+			else if (.@r < 101) .@en_name = 4815;	// Spell1
+			else .@en_name = 0;
+			break;
+		default:
+			mes "[Mass Charleston]";
+			mes "An unknown error has occurred.";
+			close3;
+		}
+		if (Zeny < 100000 || countitem(6752) < 1) {
+			mes "[Mass Charleston]";
+			mes "Things needed for commodity upgrades seem inadequate!";
+			close3;
+		}
+
+		// anti-hack
+		if (callfunc("F_IsEquipIDHack", .@part, .@item_id) ||
+				callfunc("F_IsEquipCardHack", .@part, .@card_saved[0], .@card_saved[1], .@card_saved[2], .@card_saved[3]) ||
+				callfunc("F_IsEquipRefineHack", .@part, .@refine)) {
+			mes "[Mass Charleston]";
+			mes "An unknown error has occurred.";
+			close3;
+		}
+
+		.@card[.@slot-1] = .@en_name;
+		delitem 6752,1;	// Charleston_Parts
+		Zeny -= 100000;
+		delequip .@part;
+
+		switch(.@en_name) {
+		case 0:
+			cutin "dalle02.bmp",2;
+			specialeffect2 EF_SHIELDCHARGE;
+			mes "[Mass Charleston]";
+			mes "Since the balance of power does not match, the given existing ability has been destroyed. It is unfortunate but please try again next time.";// unknown text
+			getitem2 .@item_id,1,1,.@refine,0, .@card[0], .@card[1], .@card[2], .@card[3];
+			close3;
+		case 9:
+			cutin "dalle04.bmp",2;
+			specialeffect2 EF_SUI_EXPLOSION;
+			mes "[Mass Charleston]";
+			mes "This!";
+			mes "I'm sorry but the equipment has been destroyed.";// unknown text
+			close3;
+		default:
+			specialeffect2 EF_REPAIRWEAPON;
+			mes "[Mass Charleston]";
+			mes "^990000Socket" + .@slot + "^000000 will be Upgrade.";
+			getitem2 .@item_id,1,1,.@refine,0, .@card[0], .@card[1], .@card[2], .@card[3];
+			close3;
+		}
+	case 2:	// Reset
+		// Note: the NPC doesn't check if the equipment is already enhanced
+		if (F_IsCharm(.@card[0]) == true) .@card[0] = 0;
+		if (F_IsCharm(.@card[1]) == true) .@card[1] = 0;
+		if (F_IsCharm(.@card[2]) == true) .@card[2] = 0;
+		if (F_IsCharm(.@card[3]) == true) .@card[3] = 0;
+		specialeffect2 EF_REPAIRWEAPON;
+		mes "[Mass Charleston]";
+		mes "Reset the product's abilities.";
+		delitem 6752,1;	// Charleston_Parts
+		Zeny -= 100000;
+		delequip .@part;
+		getitem2 .@item_id,1,1,.@refine,0, .@card[0], .@card[1], .@card[2], .@card[3];
+		close3;
+	dfault:
+		mes "[Mass Charleston]";
+		mes "An unknown error has occurred.";
+		close3;
+	}
+	end;
+}
+
+verus04,63,112,4	script	Mass Charleston#3	4_F_CHARLESTON01,{
+	if (!checkweight(1201,1) || (MaxWeight - Weight) < 1000) {
+		mes "^ff0000You have carried too many items, please reduce it and come back later.^000000";
+		close;
+	}
+	cutin "dalle03.bmp",2;
+	mes "[Mass Charleston]";
+	mes "Eh, do I have a customer? Activating Salesman mode...";
+	next;
+	cutin "dalle01.bmp",2;
+	mes "[Mass Charleston]";
+	mes "Charleston Factory's best-selling items: ^FF0000Upgrade Part Plate^000000 and ^FF0000Supplement Part Str^000000 now on sale!";
+	next;
+	mes "[Mass Charleston]";
+	mes "For only ^FF00003,999,999^000000 zeny! Get yourself the ultra-performance action gears!";
+	next;
+	mes "[Mass Charleston]";
+	mes "Also available is the ^FF0000Pilebuncker^000000 ^FF0000Upgrade^000000 service!";
+	next;
+	switch( select( "Talk.", "Exchange Upgrade Parts.", "Exchange Supplementary devices.", "Upgrade Pilebuncker." ) ) {
+	case 1:
+		if (isbegin_quest(13186) == 0) {
+			mes "[Mass Charleston]";
+			mes "The Charleston Factory shut down, but its technology and products remain with us.";
+			next;
+			mes "[Mass Charleston]";
+			mes "Oh, haven't you heard the news? Oops, my bad. Please forget I said that.";
+			close3;
+		}
+		cutin "dalle03.bmp",2;
+		mes "[Mass Charleston]";
+		mes "I'm a mass version Charleston. I wasn't even given a serial number. Who knows how many copies of me were made? It could be a hundred, maybe even a thousand.";
+		next;
+		mes "[Mass Charleston]";
+		mes "The original Charleston is standing over there, but...";
+		next;
+		mes "[Mass Charleston]";
+		mes "By the time Charlestons 1 and 2 escaped the factory, they're severely damaged. The battle that took place that day was incredible.";
+		next;
+		mes "[Mass Charleston]";
+		mes "I can still remember Charlestons 1 and 2 destroying Dr. Ve's numerous creatures like it was yesterday.";
+		next;
+		mes "[Mass Charleston]";
+		mes "They also destroyed the mass version Charlestons modified by Dr. Ve to his bidding.";
+		next;
+		mes "[Mass Charleston]";
+		mes "Of course there are others--like us here working on product upgrades--that were lucky enough to escape Dr. Ve's clutches and meet Charleston 1, who saved us all.";
+		next;
+		mes "[Mass Charleston]";
+		mes "After escaping with the modified Charleston 3, we came here.";
+		next;
+		mes "[Mass Charleston]";
+		mes "Just so you know, this place was already in shambles when we arrived. We had nothing to do with its destruction. Perhaps...";
+		next;
+		mes "[Mass Charleston]";
+		mes "Sorry I sidetracked. Anyway, this is the problem.";
+		next;
+		mes "[Mass Charleston]";
+		mes "Charlestons 1 and 2 were destroyed to a point of impairment. They tried to repair each other, to no avail.";
+		next;
+		mes "[Mass Charleston]";
+		mes "They realized they're damaged beyond repair. They salvaged however many parts they could, and built one body with one OS.";
+		next;
+		mes "[Mass Charleston]";
+		mes "And that's the newly built body. They blamed themselves for the destruction of the factory, and wanted to fix it. I'm afraid their data is corrupted or missing important memory.";
+		next;
+		mes "[Mass Charleston]";
+		mes "The characteristics of the data show more traits of Charleston 2, while the access method of the OS is more similar to that of Charleston 1. Charleston 1 always was the more sentimental one.";
+		next;
+		mes "[Mass Charleston]";
+		mes "I don't know if the new Charleston is Charleston 1 or 2. I can't even tell what it misses or remembers the most.";
+		next;
+		mes "[Mass Charleston]";
+		mes "She keeps blaming herself for losing her data, for letting down her friends. Every time we try to console her,";
+		next;
+		mes "[Mass Charleston]";
+		mes "she would say she doesn't have the heart or brain to remember or know. I wonder if she knows";
+		next;
+		mes "[Mass Charleston]";
+		mes "that the memories of Humans fade and get distorted or glorified with time.";
+		next;
+		mes "[Mass Charleston]";
+		mes "And that Humans learn from their mistakes and failures. I read that from those paper memory devices called ^FF0000books^000000 in the factory.";
+		next;
+		mes "[Mass Charleston]";
+		mes "There was a small study in the ^FF0000south wing of the factory^000000. Later, it was turned into a robot development room.";
+		next;
+		mes "[Mass Charleston]";
+		mes "Maybe the Charleston is more like the Humans than the rest of us. I just hope she doesn't have to be so sad.";
+		next;
+		mes "[Mass Charleston]";
+		mes "I feel so congested in the OS that I ranted. Perhaps I need to defragment my memory.";
+		close3;
+	case 2:
+		mes "[Mass Charleston]";
+		mes "Upgrade Part Plate";
+		mes "Class: Armor, indestructible.";
+		mes "-10% damage from Small and Medium monsters.";
+		mes "-10% damage from Large monsters when Upgraded to +7.";
+		mes "Additional -5% damage from Small and Medium monsters when Upgraded to +9.";
+		next;
+		mes "[Mass Charleston]";
+		mes "Weight: 300";
+		mes "Required Level: 100";
+		callsub S_Buy, 15111;	// Upgrade_Part_Plate
+	case 3:
+		mes "[Mass Charleston]";
+		mes "Supplement Part Str";
+		mes "ATK+ 5%!";
+		mes "Additional ATK +1% every 4 Upgrade levels.";
+		mes "Use with Vitality/Agility/Dexterity supplementary devices for best results.";
+		next;
+		mes "[Mass Charleston]";
+		mes "Weight: 200";
+		mes "Required Level: 100";
+		callsub S_Buy, 15110;	// Supplement_Part_Str
+	case 4:
+		mes "[Mass Charleston]";
+		mes "The last masterpiece of the Charleston Factory! You'll never find such fine Equipment anywhere else.";
+		next;
+		mes "[Mass Charleston]";
+		mes "To Upgrade Pilebuncker,";
+		mes "^FF00001 Pilebuncker^000000,";
+		mes "^FF0000300 Dented Iron Plates^000000,";
+		mes "and ^FF000015 Broken Engines^000000 are required.";
+		next;
+		switch( select( "Pilebuncker S", "Pilebuncker P", "Pilebuncker T" ) ) {
+		case 1:
+			mes "[Mass Charleston]";
+			mes "Pilebuncker S";
+			mes "Class: Blunt Weapon";
+			mes "ATK: 400";
+			mes "Attack Speed bonus every 2 Upgrade levels.";
+			next;
+			mes "[Mass Charleston]";
+			mes "Weight: 300";
+			mes "Weapon Level: 4";
+			mes "Required Level: 130";
+			mes "Mechanic only. Comes with 1 Card socket.";
+			.@item_id = 16030;	// Pilebuncker_S
+			break;
+		case 2:
+			mes "[Mass Charleston]";
+			mes "Pilebuncker P";
+			mes "Class: Blunt Weapon";
+			mes "ATK: 450";
+			mes "ATK +5 every Upgrade level.";
+			next;
+			mes "[Mass Charleston]";
+			mes "Weight: 400";
+			mes "Weapon Level: 4";
+			mes "Required Level: 130";
+			mes "Mechanic only.";
+			.@item_id = 16031;	// Pilebuncker_P
+			break;
+		case 3:
+			mes "[Mass Charleston]";
+			mes "Pilebuncker T";
+			mes "Class: Blunt Weapon";
+			mes "ATK: 400";
+			mes "SP cost -1% every Upgrade level.";
+			next;
+			mes "[Mass Charleston]";
+			mes "Weight: 350";
+			mes "Weapon Level: 4";
+			mes "Required Level: 130";
+			mes "Mechanic only. Comes with 1 Card socket.";
+			.@item_id = 16032;	// Pilebuncker_T
+			break;
+		}
+		break;
+	}
+	next;
+	mes "[Mass Charleston]";
+	mes "Do you really want to Upgrade ^FF0000" + getitemname(.@item_id) + "^000000?";
+	next;
+	if (select( "I suggest you reconsider.", "Buy." ) == 1) {
+		mes "[Mass Charleston]";
+		mes "It's a good buy, but you still need to make your decision carefully.";
+		close;
+	}
+	if (countitem(6751) > 299 && countitem(6750) > 14 && countitem(1549) > 0) {
+		mes "[Mass Charleston]";
+		mes "You won't regret it! She's a Charleston factory!";
+		delitem 6751,300;	// Distorted_Iron_Plate
+		delitem 6750,15;	// Wrong_Engine
+		delitem 1549,1;		// Pilebuncker
+		getitem .@item_id,1;
+		close3;
+	}
+	mes "[Mass Charleston]";
+	mes "Not enough materials for the Upgrade.";
+	close3;
+
+S_Buy:
+	.@item_id = getarg(0);
+	mes "^FF0000Mechanic only^000000";
+	mes "^FF0000Price: 3,999,999 zeny^000000";
+	next;
+	mes "[Mass Charleston]";
+	mes "Do you really want to buy ^FF0000" + getitemname(.@item_id) + "^000000?";
+	next;
+	if (select( "I suggest you reconsider.", "Buy." ) == 1) {
+		mes "[Mass Charleston]";
+		mes "It's a good buy, but you still need to make your decision carefully.";
+		close3;
+	}
+	//if (Zeny >= 3999998) {// typo?
+	if (Zeny >= 3999999) {
+		mes "[Mass Charleston]";
+		mes "You won't regret it! She's a Charleston factory!";
+		Zeny -= 3999999;
+		getitem .@item_id,1;
+		close3;
+	}
+	mes "[Mass Charleston]";
+	mes "Good commodity value is not uncommon, please confirm your pocket depth!";
+	close3;
+}
+
+
+// Excellion
+verus04,161,222,4	script	Grandpa picking up scrap iron	1_M_HOF,{
+	switch( isbegin_quest(12368) ) {
+	case 0:
+		mes "[Grandpa picking up scrap iron]";
+		mes "There are two pieces of scrap iron I see the value of not Fibonacci to pick up and sell to the recycling bin, the result is not willing to deal with me.";
+		next;
+		mes "[Grandpa picking up scrap iron]";
+		mes "Because it's not iron? Each resource recycling are not willing to buy, is nerve-racking!";
+		close;
+	case 1:
+		mes "[Grandpa picking up scrap iron]";
+		mes "Hey! Did you just talk to that piece of junk? Or am I losing my sight?";
+		close;
+	case 2:
+		mes "[Grandpa picking up scrap iron]";
+		mes "Oh, my God! That can't be sold to the Recycle Bin!";
+		close;
+	}
+}
+
+verus04,163,219,4	script	PLUTO_09#pa0829	4_SCR_AT_ROBOTS,{
+	disable_items;
+	if (checkweight(1201,1) == 0 || (MaxWeight - Weight) < 10000) {
+		mes "^ff0000You have carried too many items, please reduce it and come back later.^000000";
+		close;
+	}
+	if (isbegin_quest(12368) < 2) {
+		mes "^0000ffAlthough the LCD still dim, but does not seem to work anymore.^000000";
+		close;
+	}
+	mes "^0000ffWhen the strange dinosaur pattern appears, go to the introduction screen.^000000";
+	next;
+	mes "[PLUTO_09]";
+	mes "" + strcharinfo(0) + ",";
+	mes "Hello. How can I help you?";
+	next;
+	switch( select( "Note", "Old Fuel and Huge Metal Scrap to exchange for gear.", "Design drawings for the production of Enchantment" ) ) {
+	case 1:
+		mes "^0000ffDinosaur forward screen appears and a description of the cute girl voice.^000000";
+		next;
+		mes "[PLUTO_09]";
+		mes "This is 100 years since the genesis of the new PLUTO_09.";
+		next;
+		mes "[PLUTO_09]";
+		mes "Bring Huge Metal Scrap and Old Fuel can help you make useful to you Equipment Oh~";
+		next;
+		mes "[PLUTO_09]";
+		mes "Do you want to make enchantment equipment? You bring the tank! I can make enchant with a design for you. Oh, good luck.";
+		next;
+		mes "[PLUTO_09]";
+		mes "This is the Tyrannosaurus rex that appeared in the dinosaur fairy tale, very beautiful... (Continue to appear boring dinosaur story)";
+		next;
+		mes "^0000ffIn this introduction to the screen, presumed that the psychological state of the robot maker is extremely unstable.^000000";
+		close;
+	case 2:
+		setarray .@id[0],20773,15128; // Excelion_Wing, Excelion_Suit
+		mes "[PLUTO_09]";
+		mes "Production equipment needs ^0000ff10 Huge Metal Scrap and 5 Old Fuel^000000.";
+		next;
+		switch( select( "Quit.", "Making the " + getitemname(.@id[0]), "Making the " + getitemname(.@id[1]) ) ) {
+		case 1:
+			mes "^0000ffDinosaurs gazed at the picture here after staying a bit closed.^000000";
+			close;
+		case 2:
+			.@item_id = .@id[0];
+			break;
+		case 3:
+			.@item_id = .@id[1];
+			break;
+		}
+		if (countitem(6961) < 10 || countitem(6962) < 5) {
+			mes "[PLUTO_09]";
+			mes "I have already talked about the production equipment needs ^0000ff10 " + getitemname(6961) + " and 5 " + getitemname(6962) + "^000000, you don't have enough.";
+			close;
+		}
+		specialeffect EF_SPELLBREAKER;
+		delitem 6962,5;// OldTank
+		delitem 6961,10;// LargeScrap
+		getitem .@item_id,1;
+		mes "[PLUTO_09]";
+		mes "Your equipment is ready. Let's see if it fits.";
+		close;
+	case 3:
+		while(1) {
+			if (countitem(6962) < 5)
+				.@string$ = "^aaaaaaInsufficient fuel for making design drawings.^000000";
+			else
+				.@string$ = "Production design (^ff0000 success rate 30%^000000)";
+			mes "[PLUTO_09]";
+			mes "If you give me 5 " + getitemname(6962) + ", I can do the production of design drawings look!";
+			mes "----------";
+			mes "^0000ffLittle dinosaur running around on the screen.^000000";
+			next;
+			if (select( "Quit.", .@string$ ) == 1) {
+				mes "^0000ffIt's over after showing that the dinosaurs are stuffing themselves.^000000";
+				close;
+			}
+			.@fail = false;
+			.@reac_rnd = rand(1,10000);
+			if (.@reac_rnd < 26)		.@en_name = 6977;	// Reactor_A_STR_
+			else if (.@reac_rnd < 51)	.@en_name = 6978;	// Reactor_A_INT_
+			else if (.@reac_rnd < 251)	.@en_name = 6979;	// Reactor_A_DEF_
+			else if (.@reac_rnd < 326)	.@en_name = 6981;	// Reactor_A_ATK_
+			else if (.@reac_rnd < 401)	.@en_name = 6982;	// Reactor_A_MATK_
+			else if (.@reac_rnd < 601)	.@en_name = 6980;	// Reactor_A_AVOI_
+			else if (.@reac_rnd < 801)	.@en_name = 6983;	// Reactor_A_MHP_
+			else if (.@reac_rnd < 1001)	.@en_name = 6984;	// Reactor_A_MSP_
+			else if (.@reac_rnd < 1151)	.@en_name = 6986;	// Reactor_A_ASPD_
+			else if (.@reac_rnd < 1401)	.@en_name = 6975;	// Reactor_Cure_201_
+			else if (.@reac_rnd < 1551)	.@en_name = 6976;	// Reactor_Cure_202_
+			else if (.@reac_rnd < 1751)	.@en_name = 6973;	// Reactor_Cure_101_
+			else if (.@reac_rnd < 1851)	.@en_name = 6974;	// Reactor_Cure_102_
+			else if (.@reac_rnd < 1901)	.@en_name = 6985;	// Reactor_A_FROZ_
+			else if (.@reac_rnd < 2101)	.@en_name = 6970;	// Reactor_T_WATER_
+			else if (.@reac_rnd < 2301)	.@en_name = 6971;	// Reactor_T_GROUND_
+			else if (.@reac_rnd < 2501)	.@en_name = 6969;	// Reactor_T_FIRE_
+			else if (.@reac_rnd < 2701)	.@en_name = 6972;	// Reactor_T_WIND_
+			else if (.@reac_rnd < 2776)	.@en_name = 6966;	// Reactor_P_WATER_
+			else if (.@reac_rnd < 2851)	.@en_name = 6967;	// Reactor_P_GROUND_
+			else if (.@reac_rnd < 2926)	.@en_name = 6965;	// Reactor_P_FIRE_
+			else if (.@reac_rnd < 3001)	.@en_name = 6968;	// Reactor_P_WIND_
+			else {
+				.@fail = true;
+				.@reac_rnd2 = rand(1,13000);
+				if (.@reac_rnd2 < 2)
+					.@en_name = 969;	// Gold
+				else if (.@reac_rnd2 < 1002)
+					.@en_name = 999;	// Steel
+				else if (.@reac_rnd2 < 3002)
+					.@en_name = 998;	// Iron
+				else if (.@reac_rnd2 < 8002)
+					.@en_name = 1002;	// Iron_Ore
+				else
+					.@en_name = 7054;	// Brigan
+			}
+			if (countitem(6962) < 5)
+				mes "^0000ffThe picture shows the dinosaur silently looking at the empty bowl, it may be an error message when the material is insufficient!^000000";
+			else {
+				specialeffect EF_SPELLBREAKER;
+				delitem 6962,5;// OldTank
+				getitem .@en_name,1;
+				mes "[PLUTO_09]";
+				if (.@fail)
+					mes "What a pity, the design failed.";
+				else
+					mes "Great, the design was made.";
+			}
+			next;
+		}
+		end;
+	default:
+		mes "^0000ffA screen showing howling that a dinosaur may not understand the command.^000000";
+		close;
+	}
+	end;
+}
+
+verus04,165,217,4	script	MARS_01#pa0829	4_SCR_MT_ROBOTS,{
+	disable_items;
+	if (checkweight(1201,1) == 0 || (MaxWeight - Weight) < 10000) {
+		mes "^ff0000You have carried too many items, please reduce it and come back later.^000000";
+		close;
+	}
+	switch( isbegin_quest(12368) ) {
+	case 0:
+		mes "Blurred LCD screen may be frightened or happy and intense shaking, perhaps due to lack of power and can not complete the presentation.";
+		next;
+		if (select( "Just ignore it.", "Press every button." ) == 1) {
+			mes "It may be a pre-scrap robot that is common everywhere and doesn't require much attention.";
+			close;
+		}
+		mes "[?????]";
+		mes "Hello! I'm MARS_01, an exploration robot. Currently, I have entered hibernation mode to save power. The related functions are set as follows.";
+		next;
+		if (select( "Interrupt the machine", "Supply of fuel" ) == 1) {
+			mes "The robot re-enters hibernation mode after a faint sound.";
+			close;
+		}
+		mes "[MARS_01]";
+		mes "We are super power robot, as long as the old oil 1 will let me and the companion PLUTO has more than 90% of the power.";
+		next;
+		mes "[MARS_01]";
+		mes "If you find Old Fuel, please insert the fuel into the mouth of the bottom of the screen, so you can lift the hibernation mode.";
+		setquest 12368;	// Operate the old robot
+		close;
+	case 1:
+		if (countitem(6962) < 1) {
+			mes "[MARS_01]";
+			mes "If you find 1 " + getitemname(6962) + ", please insert the fuel into the mouth of the bottom of the screen, so you can lift the hibernation mode.";
+			close;
+		}
+		mes "Maybe we ran out of power when we went looking for fuel. should we put in the fuel?";
+		next;
+		if (select( "Quit.", "Put in the fuel" ) == 1) {
+			mes "The old robot may be running out of power and not responding at all.";
+			close;
+		}
+		mes "When the fuel is put in, the sound screen opens.";
+		npctalk "Whoa, whoa?! It moves!!!", "Grandpa picking up scrap iron";
+		next;
+		mes "[MARS_01]";
+		mes "Start the inspection system and confirm the damage of each part.";
+		next;
+		mes "[MARS_01]";
+		mes "Power meter 10%, dashboard normal, body skeleton 13%, perform mining operations well.";
+		next;
+		mes "[MARS_01]";
+		mes "Pluto_09 began to inject energy for mining auxiliary robot.";
+		npctalk "Energy response confirmed. It's working.", "PLUTO_09#pa0829";
+		next;
+		mes "[MARS_01]";
+		mes "Thank you for getting me started, I will reset the person who started me to be a manager.";
+		next;
+		select("Enter a name.");
+		mes "[MARS_01]";
+		mes "" + strcharinfo(0) + ",";
+		mes "Hello! The fuel has been fully charged.";
+		delitem 6962,1;// OldTank
+		completequest 12368;
+		close;
+	case 2:
+		break;
+	}
+	mes "[MARS_01]";
+	mes "" + strcharinfo(0) + ",";
+	mes "Hello! Can I help you?";
+	next;
+	switch( select( "Note", "Enhanced " + getitemname(20773), "Enhanced " + getitemname(15128) ) ) {	// Excelion_Wing, Excelion_Suit
+	case 1:
+		mes "^0000ffSoon the instructions again.^000000";
+		next;
+		mes "[MARS_01]";
+		mes "While waiting for the new owner, we continue to update to the latest version.";
+		next;
+		mes "[MARS_01]";
+		mes "If you bring aak Seri Wong propulsion wing, aak Seri Wong jacket equipment and strengthen the design, I will strengthen the equipment according to the design.";
+		next;
+		mes "[MARS_01]";
+		mes "According to the standard design drawings of the operation, the equipment will not be damaged during the process, but the number of maximum upgrade will change depending on the type of equipement.";
+		next;
+		mes "[MARS_01]";
+		mes "Welcome back again~";
+		close;
+	case 2:
+		.@part = EQI_GARMENT;
+		break;
+	case 3:
+		.@part = EQI_ARMOR;
+		break;
+	}
+	// <item ID required>, <item enchant ID>, <max number of this enchant on armor>, <max number of this enchant on garment>, <enchant on first slot only>
+	setarray .@list[0],
+		6965, 4970, 1,0,3,	// Reactor_P_FIRE_		Reactor_P_FIRE
+		6966, 4971, 1,0,3,	// Reactor_P_WATER_		Reactor_P_WATER
+		6967, 4972, 1,0,3,	// Reactor_P_GROUND_	Reactor_P_GROUND
+		6968, 4973, 1,0,3,	// Reactor_P_WIND_		Reactor_P_WIND
+		6969, 4974, 0,3,0,	// Reactor_T_FIRE_		Reactor_T_FIRE
+		6970, 4975, 0,3,0,	// Reactor_T_WATER_		Reactor_T_WATER
+		6971, 4976, 0,3,0,	// Reactor_T_GROUND_	Reactor_T_GROUND
+		6972, 4977, 0,3,0,	// Reactor_T_WIND_		Reactor_T_WIND
+		6973, 4978, 3,3,0,	// Reactor_Cure_101_	Reactor_Cure_101
+		6974, 4979, 3,3,0,	// Reactor_Cure_102_	Reactor_Cure_102
+		6975, 4980, 3,3,0,	// Reactor_Cure_201_	Reactor_Cure_201
+		6976, 4981, 3,3,0,	// Reactor_Cure_202_	Reactor_Cure_202
+		6977, 4982, 1,0,0,	// Reactor_A_STR_		Reactor_A_STR
+		6978, 4983, 1,0,0,	// Reactor_A_INT_		Reactor_A_INT
+		6979, 4984, 3,3,0,	// Reactor_A_DEF_		Reactor_A_DEF
+		6980, 4985, 1,1,0,	// Reactor_A_AVOI_		Reactor_A_AVOI
+		6981, 4986, 3,3,0,	// Reactor_A_ATK_		Reactor_A_ATK
+		6982, 4987, 3,3,0,	// Reactor_A_MATK_		Reactor_A_MATK
+		6983, 4988, 3,3,0,	// Reactor_A_MHP_		Reactor_A_MHP
+		6984, 4989, 3,3,0,	// Reactor_A_MSP_		Reactor_A_MSP
+		6985, 4990, 1,0,0,	// Reactor_A_FROZ_		Reactor_A_FROZ
+		6986, 4991, 1,1,0;	// Reactor_A_ASPD_		Reactor_A_ASPD
+	.@size = getarraysize(.@list);
+
+	for ( .@i = 0; .@i < .@size; .@i += 5 ) {
+		if (countitem(.@list[.@i]) < 1)
+			.@menu$ += sprintf( "^aaaaaa%s (Missing)^000000:", getitemname(.@list[.@i]) );
+		else
+			.@menu$ += sprintf( "%s:", getitemname(.@list[.@i]) );
+	}
+	mes "[MARS_01]";
+	mes "" + strcharinfo(0) + ",";
+	mes "Choose the enchant you want to use!";
+	next;
+	.@s = select("Quit.:" + .@menu$) - 2;
+	if (.@s < 0) {
+		mes "[MARS_01]";
+		mes "So far.";
+		close;
+	}
+	.@s *= 5;
+	.@item_req = .@list[.@s];
+	.@item_enchant_id = .@list[.@s+1];
+	.@first_slot_only = .@list[.@s+4];
+
+	.@equip_id = getequipid(.@part);
+	.@equip_refine = getequiprefinerycnt(.@part);
+	setarray .@card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3);
+
+	if (countitem(.@item_req) < 1) {
+		mes "[MARS_01]";
+		mes "So far.";
+		close;
+	}
+	if (.@part == EQI_ARMOR)
+		.@max_num_enchant = .@list[.@s+2];
+	else if (.@part == EQI_GARMENT)
+		.@max_num_enchant = .@list[.@s+3];
+	else {
+		mes "[MARS_01]";
+		mes "Please contact the administrator.";
+		close;
+	}
+
+	// anti-hack
+	if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine)) {
+		mes "[MARS_01]";
+		mes "Did you remove your gear?";
+		close;
+	}
+
+	if (.@card[0] > 0 && .@item_enchant_id == .@card[0]) { .@slot_sum++; }
+	if (.@card[1] > 0 && .@item_enchant_id == .@card[1]) { .@slot_sum++; }
+	if (.@card[2] > 0 && .@item_enchant_id == .@card[2]) { .@slot_sum++; }
+	if (.@card[3] > 0 && .@item_enchant_id == .@card[3]) { .@slot_sum++; }
+
+	if (.@max_num_enchant < 1) {
+		mes "[MARS_01]";
+		mes "The design you choose is incompatible with the equipment.";
+		close;
+	}
+	if (.@first_slot_only > 0 && .@card[3] != 0) {
+		mes "[MARS_01]";
+		mes "This design is only for the first time to strengthen the use, but the equipment has other performance, please use other design to strengthen it!";
+		close;
+	}
+	if (.@slot_sum >= .@max_num_enchant) {
+		mes "[MARS_01]";
+		mes "The maximum number of enchants is " + .@max_num_enchant + ". The item has reached the upper limit.";
+		close;
+	}
+	if (.@card[1] != 0) {
+		mes "[MARS_01]";
+		mes "The number of equipment has reached the limit.";
+		close;
+	}
+
+	// anti-hack
+	if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine)) {
+		mes "[MARS_01]";
+		mes "Please pay special attention if the equipment will be removed.";
+		close;
+	}
+
+	switch( .@equip_id ) {
+	case 20773:	// Excelion_Wing
+	case 15128:	// Excelion_Suit
+		break;
+	default:
+		mes "[MARS_01]";
+		mes "The product does not have a serial number, does not meet the specifications of the product can not be strengthened.";
+		close;
+	}
+	mes "[MARS_01]^0000ff";
+	mes "Choose " + getequipname(.@part) + " + " + getitemname(.@item_req) + ",";
+	mes "^000000------------------";
+	mes "Your selected design can be upgraded to the equipment limit ^0000ff" + .@max_num_enchant + " the same design, ^000000so far, enhanced ^0000ff" + .@slot_sum + " times^000000, do you want to continue?";
+	next;
+	if (select( "I'll think about it...", "Go on." ) == 1) {
+		mes "[MARS_01]";
+		mes "Come back next time you need me~";
+		close;
+	}
+
+	// anti-hack
+	if (callfunc("F_IsEquipIDHack", .@part, .@equip_id) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) || callfunc("F_IsEquipRefineHack", .@part, .@equip_refine))
+		close;
+
+	if (.@card[3] == 0) {
+		.@enchant_count = 1;
+		.@card[3] = .@item_enchant_id;
+	}
+	else if (.@card[2] == 0) {
+		.@enchant_count = 2;
+		.@card[2] = .@item_enchant_id;
+	}
+	else if (.@card[1] == 0) {
+		.@enchant_count = 3;
+		.@card[1] = .@item_enchant_id;
+	}
+	else {
+		mes "[MARS_01]";
+		mes "The equipment has reached the upper limit of strengthening Hello!";
+		close;
+	}
+	specialeffect2 EF_REPAIRWEAPON;
+	mes "[MARS_01]";
+	if (.@enchant_count < 5)
+		mes "The first equipment has been upgraded ^990000" + .@enchant_count + " times^000000.";
+	else
+		mes "For additional performance equipment^990000 ^000000 upgrade.";	// never displayed
+
+	delitem .@item_req, 1;
+	delequip .@part;
+	getitem2 .@equip_id,1,1,.@equip_refine,0,.@card[0],.@card[1],.@card[2],.@card[3];
+	close;
+}

+ 101 - 0
npc/re/merchants/novice_vending_machine.txt

@@ -0,0 +1,101 @@
+//===== rAthena Script =======================================
+//= Vending Machine NPCs for Novice.
+//===== Description: ========================================= 
+//= [Walkthrough Conversion]
+//= Exchangers NPCs for Novice.
+//===== Additional Comments: =================================
+//= 1.0 Firt version. [Aleos] [Secret]
+//= 1.1 Additionnal clean-up. [Capuche]
+//============================================================
+
+-	script	novice_vending_machine#main	-1,{
+	.@storage_ticket = 7059;	// Cargo_Free_Ticket
+	.@storage_ticket_name$ = getitemname(.@storage_ticket);
+
+	mes "Vending Machine for Novices.";
+	mes "There are many buttons.";
+	next;
+	switch( select( "Manual", "Trade " + .@storage_ticket_name$, "Trade Novice equipments" ) ) {
+	case 1:
+		mes "[Exchange " + .@storage_ticket_name$ + "]";
+		mes "4 " + .@storage_ticket_name$ + " can be exchanged into 1 Free Ticket for Warp, Airship or the Cart Service, or 15 Free Ticket for Peco Ride, 1 Novice Fly Wing, 5 Novice Butterfly Wing, 30 Novice Potion.";
+		next;
+		mes "[Trade Novice Gears]";
+		mes "Armor, Hood, Sandals, Main Gauche and Guard for Novice from Criatura Academy can be exchanged into 4 " + .@storage_ticket_name$ + ".";
+		next;
+		mes "[Trade Novice Gears]";
+		mes "Novice Eggshell can be exchanged into Criatura Hair Coupon for changing your hairstyle.";
+		close;
+	case 2:
+		setarray .@exchange[0],
+			7060,1,		// Warp_Free_Ticket
+			7311,1,		// Free_Flying_Ship_Ticket
+			7061,1,		// Cart_Free_Ticket
+			7310,1,		// Free_Peco_Ticket
+			12323,15,	// N_Fly_Wing
+			12324,5,	// N_Butterfly_Wing
+			569,30;		// Novice_Potion
+		.@size = getarraysize(.@exchange);
+
+		for ( .@i = 0; .@i < .@size; .@i += 2 ) {
+			if (.@exchange[.@i+1] > 1)
+				.@menu$ += .@exchange[.@i+1] + " ";
+			.@menu$ += getitemname(.@exchange[.@i]) + ":";
+		}
+		.@s = (select(.@menu$) - 1) * 2;
+		if (countitem(.@storage_ticket) < 4) {
+			mes "The number of " + .@storage_ticket_name$ + " is insufficient to proceed with the exchange.";
+			close;
+		}
+		if (.@exchange[.@s+1] > 1)
+			.@amount$ = .@exchange[.@s+1] + " ";
+		mes "Exchanged 4 " + .@storage_ticket_name$ + " to " + .@amount$ + getitemname(.@exchange[.@s]);
+		delitem .@storage_ticket,4;
+		getitem .@exchange[.@s],.@exchange[.@s+1];
+		close;
+	case 3:
+		mes "Exchange all Novice equipments into coupons.";
+		mes "Select continue to proceed.";
+		next;
+		if (select( "Continue", "Cancel." ) == 2) {
+			mes "The trade was interrupted.";
+			close;
+		}
+		mes "Exchanging all equipment into coupons.";
+		setarray .@list[0],2352,2510,2414,1243,2112,5055;
+		.@size = getarraysize(.@list);
+		
+		for ( .@i = 0, .@i < .@size; .@i++ ) {
+			.@count = countitem(.@list[.@i]);	// note: maybe check if equipped items are skipped
+			if (.@count < 1)
+				continue;
+			switch(.@list[.@i]) {
+			case 2352:	// Novice_Plate
+			case 2510:	// Novice_Hood
+			case 2414:	// Novice_Boots
+			case 1243:	// Novice_Knife
+			case 2112:	// Novice_Guard
+				delitem .@list[.@i], .@count;
+				getitem .@storage_ticket,(4*.@count);	// Cargo_Free_Ticket
+				break;
+			case 5055:	// Novice_Egg_Cap
+				delitem .@list[.@i], .@count;
+				getitem 6593,.@count;	// Cryptura_Hair_Coupon
+				break;
+			}
+		}
+		close;
+	}
+}
+izlude_in,69,177,5	duplicate(novice_vending_machine#main)	Vending Machine for Nov#iz	2_VENDING_MACHINE1
+payon_in02,71,75,5	duplicate(novice_vending_machine#main)	Vending Machine for Nov#pay	2_VENDING_MACHINE1
+prt_church,187,27,3	duplicate(novice_vending_machine#main)	Vending Machine for Nov#prt	2_VENDING_MACHINE1
+
+// unknown facing
+alberta_in,60,52,3	duplicate(novice_vending_machine#main)	Vending Machine for Nov#alb	2_VENDING_MACHINE1
+geffen_in,158,107,3	duplicate(novice_vending_machine#main)	Vending Machine for Nov#gef	2_VENDING_MACHINE1
+moc_para01,17,37,3	duplicate(novice_vending_machine#main)	Vending Machine for Nov#para	2_VENDING_MACHINE1
+moc_prydb1,38,124,3	duplicate(novice_vending_machine#main)	Vending Machine for Nov#pryd	2_VENDING_MACHINE1
+payon_in01,59,20,3	duplicate(novice_vending_machine#main)	Vending Machine for Nov#pay2	2_VENDING_MACHINE1
+que_ng,28,73,3	duplicate(novice_vending_machine#main)	Vending Machine for Nov#que_ng1	2_VENDING_MACHINE1
+que_ng,168,39,3	duplicate(novice_vending_machine#main)	Vending Machine for Nov#que_ng2	2_VENDING_MACHINE1

+ 14 - 0
npc/re/merchants/shops.txt

@@ -26,11 +26,13 @@
 // Alberta
 //=======================================================
 alberta_in,176,81,3	shop	Trading Merchant#alb	900,13200:-1,13221:-1,13222:-1,13150:-1,13102:-1,13151:-1,13154:-1,13155:-1,13163:-1,13165:-1,13168:-1
+alberta_in,176,97,5	shop	Advanced Potion Merchant#alb	4_F_ALCHE_A,11621:-1,11622:-1,11623:-1,11624:-1
 
 //=======================================================
 // Al De Baran
 //=======================================================
 alde_alche,38,184,3	shop	Material Seller#alche	755,7143:-1,7141:-1,7140:-1,6248:-1,6250:-1,6251:-1,6255:-1,6261:-1,6262:-1,6297:-1
+aldeba_in,99,56,5	shop	Advanced Potion Merchant#alde	4_F_ALCHE_A,11621:-1,11622:-1,11623:-1,11624:-1
 
 //=======================================================
 // Comodo
@@ -58,6 +60,11 @@ que_ng,180,79,3	shop	Johnny Waiker	900,13200:-1,13221:-1,13222:-1
 dic_in01,238,107,5	shop	Peddler#dic	900,601:-1,602:-1,611:-1,610:-1
 dicastes01,207,200,6	shop	Points Merchant#dic	66,6360:-1,6361:-1,6362:-1,6363:-1
 
+//=======================================================
+// Geffen
+//=======================================================
+geffen_in,78,169,3	shop	Advanced Potion Merchant#gef	1_F_03,11621:-1,11622:-1,11623:-1,11624:-1
+
 //=======================================================
 // Izlude
 //=======================================================
@@ -79,6 +86,7 @@ izlude_d,128,158,7	duplicate(Vendor from Milk Ranch#i)	Vendor from Milk Ranch#d
 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,102,3	shop	Trading Merchant#iz	900,13200:-1,13221:-1,13222:-1,13150:-1,13102:-1,13151:-1,13154:-1,13155:-1,13163:-1,13165:-1,13168:-1
+izlude_in,59,113,5	shop	Advanced Potion Merchant#iz	4_F_ALCHE_A,11621:-1,11622:-1,11623:-1,11624:-1
 
 //=======================================================
 // Juno
@@ -121,6 +129,8 @@ morocc,166,54,2	shop	Jeweler#moc4	102,721:-1,723:-1,726:-1,728:-1,729:-1
 morocc,34,68,0	shop	Trader#moc7	93,748:-1
 morocc,269,193,4	shop	Trader#moc8	89,2609:-1,1516:-1,1522:-1
 morocc,256,191,5	shop	Trader#moc9	93,2612:-1
+morocc,149,245,7	shop	Advanced Potion Merchant#moc1	4_F_ALCHE_A,11621:-1,11622:-1,11623:-1,11624:-1
+morocc,170,84,1	shop	Advanced Potion Merchant#moc2	4_F_ALCHE_A,11621:-1,11622:-1,11623:-1,11624:-1
 
 //=======================================================
 // Mid Camp
@@ -139,6 +149,9 @@ prontera,178,244,3	shop	Amatsu Trader#nin	83,13250:-1,13251:-1,13252:-1,13253:-1
 // Payon
 //=======================================================
 payon,123,109,4	shop	Trap Specialist#pay	66,7940:-1,12341:-1
+payon,157,96,3	shop	Advanced Potion Merchant#pay	4_F_ALCHE_A,11621:-1,11622:-1,11623:-1,11624:-1
+payon_in01,12,53,5	shop	Advanced Potion Merchant#pay2	4_F_ALCHE_A,11621:-1,11622:-1,11623:-1,11624:-1
+payon_in02,85,38,3	shop	Advanced Potion Merchant#pay3	4_F_ALCHE_A,11621:-1,11622:-1,11623:-1,11624:-1
 
 //=======================================================
 // Port Malaya
@@ -157,6 +170,7 @@ prt_in,175,137,4	shop	Black Marketeer#prt	49,2139:-1,2800:-1,2801:-1,2802:-1,280
 s_atelier,17,110,1	shop	Part-Timer#sc_prt	67,6123:-1,6120:-1
 prontera,96,209,4	shop	Rebellion Accessories	564,25187:-1,7663:-1,7664:-1,7665:-1,7940:300,13200:-1,13221:-1,13222:-1,13215:-1,13216:-1,13217:-1,13218:-1,13219:-1,13220:-1,13228:-1,13229:-1,13231:-1,13232:-1,13230:-1
 prontera,92,209,4	shop	Rebellion Weapons	564,13120:-1,13122:-1,13189:-1,13195:-1,13192:-1,13193:-1,13194:-1,13197:-1,13198:-1,28200:-1,28201:-1
+prt_in,129,68,3	shop	Advanced Potion Merchant#prt	4_F_ALCHE_A,11621:-1,11622:-1,11623:-1,11624:-1
 
 //=======================================================
 // Rachel

+ 1 - 1
npc/re/merchants/ticket_refiner.txt

@@ -39,7 +39,7 @@ prontera,184,177,6	script	Refine Master	851,{
 			close;
 		case 2:
 			mes "[Refine Master]";
-			mes "Actully, I sometimes provide refine services for adventurers with a ^006400Refine Ticket^000000...";
+			mes "Actually, I sometimes provide refine services for adventurers with a ^006400Refine Ticket^000000...";
 			mes "Bye bye~!";
 			close;
 		}

+ 111 - 103
npc/re/mobs/championmobs.txt

@@ -3,106 +3,111 @@
 //===== By: ==================================================
 //= nanakiwurtz
 //===== Current Version: =====================================
-//= 1.0
+//= 1.1
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
 //= 1.0 First version
+//= 1.1 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
-abbey02,0,0	monster	Swift Zombie Slaughter	2603,2,300000
-gl_prison,0,0	monster	Solid Zombie Prisoner	2604,2,300000
+abbey02,0,0	monster	Swift Zombie Slaughter	2603,3,300000
+gl_prison,0,0	monster	Solid Zombie Prisoner	2604,1,300000
 gld_dun04,0,0	monster	Zombie Master Ringleader	2605,2,300000
 pay_dun00,0,0	monster	Furious Zombie	2606,2,300000
 schg_dun01,0,0	monster	Elusive Zakudam	2607,2,300000
 prt_fild03,0,0	monster	Swift Yoyo	2608,2,300000
-ayo_fild02,0,0	monster	Solid Yoyo	2609,2,300000
-pay_fild06,0,0	monster	Wormtail Ringleader	2610,2,300000
-um_fild02,0,0	monster	Furious Wootan Fighter	2611,2,300000
+ayo_fild02,0,0	monster	Solid Yoyo	2609,1,300000
+pay_fild06,0,0	monster	Wormtail Ringleader	2610,3,300000
+um_fild02,0,0	monster	Furious Wootan Fighter	2611,1,300000
 mosk_dun01,0,0	monster	Elusive Wood Goblin	2612,2,300000
 moc_fild03,0,0	monster	Swift Wolf	2613,2,300000
 gl_step,0,0	monster	Solid Wind Ghost	2614,2,300000
+gef_dun03,0,0	monster	Solid Wind Ghost	2614,1,300000
 pay_fild01,0,0	monster	Willow Ringleader	2615,2,300000
-um_fild04,0,0	monster	Furious Wild Rose	2616,2,300000
+um_fild04,0,0	monster	Furious Wild Rose	2616,1,300000
 gon_dun03,0,0	monster	Elusive Evil Nymph	2617,2,300000
-gl_sew01,0,0	monster	Solid Whisper	2618,2,300000
+gl_sew01,0,0	monster	Solid Whisper	2618,1,300000
 treasure_n2,0,0	monster	Weak Skeleton Ringleader	2619,2,300000
 gl_cas02,0,0	monster	Furious Wanderer	2620,2,300000
 gefenia04,0,0	monster	Elusive Violy	2621,2,300000
 gefenia03,0,0	monster	Swift Violy	2622,2,300000
 gefenia02,0,0	monster	Solid Violy	2623,2,300000
 ein_fild04,0,0	monster	Venomous Ringleader	2624,2,300000
-juperos_01,0,0	monster	Furious Venatu	2625,2,300000
+juperos_01,0,0	monster	Furious Venatu	2625,3,300000
 mosk_dun03,0,0	monster	Elusive Vavayaga	2626,2,300000
 ra_san01,0,0	monster	Swift Vanberk	2627,2,300000
 iz_dun01,0,0	monster	Solid Vadon	2628,2,300000
 ein_fild02,0,0	monster	Ungoliant Ringleader	2629,2,300000
-bra_fild01,0,0	monster	Furious Toucan	2630,2,300000
+bra_fild01,0,0	monster	Furious Toucan	2630,3,300000
 ma_fild01,0,0	monster	Elusive Tiyanak	2631,2,300000
 prt_sewb4,0,0	monster	Solid Thief Bug	2632,2,300000
-prt_sewb3,0,0	monster	Thief Bug Ringleader	2633,2,300000
+prt_sewb3,0,0	monster	Thief Bug Ringleader	2633,3,300000
 prt_sewb2,0,0	monster	Furious Thief Bug	2634,2,300000
 beach_dun3,0,0	monster	Elusive Thara Frog	2635,2,300000
 ein_fild03,0,0	monster	Swift Teddy Bear	2636,2,300000
-man_fild03,0,0	monster	Solid Tatacho	2637,2,300000
+man_fild03,0,0	monster	Solid Tatacho	2637,1,300000
 mjo_dun01,0,0	monster	Tarou Ringleader	2638,2,300000
 ayo_dun02,0,0	monster	Furious Tamruan	2639,2,300000
 gl_sew03,0,0	monster	Elusive Sting	2640,2,300000
 lhz_fild02,0,0	monster	Swift Stem Worm	2641,2,300000
-moc_fild13,0,0	monster	Solid Steel Chonchon	2642,2,300000
+moc_fild13,0,0	monster	Solid Steel Chonchon	2642,3,300000
 ve_fild07,0,0	monster	Stapo Ringleader	2643,2,300000
 beach_dun2,0,0	monster	Furious Stalactic Golem	2644,2,300000
-prt_fild02,0,0	monster	Elusive Stainer	2645,2,300000
+prt_fild02,0,0	monster	Elusive Stainer	2645,3,300000
 treasure_n1,0,0	monster	Swift Spore	2646,2,300000
 tur_dun02,0,0	monster	Solid Solider	2647,2,300000
-pay_dun02,0,0	monster	Soldier Skeleton Ringleader	2648,2,300000
+pay_dun02,0,0	monster	Soldier Skeleton Ringleader	2648,3,300000
 pay_dun01,0,0	monster	Furious Soldier Skeleton	2649,2,300000
-tha_t09,0,0	monster	Elusive Lady Solace	2650,2,300000
+tha_t09,0,0	monster	Elusive Lady Solace	2650,2,300000	//--Remove after Thanatos Ravamped Patch
 pay_dun03,0,0	monster	Swift Sohee	2651,2,300000
 ice_dun02,0,0	monster	Solid Snowier	2652,2,300000
-pay_fild02,0,0	monster	Boa Ringleader	2653,2,300000
+pay_fild02,0,0	monster	Boa Ringleader	2653,3,300000
 ayo_fild01,0,0	monster	Furious Smokie	2654,2,300000
-yuno_fild06,0,0	monster	Elusive Sleeper	2655,2,300000
+yuno_fild06,0,0	monster	Elusive Sleeper	2655,1,300000
 yuno_fild02,0,0	monster	Swift Sleeper	2656,2,300000
-odin_tem02,0,0	monster	Solid Skogul	2657,2,300000
+odin_tem02,0,0	monster	Solid Skogul	2657,1,300000
 gld2_pay,0,0	monster	Skeleton General Ringleader	2658,2,300000
 gld_dun01_2,0,0	monster	Furious Skeleton General	2659,2,300000
 mjo_dun03,0,0	monster	Elusive Skeleton Worker	2660,2,300000
-ice_dun01,0,0	monster	Swift Siroma	2661,2,300000
-mosk_fild02,0,0	monster	Solid Side Winder	2662,2,300000
+ice_dun01,0,0	monster	Swift Siroma	2661,1,300000
+mosk_fild02,0,0	monster	Solid Side Winder	2662,1,300000
 mjolnir_03,0,0	monster	Side Winder Ringleader	2663,2,300000
 ama_dun03,0,0	monster	Furious Shinobi	2664,2,300000
-tha_t11,0,0	monster	Elusive Mistress of Shelter	2665,2,300000
-hu_fild06,0,0	monster	Swift Shellfish	2666,2,300000
-lhz_dun03,0,0	monster	Solid Cecil Damon	2667,2,300000
+tha_t11,0,0	monster	Elusive Mistress of Shelter	2665,2,300000	//--Remove after Thanatos Ravamped Patch
+hu_fild06,0,0	monster	Swift Shellfish	2666,1,300000
+lhz_dun03,0,0	monster	Solid Cecil Damon	2667,3,300000
 cmd_fild04,0,0	monster	Sea Otter Ringleader	2668,2,300000
 iz_dun05,0,0	monster	Furious Lamp Rey	2669,2,300000
-moc_fild18,0,0	monster	Elusive Scorpion	2670,2,300000
+moc_fild18,0,0	monster	Elusive Scorpion	2670,3,300000
 mjolnir_09,0,0	monster	Swift Savage Babe	2671,2,300000
 prt_maze01,0,0	monster	Solid Savage	2672,2,300000
-mjolnir_07,0,0	monster	Savage Ringleader	2673,2,300000
+mjolnir_07,0,0	monster	Savage Ringleader	2673,3,300000
 moc_fild16,0,0	monster	Furious Sandman	2674,2,300000
 thor_v03,0,0	monster	Elusive Salamander	2675,2,300000
-treasure01,0,0	monster	Swift Sailor Skeleton	2676,2,300000
+treasure02,0,0	monster	Swift Sailor Skeleton	2676,1,300000
 ra_fild12,0,0	monster	Solid Roween	2677,2,300000
 prt_fild00,0,0	monster	Roda Frog Ringleader	2678,2,300000
 gef_fild01,0,0	monster	Furious Roda Frog	2679,2,300000
 prt_fild07,0,0	monster	Elusive Rocker	2680,2,300000
 tha_t01,0,0	monster	Swift Rideword	2681,2,300000
+//tha_t01,0,0	monster	Swift Rideword	2681,1,300000	//--Applied after Thanatos Revamped Patch.
 c_tower1,0,0	monster	Solid Rideword	2682,2,300000
 gon_fild01,0,0	monster	Dumpling Child Ringleader	2683,2,300000
-tha_t10,0,0	monster	Furious Baroness of Retribution	2684,2,300000
+tha_t10,0,0	monster	Furious Baroness of Retribution	2684,2,300000	//--Remove after Thanatos Ravamped Patch
 tha_t08,0,0	monster	Elusive Baroness of Retribution	2685,2,300000
+//tha_t08,0,0	monster	Elusive Baroness of Retribution	2685,1,300000	//--Applied after Thanatos Revamped Patch.
 tha_t07,0,0	monster	Swift Baroness of Retribution	2686,2,300000
+//tha_t07,0,0	monster	Swift Baroness of Retribution	2686,1,300000	//--Applied after Thanatos Revamped Patch.
 in_sphinx2,0,0	monster	Solid Requiem	2687,2,300000
-lhz_dun01,0,0	monster	Remover Ringleader	2688,2,300000
+lhz_dun01,0,0	monster	Remover Ringleader	2688,3,300000
 mal_dun01,0,0	monster	Elusive Red Eruma	2689,2,300000
 gl_knt02,0,0	monster	Swift Raydric	2690,2,300000
 gl_knt01,0,0	monster	Solid Raydric	2691,2,300000
-lhz_dun02,0,0	monster	Laurell Weinder Ringleader	2692,2,300000
+lhz_dun02,0,0	monster	Laurell Weinder Ringleader	2692,3,300000
 dic_dun03,0,0	monster	Furious Rake Scaraba	2693,2,300000
 cmd_fild07,0,0	monster	Elusive Raggler	2694,2,300000
-lhz_fild01,0,0	monster	Swift Rafflesia	2695,2,300000
+lhz_fild01,0,0	monster	Swift Rafflesia	2695,3,300000
 lhz_fild01,0,0	monster	Poring Ringleader	2696,2,300000
 lhz_fild01,0,0	monster	Furious Poring	2697,2,300000
 lhz_fild01,0,0	monster	Elusive Poring	2698,2,300000
@@ -111,8 +116,8 @@ ein_fild09,0,0	monster	Solid Porcellio	2700,2,300000
 prt_maze03,0,0	monster	Poporing Ringleader	2701,2,300000
 prt_maze02,0,0	monster	Furious Poporing	2702,2,300000
 pay_fild04,0,0	monster	Elusive Poporing	2703,2,300000
-ama_dun02,0,0	monster	Swift Poison Toad	2704,2,300000
-mjolnir_06,0,0	monster	Solid Poison Spore	2705,2,300000
+ama_dun02,0,0	monster	Swift Poison Toad	2704,1,300000
+mjolnir_06,0,0	monster	Solid Poison Spore	2705,3,300000
 odin_tem03,0,0	monster	Plasma Ringleader	2706,2,300000
 iz_dun00,0,0	monster	Furious Plankton	2707,2,300000
 ein_dun01,0,0	monster	Elusive Pitman	2708,2,300000
@@ -127,13 +132,14 @@ treasure02,0,0	monster	Penomena Ringleader	2716,2,300000
 alde_dun03,0,0	monster	Furious Penomena	2717,2,300000
 moc_fild02,0,0	monster	Elusive Peco Peco	2718,2,300000
 in_sphinx5,0,0	monster	Swift Pasana	2719,2,300000
-um_fild03,0,0	monster	Solid Parasite	2720,2,300000
+um_fild03,0,0	monster	Solid Parasite	2720,1,300000
 tha_t05,0,0	monster	Owl Duke Ringleader	2721,2,300000
+//tha_t05,0,0	monster	Owl Duke Ringleader	2721,3,300000	//--Applied after Thanatos Revamped Patch.
 gef_fild10,0,0	monster	Furious Orc Warrior	2722,2,300000
 orcsdun01,0,0	monster	Elusive Orc Zombie	2723,2,300000
 orcsdun02,0,0	monster	Swift Orc Skeleton	2724,2,300000
-gef_fild03,0,0	monster	Solid Orc Lady	2725,2,300000
-tha_t12,0,0	monster	Dame of Sentinel Ringleader	2726,2,300000
+gef_fild03,0,0	monster	Solid Orc Lady	2725,3,300000
+tha_t12,0,0	monster	Dame of Sentinel Ringleader	2726,2,300000	//--Remove after Thanatos Ravamped Patch
 ein_fild05,0,0	monster	Furious Noxious	2727,2,300000
 hu_fild05,0,0	monster	Elusive Novus	2728,2,300000
 hu_fild04,0,0	monster	Swift Novus	2729,2,300000
@@ -148,15 +154,15 @@ xmas_dun02,0,0	monster	Furious Myst Case	2737,2,300000
 ve_fild04,0,0	monster	Elusive Muscipular	2738,2,300000
 moc_pryd03,0,0	monster	Swift Mummy	2739,2,300000
 moc_pryd02,0,0	monster	Solid Mummy	2740,2,300000
-moc_fild01,0,0	monster	Muka Ringleader	2741,2,300000
-moc_fild22,0,0	monster	Furious Incarnation of Morocc	2742,2,300000
+moc_fild01,0,0	monster	Muka Ringleader	2741,3,300000
+moc_fild22,0,0	monster	Furious Incarnation of Morocc	2742,3,300000
 moc_fild21,0,0	monster	Elusive Incarnation of Morocc	2743,2,300000
-moc_fild20,0,0	monster	Swift Incarnation of Morocc	2744,2,300000
+moc_fild20,0,0	monster	Swift Incarnation of Morocc	2744,1,300000
 ein_fild06,0,0	monster	Solid Holden	2745,2,300000
 ama_dun01,0,0	monster	Miyabi Doll Ringleader	2746,2,300000
 moc_prydn1,0,0	monster	Furious Minorous	2747,2,300000
 moc_pryd05,0,0	monster	Elusive Minorous	2748,2,300000
-in_sphinx4,0,0	monster	Swift Minorous	2749,2,300000
+in_sphinx4,0,0	monster	Swift Minorous	2749,1,300000
 ein_dun02,0,0	monster	Solid Mineral	2750,2,300000
 bif_fild01,0,0	monster	Miming Ringleader	2751,2,300000
 moc_prydn2,0,0	monster	Furious Mimic	2752,2,300000
@@ -165,63 +171,63 @@ cmd_fild09,0,0	monster	Swift Metaller	2754,2,300000
 ein_fild08,0,0	monster	Solid Metaling	2755,2,300000
 ein_fild07,0,0	monster	Metaling Ringleader	2756,2,300000
 iz_dun04,0,0	monster	Furious Merman	2757,2,300000
-ecl_fild01,0,0	monster	Elusive Menblatt	2758,2,300000
+ecl_fild01,0,0	monster	Elusive Menblatt	2758,1,300000
 beach_dun,0,0	monster	Swift Medusa	2759,2,300000
 mjo_dun02,0,0	monster	Solid Martin	2760,2,300000
-gl_in01,0,0	monster	Marionette Ringleader	2761,2,300000
-xmas_fild01,0,0	monster	Furious Marin	2762,2,300000
-in_sphinx3,0,0	monster	Elusive Marduk	2763,2,300000
+gl_in01,0,0	monster	Marionette Ringleader	2761,1,300000
+xmas_fild01,0,0	monster	Furious Marin	2762,1,300000
+in_sphinx3,0,0	monster	Elusive Marduk	2763,1,300000
 prt_maze03,0,0	monster	Swift Mantis	2764,2,300000
 gef_fild04,0,0	monster	Solid Mandragora	2765,2,300000
 ma_dun01,0,0	monster	Manananggal Ringleader	2766,2,300000
-gl_dun02,0,0	monster	Furious Majoruros	2767,2,300000
+gl_dun02,0,0	monster	Furious Majoruros	2767,1,300000
 prt_fild09,0,0	monster	Elusive Magnolia	2768,2,300000
 ve_fild03,0,0	monster	Swift Magmaring	2769,2,300000
-prt_fild08,0,0	monster	Solid Lunatic	2770,3,300000
+prt_fild08,0,0	monster	Solid Lunatic	2770,1,300000
 prt_fild01,0,0	monster	Lunatic Ringleader	2771,2,300000
-niflheim,0,0	monster	Furious Lude	2772,2,300000
-spl_fild03,0,0	monster	Elusive Luciola Vespa	2773,2,300000
-nif_fild02,0,0	monster	Swift Loli Ruri	2774,2,300000
-gon_dun02,0,0	monster	Solid Enchanted Peach Tree	2775,2,300000
+niflheim,0,0	monster	Furious Lude	2772,1,300000
+spl_fild03,0,0	monster	Elusive Luciola Vespa	2773,1,300000
+nif_fild02,0,0	monster	Swift Loli Ruri	2774,1,300000
+gon_dun02,0,0	monster	Solid Enchanted Peach Tree	2775,1,300000
 new_1-3,0,0	monster	Baby Poring Ringleader	2776,2,300000
 bif_fild02,0,0	monster	Furious Little Fatum	2777,2,300000
 lou_dun01,0,0	monster	Elusive Jing Guai	2778,2,300000
-mosk_dun02,0,0	monster	Swift Les	2779,2,300000
+mosk_dun02,0,0	monster	Swift Les	2779,1,300000
 gld_dun01,0,0	monster	Solid Leib Olmai	2780,2,300000
 ayo_dun01,0,0	monster	Leaf Cat Ringleader	2781,2,300000
 //teg_dun02,0,0	monster	[PH] 분노의 로그 휘케바인	2782,2,300000,0
 //teg_dun01,0,0	monster	[PH] 떠도는 어세신 에르메스	2783,2,300000,0
-ra_fild06,0,0	monster	Swift Kobold Archer	2784,2,300000
-ra_fild05,0,0	monster	Solid Kobold	2785,2,300000
-thor_v02,0,0	monster	Knocker Ringleader	2786,2,300000
+ra_fild06,0,0	monster	Swift Kobold Archer	2784,3,300000
+ra_fild05,0,0	monster	Solid Kobold	2785,3,300000
+thor_v02,0,0	monster	Knocker Ringleader	2786,1,300000
 mjolnir_08,0,0	monster	Furious Beetle King	2787,2,300000
 thor_v01,0,0	monster	Elusive Kasa	2788,2,300000
 ama_fild01,0,0	monster	Swift Karakasa	2789,2,300000
 moc_pryd04,0,0	monster	Solid Isis	2790,2,300000
 ra_san02,0,0	monster	Isilla Ringleader	2791,2,300000
 gl_prison1,0,0	monster	Furious Injustice	2792,2,300000
-lou_fild01,0,0	monster	Elusive Mi Gao	2793,2,300000
+lou_fild01,0,0	monster	Elusive Mi Gao	2793,1,300000
 ice_dun03,0,0	monster	Swift Ice Titan	2794,2,300000
-bra_dun02,0,0	monster	Solid Iara	2795,2,300000
-lou_dun02,0,0	monster	Yao Jun Ringleader	2796,2,300000
-gef_dun00,0,0	monster	Furious Hunter Fly	2797,2,300000
+bra_dun02,0,0	monster	Solid Iara	2795,3,300000
+lou_dun02,0,0	monster	Yao Jun Ringleader	2796,1,300000
+gef_dun00,0,0	monster	Furious Hunter Fly	2797,1,300000
 prt_fild05,0,0	monster	Elusive Hornet	2798,2,300000
 dic_dun01,0,0	monster	Swift Uni-horn Scaraba	2799,2,300000
 pay_fild09,0,0	monster	Solid Horn	2800,2,300000
 ra_san03,0,0	monster	Hodremlin Ringleader	2801,2,300000
 moc_fild17,0,0	monster	Furious Hode	2802,2,300000
-ra_fild04,0,0	monster	Elusive Hill Wind	2803,2,300000
-ra_fild03,0,0	monster	Swift Hill Wind	2804,2,300000
+ra_fild04,0,0	monster	Elusive Hill Wind	2803,3,300000
+ra_fild03,0,0	monster	Swift Hill Wind	2804,3,300000
 alde_dun02,0,0	monster	Solid High Orc	2805,2,300000
-yuno_fild04,0,0	monster	Harpy Ringleader	2806,2,300000
-yuno_fild03,0,0	monster	Furious Harpy	2807,2,300000
+yuno_fild04,0,0	monster	Harpy Ringleader	2806,3,300000
+yuno_fild03,0,0	monster	Furious Harpy	2807,3,300000
 cmd_fild01,0,0	monster	Elusive Grove	2808,2,300000
 pay_fild10,0,0	monster	Swift Greatest General	2809,2,300000
 yuno_fild09,0,0	monster	Solid Grand Peco	2810,2,300000
 yuno_fild08,0,0	monster	Grand Peco Ringleader	2811,2,300000
 cmd_fild06,0,0	monster	Furious Golem	2812,2,300000
-prt_fild11,0,0	monster	Elusive Goblin	2813,2,300000
-gef_fild11,0,0	monster	Swift Goblin	2814,2,300000
+prt_fild11,0,0	monster	Elusive Goblin	2813,3,300000
+gef_fild11,0,0	monster	Swift Goblin	2814,3,300000
 yuno_fild11,0,0	monster	Solid Goat	2815,2,300000
 yuno_fild07,0,0	monster	Goat Ringleader	2816,2,300000
 gld2_prt,0,0	monster	Furious Dark Hammer Kobold	2817,2,300000
@@ -229,83 +235,85 @@ gld_dun03_2,0,0	monster	Elusive Dark Hammer Kobold	2818,2,300000
 gld2_gef,0,0	monster	Swift Dark Shadow	2819,2,300000
 gld_dun04_2,0,0	monster	Solid Dark Shadow	2820,2,300000
 gld_dun02,0,0	monster	Giant Hornet Ringleader	2821,2,300000
-nameless_n,0,0	monster	Furious Ghoul	2822,2,300000
+nameless_n,0,0	monster	Furious Ghoul	2822,1,300000
 gef_dun01,0,0	monster	Elusive Ghoul	2823,2,300000
-yuno_fild12,0,0	monster	Swift Geographer	2824,2,300000
+yuno_fild12,0,0	monster	Swift Geographer	2824,1,300000
 yuno_fild01,0,0	monster	Solid Geographer	2825,2,300000
-glast_01,0,0	monster	Gargoyle Ringleader	2826,2,300000
-gl_sew02,0,0	monster	Furious Gargoyle	2827,2,300000
-ve_fild01,0,0	monster	Elusive Galion	2828,2,300000
-cmd_fild02,0,0	monster	Swift Seal	2829,2,300000
-tur_dun05,0,0	monster	Solid Freezer	2830,2,300000
-tur_dun03,0,0	monster	Freezer Ringleader	2831,2,300000
+glast_01,0,0	monster	Gargoyle Ringleader	2826,1,300000
+gl_sew02,0,0	monster	Furious Gargoyle	2827,1,300000
+ve_fild01,0,0	monster	Elusive Galion	2828,1,300000
+cmd_fild02,0,0	monster	Swift Seal	2829,3,300000
+tur_dun05,0,0	monster	Solid Freezer	2830,1,300000
+tur_dun03,0,0	monster	Freezer Ringleader	2831,1,300000
 abyss_01,0,0	monster	Furious Ferus	2832,2,300000
-prt_sewb1,0,0	monster	Elusive Familiar	2833,2,300000
+prt_sewb1,0,0	monster	Elusive Familiar	2833,1,300000
 gefenia01,0,0	monster	Swift False Angel	2834,2,300000
 prt_fild06,0,0	monster	Solid Fabre	2835,2,300000
-pay_fild03,0,0	monster	Fabre Ringleader	2836,2,300000
-mag_dun01,0,0	monster	Furious Explosion	2837,2,300000
+pay_fild03,0,0	monster	Fabre Ringleader	2836,3,300000
+mag_dun01,0,0	monster	Furious Explosion	2837,1,300000
 gl_church,0,0	monster	Elusive Evil Druid	2838,2,300000
-prt_fild10,0,0	monster	Swift Elder Willow	2839,2,300000
-mjolnir_02,0,0	monster	Solid Elder Willow	2840,2,300000
-ra_san04,0,0	monster	Echio Ringleader	2841,2,300000
+prt_fild10,0,0	monster	Swift Elder Willow	2839,3,300000
+mjolnir_02,0,0	monster	Solid Elder Willow	2840,3,300000
+ra_san04,0,0	monster	Echio Ringleader	2841,1,300000
 mjolnir_12,0,0	monster	Furious Dustiness	2842,2,300000
 um_fild01,0,0	monster	Swift Dryad	2843,2,300000
 ve_fild02,0,0	monster	Solid Drosera	2844,2,300000
-moc_fild07,0,0	monster	Drops Ringleader	2845,2,300000
-mjolnir_04,0,0	monster	Furious Driller	2846,2,300000
-in_sphinx1,0,0	monster	Elusive Drainliar	2847,2,300000
-tur_dun01,0,0	monster	Swift Dragon Tail	2848,2,300000
+moc_fild07,0,0	monster	Drops Ringleader	2845,3,300000
+mjolnir_04,0,0	monster	Furious Driller	2846,3,300000
+in_sphinx1,0,0	monster	Elusive Drainliar	2847,1,300000
+tur_dun01,0,0	monster	Swift Dragon Tail	2848,1,300000
 nyd_dun01,0,0	monster	Solid Draco	2849,2,300000
 dic_fild02,0,0	monster	Dolomedes Ringleader	2850,2,300000
 pay_dun04,0,0	monster	Furious Dokebi	2851,2,300000
 nif_fild01,0,0	monster	Elusive Disguise	2852,2,300000
-jupe_core,0,0	monster	Swift Dimik	2853,2,300000
+jupe_core,0,0	monster	Swift Dimik	2853,3,300000
 gef_dun02,0,0	monster	Solid Deviruchi	2854,2,300000
 ra_fild01,0,0	monster	Baby Desert Wolf Ringleader	2855,2,300000
-moc_fild11,0,0	monster	Furious Baby Desert Wolf	2856,2,300000
+moc_fild11,0,0	monster	Furious Baby Desert Wolf	2856,3,300000
 cmd_fild08,0,0	monster	Elusive Deniro	2857,2,300000
+anthell01,0,0	monster	Elusive Deniro	2857,3,300000
 tha_t06,0,0	monster	Swift Death Word	2858,2,300000
+//tha_t06,0,0	monster	Swift Death Word	2858,3,300000	//--Applied after Thanatos Revamped Patch.
 tha_t04,0,0	monster	Solid Death Word	2859,2,300000
 tha_t03,0,0	monster	Death Word Ringleader	2860,2,300000
 gl_chyard,0,0	monster	Furious Dark Priest	2861,2,300000
-lou_dun03,0,0	monster	Elusive Zhu Po Long	2862,2,300000
+lou_dun03,0,0	monster	Elusive Zhu Po Long	2862,1,300000
 gef_fild05,0,0	monster	Swift Creamy	2863,2,300000
 iz_dun02,0,0	monster	Solid Cornutus	2864,2,300000
 xmas_dun01,0,0	monster	Cookie Ringleader	2865,2,300000
 kh_kiehl01,0,0	monster	Furious Constant	2866,2,300000
 dew_dun01,0,0	monster	Elusive Comodo	2867,2,300000
 gef_fild09,0,0	monster	Swift Coco	2868,2,300000
-gef_fild02,0,0	monster	Solid Coco	2869,2,300000
+gef_fild02,0,0	monster	Solid Coco	2869,3,300000
 c_tower4,0,0	monster	Clock Ringleader	2870,2,300000
-c_tower2,0,0	monster	Furious Clock	2871,2,300000
+c_tower2,0,0	monster	Furious Clock	2871,1,300000
 gef_fild00,0,0	monster	Elusive Chonchon	2872,2,300000
 dic_fild01,0,0	monster	Swift Centipede	2873,2,300000
-ecl_tdun01,0,0	monster	Solid Cenere	2874,2,300000
-lhz_dun04,0,0	monster	Celia Ringleader	2875,2,300000
+ecl_tdun01,0,0	monster	Solid Cenere	2874,1,300000
+lhz_dun04,0,0	monster	Celia Ringleader	2875,3,300000
 gld_dun03,0,0	monster	Furious Caterpillar	2876,2,300000
 gl_cas01,0,0	monster	Elusive Carat	2877,2,300000
 mjolnir_01,0,0	monster	Swift Caramel	2878,2,300000
 ma_fild02,0,0	monster	Solid Bungisngis	2879,2,300000
-odin_tem01,0,0	monster	Breeze Ringleader	2880,2,300000
-lhz_fild03,0,0	monster	Furious Breeze	2881,2,300000
+odin_tem01,0,0	monster	Breeze Ringleader	2880,1,300000
+lhz_fild03,0,0	monster	Furious Breeze	2881,3,300000
 man_fild02,0,0	monster	Elusive Bradium Golem	2882,2,300000
 gon_dun01,0,0	monster	Swift Bloody Butterfly	2883,2,300000
 pay_fild07,0,0	monster	Bigfoot Ringleader	2884,2,300000
-alde_dun04,0,0	monster	Furious Bathory	2885,2,300000
+alde_dun04,0,0	monster	Furious Bathory	2885,1,300000
 arug_dun01,0,0	monster	Elusive Banshee Master	2886,2,300000
-abbey01,0,0	monster	Swift Banshee	2887,2,300000
+abbey01,0,0	monster	Swift Banshee	2887,3,300000
 dew_dun02,0,0	monster	Solid Banaspaty	2888,2,300000
-tur_dun04,0,0	monster	Assaulter Ringleader	2889,2,300000
+tur_dun04,0,0	monster	Assaulter Ringleader	2889,1,300000
 mjolnir_10,0,0	monster	Furious Argos	2890,2,300000
 mjolnir_11,0,0	monster	Elusive Argiope	2891,2,300000
 mjolnir_05,0,0	monster	Swift Argiope	2892,2,300000
-gl_dun01,0,0	monster	Solid Arclouze	2893,2,300000
-alde_dun01,0,0	monster	Arclouze Ringleader	2894,2,300000
-juperos_02,0,0	monster	Furious Apocalypse	2895,2,300000
+gl_dun01,0,0	monster	Solid Arclouze	2893,1,300000
+alde_dun01,0,0	monster	Arclouze Ringleader	2894,1,300000
+juperos_02,0,0	monster	Furious Apocalypse	2895,3,300000
 dic_dun02,0,0	monster	Elusive Antler Scaraba	2896,2,300000
-ecl_tdun03,0,0	monster	Swift Antique Book	2897,2,300000
-ecl_tdun02,0,0	monster	Solid Antique Book	2898,2,300000
+ecl_tdun03,0,0	monster	Swift Antique Book	2897,1,300000
+ecl_tdun02,0,0	monster	Solid Antique Book	2898,1,300000
 gl_sew04,0,0	monster	Furious Anolian	2899,2,300000
 gld2_ald,0,0	monster	Elusive Angra Mantis	2900,2,300000
 gld_dun02_2,0,0	monster	Swift Angra Mantis	2901,2,300000
@@ -314,10 +322,10 @@ tha_t02,0,0	monster	Ancient Mimic Ringleader	2903,2,300000
 ra_fild08,0,0	monster	Furious Anacondaq	2904,2,300000
 prt_fild04,0,0	monster	Elusive Ambernite	2905,2,300000
 dew_fild01,0,0	monster	Swift Rafflesia Arnoldi	2906,2,300000
-cmd_fild03,0,0	monster	Solid Alligator	2907,2,300000
-kh_dun01,0,0	monster	Aliza Ringleader	2908,2,300000
-kh_dun02,0,0	monster	Furious Alicel	2909,2,300000
-c_tower3,0,0	monster	Elusive Alarm	2910,2,300000
+cmd_fild03,0,0	monster	Solid Alligator	2907,3,300000
+kh_dun01,0,0	monster	Aliza Ringleader	2908,1,300000
+kh_dun02,0,0	monster	Furious Alicel	2909,1,300000
+c_tower3,0,0	monster	Elusive Alarm	2910,1,300000
 ra_san05,0,0	monster	Swift Agav	2911,2,300000
 abyss_03,0,0	monster	Solid Acidus	2912,2,300000
 abyss_02,0,0	monster	Acidus Ringleader	2913,2,300000

+ 5 - 4
npc/re/mobs/dungeons/abbey.txt

@@ -3,13 +3,14 @@
 //===== By: ==================================================
 //= $ephiroth
 //===== Current Version: =====================================
-//= 1.2
+//= 1.3
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
 //= 1.0 Initial version [$ephiroth]
 //= 1.1 Updated spawns [Playtester]
 //= 1.2 More official spawns [Playtester]
+//= 1.3 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
@@ -25,9 +26,9 @@ nameless_n,0,0	monster	Flame Skull	1869,3,5000
 //==================================================
 // abbey01 - Cursed Monastery
 //==================================================
-abbey01,0,0	monster	Banshee	1867,93,5000
-abbey01,0,0	monster	Ghoul	1036,56,5000
-abbey01,0,0	monster	Ragged Zombie	1865,33,5000
+abbey01,0,0	monster	Banshee	1867,96,5000
+abbey01,0,0	monster	Ghoul	1036,57,5000
+abbey01,0,0	monster	Ragged Zombie	1865,34,5000
 abbey01,0,0	monster	Zombie Slaughter	1864,30,5000
 abbey01,0,0	monster	Hellhound	1866,25,5000
 abbey01,0,0	monster	Flame Skull	1869,21,5000

+ 7 - 6
npc/re/mobs/dungeons/alde_dun.txt

@@ -3,20 +3,21 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.3
+//= 1.4
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
 //= 1.1 Official kRO 10.1 spawns [Playtester]
 //= 1.2 More accurate spawns [Playtester]
 //= 1.3 Moved Clock Tower spawns to their own file. [L0ne_W0lf]
+//= 1.4 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // alde_dun01 - Clock Tower B1f 
 //==================================================
-alde_dun01,0,0	monster	Arclouze	1194,50,5000
-alde_dun01,0,0	monster	Drainliar	1111,40,5000
+alde_dun01,0,0	monster	Arclouze	1194,58,5000
+alde_dun01,0,0	monster	Drainliar	1111,47,5000
 
 //==================================================
 // alde_dun02 - Clock Tower B2f 
@@ -36,6 +37,6 @@ alde_dun03,0,0	monster	Drainliar	1111,55,5000
 //==================================================
 // alde_dun04 - Clock Tower B4f
 //==================================================
-alde_dun04,0,0	monster	Bathory	1102,50,5000
-alde_dun04,0,0	monster	Whisper	1179,10,5000
-alde_dun04,0,0	monster	Joker	1131,10,5000
+alde_dun04,0,0	monster	Bathory	1102,57,5000
+alde_dun04,0,0	monster	Whisper	1179,11,5000
+alde_dun04,0,0	monster	Joker	1131,11,5000

+ 8 - 7
npc/re/mobs/dungeons/ama_dun.txt

@@ -3,19 +3,20 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.2
+//= 1.3
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
 //= 1.1 Official kRO 10.1 spawns [Playtester]
 //= 1.2 Corrected MVP spawn variance. [L0ne_W0lf]
+//= 1.3 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // ama_dun01 - Tatami Maze
 //==================================================
-ama_dun01,0,0	monster	Miyabi Doll	1404,65,5000
-ama_dun01,0,0	monster	Firelock Soldier	1403,45,5000
+ama_dun01,0,0	monster	Miyabi Doll	1404,91,5000
+ama_dun01,0,0	monster	Firelock Soldier	1403,63,5000
 ama_dun01,0,0	monster	Shinobi	1401,2,5000
 
 //==================================================
@@ -31,10 +32,10 @@ ama_dun02,0,0	monster	The Paper	1375,1,5000
 //==================================================
 // ama_dun03 - Amatsu Underground Shrine
 //==================================================
-ama_dun03,0,0	monster	Shinobi	1401,55,5000
-ama_dun03,0,0	monster	Tengu	1405,55,5000
-ama_dun03,0,0	monster	Firelock Soldier	1403,25,5000
-ama_dun03,0,0	monster	The Paper	1375,20,5000
+ama_dun03,0,0	monster	Shinobi	1401,65,5000
+ama_dun03,0,0	monster	Tengu	1405,65,5000
+ama_dun03,0,0	monster	Firelock Soldier	1403,29,5000
+ama_dun03,0,0	monster	The Paper	1375,23,5000
 ama_dun03,0,0	monster	Mimic	1191,5,5000
 ama_dun03,0,0	monster	Miyabi Doll	1404,1,5000
 ama_dun03,0,0,0,0	boss_monster	Samurai Specter	1492,1,5460000,600000,0

+ 9 - 8
npc/re/mobs/dungeons/ayo_dun.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.5
+//= 1.6
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
@@ -12,20 +12,21 @@
 //= 1.3 Official jRO 10.3 spawns [Playtester]
 //= 1.4 More accurate spawns [Playtester]
 //= 1.5 Corrected MVP spawn variance. [L0ne_W0lf]
+//= 1.6 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // ayo_dun01 - Ancient Shrine Maze
 //==================================================
-ayo_dun01,0,0	monster	Leaf Cat	1586,65,5000
-ayo_dun01,0,0	monster	Ghoul	1036,30,5000
-ayo_dun01,0,0	monster	Whisper	1179,10,5000
-ayo_dun01,0,0	monster	Kraben	1587,5,5000
+ayo_dun01,0,0	monster	Leaf Cat	1586,104,5000
+ayo_dun01,0,0	monster	Ghoul	1036,48,5000
+ayo_dun01,0,0	monster	Whisper	1179,16,5000
+ayo_dun01,0,0	monster	Kraben	1587,8,5000
 
 //==================================================
 // ayo_dun02 - Inside Ancient Shrine
 //==================================================
-ayo_dun02,0,0	monster	Tamruan	1584,100,5000
-ayo_dun02,0,0	monster	Whisper	1179,20,5000
-ayo_dun02,0,0	monster	Kraben	1587,20,5000
+ayo_dun02,0,0	monster	Tamruan	1584,116,5000
+ayo_dun02,0,0	monster	Whisper	1179,23,5000
+ayo_dun02,0,0	monster	Kraben	1587,23,5000
 ayo_dun02,150,90,15,30	boss_monster	Lady Tanee	1688,1,25200000,600000,0

+ 22 - 21
npc/re/mobs/dungeons/c_tower.txt

@@ -3,39 +3,40 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.1
+//= 1.2
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
 //= 1.0 Split from combined Alde and CT spawn file. [L0ne_W0lf]
 //= 1.1 Added nightmare clock tower. [Ridley8819]
+//= 1.2 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // c_tower1 - Clock Tower 1f
 //==================================================
-c_tower1,0,0	monster	Rideword	1195,70,5000
-c_tower1,0,0	monster	Punk	1199,70,5000
+c_tower1,0,0	monster	Rideword	1195,107,5000
+c_tower1,0,0	monster	Punk	1199,107,5000
 c_tower1,0,0	monster	Bathory	1102,1,5000
 c_tower1,0,0	monster	Clock Tower Manager	1270,1,5000
 
 //==================================================
 // c_tower2 - Clock Tower 2f
 //==================================================
-c_tower2,0,0	monster	Clock	1269,40,5000
-c_tower2,0,0	monster	Punk	1199,40,5000
-c_tower2,0,0	monster	Rideword	1195,12,5000
-c_tower2,0,0	monster	Mimic	1191,3,5000
+c_tower2,0,0	monster	Clock	1269,55,5000
+c_tower2,0,0	monster	Punk	1199,55,5000
+c_tower2,0,0	monster	Rideword	1195,16,5000
+c_tower2,0,0	monster	Mimic	1191,4,5000
 c_tower2,0,0	monster	Elder	1377,2,5000
 c_tower2,0,0	monster	Clock Tower Manager	1270,1,5000
 
 //==================================================
 // c_tower3 - Clock Tower 3f
 //==================================================
-c_tower3,0,0	monster	Alarm	1193,80,5000
-c_tower3,0,0	monster	Mimic	1191,7,5000
-c_tower3,0,0	monster	Rideword	1195,6,5000
-c_tower3,0,0	monster	Clock Tower Manager	1270,3,5000
+c_tower3,0,0	monster	Alarm	1193,109,5000
+c_tower3,0,0	monster	Mimic	1191,9,5000
+c_tower3,0,0	monster	Rideword	1195,8,5000
+c_tower3,0,0	monster	Clock Tower Manager	1270,4,5000
 
 //==================================================
 // c_tower4 - Clock Tower 4f
@@ -52,21 +53,21 @@ c_tower4,0,0	monster	Elder	1377,2,5000
 //==================================================
 // c_tower2_ - Clock Tower Nightmare 2f
 //==================================================
-c_tower2_,0,0	monster	Mimic (Nightmare)	2479,3,5000,0,0
-c_tower2_,0,0	monster	Rideword (Nightmare)	2478,4,300000,0,0
-c_tower2_,0,0	monster	Rideword (Nightmare)	2478,1,60000,0,0
-c_tower2_,0,0	monster	Neo Punk	2919,40,5000
-c_tower2_,0,0	monster	Big Ben	2916,40,5000
+c_tower2_,0,0	monster	Mimic (Nightmare)	2479,4,5000,0,0
+c_tower2_,0,0	monster	Rideword (Nightmare)	2478,16,5000,0,0
+c_tower2_,0,0	monster	Neo Punk	2919,55,5000
+c_tower2_,0,0	monster	Big Ben	2916,55,5000
 c_tower2_,0,0	monster	Time Keeper	2918,1,5000
 c_tower2_,0,0	monster	Arc Elder	2920,2,3600000
+c_tower2_,0,0	monster	Owl Viscount	2921,1,5000,1800000
 
 //==================================================
 // c_tower3_ - Clock Tower Nightmare 3f
 //==================================================
-c_tower3_,0,0	monster	Mimic (Nightmare)	2479,8,5000,0,0
+c_tower3_,0,0	monster	Mimic (Nightmare)	2479,9,5000,0,0
 c_tower3_,0,0	monster	Rideword (Nightmare)	2478,8,5000,0,0
-c_tower3_,0,0	monster	Big Bell	2917,110,5000
-c_tower3_,0,0	monster	Time Keeper	2918,3,5000
-c_tower3_,0,0	monster	Owl Viscount	2921,1,5000,1800000
-c_tower3_,0,0	monster	Owl Marquis	2923,1,5000,5000
+c_tower3_,0,0	monster	Big Bell	2917,109,5000
+c_tower3_,0,0	monster	Time Keeper	2918,2,5000
+c_tower3_,0,0	monster	Owl Viscount	2921,3,5000,1800000
+c_tower3_,0,0	monster	Owl Marquis	2923,3,5000,5000
 c_tower3_,0,0,0,0	boss_monster	Time Holder	3074,1,7200000,0,0

+ 5 - 8
npc/re/mobs/dungeons/dew_dun.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Chilly
 //===== Current Version: =====================================
-//= 1.1
+//= 1.2
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Description: =========================================
@@ -11,20 +11,17 @@
 //===== Additional Comments: =================================
 //= 1.0 First Release
 //= 1.1 Updated spawn delays. [Euphy]
+//= 1.2 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // dew_dun01 - Volcanic Island of Krakatoa
 //==================================================
-dew_dun01,0,0	monster	Comodo	2152,70,5000
-dew_dun01,0,0	monster	Ancient Worm	1305,25,5000
-dew_dun01,0,0	monster	Gullinbursti	1311,10,5000
+dew_dun01,0,0	monster	Comodo	2152,100,5000
 dew_dun01,0,0,0,0	boss_monster	Leak	2156,1,7200000,0,1
 
 //==================================================
 // dew_dun02 - Tina Grace Cave
 //==================================================
-dew_dun02,0,0	monster	Banaspaty	2154,50,5000
-dew_dun02,0,0	monster	Gajomart	1309,30,5000
-dew_dun02,0,0	monster	Am Mut	1301,20,5000
-dew_dun02,0,0	monster	Butoijo	2155,30,5000
+dew_dun02,0,0	monster	Banaspaty	2154,70,5000
+dew_dun02,0,0	monster	Butoijo	2155,40,5000

+ 14 - 15
npc/re/mobs/dungeons/ecl_tdun.txt

@@ -3,37 +3,36 @@
 //===== By: ==================================================
 //= refis
 //===== Current Version: =====================================
-//= 1.0
+//= 1.1
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Description: =========================================
 //= jRO monster spawns, taken from Auriga.
 //===== Additional Comments: =================================
 //= 1.0 First version. [Euphy]
+//= 1.1 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // ecl_tdun01 - Bifrost Tower F1
 //==================================================
-ecl_tdun01.gat,0,0	monster	Cenere	2365,5,5000
-ecl_tdun01.gat,0,0	monster	Antique Book	2366,5,5000
-ecl_tdun01.gat,0,0	monster	Blue Lichtern	2367,5,5000
+ecl_tdun01,0,0	monster	Cenere	2365,15,5000
+ecl_tdun01,0,0	monster	Antique Book	2366,10,5000
+ecl_tdun01,0,0	monster	Blue Lichtern	2367,5,5000
+ecl_tdun01,0,0	monster	Yellow Lichtern	2368,5,5000
 
 //==================================================
 // ecl_tdun02 - Bifrost Tower F2
 //==================================================
-ecl_tdun02.gat,0,0	monster	Cenere	2365,10,5000
-ecl_tdun02.gat,0,0	monster	Antique Book	2366,10,5000
-ecl_tdun02.gat,0,0	monster	Blue Lichtern	2367,15,5000
-ecl_tdun02.gat,0,0	monster	Yellow Lichtern	2368,5,5000
+ecl_tdun02,0,0	monster	Cenere	2365,15,5000
+ecl_tdun02,0,0	monster	Antique Book	2366,15,5000
+ecl_tdun02,0,0	monster	Yellow Lichtern	2368,5,5000
+ecl_tdun02,0,0	monster	Red Lichtern	2369,5,5000
 
 //==================================================
 // ecl_tdun03 - Bifrost Tower F3
 //==================================================
-ecl_tdun03.gat,0,0	monster	Cenere	2365,15,5000
-ecl_tdun03.gat,0,0	monster	Antique Book	2366,15,5000
-ecl_tdun03.gat,0,0	monster	Blue Lichtern	2367,5,5000
-ecl_tdun03.gat,0,0	monster	Yellow Lichtern	2368,15,5000
-ecl_tdun03.gat,0,0	monster	Red Lichtern	2369,10,5000
-ecl_tdun03.gat,0,0	monster	Green Lichtern	2370,15,5000
-ecl_tdun03.gat,0,0	monster	Faithful Manager	2371,5,5000
+ecl_tdun03,0,0	monster	Antique Book	2366,15,5000
+ecl_tdun03,0,0	monster	Yellow Lichtern	2368,5,5000
+ecl_tdun03,0,0	monster	Green Lichtern	2370,5,5000
+ecl_tdun03,0,0	monster	Faithful Manager	2371,3,5000

+ 6 - 7
npc/re/mobs/dungeons/gef_dun.txt

@@ -3,13 +3,14 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.4
+//= 1.5
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
 //= 1.2 Official kRO 10.1 spawns [Playtester]
 //= 1.3 More accurate spawns [Playtester]
 //= 1.4 Corrected MVP spawn variance. [L0ne_W0lf]
+//= 1.5 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
@@ -63,10 +64,8 @@ gef_dun02,185,83,3,3	monster	Shining Plant	1083,1,1800000,900000
 //==================================================
 // gef_dun03 - Geffenia
 //==================================================
-gef_dun03,0,0	monster	Wraith	1192,8,5000
-gef_dun03,0,0	monster	Wind Ghost	1263,3,5000
-gef_dun03,0,0	monster	Wraith Dead	1291,2,5000
-gef_dun03,0,0	monster	Wraith Dead	1291,2,60000,30000
+gef_dun03,0,0	monster	Wraith	1192,14,5000
+gef_dun03,0,0	monster	Wind Ghost	1263,5,5000
 gef_dun03,0,0	monster	Hellion Revenant	1626,1,600000,300000
-gef_dun03,0,0	monster	Shining Plant	1083,3,1800000,900000
-gef_dun03,0,0	monster	White Plant	1082,10,180000,90000
+gef_dun03,0,0	monster	Shining Plant	1083,5,1800000,900000
+gef_dun03,0,0	monster	White Plant	1082,18,180000,90000

+ 9 - 8
npc/re/mobs/dungeons/gefenia.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Muad_Dib, rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.1
+//= 1.2
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
@@ -12,14 +12,15 @@
 //= Updated spawns, information from emperium.org [MasterOfMuppets]
 //= Kept the old spawns incase someone would want them.
 //= Aegis ep 10.1 spawns [MasterOfMuppets]
+//= 1.2 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // gefenia01 - Geffenia
 //==================================================
-gefenia01,0,0	monster	False Angel	1371,60,5000
-gefenia01,0,0	monster	Violy	1390,30,5000
-gefenia01,0,0	monster	Mini Demon	1292,20,5000
+gefenia01,0,0	monster	False Angel	1371,63,5000
+gefenia01,0,0	monster	Violy	1390,31,5000
+gefenia01,0,0	monster	Mini Demon	1292,21,5000
 gefenia01,0,0	monster	Abysmal Knight	1219,10,5000
 gefenia01,0,0	monster	Incubus	1374,10,5000
 gefenia01,0,0	monster	Succubus	1370,10,5000
@@ -45,10 +46,10 @@ gefenia02,0,0	monster	Executioner	1205,1,18000000,14400000
 //==================================================
 // gefenia03 - Geffenia
 //==================================================
-gefenia03,0,0	monster	False Angel	1371,40,5000
-gefenia03,0,0	monster	Violy	1390,40,5000
-gefenia03,0,0	monster	Mini Demon	1292,30,5000
-gefenia03,0,0	monster	Incubus	1374,20,5000
+gefenia03,0,0	monster	False Angel	1371,42,5000
+gefenia03,0,0	monster	Violy	1390,42,5000
+gefenia03,0,0	monster	Mini Demon	1292,31,5000
+gefenia03,0,0	monster	Incubus	1374,21,5000
 gefenia03,0,0	monster	Abysmal Knight	1219,10,5000
 gefenia03,0,0	monster	Succubus	1370,10,5000
 gefenia03,0,0	monster	Bloody Knight	1268,1,3600000,3000000

+ 63 - 59
npc/re/mobs/dungeons/glastheim.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.5
+//= 1.7
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
@@ -13,6 +13,7 @@
 //= 1.4 More accurate spawns [Playtester]
 //= 1.5 Corrected MVP spawn variance. [L0ne_W0lf]
 //= 1.6 Added Nightmare Glastheim [Ridley8819]
+//= 1.7 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
@@ -29,12 +30,12 @@ glast_01,233,209,15,15	monster	Blue Plant	1079,2,900000,450000
 // gl_cas01 - Glast Heim 1f
 //==================================================
 gl_cas01,0,0	monster	Carat	1267,50,5000
-gl_cas01,0,0	monster	Dark Frame	1260,20,5000
-gl_cas01,0,0	monster	Owl Duke	1320,20,5000
-gl_cas01,0,0	monster	Rideword	1195,15,5000
-gl_cas01,0,0	monster	Sage Worm	1281,10,5000
-gl_cas01,0,0	monster	Whisper	1179,10,5000
-gl_cas01,0,0	monster	Owl Baron	1295,6,5000
+gl_cas01,0,0	monster	Dark Frame	1260,35,5000
+gl_cas01,0,0	monster	Owl Duke	1320,35,5000
+gl_cas01,0,0	monster	Rideword	1195,26,5000
+gl_cas01,0,0	monster	Sage Worm	1281,17,5000
+gl_cas01,0,0	monster	Whisper	1179,17,5000
+gl_cas01,0,0	monster	Owl Baron	1295,10,5000
 gl_cas01,0,0	monster	Alice	1275,1,5000
 
 //==================================================
@@ -57,53 +58,51 @@ gl_cas02,0,0	monster	Ogretooth	1204,1,7200000,3600000
 //==================================================
 // gl_church - Glast Heim St. Abbey
 //==================================================
-gl_church,0,0	monster	Evil Druid	1117,60,5000
-gl_church,0,0	monster	Wraith	1192,55,5000
-gl_church,0,0	monster	Mimic	1191,9,5000
-gl_church,0,0	monster	Evil Druid	1117,1,5000
-gl_church,0,0	monster	Wraith Dead	1291,1,3600000,1800000
+gl_church,0,0	monster	Evil Druid	1117,85,5000
+gl_church,0,0	monster	Wraith	1192,78,5000
+gl_church,0,0	monster	Mimic	1191,12,5000
 
 //==================================================
 // gl_chyard - Glast Heim Churchyard
 //==================================================
-gl_chyard,0,0	monster	Dark Priest	1198,60,5000
-gl_chyard,0,0	monster	Wraith	1192,35,5000
-gl_chyard,0,0	monster	Evil Druid	1117,10,5000
-gl_chyard,0,0	monster	Mimic	1191,3,5000
-gl_chyard,0,0	monster	Hunter Fly	1035,3,5000
+gl_chyard,0,0	monster	Dark Priest	1198,95,5000
+gl_chyard,0,0	monster	Wraith	1192,55,5000
+gl_chyard,0,0	monster	Evil Druid	1117,15,5000
+gl_chyard,0,0	monster	Mimic	1191,4,5000
+gl_chyard,0,0	monster	Hunter Fly	1035,4,5000
 gl_chyard,0,0,0,0	boss_monster	Dark Lord	1272,1,3600000,600000,1
 gl_chyard,0,0	monster	Dark Illusion	1302,1,3600000,1800000
 
 //==================================================
 // gl_dun01 - The Lowest Cave in Glast Heim
 //==================================================
-gl_dun01,0,0	monster	Arclouze	1194,50,5000
-gl_dun01,0,0	monster	Sting	1207,40,5000
+gl_dun01,0,0	monster	Arclouze	1194,53,5000
+gl_dun01,0,0	monster	Sting	1207,43,5000
 
 //==================================================
 // gl_dun02 - The Lowest Cave in Glast Heim
 //==================================================
-gl_dun02,0,0	monster	Majoruros	1310,45,5000
-gl_dun02,0,0	monster	Gargoyle	1253,15,5000
+gl_dun02,0,0	monster	Majoruros	1310,52,5000
+gl_dun02,0,0	monster	Gargoyle	1253,17,5000
 
 //==================================================
 // gl_in01 - Inside Glast Heim
 //==================================================
-gl_in01,0,0	monster	Marionette	1143,20,5000
-gl_in01,0,0	monster	Sage Worm	1281,14,5000
-gl_in01,0,0	monster	Dark Frame	1260,10,5000
-gl_in01,0,0	monster	Rideword	1195,8,5000
+gl_in01,0,0	monster	Marionette	1143,25,5000
+gl_in01,0,0	monster	Sage Worm	1281,17,5000
+gl_in01,0,0	monster	Dark Frame	1260,12,5000
+gl_in01,0,0	monster	Rideword	1195,10,5000
 gl_in01,0,0	monster	Wanderer	1208,1,5000
 gl_in01,0,0	monster	Alice	1275,1,5000
 
 //==================================================
 // gl_knt01 - Inside Glast Heim Chivalry
 //==================================================
-gl_knt01,0,0	monster	Raydric	1163,90,5000
-gl_knt01,0,0	monster	Rideword	1195,21,5000
-gl_knt01,0,0	monster	Raydric Archer	1276,10,5000
-gl_knt01,0,0	monster	Abysmal Knight	1219,10,5000
-gl_knt01,0,0	monster	Khalitzburg	1132,10,5000
+gl_knt01,0,0	monster	Raydric	1163,126,5000
+gl_knt01,0,0	monster	Rideword	1195,29,5000
+gl_knt01,0,0	monster	Raydric Archer	1276,14,5000
+gl_knt01,0,0	monster	Abysmal Knight	1219,14,5000
+gl_knt01,0,0	monster	Khalitzburg	1132,14,5000
 gl_knt01,0,0	monster	Alice	1275,1,5000
 gl_knt01,21,278	monster	Giant Whisper	1186,1,3600000,1800000
 gl_knt01,9,184	monster	Black Mushroom	1084,1,3600000,1800000
@@ -122,10 +121,10 @@ gl_knt01,4,185	monster	Black Mushroom	1084,1,3600000,1800000
 //==================================================
 // gl_knt02 - Inside Glast Heim Chivalry
 //==================================================
-gl_knt02,0,0	monster	Raydric	1163,80,5000
-gl_knt02,0,0	monster	Khalitzburg	1132,40,5000
-gl_knt02,0,0	monster	Raydric Archer	1276,30,5000
-gl_knt02,0,0	monster	Abysmal Knight	1219,6,5000
+gl_knt02,0,0	monster	Raydric	1163,101,5000
+gl_knt02,0,0	monster	Khalitzburg	1132,50,5000
+gl_knt02,0,0	monster	Raydric Archer	1276,38,5000
+gl_knt02,0,0	monster	Abysmal Knight	1219,7,5000
 gl_knt02,0,0	monster	Alice	1275,1,5000
 gl_knt02,0,0	monster	Mysteltainn	1203,1,1800000,1200000
 gl_knt02,0,0	monster	Bloody Knight	1268,1,3600000,1800000
@@ -133,10 +132,10 @@ gl_knt02,0,0	monster	Bloody Knight	1268,1,3600000,1800000
 //==================================================
 // gl_prison - Glast Heim Underprison
 //==================================================
-gl_prison,0,0	monster	Zombie Prisoner	1197,30,5000
-gl_prison,0,0	monster	Injustice	1257,20,5000
-gl_prison,0,0	monster	Rybio	1201,15,5000
-gl_prison,0,0	monster	Hunter Fly	1035,10,5000
+gl_prison,0,0	monster	Zombie Prisoner	1197,38,5000
+gl_prison,0,0	monster	Injustice	1257,25,5000
+gl_prison,0,0	monster	Rybio	1201,19,5000
+gl_prison,0,0	monster	Hunter Fly	1035,12,5000
 
 //==================================================
 // gl_prison1 - Glast Heim Underprison
@@ -152,49 +151,54 @@ gl_prison1,0,0	monster	Zealotus	1200,1,3600000,1800000
 //==================================================
 // gl_sew01 - Glast Heim Culvert
 //==================================================
-gl_sew01,0,0	monster	Whisper	1179,40,5000
-gl_sew01,0,0	monster	Gargoyle	1253,30,5000
-gl_sew01,0,0	monster	Arclouze	1194,10,5000
+gl_sew01,0,0	monster	Whisper	1179,66,5000
+gl_sew01,0,0	monster	Gargoyle	1253,49,5000
+gl_sew01,0,0	monster	Arclouze	1194,16,5000
 
 //==================================================
 // gl_sew02 - Glast Heim Culvert
 //==================================================
-gl_sew02,0,0	monster	Gargoyle	1253,55,5000
-gl_sew02,0,0	monster	Cramp	1209,15,5000
+gl_sew02,0,0	monster	Gargoyle	1253,89,5000
+gl_sew02,0,0	monster	Cramp	1209,24,5000
 
 //==================================================
 // gl_sew03 - Glast Heim Culvert
 //==================================================
-gl_sew03,0,0	monster	Sting	1207,70,5000
-gl_sew03,0,0	monster	Gargoyle	1253,40,5000
+gl_sew03,0,0	monster	Sting	1207,99,5000
+gl_sew03,0,0	monster	Gargoyle	1253,56,5000
 
 //==================================================
 // gl_sew04 - Glast Heim Culvert
 //==================================================
-gl_sew04,0,0	monster	Anolian	1206,100,5000
-gl_sew04,0,0	monster	Gargoyle	1253,20,5000
-gl_sew04,0,0	monster	Drainliar	1111,10,5000
+gl_sew04,0,0	monster	Anolian	1206,126,5000
+gl_sew04,0,0	monster	Gargoyle	1253,25,5000
+gl_sew04,0,0	monster	Drainliar	1111,12,5000
 
 //==================================================
 // gl_step - Glast Heim Staircase Dungeon
 //==================================================
-gl_step,0,0	monster	Wind Ghost	1263,100,5000
-gl_step,0,0	monster	Raydric Archer	1276,10,5000
-gl_step,0,0	monster	Mimic	1191,5,5000
+gl_step,0,0	monster	Wind Ghost	1263,138,5000
+gl_step,0,0	monster	Raydric Archer	1276,13,5000
+gl_step,0,0	monster	Mimic	1191,6,5000
 
 //==================================================
 // gl_cas02_ - Nightmare Mode 2f
 //==================================================
-gl_cas02_,0,0	monster	Evil Druid (Nightmare)	2480,20,0,0,0
-gl_cas02_,0,0	monster	Chimera (Nightmare)	2485,10,0,0,0
-gl_cas02_,0,0	monster	Mimic (Nightmare)	2479,40,0,0,0
-gl_cas02_,0,0	monster	Rideword (Nightmare)	2478,40,0,0,0
-gl_cas02_,0,0	monster	Wanderer (Nightmare)	2477,120,0,0,0
+gl_cas02_,0,0	monster	Evil Druid (Nightmare)	2480,4,0,0,0
+gl_cas02_,0,0	monster	Chimera (Nightmare)	2485,1,0,0,0
+gl_cas02_,0,0	monster	Mimic (Nightmare)	2479,19,0,0,0
+gl_cas02_,0,0	monster	Rideword (Nightmare)	2478,10,0,0,0
+gl_cas02_,0,0	monster	Wanderer (Nightmare)	2477,60,0,0,0
+gl_cas02_,0,0	monster	Mysteltainn	1203,1,7200000,3600000
+gl_cas02_,0,0	monster	Alice	1275,1,5000
+gl_cas02_,102,180	monster	Whisper	1185,1,1800000,900000
 gl_cas02_,0,0	monster	Baphomet (Nightmare)	2483,1,7200000,0,0
 
 //==================================================
 // gl_chyard_ - Nightmare Mode Churchyard
 //==================================================
-gl_chyard_,0,0	monster	Wraith Dead (Nightmare)	2481,200,0,0,0
-gl_chyard_,0,0	monster	Evil Druid (Nightmare)	2480,5,60000,0,0
-gl_chyard_,0,0	monster	Mimic (Nightmare)	2479,5,60000,0,0
+gl_chyard_,0,0	monster	Wraith Dead (Nightmare)	2481,91,0,0,0
+gl_chyard_,0,0	monster	Wraith Dead	1291,31,0,0,0
+gl_chyard_,0,0	monster	Evil Druid (Nightmare)	2480,22,60000,0,0
+gl_chyard_,0,0	monster	Mimic (Nightmare)	2479,34,60000,0,0
+gl_chyard_,0,0,0,0	boss_monster	Dark Lord	1272,1,3600000,600000,1

+ 16 - 15
npc/re/mobs/dungeons/gon_dun.txt

@@ -3,38 +3,39 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.2
+//= 1.3
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
 //= 1.1 Official kRO 10.1 spawns [Playtester]
 //= 1.2 Corrected MVP spawn variance. [L0ne_W0lf]
+//= 1.3 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // gon_dun01 - Shrine of Kunlun Queen
 //==================================================
-gon_dun01,0,0	monster	Bloody Butterfly	1408,55,5000
-gon_dun01,0,0	monster	Enchanted Peach Tree	1410,35,5000
-gon_dun01,0,0	monster	Zipper Bear	1417,30,5000
-gon_dun01,0,0	monster	Yellow Plant	1081,10,5000
-gon_dun01,0,0	monster	White Plant	1082,10,5000
+gon_dun01,0,0	monster	Bloody Butterfly	1408,60,5000
+gon_dun01,0,0	monster	Enchanted Peach Tree	1410,38,5000
+gon_dun01,0,0	monster	Zipper Bear	1417,33,5000
+gon_dun01,0,0	monster	Yellow Plant	1081,11,5000
+gon_dun01,0,0	monster	White Plant	1082,11,5000
 gon_dun01,0,0	monster	Red Plant	1078,5,5000
 
 //==================================================
 // gon_dun02 - Hermit's Checkers
 //==================================================
-gon_dun02,0,0	monster	Enchanted Peach Tree	1410,21,5000
-gon_dun02,0,0	monster	Taoist Hermit	1412,20,5000
-gon_dun02,0,0	monster	Bloody Butterfly	1408,20,5000
-gon_dun02,0,0	monster	Baby Leopard	1415,6,5000
-gon_dun02,0,0	monster	Yellow Plant	1081,10,5000
+gon_dun02,0,0	monster	Enchanted Peach Tree	1410,27,5000
+gon_dun02,0,0	monster	Taoist Hermit	1412,26,5000
+gon_dun02,0,0	monster	Bloody Butterfly	1408,26,5000
+gon_dun02,0,0	monster	Baby Leopard	1415,7,5000
+gon_dun02,0,0	monster	Yellow Plant	1081,13,5000
 
 //==================================================
 // gon_dun03 - Arcadia
 //==================================================
-gon_dun03,0,0	monster	Evil Nymph	1416,50,5000
-gon_dun03,0,0	monster	Taoist Hermit	1412,30,5000
-gon_dun03,0,0	monster	Hermit Plant	1413,20,5000
+gon_dun03,0,0	monster	Evil Nymph	1416,67,5000
+gon_dun03,0,0	monster	Taoist Hermit	1412,40,5000
+gon_dun03,0,0	monster	Hermit Plant	1413,26,5000
 gon_dun03,0,0,0,0	boss_monster	Evil Snake Lord	1418,1,5650000,600000,0
-gon_dun03,0,0	monster	White Plant	1082,10,5000
+gon_dun03,0,0	monster	White Plant	1082,13,5000

+ 3 - 2
npc/re/mobs/dungeons/ice_dun.txt

@@ -3,19 +3,20 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.2
+//= 1.3
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
 //= 1.0 First version from jAthena [Playtester]
 //= 1.1 More accurate spawns [Playtester]
 //= 1.2 Removed Ktullanux spawn, quest implemented [L0ne_W0lf]
+//= 1.3 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // ice_dun01 - Ice Cave
 //==================================================
-ice_dun01,0,0	monster	Siroma	1776,75,5000
+ice_dun01,0,0	monster	Siroma	1776,76,5000
 ice_dun01,0,0	monster	Roween	1782,5,5000
 ice_dun01,0,0	monster	Muscipular	1780,5,5000
 ice_dun01,0,0	monster	Gazeti	1778,2,5000

+ 22 - 21
npc/re/mobs/dungeons/in_sphinx.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.4
+//= 1.5
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
@@ -11,46 +11,47 @@
 //= 1.2 Replaced Marduk with Anubis on F4 and F5 [Playtester]
 //= 1.3 More accurate spawns [Playtester]
 //= 1.4 Corrected MVP spawn variance. [L0ne_W0lf]
+//= 1.5 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // in_sphinx1 - Sphinx
 //==================================================
-in_sphinx1,0,0	monster	Drainliar	1111,40,5000
-in_sphinx1,0,0	monster	Requiem	1164,20,5000
-in_sphinx1,0,0	monster	Zerom	1178,20,5000
-in_sphinx1,0,0	monster	Matyr	1146,10,5000
+in_sphinx1,0,0	monster	Drainliar	1111,76,5000
+in_sphinx1,0,0	monster	Requiem	1164,38,5000
+in_sphinx1,0,0	monster	Zerom	1178,38,5000
+in_sphinx1,0,0	monster	Matyr	1146,19,5000
 
 //==================================================
 // in_sphinx2 - Sphinx
 //==================================================
-in_sphinx2,0,0	monster	Requiem	1164,50,5000
-in_sphinx2,0,0	monster	Zerom	1178,50,5000
-in_sphinx2,0,0	monster	Matyr	1146,20,5000
-in_sphinx2,0,0	monster	Drainliar	1111,15,5000
+in_sphinx2,0,0	monster	Requiem	1164,80,5000
+in_sphinx2,0,0	monster	Zerom	1178,80,5000
+in_sphinx2,0,0	monster	Matyr	1146,32,5000
+in_sphinx2,0,0	monster	Drainliar	1111,24,5000
 
 //==================================================
 // in_sphinx3 - Sphinx
 //==================================================
-in_sphinx3,0,0	monster	Marduk	1140,65,5000
-in_sphinx3,0,0	monster	Matyr	1146,15,5000
-in_sphinx3,0,0	monster	Mimic	1191,5,5000
-in_sphinx3,0,0	monster	Pasana	1154,5,5000
+in_sphinx3,0,0	monster	Marduk	1140,82,5000
+in_sphinx3,0,0	monster	Matyr	1146,18,5000
+in_sphinx3,0,0	monster	Mimic	1191,6,5000
+in_sphinx3,0,0	monster	Pasana	1154,6,5000
 
 //==================================================
 // in_sphinx4 - Sphinx
 //==================================================
-in_sphinx4,0,0	monster	Minorous	1149,50,5000
-in_sphinx4,0,0	monster	Pasana	1154,20,5000
-in_sphinx4,0,0	monster	Anubis	1098,15,5000
-in_sphinx4,0,0	monster	Mimic	1191,4,5000
+in_sphinx4,0,0	monster	Minorous	1149,77,5000
+in_sphinx4,0,0	monster	Pasana	1154,30,5000
+in_sphinx4,0,0	monster	Anubis	1098,23,5000
+in_sphinx4,0,0	monster	Mimic	1191,6,5000
 
 //==================================================
 // in_sphinx5 - Sphinx
 //==================================================
-in_sphinx5,0,0	monster	Pasana	1154,70,5000
-in_sphinx5,0,0	monster	Side Winder	1037,20,5000
-in_sphinx5,0,0	monster	Matyr	1146,10,5000
-in_sphinx5,0,0	monster	Anubis	1098,10,5000
+in_sphinx5,0,0	monster	Pasana	1154,79,5000
+in_sphinx5,0,0	monster	Side Winder	1037,22,5000
+in_sphinx5,0,0	monster	Matyr	1146,11,5000
+in_sphinx5,0,0	monster	Anubis	1098,11,5000
 in_sphinx5,0,0	monster	Mimic	1191,7,5000
 in_sphinx5,0,0,0,0	boss_monster	Pharaoh	1157,1,3600000,600000,1

+ 12 - 11
npc/re/mobs/dungeons/iz_dun.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.4
+//= 1.5
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
@@ -11,17 +11,18 @@
 //= 1.2 More accurate spawns [Playtester]
 //= 1.3 Added Izlude Dungeon F6 spawns [Chilly]
 //= 1.4 Official F6 spawns.
+//= 1.5 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // iz_dun00 - Undersea Tunnel
 //==================================================
-iz_dun00,0,0	monster	Plankton	1161,65,5000
-iz_dun00,0,0	monster	Marina	1141,45,5000
-iz_dun00,0,0	monster	Vadon	1066,15,5000
-iz_dun00,0,0	monster	Kukre	1070,15,5000
-iz_dun00,0,0	monster	Hydra	1068,15,5000
-iz_dun00,0,0	monster	Black Mushroom	1084,5,180000,90000
+iz_dun00,0,0	monster	Plankton	1161,88,5000
+iz_dun00,0,0	monster	Marina	1141,61,5000
+iz_dun00,0,0	monster	Vadon	1066,20,5000
+iz_dun00,0,0	monster	Kukre	1070,20,5000
+iz_dun00,0,0	monster	Hydra	1068,20,5000
+iz_dun00,0,0	monster	Black Mushroom	1084,6,180000,90000
 
 //==================================================
 // iz_dun01 - Undersea Tunnel
@@ -86,10 +87,10 @@ iz_dun03,197,144	monster	Hydra	1068,1,2960000,150000
 //==================================================
 // iz_dun04 - Undersea Tunnel
 //==================================================
-iz_dun04,0,0	monster	Merman	1264,52,5000
-iz_dun04,0,0	monster	Strouf	1065,50,5000
-iz_dun04,0,0	monster	Marine Sphere	1142,10,5000
-iz_dun04,0,0	monster	Swordfish	1069,10,5000
+iz_dun04,0,0	monster	Merman	1264,61,5000
+iz_dun04,0,0	monster	Strouf	1065,58,5000
+iz_dun04,0,0	monster	Marine Sphere	1142,11,5000
+iz_dun04,0,0	monster	Swordfish	1069,11,5000
 iz_dun04,0,0	monster	Deviace	1108,3,5000
 iz_dun04,80,246	monster	Hydra	1068,1,294000,150000
 iz_dun04,79,246	monster	Hydra	1068,1,300000,150000

+ 11 - 10
npc/re/mobs/dungeons/kh_dun.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 1.3
+//= 1.4
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
@@ -11,26 +11,27 @@
 //= 1.1 Added official mob types [Playtester]
 //= 1.2 Updated amounts [Playtester]
 //= 1.3 More accurate spawns [Playtester]
+//= 1.4 Correct Spawn by Navigation's mob data. [attackjom]
 //============================================================
 
 //==================================================
 // kh_dun01 - Robot Factory level 1 
 //==================================================
-kh_dun01,0,0	monster	Aliza	1737,45,5000
-kh_dun01,0,0	monster	Alice	1275,25,5000
-kh_dun01,0,0	monster	Constant	1738,8,5000
-kh_dun01,0,0	monster	Constant	1745,5,5000
+kh_dun01,0,0	monster	Aliza	1737,55,5000
+kh_dun01,0,0	monster	Alice	1275,30,5000
+kh_dun01,0,0	monster	Constant	1738,9,5000
+kh_dun01,0,0	monster	Constant	1745,6,5000
 kh_dun01,0,0	monster	Alicel	1735,3,5000
 kh_dun01,0,0	monster	Aliot	1736,3,5000
 
 //==================================================
 // kh_dun02 - Robot Factory level 2
 //==================================================
-kh_dun02,0,0	monster	Alicel	1735,30,5000
-kh_dun02,0,0	monster	Aliot	1736,25,5000
-kh_dun02,0,0	monster	Constant	1738,15,5000
-kh_dun02,0,0	monster	Aliza	1737,10,5000
-kh_dun02,0,0	monster	Constant	1745,5,5000
+kh_dun02,0,0	monster	Alicel	1735,41,5000
+kh_dun02,0,0	monster	Aliot	1736,34,5000
+kh_dun02,0,0	monster	Constant	1738,20,5000
+kh_dun02,0,0	monster	Aliza	1737,13,5000
+kh_dun02,0,0	monster	Constant	1745,6,5000
 kh_dun02,0,0,0,0	boss_monster	Kiel D-01	1734,1,7200000,600000,0
 
 //==================================================

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است