Browse Source

Merge branch 'master' into script/episode19

Atemo 4 months ago
parent
commit
19ea26a5eb
100 changed files with 23287 additions and 6281 deletions
  1. 1 0
      .gitignore
  2. 546 673
      conf/atcommands.yml
  3. 7 4
      conf/battle/drops.conf
  4. 2 2
      conf/battle/party.conf
  5. 2 2
      conf/battle/player.conf
  6. 2 2
      conf/groups.yml
  7. 2 0
      conf/inter_athena.conf
  8. 17 0
      conf/maps_athena.conf
  9. 4 1
      conf/msg_conf/map_msg.conf
  10. 3 2
      db/import-tmpl/item_group_db.yml
  11. 2 1
      db/import-tmpl/status.yml
  12. 9 8
      db/item_group_db.yml
  13. BIN
      db/map_cache.dat
  14. 9 0
      db/map_index.txt
  15. 10 16
      db/pre-re/item_db_equip.yml
  16. 3 3
      db/pre-re/item_db_etc.yml
  17. 117 117
      db/pre-re/item_db_usable.yml
  18. 67 68
      db/pre-re/item_group_db.yml
  19. 355 1938
      db/pre-re/job_stats.yml
  20. 66 48
      db/pre-re/pet_db.yml
  21. 2 0
      db/pre-re/size_fix.yml
  22. 10 29
      db/pre-re/skill_db.yml
  23. 30 0
      db/pre-re/statpoint.yml
  24. 150 307
      db/pre-re/status.yml
  25. 40 40
      db/re/enchantgrade.yml
  26. 3768 76
      db/re/item_combos.yml
  27. 241 94
      db/re/item_db_equip.yml
  28. 3022 1402
      db/re/item_db_etc.yml
  29. 209 123
      db/re/item_db_usable.yml
  30. 1653 0
      db/re/item_enchant.yml
  31. 308 281
      db/re/item_group_db.yml
  32. 79 0
      db/re/item_packages.yml
  33. 3420 6
      db/re/item_reform.yml
  34. 811 1
      db/re/job_basepoints.yml
  35. 43 3
      db/re/job_exp.yml
  36. 551 391
      db/re/job_stats.yml
  37. 365 0
      db/re/map_drops.yml
  38. 2466 117
      db/re/mob_db.yml
  39. 2 0
      db/re/mob_skill_db.txt
  40. 254 97
      db/re/pet_db.yml
  41. 249 0
      db/re/quest_db.yml
  42. 2 0
      db/re/size_fix.yml
  43. 1261 14
      db/re/skill_db.yml
  44. 259 0
      db/re/skill_tree.yml
  45. 45 0
      db/re/statpoint.yml
  46. 199 143
      db/re/status.yml
  47. 0 1
      db/size_fix.yml
  48. 2 1
      db/status.yml
  49. 5 0
      doc/atcommands.txt
  50. 6 2
      doc/item_bonus.txt
  51. 1 0
      doc/item_db.txt
  52. 76 2
      doc/item_group.txt
  53. 34 24
      doc/script_commands.txt
  54. 6 1
      doc/status.txt
  55. 78 8
      doc/status_change.txt
  56. 1 0
      doc/yaml/db/item_group_db.yml
  57. 4 0
      doc/yaml/sql/mob_db_re.sql
  58. 1 1
      npc/airports/airships.txt
  59. 1 1
      npc/cities/amatsu.txt
  60. 2 2
      npc/cities/ayothaya.txt
  61. 1 1
      npc/cities/brasilis.txt
  62. 0 69
      npc/cities/einbroch.txt
  63. 1 1
      npc/cities/gonryun.txt
  64. 1 1
      npc/cities/louyang.txt
  65. 1 1
      npc/cities/moscovia.txt
  66. 110 114
      npc/jobs/2-1/assassin.txt
  67. 1 1
      npc/jobs/2-2/monk.txt
  68. 70 0
      npc/merchants/inn.txt
  69. 1 1
      npc/quests/gunslinger_quests.txt
  70. 8 2
      npc/quests/quests_amatsu.txt
  71. 2 2
      npc/quests/quests_yuno.txt
  72. 1 1
      npc/re/cities/dewata.txt
  73. 1 1
      npc/re/cities/malaya.txt
  74. 2 2
      npc/re/instances/CorOperation.txt
  75. 6 6
      npc/re/instances/OldGlastHeim.txt
  76. 10 0
      npc/re/mapflag/noteleport.txt
  77. 8 6
      npc/re/merchants/barters.yml
  78. 355 0
      npc/re/merchants/barters/garden_of_time.yml
  79. 3 3
      npc/re/merchants/barters/quests_18.yml
  80. 117 0
      npc/re/mobs/dungeons/for_dun.txt
  81. 2 2
      npc/re/mobs/dungeons/slabw01.txt
  82. 1595 0
      npc/re/quests/garden_of_time.txt
  83. 14 8
      npc/re/quests/quests_18.txt
  84. 1 0
      npc/re/scripts_athena.conf
  85. 1 0
      npc/re/scripts_monsters.conf
  86. 5 0
      npc/test/ci/8886.txt
  87. 27 0
      rAthena.slnLaunch
  88. 1 1
      sql-files/item_db_etc.sql
  89. 1 1
      sql-files/item_db_re_etc.sql
  90. 25 2
      sql-files/main.sql
  91. 2 0
      sql-files/mob_db.sql
  92. 2 0
      sql-files/mob_db2.sql
  93. 2 0
      sql-files/mob_db2_re.sql
  94. 2 0
      sql-files/mob_db_re.sql
  95. 1 1
      sql-files/upgrades/upgrade_20220222_logs.sql
  96. 1 0
      sql-files/upgrades/upgrade_20240914.sql
  97. 3 0
      sql-files/upgrades/upgrade_20241005.sql
  98. 8 0
      sql-files/upgrades/upgrade_20241026.sql
  99. 13 0
      sql-files/upgrades/upgrade_20241216.sql
  100. 2 2
      src/char/CMakeLists.txt

+ 1 - 0
.gitignore

@@ -116,6 +116,7 @@ Thumbs.db
 .vs
 .vs
 *.VC.db
 *.VC.db
 *.VC.opendb
 *.VC.opendb
+*.slnLaunch.user
 
 
 /.idea/.name
 /.idea/.name
 /.idea/misc.xml
 /.idea/misc.xml

File diff suppressed because it is too large
+ 546 - 673
conf/atcommands.yml


+ 7 - 4
conf/battle/drops.conf

@@ -79,11 +79,17 @@ item_drop_mvp_min: 1
 item_drop_mvp_max: 10000
 item_drop_mvp_max: 10000
 item_drop_mvp_mode: 0
 item_drop_mvp_mode: 0
 
 
-// The rate adjustment for card-granted item drops.
+// The rate adjustment for equip-granted item drops.
 item_rate_adddrop: 100
 item_rate_adddrop: 100
 item_drop_add_min: 1
 item_drop_add_min: 1
 item_drop_add_max: 10000
 item_drop_add_max: 10000
 
 
+// The rate adjustment for items inside of equip-granted item group drops.
+// This is used by Ore Discovery and items such as Gaia Sword, Jewel Sword, Blazzer Card, Tengu Card and Dokkaebi Horn.
+item_group_rate: 100
+item_group_drop_min: 1
+item_group_drop_max: 10000
+
 // Rate adjustment for Treasure Box drops (these override all other modifiers)
 // Rate adjustment for Treasure Box drops (these override all other modifiers)
 item_rate_treasure: 100
 item_rate_treasure: 100
 item_drop_treasure_min: 1
 item_drop_treasure_min: 1
@@ -130,9 +136,6 @@ drops_by_luk: 0
 // (So at 100 luk, everything will have double chance of dropping).
 // (So at 100 luk, everything will have double chance of dropping).
 drops_by_luk2: 0
 drops_by_luk2: 0
 
 
-// The rate of monsters dropping ores by the skill Ore Discovery (Default is 100)
-finding_ore_rate: 100
-
 // Whether or not Marine Spheres and Floras summoned by Alchemist drop items?
 // Whether or not Marine Spheres and Floras summoned by Alchemist drop items?
 // This setting has three available values:
 // This setting has three available values:
 // 0: Nothing drops.
 // 0: Nothing drops.

+ 2 - 2
conf/battle/party.conf

@@ -54,8 +54,8 @@ idle_no_share: no
 party_even_share_bonus: 0
 party_even_share_bonus: 0
 
 
 // Display party name regardless if player is in a guild.
 // Display party name regardless if player is in a guild.
-// Official servers do not display party name unless the user is in a guild. (Note 1)
-display_party_name: no
+// Official servers display party name even if the user is not in a guild. (Note 1)
+display_party_name: yes
 
 
 // Prevent multiple characters of the same account to join the same party. (Note 1)
 // Prevent multiple characters of the same account to join the same party. (Note 1)
 block_account_in_same_party: yes
 block_account_in_same_party: yes

+ 2 - 2
conf/battle/player.conf

@@ -295,8 +295,8 @@ trait_points_job_change: 7
 
 
 // Max trait stats cap.
 // Max trait stats cap.
 // Trait Stats: POW, STA, WIS, SPL, CON, CRT
 // Trait Stats: POW, STA, WIS, SPL, CON, CRT
-// Official is 100.
-max_trait_parameter: 100
+// Official is 110.
+max_trait_parameter: 110
 
 
 // Max percent of RES/MRES that can be ignored by item bonus/skill.
 // Max percent of RES/MRES that can be ignored by item bonus/skill.
 // Default: 50
 // Default: 50

+ 2 - 2
conf/groups.yml

@@ -71,7 +71,7 @@ Body:
       mobinfo: true
       mobinfo: true
       iteminfo: true
       iteminfo: true
       whodrops: true
       whodrops: true
-      time: true
+      servertime: true
       jailtime: true
       jailtime: true
       hominfo: true
       hominfo: true
       homstats: true
       homstats: true
@@ -195,7 +195,7 @@ Body:
       fakename: true
       fakename: true
       option: true
       option: true
       speed: true
       speed: true
-      warp: true
+      mapmove: true
       kill: true
       kill: true
       recall: true
       recall: true
       ban: true
       ban: true

+ 2 - 0
conf/inter_athena.conf

@@ -123,8 +123,10 @@ auction_db: auction
 quest_db: quest
 quest_db: quest
 homunculus_db: homunculus
 homunculus_db: homunculus
 skill_homunculus_db: skill_homunculus
 skill_homunculus_db: skill_homunculus
+skillcooldown_homunculus_db: skillcooldown_homunculus
 mercenary_db: mercenary
 mercenary_db: mercenary
 mercenary_owner_db: mercenary_owner
 mercenary_owner_db: mercenary_owner
+skillcooldown_mercenary_db: skillcooldown_mercenary
 elemental_db: elemental
 elemental_db: elemental
 skillcooldown_db: skillcooldown
 skillcooldown_db: skillcooldown
 bonus_script_db: bonus_script
 bonus_script_db: bonus_script

+ 17 - 0
conf/maps_athena.conf

@@ -1637,5 +1637,22 @@ map: mbase_in
 // Market place
 // Market place
 map: prt_mk
 map: prt_mk
 
 
+// Level 275 Expansion
+map: moc_akhet
+map: nif_fild03
+
+// Copy of the maps related to izlude beginner training center
+map: iz_in_a
+map: iz_in_b
+map: iz_in_c
+map: iz_in_d
+
+// New dungeon related to Episode 21
+map: jor_sklf1
+map: jor_sklf2
+
+// Level 275 Expansion : Comodo dungeon
+map: cmd_bhole
+
 //------------------------- Clone Maps ---------------------------
 //------------------------- Clone Maps ---------------------------
 //------------------------- Extra Maps ---------------------------
 //------------------------- Extra Maps ---------------------------

+ 4 - 1
conf/msg_conf/map_msg.conf

@@ -256,7 +256,7 @@
 243: Skills have been disabled on this map.
 243: Skills have been disabled on this map.
 244: Skills have been enabled on this map.
 244: Skills have been enabled on this map.
 245: Server Uptime: %ld days, %ld hours, %ld minutes, %ld seconds.
 245: Server Uptime: %ld days, %ld hours, %ld minutes, %ld seconds.
-246: Your GM level doesn't authorize you to preform this action.
+246: Your GM level doesn't authorize you to perform this action.
 247: You are not authorized to warp to this map.
 247: You are not authorized to warp to this map.
 248: You are not authorized to warp from your current map.
 248: You are not authorized to warp from your current map.
 249: You are not authorized to warp to your save map.
 249: You are not authorized to warp to your save map.
@@ -1823,5 +1823,8 @@
 1534: Usage: @stockall {<type>}
 1534: Usage: @stockall {<type>}
 1535: %d items are transferred (%d skipped)!
 1535: %d items are transferred (%d skipped)!
 
 
+1536: Log configuration has been reloaded.
+1537: Found skill '%s', unblocking...
+
 //Custom translations
 //Custom translations
 import: conf/msg_conf/import/map_msg_eng_conf.txt
 import: conf/msg_conf/import/map_msg_eng_conf.txt

+ 3 - 2
db/import-tmpl/item_group_db.yml

@@ -1,5 +1,5 @@
 # This file is a part of rAthena.
 # This file is a part of rAthena.
-#   Copyright(C) 2021 rAthena Development Team
+#   Copyright(C) 2024 rAthena Development Team
 #   https://rathena.org - https://github.com/rathena
 #   https://rathena.org - https://github.com/rathena
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
@@ -25,6 +25,7 @@
 # - Group                      Group name of the item.
 # - Group                      Group name of the item.
 #   SubGroups:
 #   SubGroups:
 #     - SubGroup:              SubGroup number associated with the list of item. See doc/item_group.txt for more information.
 #     - SubGroup:              SubGroup number associated with the list of item. See doc/item_group.txt for more information.
+#       Algorithm:             Type of algorithm associated with SubGroup. (Default: SharedPool)
 #       List:                  List of item(s) for the SubGroup.
 #       List:                  List of item(s) for the SubGroup.
 #        - Index               Unique number that can be used to add the same Item with different data in the list.
 #        - Index               Unique number that can be used to add the same Item with different data in the list.
 #          Item                AegisName of item that will be obtained from this item group.
 #          Item                AegisName of item that will be obtained from this item group.
@@ -45,4 +46,4 @@
 
 
 Header:
 Header:
   Type: ITEM_GROUP_DB
   Type: ITEM_GROUP_DB
-  Version: 3
+  Version: 4

+ 2 - 1
db/import-tmpl/status.yml

@@ -38,8 +38,9 @@
 #   EndOnStart:               List of Status Changes that will end when the status activates. (Optional)
 #   EndOnStart:               List of Status Changes that will end when the status activates. (Optional)
 #   EndReturn:                List of Status Changes that will end when the status activates and won't give its effect. (Optional)
 #   EndReturn:                List of Status Changes that will end when the status activates and won't give its effect. (Optional)
 #   EndOnEnd:                 List of Status Changes that will end when the status becomes inactive. (Optional)
 #   EndOnEnd:                 List of Status Changes that will end when the status becomes inactive. (Optional)
+#   Script:                   Script to execute, when starting the status change. (Optional)
 ###########################################################################
 ###########################################################################
 
 
 Header:
 Header:
   Type: STATUS_DB
   Type: STATUS_DB
-  Version: 3
+  Version: 4

+ 9 - 8
db/item_group_db.yml

@@ -1,5 +1,5 @@
 # This file is a part of rAthena.
 # This file is a part of rAthena.
-#   Copyright(C) 2021 rAthena Development Team
+#   Copyright(C) 2024 rAthena Development Team
 #   https://rathena.org - https://github.com/rathena
 #   https://rathena.org - https://github.com/rathena
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
@@ -25,6 +25,7 @@
 # - Group                      Group name of the item.
 # - Group                      Group name of the item.
 #   SubGroups:
 #   SubGroups:
 #     - SubGroup:              SubGroup number associated with the list of item. See doc/item_group.txt for more information.
 #     - SubGroup:              SubGroup number associated with the list of item. See doc/item_group.txt for more information.
+#       Algorithm:             Type of algorithm associated with SubGroup. (Default: SharedPool)
 #       List:                  List of item(s) for the SubGroup.
 #       List:                  List of item(s) for the SubGroup.
 #        - Index               Unique number that can be used to add the same Item with different data in the list.
 #        - Index               Unique number that can be used to add the same Item with different data in the list.
 #          Item                AegisName of item that will be obtained from this item group.
 #          Item                AegisName of item that will be obtained from this item group.
@@ -32,7 +33,7 @@
 #          Amount              Amount of item that will be obtained. (Default: 1)
 #          Amount              Amount of item that will be obtained. (Default: 1)
 #          Duration            Makes the item a rental item which will expire within the given amount in minutes. Not intended for use with stackable items. (Default: 0)
 #          Duration            Makes the item a rental item which will expire within the given amount in minutes. Not intended for use with stackable items. (Default: 0)
 #          Announced           If player obtains this item it will be broadcasted to the server. (Default: false)
 #          Announced           If player obtains this item it will be broadcasted to the server. (Default: false)
-#          UniqueId            Makes the given item(s) have a Unique ID. (Default: false)
+#          UniqueId            Makes the given item(s) have a Unique ID. (Default: UniqueId from item_db)
 #          Stacked             Whether stackable items are given stacked or not. (Default: true)
 #          Stacked             Whether stackable items are given stacked or not. (Default: true)
 #          Named               Inscribes the item with the obtainer's name. (Default: false)
 #          Named               Inscribes the item with the obtainer's name. (Default: false)
 #          Bound               Binds the obtained item. (Default: None)
 #          Bound               Binds the obtained item. (Default: None)
@@ -45,12 +46,12 @@
 
 
 Header:
 Header:
   Type: ITEM_GROUP_DB
   Type: ITEM_GROUP_DB
-  Version: 3
+  Version: 4
 
 
 Footer:
 Footer:
   Imports:
   Imports:
-  - Path: db/pre-re/item_group_db.yml
-    Mode: Prerenewal
-  - Path: db/re/item_group_db.yml
-    Mode: Renewal
-  - Path: db/import/item_group_db.yml
+    - Path: db/pre-re/item_group_db.yml
+      Mode: Prerenewal
+    - Path: db/re/item_group_db.yml
+      Mode: Renewal
+    - Path: db/import/item_group_db.yml

BIN
db/map_cache.dat


+ 9 - 0
db/map_index.txt

@@ -1261,6 +1261,15 @@ luna_sf1
 luna_sf2
 luna_sf2
 mbase_in
 mbase_in
 prt_mk
 prt_mk
+moc_akhet
+nif_fild03
+iz_in_a
+iz_in_b
+iz_in_c
+iz_in_d
+jor_sklf1
+jor_sklf2
+cmd_bhole
 
 
 //======================================================================================
 //======================================================================================
 // - Other/Extra maps -
 // - Other/Extra maps -

+ 10 - 16
db/pre-re/item_db_equip.yml

@@ -1183,7 +1183,7 @@ Body:
     EquipLevelMin: 68
     EquipLevelMin: 68
     Refineable: true
     Refineable: true
     Script: |
     Script: |
-      bonus2 bAddMonsterDropItemGroup,IG_Jewel,100;
+      bonus2 bAddMonsterDropItemGroup,IG_Jewel,10000;
   - Id: 1143
   - Id: 1143
     AegisName: Gaia_Sword
     AegisName: Gaia_Sword
     Name: Gaia Sword
     Name: Gaia Sword
@@ -1209,7 +1209,7 @@ Body:
     EquipLevelMin: 74
     EquipLevelMin: 74
     Refineable: true
     Refineable: true
     Script: |
     Script: |
-      bonus2 bAddMonsterDropItemGroup,IG_Ore,30;
+      bonus2 bAddMonsterDropItemGroup,IG_Ore,10000;
   - Id: 1144
   - Id: 1144
     AegisName: Sasimi
     AegisName: Sasimi
     Name: Sashimi
     Name: Sashimi
@@ -22792,7 +22792,7 @@ Body:
       Both_Accessory: true
       Both_Accessory: true
     ArmorLevel: 1
     ArmorLevel: 1
     Script: |
     Script: |
-      bonus bAtkRate,5;
+      bonus2 bAddClass,Class_All,5;
       bonus bMatkRate,5;
       bonus bMatkRate,5;
   - Id: 2710
   - Id: 2710
     AegisName: Bloody_Iron_Ball_C
     AegisName: Bloody_Iron_Ball_C
@@ -23677,7 +23677,7 @@ Body:
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
       bonus2 bAddClass,Class_All,5;
       bonus2 bAddClass,Class_All,5;
-      bonus bMatkrate,5;
+      bonus bMatkRate,5;
   - Id: 2753
   - Id: 2753
     AegisName: Beholder_Ring
     AegisName: Beholder_Ring
     Name: Beholder Ring
     Name: Beholder Ring
@@ -23883,8 +23883,8 @@ Body:
     ArmorLevel: 1
     ArmorLevel: 1
     EquipLevelMin: 95
     EquipLevelMin: 95
     Script: |
     Script: |
-      bonus bAtkRate,5;
-      bonus bMatkrate,5;
+      bonus2 bAddClass,Class_All,5;
+      bonus bMatkRate,5;
       bonus bMaxHPrate,5;
       bonus bMaxHPrate,5;
       bonus2 bSkillHeal,"AL_HEAL",5;
       bonus2 bSkillHeal,"AL_HEAL",5;
       skill "MG_SIGHT",1;
       skill "MG_SIGHT",1;
@@ -39830,7 +39830,7 @@ Body:
     WeaponLevel: 4
     WeaponLevel: 4
     Script: |
     Script: |
       bonus bAtkEle,Ele_Fire;
       bonus bAtkEle,Ele_Fire;
-      bonus bHPDrainRate,1;
+      bonus2 bHPDrainRate,1000,1;
       bonus2 bSPLossRate,15,10000;
       bonus2 bSPLossRate,15,10000;
   - Id: 13404
   - Id: 13404
     AegisName: Platinum_Shotel
     AegisName: Platinum_Shotel
@@ -40799,7 +40799,7 @@ Body:
     EquipLevelMin: 1
     EquipLevelMin: 1
     View: 562
     View: 562
     Script: |
     Script: |
-      bonus bAtkRate,5;
+      bonus2 bAddClass,Class_All,5;
       bonus bMatkRate,5;
       bonus bMatkRate,5;
       bonus bMaxHPRate,10;
       bonus bMaxHPRate,10;
       bonus bMaxSPRate,10;
       bonus bMaxSPRate,10;
@@ -40939,19 +40939,13 @@ Body:
     Refineable: true
     Refineable: true
     View: 761
     View: 761
     Script: |
     Script: |
-      bonus bAtkRate,5;
-      if (getrefine() > 5 && getrefine() <= 12) {
+      bonus2 bAddClass,Class_All,5;
+      if (getrefine() > 5) {
          bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5);
          bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5);
          bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5);
          bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5);
          bonus2 bAddRace,RC_Player_Human,(getrefine() - 5);
          bonus2 bAddRace,RC_Player_Human,(getrefine() - 5);
          bonus2 bSubRace,RC_Player_Human,(getrefine() - 5);
          bonus2 bSubRace,RC_Player_Human,(getrefine() - 5);
       }
       }
-      if (getrefine() > 12) {
-         bonus2 bAddRace,RC_DemiHuman,7;
-         bonus2 bAddRace,RC_Player_Human,7;
-         bonus2 bSubRace,RC_DemiHuman,7;
-         bonus2 bSubRace,RC_Player_Human,7;
-      }
   - Id: 18612
   - Id: 18612
     AegisName: White_Musang_Hat
     AegisName: White_Musang_Hat
     Name: White Musang Hat
     Name: White Musang Hat

+ 3 - 3
db/pre-re/item_db_etc.yml

@@ -5320,7 +5320,7 @@ Body:
     Flags:
     Flags:
       BuyingStore: true
       BuyingStore: true
     Script: |
     Script: |
-      bonus2 bAddMonsterDropItemGroup,IG_Food,600;
+      bonus2 bAddMonsterDropItemGroup,IG_Food,10000;
   - Id: 4216
   - Id: 4216
     AegisName: Sasquatch_Card
     AegisName: Sasquatch_Card
     Name: Sasquatch Card
     Name: Sasquatch Card
@@ -6230,7 +6230,7 @@ Body:
     Flags:
     Flags:
       BuyingStore: true
       BuyingStore: true
     Script: |
     Script: |
-      bonus2 bAddMonsterDropItemGroup,IG_Recovery,600;
+      bonus2 bAddMonsterDropItemGroup,IG_Recovery,10000;
   - Id: 4283
   - Id: 4283
     AegisName: Greatest_General_Card
     AegisName: Greatest_General_Card
     Name: Greatest General Card
     Name: Greatest General Card
@@ -17930,7 +17930,7 @@ Body:
     Weight: 10
     Weight: 10
   - Id: 7773
   - Id: 7773
     AegisName: War_Badge
     AegisName: War_Badge
-    Name: Wat Badge
+    Name: War Badge
     Type: Etc
     Type: Etc
     Trade:
     Trade:
       NoDrop: true
       NoDrop: true

+ 117 - 117
db/pre-re/item_db_usable.yml

@@ -1061,7 +1061,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_BlueBox,1);
+      getgroupitem(IG_BLUEBOX);
   - Id: 604
   - Id: 604
     AegisName: Branch_Of_Dead_Tree
     AegisName: Branch_Of_Dead_Tree
     Name: Dead Branch
     Name: Dead Branch
@@ -1199,7 +1199,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_CardAlbum,1);
+      getgroupitem(IG_CARDALBUM);
   - Id: 617
   - Id: 617
     AegisName: Old_Violet_Box
     AegisName: Old_Violet_Box
     Name: Old Purple Box
     Name: Old Purple Box
@@ -1210,7 +1210,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_VioletBox,1);
+      getgroupitem(IG_VIOLETBOX);
   - Id: 618
   - Id: 618
     AegisName: Worn_Out_Scroll
     AegisName: Worn_Out_Scroll
     Name: Worn Out Scroll
     Name: Worn Out Scroll
@@ -1231,7 +1231,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1002;
+      pet;
   - Id: 620
   - Id: 620
     AegisName: Orange_Juice
     AegisName: Orange_Juice
     Name: Orange Juice
     Name: Orange Juice
@@ -1243,7 +1243,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1113;
+      pet;
   - Id: 621
   - Id: 621
     AegisName: Bitter_Herb
     AegisName: Bitter_Herb
     Name: Bitter Herb
     Name: Bitter Herb
@@ -1255,7 +1255,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1031;
+      pet;
   - Id: 622
   - Id: 622
     AegisName: Rainbow_Carrot
     AegisName: Rainbow_Carrot
     Name: Rainbow Carrot
     Name: Rainbow Carrot
@@ -1267,7 +1267,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1063;
+      pet;
   - Id: 623
   - Id: 623
     AegisName: Earthworm_The_Dude
     AegisName: Earthworm_The_Dude
     Name: Earthworm the Dude
     Name: Earthworm the Dude
@@ -1279,7 +1279,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1049;
+      pet;
   - Id: 624
   - Id: 624
     AegisName: Rotten_Fish
     AegisName: Rotten_Fish
     Name: Rotten Fish
     Name: Rotten Fish
@@ -1291,7 +1291,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1011;
+      pet;
   - Id: 625
   - Id: 625
     AegisName: Lusty_Iron
     AegisName: Lusty_Iron
     Name: Rusty Iron
     Name: Rusty Iron
@@ -1303,7 +1303,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1042;
+      pet;
   - Id: 626
   - Id: 626
     AegisName: Monster_Juice
     AegisName: Monster_Juice
     Name: Monster Juice
     Name: Monster Juice
@@ -1315,7 +1315,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1035;
+      pet;
   - Id: 627
   - Id: 627
     AegisName: Sweet_Milk
     AegisName: Sweet_Milk
     Name: Sweet Milk
     Name: Sweet Milk
@@ -1327,7 +1327,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1167;
+      pet;
   - Id: 628
   - Id: 628
     AegisName: Well_Dried_Bone
     AegisName: Well_Dried_Bone
     Name: Well-Dried Bone
     Name: Well-Dried Bone
@@ -1339,7 +1339,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1107;
+      pet;
   - Id: 629
   - Id: 629
     AegisName: Singing_Flower
     AegisName: Singing_Flower
     Name: Singing Flower
     Name: Singing Flower
@@ -1351,7 +1351,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1052;
+      pet;
   - Id: 630
   - Id: 630
     AegisName: Dew_Laden_Moss
     AegisName: Dew_Laden_Moss
     Name: Dew Laden Moss
     Name: Dew Laden Moss
@@ -1363,7 +1363,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1014;
+      pet;
   - Id: 631
   - Id: 631
     AegisName: Deadly_Noxious_Herb
     AegisName: Deadly_Noxious_Herb
     Name: Deadly Noxious Herb
     Name: Deadly Noxious Herb
@@ -1375,7 +1375,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1077;
+      pet;
   - Id: 632
   - Id: 632
     AegisName: Fatty_Chubby_Earthworm
     AegisName: Fatty_Chubby_Earthworm
     Name: Fatty Chubby Earthworm
     Name: Fatty Chubby Earthworm
@@ -1387,7 +1387,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1019;
+      pet;
   - Id: 633
   - Id: 633
     AegisName: Baked_Yam
     AegisName: Baked_Yam
     Name: Sweet Potato
     Name: Sweet Potato
@@ -1399,7 +1399,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1056;
+      pet;
   - Id: 634
   - Id: 634
     AegisName: Tropical_Banana
     AegisName: Tropical_Banana
     Name: Tropical Banana
     Name: Tropical Banana
@@ -1411,7 +1411,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1057;
+      pet;
   - Id: 635
   - Id: 635
     AegisName: Horror_Of_Tribe
     AegisName: Horror_Of_Tribe
     Name: Orc Trophy
     Name: Orc Trophy
@@ -1423,7 +1423,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1023;
+      pet;
   - Id: 636
   - Id: 636
     AegisName: No_Recipient
     AegisName: No_Recipient
     Name: No Recipient
     Name: No Recipient
@@ -1435,7 +1435,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1026;
+      pet;
   - Id: 637
   - Id: 637
     AegisName: Old_Broom
     AegisName: Old_Broom
     Name: Old Broom
     Name: Old Broom
@@ -1447,7 +1447,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1110;
+      pet;
   - Id: 638
   - Id: 638
     AegisName: Silver_Knife_Of_Chaste
     AegisName: Silver_Knife_Of_Chaste
     Name: Silver Knife of Chastity
     Name: Silver Knife of Chastity
@@ -1459,7 +1459,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1170;
+      pet;
   - Id: 639
   - Id: 639
     AegisName: Armlet_Of_Obedience
     AegisName: Armlet_Of_Obedience
     Name: Armlet of Obedience
     Name: Armlet of Obedience
@@ -1471,7 +1471,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1029;
+      pet;
   - Id: 640
   - Id: 640
     AegisName: Shining_Stone
     AegisName: Shining_Stone
     Name: Shining Stone
     Name: Shining Stone
@@ -1483,7 +1483,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1155;
+      pet;
   - Id: 641
   - Id: 641
     AegisName: Contracts_In_Shadow
     AegisName: Contracts_In_Shadow
     Name: Contract in Shadow
     Name: Contract in Shadow
@@ -1495,7 +1495,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1109;
+      pet;
   - Id: 642
   - Id: 642
     AegisName: Book_Of_Devil
     AegisName: Book_Of_Devil
     Name: Book of the Devil
     Name: Book of the Devil
@@ -1507,7 +1507,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1101;
+      pet;
   - Id: 643
   - Id: 643
     AegisName: Pet_Incubator
     AegisName: Pet_Incubator
     Name: Pet Incubator
     Name: Pet Incubator
@@ -1528,7 +1528,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_GiftBox,1);
+      getgroupitem(IG_GIFTBOX);
   - Id: 645
   - Id: 645
     AegisName: Center_Potion
     AegisName: Center_Potion
     Name: Concentration Potion
     Name: Concentration Potion
@@ -1619,7 +1619,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1188;
+      pet;
   - Id: 660
   - Id: 660
     AegisName: Prohibition_Red_Candle
     AegisName: Prohibition_Red_Candle
     Name: Forbidden Red Candle
     Name: Forbidden Red Candle
@@ -1631,7 +1631,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1200;
+      pet;
   - Id: 661
   - Id: 661
     AegisName: Sway_Apron
     AegisName: Sway_Apron
     Name: Soft Apron
     Name: Soft Apron
@@ -1643,7 +1643,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1275;
+      pet;
   - Id: 662
   - Id: 662
     AegisName: Inspector_Certificate
     AegisName: Inspector_Certificate
     Name: Authoritative Badge
     Name: Authoritative Badge
@@ -1674,7 +1674,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_GiftBox_1,1);
+      getgroupitem(IG_GIFTBOX_1);
   - Id: 665
   - Id: 665
     AegisName: Gift_Box_2
     AegisName: Gift_Box_2
     Name: Gift Box
     Name: Gift Box
@@ -1685,7 +1685,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_GiftBox_2,1);
+      getgroupitem(IG_GIFTBOX_2);
   - Id: 666
   - Id: 666
     AegisName: Gift_Box_3
     AegisName: Gift_Box_3
     Name: Gift Box
     Name: Gift Box
@@ -1696,7 +1696,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_GiftBox_3,1);
+      getgroupitem(IG_GIFTBOX_3);
   - Id: 667
   - Id: 667
     AegisName: Gift_Box_4
     AegisName: Gift_Box_4
     Name: Gift Box
     Name: Gift Box
@@ -1707,7 +1707,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_GiftBox_4,1);
+      getgroupitem(IG_GIFTBOX_4);
   - Id: 668
   - Id: 668
     AegisName: Handsei
     AegisName: Handsei
     Name: Red Envelope
     Name: Red Envelope
@@ -2371,7 +2371,7 @@ Body:
     Buy: 1
     Buy: 1
     Weight: 10
     Weight: 10
     Script: |
     Script: |
-      itemheal rand(425,425),0;
+      itemheal 425,0;
   - Id: 11706
   - Id: 11706
     AegisName: Steak
     AegisName: Steak
     Name: Steak
     Name: Steak
@@ -2663,7 +2663,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_GiftBoxChina,1);
+      getgroupitem(IG_GIFTBOXCHINA);
   - Id: 12024
   - Id: 12024
     AegisName: Red_Pouch_Of_Surprise
     AegisName: Red_Pouch_Of_Surprise
     Name: Red Pouch
     Name: Red Pouch
@@ -2683,7 +2683,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_EggBoy,1);
+      getgroupitem(IG_EGGBOY);
   - Id: 12026
   - Id: 12026
     AegisName: Egg_Girl
     AegisName: Egg_Girl
     Name: Dano Festival Egg
     Name: Dano Festival Egg
@@ -2693,7 +2693,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_EggGirl,1);
+      getgroupitem(IG_EGGGIRL);
   - Id: 12027
   - Id: 12027
     AegisName: Giggling_Box
     AegisName: Giggling_Box
     Name: Giggling Box
     Name: Giggling Box
@@ -2821,7 +2821,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_LottoBox,1);
+      getgroupitem(IG_LOTTOBOX);
   - Id: 12039
   - Id: 12039
     AegisName: Lotto_Box05
     AegisName: Lotto_Box05
     Name: Lotto Box 05
     Name: Lotto Box 05
@@ -3536,7 +3536,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Quiver,1);
+      getgroupitem(IG_QUIVER);
   - Id: 12105
   - Id: 12105
     AegisName: Set_Of_Taiming_Item
     AegisName: Set_Of_Taiming_Item
     Name: Taming Gift Set
     Name: Taming Gift Set
@@ -3547,9 +3547,9 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Taming,1);
-      getrandgroupitem(IG_Taming,1);
-      getrandgroupitem(IG_Taming,1);
+      getgroupitem(IG_TAMING);
+      getgroupitem(IG_TAMING);
+      getgroupitem(IG_TAMING);
   - Id: 12106
   - Id: 12106
     AegisName: Accessory_Box
     AegisName: Accessory_Box
     Name: Jewelry Box
     Name: Jewelry Box
@@ -3560,7 +3560,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Accesory,1);
+      getgroupitem(IG_ACCESORY);
   - Id: 12107
   - Id: 12107
     AegisName: Wrapped_Mask
     AegisName: Wrapped_Mask
     Name: Wrapped Mask
     Name: Wrapped Mask
@@ -3571,7 +3571,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Mask,1);
+      getgroupitem(IG_MASK);
   - Id: 12108
   - Id: 12108
     AegisName: Bundle_Of_Magic_Scroll
     AegisName: Bundle_Of_Magic_Scroll
     Name: Scroll Package
     Name: Scroll Package
@@ -3582,11 +3582,11 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Scroll,1);
-      getrandgroupitem(IG_Scroll,1);
-      getrandgroupitem(IG_Scroll,1);
-      getrandgroupitem(IG_Scroll,1);
-      getrandgroupitem(IG_Scroll,1);
+      getgroupitem(IG_SCROLL);
+      getgroupitem(IG_SCROLL);
+      getgroupitem(IG_SCROLL);
+      getgroupitem(IG_SCROLL);
+      getgroupitem(IG_SCROLL);
   - Id: 12109
   - Id: 12109
     AegisName: Poring_Box
     AegisName: Poring_Box
     Name: Poring Box
     Name: Poring Box
@@ -3608,11 +3608,11 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_FirstAid,1);
-      getrandgroupitem(IG_FirstAid,1);
-      getrandgroupitem(IG_FirstAid,1);
-      getrandgroupitem(IG_FirstAid,1);
-      getrandgroupitem(IG_FirstAid,1);
+      getgroupitem(IG_FIRSTAID);
+      getgroupitem(IG_FIRSTAID);
+      getgroupitem(IG_FIRSTAID);
+      getgroupitem(IG_FIRSTAID);
+      getgroupitem(IG_FIRSTAID);
   - Id: 12111
   - Id: 12111
     AegisName: Food_Package
     AegisName: Food_Package
     Name: Bundle of Food
     Name: Bundle of Food
@@ -3623,9 +3623,9 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_FoodBag,1);
-      getrandgroupitem(IG_FoodBag,1);
-      getrandgroupitem(IG_FoodBag,1);
+      getgroupitem(IG_FOODBAG);
+      getgroupitem(IG_FOODBAG);
+      getgroupitem(IG_FOODBAG);
   - Id: 12112
   - Id: 12112
     AegisName: Tropical_Sograt
     AegisName: Tropical_Sograt
     Name: Tropical Sograt
     Name: Tropical Sograt
@@ -3817,9 +3817,9 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_CookieBag,1);
-      getrandgroupitem(IG_CookieBag,1);
-      getrandgroupitem(IG_CookieBag,1);
+      getgroupitem(IG_COOKIEBAG);
+      getgroupitem(IG_COOKIEBAG);
+      getgroupitem(IG_COOKIEBAG);
   - Id: 12131
   - Id: 12131
     AegisName: Lucky_Potion
     AegisName: Lucky_Potion
     Name: Lucky Potion
     Name: Lucky Potion
@@ -4514,7 +4514,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_RedBox,1);
+      getgroupitem(IG_REDBOX);
   - Id: 12187
   - Id: 12187
     AegisName: Green_Box
     AegisName: Green_Box
     Name: Old Green Box
     Name: Old Green Box
@@ -4524,7 +4524,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_GreenBox,1);
+      getgroupitem(IG_GREENBOX);
   - Id: 12188
   - Id: 12188
     AegisName: Magical_Moon_Cake
     AegisName: Magical_Moon_Cake
     Name: Grace Moon Cake
     Name: Grace Moon Cake
@@ -4542,7 +4542,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_RedBox_2,1);
+      getgroupitem(IG_REDBOX_2);
   - Id: 12190
   - Id: 12190
     AegisName: Moon_Cake
     AegisName: Moon_Cake
     Name: Moon Cake
     Name: Moon Cake
@@ -4579,9 +4579,9 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_HometownGift,1);
-      getrandgroupitem(IG_HometownGift,1);
-      getrandgroupitem(IG_HometownGift,1);
+      getgroupitem(IG_HOMETOWNGIFT);
+      getgroupitem(IG_HOMETOWNGIFT);
+      getgroupitem(IG_HOMETOWNGIFT);
   - Id: 12195
   - Id: 12195
     AegisName: Plain_Rice_Cake
     AegisName: Plain_Rice_Cake
     Name: Plain Rice Cake
     Name: Plain Rice Cake
@@ -5017,7 +5017,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1245;
+      pet;
   - Id: 12226
   - Id: 12226
     AegisName: Examination1
     AegisName: Examination1
     Name: Examination 1
     Name: Examination 1
@@ -5185,7 +5185,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_YellowBox,1);
+      getgroupitem(IG_YELLOWBOX);
   - Id: 12241
   - Id: 12241
     AegisName: M_Center_Potion
     AegisName: M_Center_Potion
     Name: Mercenary Concentration Potion
     Name: Mercenary Concentration Potion
@@ -5225,7 +5225,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_OldGiftBox,1);
+      getgroupitem(IG_OLDGIFTBOX);
   - Id: 12245
   - Id: 12245
     AegisName: Green_Ale_US
     AegisName: Green_Ale_US
     Name: Green Ale
     Name: Green Ale
@@ -5244,7 +5244,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_MagicCardAlbum,1);
+      getgroupitem(IG_MAGICCARDALBUM);
   - Id: 12247
   - Id: 12247
     AegisName: Halohalo
     AegisName: Halohalo
     Name: Halo-Halo
     Name: Halo-Halo
@@ -5263,7 +5263,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Masquerade,1);
+      getgroupitem(IG_MASQUERADE);
   - Id: 12249
   - Id: 12249
     AegisName: Payroll_Of_Kafra_
     AegisName: Payroll_Of_Kafra_
     Name: Payment Statement for Kafra Employee
     Name: Payment Statement for Kafra Employee
@@ -5678,7 +5678,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Tresure_Box_WoE,1);
+      getgroupitem(IG_TRESURE_BOX_WOE);
   - Id: 12282
   - Id: 12282
     AegisName: Internet_Cafe1
     AegisName: Internet_Cafe1
     Name: Internet Cafe1
     Name: Internet Cafe1
@@ -5728,7 +5728,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Masquerade_2,1);
+      getgroupitem(IG_MASQUERADE_2);
   - Id: 12287
   - Id: 12287
     AegisName: Love_Angel
     AegisName: Love_Angel
     Name: Love Angel Magic Powder
     Name: Love Angel Magic Powder
@@ -6341,7 +6341,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Cherish_Box,1);
+      getgroupitem(IG_CHERISH_BOX);
   - Id: 12335
   - Id: 12335
     AegisName: Yummy_Skewered_Dish
     AegisName: Yummy_Skewered_Dish
     Name: Grilled Delicious Skewer
     Name: Grilled Delicious Skewer
@@ -6384,7 +6384,7 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Cherish_Box_Ori,1);
+      getgroupitem(IG_CHERISH_BOX_ORI);
   - Id: 12340
   - Id: 12340
     AegisName: Mysterious_Rice_Powder
     AegisName: Mysterious_Rice_Powder
     Name: Chewy Rice Powder
     Name: Chewy Rice Powder
@@ -6401,7 +6401,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1815;
+      pet;
   - Id: 12341
   - Id: 12341
     AegisName: Special_Alloy_Trap_Box
     AegisName: Special_Alloy_Trap_Box
     Name: Special Alloy Trap Box
     Name: Special Alloy Trap Box
@@ -6623,7 +6623,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Xmas_Gift,1);
+      getgroupitem(IG_XMAS_GIFT);
   - Id: 12356
   - Id: 12356
     AegisName: Louise_Costume_Box
     AegisName: Louise_Costume_Box
     Name: Louise Costume Box
     Name: Louise Costume Box
@@ -6634,7 +6634,7 @@ Body:
       BuyingStore: true
       BuyingStore: true
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Louise_Costume_Box,1);
+      getgroupitem(IG_LOUISE_COSTUME_BOX);
   - Id: 12357
   - Id: 12357
     AegisName: Shiny_Wing_Gown
     AegisName: Shiny_Wing_Gown
     Name: Shiny Wing Gown
     Name: Shiny Wing Gown
@@ -6642,7 +6642,7 @@ Body:
     Buy: 20
     Buy: 20
     Weight: 50
     Weight: 50
     Script: |
     Script: |
-      pet 1630;
+      pet;
   - Id: 12358
   - Id: 12358
     AegisName: Fan_Of_Wind
     AegisName: Fan_Of_Wind
     Name: Fan Of Wind
     Name: Fan Of Wind
@@ -6654,7 +6654,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1513;
+      pet;
   - Id: 12359
   - Id: 12359
     AegisName: Very_Soft_Plant
     AegisName: Very_Soft_Plant
     Name: Very Soft Plant
     Name: Very Soft Plant
@@ -6666,7 +6666,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1586;
+      pet;
   - Id: 12360
   - Id: 12360
     AegisName: Very_Red_Juice
     AegisName: Very_Red_Juice
     Name: Very Red Juice
     Name: Very Red Juice
@@ -6678,7 +6678,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1505;
+      pet;
   - Id: 12361
   - Id: 12361
     AegisName: Delicious_Shaved_Ice
     AegisName: Delicious_Shaved_Ice
     Name: Delicious Shaved Ice
     Name: Delicious Shaved Ice
@@ -6695,7 +6695,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1143;
+      pet;
   - Id: 12362
   - Id: 12362
     AegisName: Kuloren
     AegisName: Kuloren
     Name: Kuloren
     Name: Kuloren
@@ -6707,7 +6707,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1401;
+      pet;
   - Id: 12363
   - Id: 12363
     AegisName: Fit_Pipe
     AegisName: Fit_Pipe
     Name: Fit Pipe
     Name: Fit Pipe
@@ -6724,7 +6724,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1179;
+      pet;
   - Id: 12364
   - Id: 12364
     AegisName: Staff_Of_Leader
     AegisName: Staff_Of_Leader
     Name: Staff Of Leader
     Name: Staff Of Leader
@@ -6736,7 +6736,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1299;
+      pet;
   - Id: 12365
   - Id: 12365
     AegisName: Charming_Lotus
     AegisName: Charming_Lotus
     Name: Charming Lotus
     Name: Charming Lotus
@@ -6748,7 +6748,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1416;
+      pet;
   - Id: 12366
   - Id: 12366
     AegisName: Gril_Doll
     AegisName: Gril_Doll
     Name: Girl's Doll
     Name: Girl's Doll
@@ -6760,7 +6760,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1404;
+      pet;
   - Id: 12367
   - Id: 12367
     AegisName: Luxury_Whisky_Bottle
     AegisName: Luxury_Whisky_Bottle
     Name: Luxury Whisky Bottle
     Name: Luxury Whisky Bottle
@@ -6772,7 +6772,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1504;
+      pet;
   - Id: 12368
   - Id: 12368
     AegisName: Splendid_Mirror
     AegisName: Splendid_Mirror
     Name: Splendid Mirror
     Name: Splendid Mirror
@@ -6784,7 +6784,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1148;
+      pet;
   - Id: 12369
   - Id: 12369
     AegisName: Oilpalm_Coconut
     AegisName: Oilpalm_Coconut
     Name: Oilpalm Coconut
     Name: Oilpalm Coconut
@@ -6796,7 +6796,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1495;
+      pet;
   - Id: 12370
   - Id: 12370
     AegisName: Gril's_Naivety
     AegisName: Gril's_Naivety
     Name: Girl's Naivety
     Name: Girl's Naivety
@@ -6813,7 +6813,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1374;
+      pet;
   - Id: 12371
   - Id: 12371
     AegisName: Magical_Lithography
     AegisName: Magical_Lithography
     Name: Magical Lithography
     Name: Magical Lithography
@@ -6825,7 +6825,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1040;
+      pet;
   - Id: 12372
   - Id: 12372
     AegisName: Hell_Contract
     AegisName: Hell_Contract
     Name: Hell Contract
     Name: Hell Contract
@@ -6837,7 +6837,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1379;
+      pet;
   - Id: 12373
   - Id: 12373
     AegisName: Boy's_Naivety
     AegisName: Boy's_Naivety
     Name: Boy's Pure Heart
     Name: Boy's Pure Heart
@@ -6849,7 +6849,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1370;
+      pet;
   - Id: 12374
   - Id: 12374
     AegisName: Flaming_Ice
     AegisName: Flaming_Ice
     Name: Ice Fireworks
     Name: Ice Fireworks
@@ -6861,7 +6861,7 @@ Body:
     NoUse:
     NoUse:
       Sitting: true
       Sitting: true
     Script: |
     Script: |
-      pet 1837;
+      pet;
   - Id: 12375
   - Id: 12375
     AegisName: Acaraje
     AegisName: Acaraje
     Name: Akaraje
     Name: Akaraje
@@ -6875,7 +6875,7 @@ Body:
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
       specialeffect2 EF_STEAL;
       specialeffect2 EF_STEAL;
-      bonus_script "{ bonus bHit,5; bonus bAspdRate,10; }",1200,0,0,EFST_ACARAJE;
+      sc_start2 SC_ACARAJE,1200000,10,5;
   - Id: 12376
   - Id: 12376
     AegisName: Mysterious_Can2
     AegisName: Mysterious_Can2
     Name: Mysterious Can2
     Name: Mysterious Can2
@@ -7140,7 +7140,7 @@ Body:
     Flags:
     Flags:
       BuyingStore: true
       BuyingStore: true
     Script: |
     Script: |
-      pet 1519;
+      pet;
   - Id: 12396
   - Id: 12396
     AegisName: Fools_Day_Box
     AegisName: Fools_Day_Box
     Name: Gift Box?
     Name: Gift Box?
@@ -7300,7 +7300,7 @@ Body:
     Name: Leaf Cat Ball
     Name: Leaf Cat Ball
     Type: Usable
     Type: Usable
     Script: |
     Script: |
-      pet 2081;
+      pet;
   - Id: 12409
   - Id: 12409
     AegisName: Pork_Belly_H
     AegisName: Pork_Belly_H
     Name: 1st Class Pork Belly
     Name: 1st Class Pork Belly
@@ -8678,8 +8678,8 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_BleuBox,1);
-      getrandgroupitem(IG_BleuBox,1);
+      getgroupitem(IG_BLEUBOX);
+      getgroupitem(IG_BLEUBOX);
   - Id: 12703
   - Id: 12703
     AegisName: Holy_Egg_2
     AegisName: Holy_Egg_2
     Name: Holy Egg
     Name: Holy Egg
@@ -8796,7 +8796,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Easter_Scroll,1);
+      getgroupitem(IG_EASTER_SCROLL);
   - Id: 12715
   - Id: 12715
     AegisName: Black_Treasure_Box
     AegisName: Black_Treasure_Box
     Name: Black Treasure Box
     Name: Black Treasure Box
@@ -13079,7 +13079,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      getitem 7804,1;
+      getitem 2713,1;
   - Id: 13766
   - Id: 13766
     AegisName: Nagan_Box
     AegisName: Nagan_Box
     Name: Refined Nagan Box
     Name: Refined Nagan Box
@@ -21307,7 +21307,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1122;
+      pet;
   - Id: 14570
   - Id: 14570
     AegisName: Flail_Goblin_Ring
     AegisName: Flail_Goblin_Ring
     Name: Flail Goblin Ring
     Name: Flail Goblin Ring
@@ -21322,7 +21322,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1123;
+      pet;
   - Id: 14571
   - Id: 14571
     AegisName: Hammer_Goblin_Ring
     AegisName: Hammer_Goblin_Ring
     Name: Hammer Goblin Ring
     Name: Hammer Goblin Ring
@@ -21337,7 +21337,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1125;
+      pet;
   - Id: 14572
   - Id: 14572
     AegisName: Holy_Marble
     AegisName: Holy_Marble
     Name: Holy Marble
     Name: Holy Marble
@@ -21352,7 +21352,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1385;
+      pet;
   - Id: 14573
   - Id: 14573
     AegisName: Red_Burning_Stone
     AegisName: Red_Burning_Stone
     Name: Red Burning Stone
     Name: Red Burning Stone
@@ -21367,7 +21367,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1382;
+      pet;
   - Id: 14574
   - Id: 14574
     AegisName: Skull_Of_Vagabond
     AegisName: Skull_Of_Vagabond
     Name: Vagabond's Skull
     Name: Vagabond's Skull
@@ -21382,7 +21382,7 @@ Body:
       NoMail: true
       NoMail: true
       NoAuction: true
       NoAuction: true
     Script: |
     Script: |
-      pet 1208;
+      pet;
   - Id: 14575
   - Id: 14575
     AegisName: Str_Dish05_
     AegisName: Str_Dish05_
     Name: Lutie Lady's Pancake
     Name: Lutie Lady's Pancake
@@ -21622,12 +21622,12 @@ Body:
     Flags:
     Flags:
       Container: true
       Container: true
     Script: |
     Script: |
-      getrandgroupitem(IG_Pierre_Treasurebox,1);
-      getrandgroupitem(IG_Pierre_Treasurebox,1);
-      getrandgroupitem(IG_Pierre_Treasurebox,1);
-      getrandgroupitem(IG_Pierre_Treasurebox,1);
-      getrandgroupitem(IG_Pierre_Treasurebox,1);
-      getrandgroupitem(IG_Pierre_Treasurebox,1);
+      getgroupitem(IG_PIERRE_TREASUREBOX);
+      getgroupitem(IG_PIERRE_TREASUREBOX);
+      getgroupitem(IG_PIERRE_TREASUREBOX);
+      getgroupitem(IG_PIERRE_TREASUREBOX);
+      getgroupitem(IG_PIERRE_TREASUREBOX);
+      getgroupitem(IG_PIERRE_TREASUREBOX);
   - Id: 14597
   - Id: 14597
     AegisName: PhreeoniS
     AegisName: PhreeoniS
     Name: Phreeoni Scroll
     Name: Phreeoni Scroll

+ 67 - 68
db/pre-re/item_group_db.yml

@@ -1,5 +1,5 @@
 # This file is a part of rAthena.
 # This file is a part of rAthena.
-#   Copyright(C) 2023 rAthena Development Team
+#   Copyright(C) 2024 rAthena Development Team
 #   https://rathena.org - https://github.com/rathena
 #   https://rathena.org - https://github.com/rathena
 #
 #
 # This program is free software: you can redistribute it and/or modify
 # This program is free software: you can redistribute it and/or modify
@@ -25,6 +25,7 @@
 # - Group                      Group name of the item.
 # - Group                      Group name of the item.
 #   SubGroups:
 #   SubGroups:
 #     - SubGroup:              SubGroup number associated with the list of item. See doc/item_group.txt for more information.
 #     - SubGroup:              SubGroup number associated with the list of item. See doc/item_group.txt for more information.
+#       Algorithm:             Type of algorithm associated with SubGroup. (Default: SharedPool)
 #       List:                  List of item(s) for the SubGroup.
 #       List:                  List of item(s) for the SubGroup.
 #        - Index               Unique number that can be used to add the same Item with different data in the list.
 #        - Index               Unique number that can be used to add the same Item with different data in the list.
 #          Item                AegisName of item that will be obtained from this item group.
 #          Item                AegisName of item that will be obtained from this item group.
@@ -45,12 +46,13 @@
 
 
 Header:
 Header:
   Type: ITEM_GROUP_DB
   Type: ITEM_GROUP_DB
-  Version: 3
+  Version: 4
 
 
 Body:
 Body:
   - Group: ACCESORY
   - Group: ACCESORY
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Ring
             Item: Ring
@@ -181,6 +183,7 @@ Body:
   - Group: BLEUBOX
   - Group: BLEUBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Milk
             Item: Milk
@@ -218,6 +221,7 @@ Body:
   - Group: BLUEBOX
   - Group: BLUEBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -3288,6 +3292,7 @@ Body:
   - Group: BOMB
   - Group: BOMB
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Apple_Bomb
             Item: Apple_Bomb
@@ -3316,6 +3321,7 @@ Body:
   - Group: BOX
   - Group: BOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Old_Blue_Box
             Item: Old_Blue_Box
@@ -3329,6 +3335,7 @@ Body:
   - Group: CANDY
   - Group: CANDY
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Candy
             Item: Candy
@@ -3339,6 +3346,7 @@ Body:
   - Group: CARDALBUM
   - Group: CARDALBUM
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Poring_Card
             Item: Poring_Card
@@ -4429,6 +4437,7 @@ Body:
   - Group: CASH_FOOD
   - Group: CASH_FOOD
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Str_Dish10_
             Item: Str_Dish10_
@@ -4451,6 +4460,7 @@ Body:
   - Group: CHERISH_BOX
   - Group: CHERISH_BOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Dog_Cap_
             Item: Dog_Cap_
@@ -4464,6 +4474,7 @@ Body:
   - Group: CHERISH_BOX_ORI
   - Group: CHERISH_BOX_ORI
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Ragnarok_Limited_Ed
             Item: Ragnarok_Limited_Ed
@@ -4483,6 +4494,7 @@ Body:
   - Group: COOKIEBAG
   - Group: COOKIEBAG
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Candy
             Item: Candy
@@ -4535,6 +4547,7 @@ Body:
   - Group: EASTER_SCROLL
   - Group: EASTER_SCROLL
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: No_Recipient
             Item: No_Recipient
@@ -4581,6 +4594,7 @@ Body:
   - Group: EGGBOY
   - Group: EGGBOY
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Grape
             Item: Grape
@@ -4606,6 +4620,7 @@ Body:
   - Group: EGGGIRL
   - Group: EGGGIRL
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Grape
             Item: Grape
@@ -4631,6 +4646,7 @@ Body:
   - Group: ELEMENT
   - Group: ELEMENT
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Scarlet_Pts
             Item: Scarlet_Pts
@@ -4644,73 +4660,10 @@ Body:
           - Index: 3
           - Index: 3
             Item: Lime_Green_Pts
             Item: Lime_Green_Pts
             Rate: 1
             Rate: 1
-  - Group: FINDINGORE
-    SubGroups:
-      - SubGroup: 1
-        List:
-          - Index: 0
-            Item: Emperium
-            Rate: 3
-          - Index: 1
-            Item: Oridecon_Stone
-            Rate: 20
-          - Index: 2
-            Item: Elunium_Stone
-            Rate: 20
-          - Index: 3
-            Item: Gold
-            Rate: 2
-          - Index: 4
-            Item: Oridecon
-            Rate: 10
-          - Index: 5
-            Item: Elunium
-            Rate: 10
-          - Index: 6
-            Item: Boody_Red
-            Rate: 30
-          - Index: 7
-            Item: Crystal_Blue
-            Rate: 30
-          - Index: 8
-            Item: Wind_Of_Verdure
-            Rate: 30
-          - Index: 9
-            Item: Yellow_Live
-            Rate: 30
-          - Index: 10
-            Item: Flame_Heart
-            Rate: 15
-          - Index: 11
-            Item: Mistic_Frozen
-            Rate: 15
-          - Index: 12
-            Item: Rough_Wind
-            Rate: 15
-          - Index: 13
-            Item: Great_Nature
-            Rate: 15
-          - Index: 14
-            Item: Iron
-            Rate: 80
-          - Index: 15
-            Item: Steel
-            Rate: 50
-          - Index: 16
-            Item: Iron_Ore
-            Rate: 100
-          - Index: 17
-            Item: Coal
-            Rate: 60
-          - Index: 18
-            Item: Phracon
-            Rate: 95
-          - Index: 19
-            Item: Emveretarcon
-            Rate: 55
   - Group: FIRSTAID
   - Group: FIRSTAID
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -4769,6 +4722,7 @@ Body:
   - Group: FISH
   - Group: FISH
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Fish_Slice
             Item: Fish_Slice
@@ -4779,6 +4733,7 @@ Body:
   - Group: FOOD
   - Group: FOOD
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Royal_Jelly
             Item: Royal_Jelly
@@ -4849,6 +4804,7 @@ Body:
   - Group: FOODBAG
   - Group: FOODBAG
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Apple
             Item: Apple
@@ -4985,6 +4941,7 @@ Body:
   - Group: FRUIT
   - Group: FRUIT
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Apple
             Item: Apple
@@ -5004,6 +4961,7 @@ Body:
   - Group: GEMSTONE
   - Group: GEMSTONE
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Yellow_Gemstone
             Item: Yellow_Gemstone
@@ -5017,6 +4975,7 @@ Body:
   - Group: GIFTBOX
   - Group: GIFTBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -5231,6 +5190,7 @@ Body:
   - Group: GIFTBOXCHINA
   - Group: GIFTBOXCHINA
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -6027,6 +5987,7 @@ Body:
   - Group: GIFTBOX_1
   - Group: GIFTBOX_1
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -6241,6 +6202,7 @@ Body:
   - Group: GIFTBOX_2
   - Group: GIFTBOX_2
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -6455,6 +6417,7 @@ Body:
   - Group: GIFTBOX_3
   - Group: GIFTBOX_3
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -6669,6 +6632,7 @@ Body:
   - Group: GIFTBOX_4
   - Group: GIFTBOX_4
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -6883,6 +6847,7 @@ Body:
   - Group: GREENBOX
   - Group: GREENBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Chocolate_Drink
             Item: Chocolate_Drink
@@ -6920,6 +6885,7 @@ Body:
   - Group: HERB
   - Group: HERB
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Herb
             Item: Red_Herb
@@ -6933,6 +6899,7 @@ Body:
   - Group: HOMETOWNGIFT
   - Group: HOMETOWNGIFT
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Korea_Rice_Cake
             Item: Korea_Rice_Cake
@@ -6961,6 +6928,7 @@ Body:
   - Group: JEWEL
   - Group: JEWEL
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Yellow_Gemstone
             Item: Yellow_Gemstone
@@ -7018,13 +6986,14 @@ Body:
             Rate: 3
             Rate: 3
           - Index: 18
           - Index: 18
             Item: Crystal_Jewel___
             Item: Crystal_Jewel___
-            Rate: 27
+            Rate: 2
           - Index: 19
           - Index: 19
             Item: Glass_Bead
             Item: Glass_Bead
             Rate: 50
             Rate: 50
   - Group: JUICE
   - Group: JUICE
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Apple_Juice
             Item: Apple_Juice
@@ -7038,6 +7007,7 @@ Body:
   - Group: LOTTOBOX
   - Group: LOTTOBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Lotto31
             Item: Lotto31
@@ -7072,6 +7042,7 @@ Body:
   - Group: LOUISE_COSTUME_BOX
   - Group: LOUISE_COSTUME_BOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Bag
             Item: Red_Bag
@@ -7082,6 +7053,7 @@ Body:
   - Group: MAGICCARDALBUM
   - Group: MAGICCARDALBUM
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Ghostring_Card
             Item: Ghostring_Card
@@ -7179,6 +7151,7 @@ Body:
   - Group: MASK
   - Group: MASK
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Mr_Smile
             Item: Mr_Smile
@@ -7222,6 +7195,7 @@ Body:
   - Group: MASQUERADE
   - Group: MASQUERADE
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Drooping_Nine_Tail_
             Item: Drooping_Nine_Tail_
@@ -7238,6 +7212,7 @@ Body:
   - Group: MASQUERADE_2
   - Group: MASQUERADE_2
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Dress_Hat
             Item: Dress_Hat
@@ -7254,6 +7229,7 @@ Body:
   - Group: MEAT
   - Group: MEAT
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Meat
             Item: Meat
@@ -7264,6 +7240,7 @@ Body:
   - Group: MERCENARY
   - Group: MERCENARY
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Bow_Mercenary_Scroll1
             Item: Bow_Mercenary_Scroll1
@@ -7358,6 +7335,7 @@ Body:
   - Group: MINERAL
   - Group: MINERAL
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Emperium
             Item: Emperium
@@ -7422,6 +7400,7 @@ Body:
   - Group: OLDGIFTBOX
   - Group: OLDGIFTBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Fallen_Leaves_
             Item: Fallen_Leaves_
@@ -7435,6 +7414,7 @@ Body:
   - Group: ORE
   - Group: ORE
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Iron_Ore
             Item: Iron_Ore
@@ -7499,6 +7479,7 @@ Body:
   - Group: PIERRE_TREASUREBOX
   - Group: PIERRE_TREASUREBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Old_Blue_Box
             Item: Old_Blue_Box
@@ -7587,6 +7568,7 @@ Body:
   - Group: POISON
   - Group: POISON
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Poison_Paralysis
             Item: Poison_Paralysis
@@ -7615,6 +7597,7 @@ Body:
   - Group: POTION
   - Group: POTION
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -7631,6 +7614,7 @@ Body:
   - Group: QUIVER
   - Group: QUIVER
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Arrow_Container
             Item: Arrow_Container
@@ -7674,6 +7658,7 @@ Body:
   - Group: RECOVERY
   - Group: RECOVERY
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Fruit_Of_Mastela
             Item: Fruit_Of_Mastela
@@ -7688,7 +7673,7 @@ Body:
             Item: Red_Slim_Potion
             Item: Red_Slim_Potion
             Rate: 10
             Rate: 10
           - Index: 4
           - Index: 4
-            Item: Resist_Fire
+            Item: Resist_Earth
             Rate: 10
             Rate: 10
           - Index: 5
           - Index: 5
             Item: Yellow_Herb
             Item: Yellow_Herb
@@ -7720,6 +7705,7 @@ Body:
   - Group: REDBOX
   - Group: REDBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Cat_Hat
             Item: Cat_Hat
@@ -7766,6 +7752,7 @@ Body:
   - Group: REDBOX_2
   - Group: REDBOX_2
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Alice_Doll
             Item: Alice_Doll
@@ -7782,6 +7769,7 @@ Body:
   - Group: RESIST
   - Group: RESIST
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Resist_Fire
             Item: Resist_Fire
@@ -7798,6 +7786,7 @@ Body:
   - Group: SCROLL
   - Group: SCROLL
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Earth_Scroll_1_3
             Item: Earth_Scroll_1_3
@@ -7856,6 +7845,7 @@ Body:
   - Group: TAMING
   - Group: TAMING
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Unripe_Apple
             Item: Unripe_Apple
@@ -8010,6 +8000,7 @@ Body:
   - Group: THROWABLE
   - Group: THROWABLE
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Mysterious_Powder
             Item: Mysterious_Powder
@@ -8083,6 +8074,7 @@ Body:
   - Group: TOKEN_OF_SIEGFRIED
   - Group: TOKEN_OF_SIEGFRIED
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: F_Token_Of_Siegfried
             Item: F_Token_Of_Siegfried
@@ -8096,6 +8088,7 @@ Body:
   - Group: TRESURE_BOX_WOE
   - Group: TRESURE_BOX_WOE
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Old_Blue_Box
             Item: Old_Blue_Box
@@ -8160,6 +8153,7 @@ Body:
   - Group: VIOLETBOX
   - Group: VIOLETBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Red_Potion
             Item: Red_Potion
@@ -10933,6 +10927,7 @@ Body:
   - Group: XMAS_GIFT
   - Group: XMAS_GIFT
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: HandMade_Chocolate
             Item: HandMade_Chocolate
@@ -10994,6 +10989,7 @@ Body:
   - Group: YELLOWBOX
   - Group: YELLOWBOX
     SubGroups:
     SubGroups:
       - SubGroup: 1
       - SubGroup: 1
+        Algorithm: Random
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Elephant_Hat_
             Item: Elephant_Hat_
@@ -11010,6 +11006,7 @@ Body:
   - Group: MF_NOTELEPORT
   - Group: MF_NOTELEPORT
     SubGroups:
     SubGroups:
       - SubGroup: 0
       - SubGroup: 0
+        Algorithm: All
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Wing_Of_Fly
             Item: Wing_Of_Fly
@@ -11024,6 +11021,7 @@ Body:
   - Group: MF_NORETURN
   - Group: MF_NORETURN
     SubGroups:
     SubGroups:
       - SubGroup: 0
       - SubGroup: 0
+        Algorithm: All
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Wing_Of_Butterfly
             Item: Wing_Of_Butterfly
@@ -11072,6 +11070,7 @@ Body:
   - Group: GIANT_FLY_WING
   - Group: GIANT_FLY_WING
     SubGroups:
     SubGroups:
       - SubGroup: 0
       - SubGroup: 0
+        Algorithm: All
         List:
         List:
           - Index: 0
           - Index: 0
             Item: Giant_Fly_Wing
             Item: Giant_Fly_Wing

File diff suppressed because it is too large
+ 355 - 1938
db/pre-re/job_stats.yml


+ 66 - 48
db/pre-re/pet_db.yml

@@ -65,7 +65,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bLuk,2;
         bonus bLuk,2;
         bonus bCritical,1;
         bonus bCritical,1;
@@ -80,7 +80,7 @@ Body:
     CaptureRate: 1500
     CaptureRate: 1500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bHit,3;
         bonus bHit,3;
         bonus bAtk,3;
         bonus bAtk,3;
@@ -95,7 +95,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bLuk,2;
         bonus bLuk,2;
         bonus2 bSubEle,Ele_Poison,10;
         bonus2 bSubEle,Ele_Poison,10;
@@ -111,7 +111,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bCritical,2;
         bonus bCritical,2;
         bonus bAtk,2;
         bonus bAtk,2;
@@ -126,7 +126,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bStr,1;
         bonus bStr,1;
         bonus bAtk,5;
         bonus bAtk,5;
@@ -141,7 +141,7 @@ Body:
     CaptureRate: 1500
     CaptureRate: 1500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bAgi,1;
         bonus bAgi,1;
         bonus bFlee,2;
         bonus bFlee,2;
@@ -156,7 +156,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bFlee,6;
         bonus bFlee,6;
         bonus bAgi,-1;
         bonus bAgi,-1;
@@ -171,7 +171,7 @@ Body:
     CaptureRate: 500
     CaptureRate: 500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bFlee,-5;
         bonus bFlee,-5;
         bonus bFlee2,2;
         bonus bFlee2,2;
@@ -187,7 +187,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bVit,1;
         bonus bVit,1;
         bonus bMaxHP,50;
         bonus bMaxHP,50;
@@ -203,7 +203,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bInt,1;
         bonus bInt,1;
         bonus bMaxSP,50;
         bonus bMaxSP,50;
@@ -219,7 +219,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bHPrecovRate,5;
         bonus bHPrecovRate,5;
         bonus bMaxHP,25;
         bonus bMaxHP,25;
@@ -235,7 +235,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bHit,5;
         bonus bHit,5;
         bonus bAtk,-2;
         bonus bAtk,-2;
@@ -251,7 +251,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bStr,1;
         bonus bStr,1;
         bonus bInt,1;
         bonus bInt,1;
@@ -266,7 +266,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMaxHP,150;
         bonus bMaxHP,150;
         bonus bMaxSP,-10;
         bonus bMaxSP,-10;
@@ -281,7 +281,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bAgi,1;
         bonus bAgi,1;
         bonus bFlee2,1;
         bonus bFlee2,1;
@@ -296,7 +296,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bCritical,3;
         bonus bCritical,3;
         bonus bLuk,-1;
         bonus bLuk,-1;
@@ -311,7 +311,7 @@ Body:
     CaptureRate: 500
     CaptureRate: 500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bAtk,10;
         bonus bAtk,10;
         bonus bDef,-3;
         bonus bDef,-3;
@@ -327,7 +327,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bInt,1;
         bonus bInt,1;
         bonus bDef,1;
         bonus bDef,1;
@@ -343,7 +343,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMatkRate,1;
         bonus bMatkRate,1;
         bonus bAtkRate,-1;
         bonus bAtkRate,-1;
@@ -359,7 +359,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bStr,1;
         bonus bStr,1;
         bonus bDex,1;
         bonus bDex,1;
@@ -375,7 +375,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMatkRate,-1;
         bonus bMatkRate,-1;
         bonus bAtkRate,1;
         bonus bAtkRate,1;
@@ -391,7 +391,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bDef,-2;
         bonus bDef,-2;
         bonus bMdef,-2;
         bonus bMdef,-2;
@@ -408,7 +408,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMatkRate,1;
         bonus bMatkRate,1;
         bonus bAtkRate,1;
         bonus bAtkRate,1;
@@ -426,7 +426,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bDef,1;
         bonus bDef,1;
         bonus bMdef,1;
         bonus bMdef,1;
@@ -442,7 +442,7 @@ Body:
     CaptureRate: 500
     CaptureRate: 500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bVit,1;
         bonus bVit,1;
         bonus2 bResEff,Eff_Stun,100;
         bonus2 bResEff,Eff_Stun,100;
@@ -457,7 +457,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bAddRace,RC_Demihuman,2;
         bonus2 bAddRace,RC_Demihuman,2;
         bonus2 bMagicAddRace,RC_DemiHuman,2;
         bonus2 bMagicAddRace,RC_DemiHuman,2;
@@ -474,7 +474,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMdef,1;
         bonus bMdef,1;
         bonus2 bSubRace,RC_DemiHuman,1;
         bonus2 bSubRace,RC_DemiHuman,1;
@@ -488,7 +488,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bSubEle,Ele_Neutral,1;
         bonus2 bSubEle,Ele_Neutral,1;
         bonus bMaxHPrate,-1;
         bonus bMaxHPrate,-1;
@@ -503,7 +503,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMaxHP,30;
         bonus bMaxHP,30;
         bonus2 bSubEle,Ele_Water,1;
         bonus2 bSubEle,Ele_Water,1;
@@ -518,12 +518,30 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bDef,1;
         bonus bDef,1;
         bonus2 bSubRace,RC_DemiHuman,1;
         bonus2 bSubRace,RC_DemiHuman,1;
         bonus2 bSubRace,RC_Player_Human,1;
         bonus2 bSubRace,RC_Player_Human,1;
       }
       }
+# On official pre-renewal servers, only CHUNG_E (1519) was tameable.
+# Uncomment the following lines to enable CHUNG_E_ (1631) too.
+#  - Mob: CHUNG_E_
+#    TameItem: Tantanmen
+#    EggItem: Chung_E_Egg
+#    FoodItem: Bun_
+#    Fullness: 3
+#    IntimacyFed: 50
+#    CaptureRate: 2000
+#    SpecialPerformance: false
+#    Script: >
+#      .@i = getpetinfo(PETINFO_INTIMATE);
+#
+#      if( .@i >= PET_INTIMATE_LOYAL ){
+#        bonus bDef,1;
+#        bonus2 bSubRace,RC_DemiHuman,1;
+#        bonus2 bSubRace,RC_Player_Human,1;
+#      }
   - Mob: ECLIPSE_P
   - Mob: ECLIPSE_P
     EggItem: Spring_Rabbit_Egg
     EggItem: Spring_Rabbit_Egg
     FoodItem: Bok_Choy
     FoodItem: Bok_Choy
@@ -581,7 +599,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bAgi,3;
         bonus bAgi,3;
         bonus bDex,1;
         bonus bDex,1;
@@ -604,7 +622,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMaxHP,100;
         bonus bMaxHP,100;
         bonus bFlee,-5;
         bonus bFlee,-5;
@@ -620,7 +638,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bSPrecovRate,3;
         bonus bSPrecovRate,3;
       }
       }
@@ -635,7 +653,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bVit,1;
         bonus bVit,1;
         bonus2 bResEff,Eff_Stone,500;
         bonus2 bResEff,Eff_Stone,500;
@@ -651,7 +669,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bFlee,7;
         bonus bFlee,7;
         bonus bDef,-3;
         bonus bDef,-3;
@@ -667,7 +685,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bAddRace,RC_DemiHuman,3;
         bonus2 bAddRace,RC_DemiHuman,3;
         bonus2 bAddRace,RC_Player_Human,3;
         bonus2 bAddRace,RC_Player_Human,3;
@@ -683,7 +701,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bHpDrainRate,50,5;
         bonus2 bHpDrainRate,50,5;
       }
       }
@@ -698,7 +716,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMaxSPRate,3;
         bonus bMaxSPRate,3;
       }
       }
@@ -713,7 +731,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bResEff,Eff_Sleep,10000;
         bonus2 bResEff,Eff_Sleep,10000;
       }
       }
@@ -728,7 +746,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bAgi,2;
         bonus bAgi,2;
       }
       }
@@ -743,7 +761,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bInt,1;
         bonus bInt,1;
         bonus bCastrate,-3;
         bonus bCastrate,-3;
@@ -759,7 +777,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMaxSP,30;
         bonus bMaxSP,30;
         bonus bSPrecovRate,5;
         bonus bSPrecovRate,5;
@@ -775,7 +793,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bSubEle,Ele_Fire,3;
         bonus2 bSubEle,Ele_Fire,3;
       }
       }
@@ -790,7 +808,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bCritAtkRate,5;
         bonus bCritAtkRate,5;
       }
       }
@@ -805,7 +823,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMaxHPRate,3;
         bonus bMaxHPRate,3;
         bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10;
         bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10;
@@ -821,7 +839,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus bMaxSP,10;
         bonus bMaxSP,10;
       }
       }
@@ -836,7 +854,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bSubRace,RC_Brute,3;
         bonus2 bSubRace,RC_Brute,3;
         bonus2 bSubRace,RC_Player_Doram,3;
         bonus2 bSubRace,RC_Player_Doram,3;
@@ -861,7 +879,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if( .@i >= PET_INTIMATE_LOYAL ){
       if( .@i >= PET_INTIMATE_LOYAL ){
         bonus2 bSubEle,Ele_Fire,2;
         bonus2 bSubEle,Ele_Fire,2;
         bonus2 bAddEle,Ele_Fire,2;
         bonus2 bAddEle,Ele_Fire,2;

+ 2 - 0
db/pre-re/size_fix.yml

@@ -36,3 +36,5 @@ Body:
   - Weapon: Knuckle
   - Weapon: Knuckle
     Medium: 75
     Medium: 75
     Large: 50
     Large: 50
+  - Weapon: Whip
+    Large: 50

+ 10 - 29
db/pre-re/skill_db.yml

@@ -11618,7 +11618,6 @@ Body:
     SplashArea: 1
     SplashArea: 1
     Knockback: 2
     Knockback: 2
     CastCancel: true
     CastCancel: true
-    AfterCastActDelay: 1000
     Duration1:
     Duration1:
       - Level: 1
       - Level: 1
         Time: 10000
         Time: 10000
@@ -11631,7 +11630,7 @@ Body:
     Unit:
     Unit:
       Id: Dummyskill
       Id: Dummyskill
       Range: 1
       Range: 1
-      Interval: 100
+      Interval: 20
       Target: Enemy
       Target: Enemy
     Status: Warm
     Status: Warm
   - Id: 429
   - Id: 429
@@ -11652,7 +11651,6 @@ Body:
     SplashArea: 1
     SplashArea: 1
     Knockback: 2
     Knockback: 2
     CastCancel: true
     CastCancel: true
-    AfterCastActDelay: 1000
     Duration1:
     Duration1:
       - Level: 1
       - Level: 1
         Time: 10000
         Time: 10000
@@ -11665,7 +11663,7 @@ Body:
     Unit:
     Unit:
       Id: Dummyskill
       Id: Dummyskill
       Range: 1
       Range: 1
-      Interval: 100
+      Interval: 20
       Target: Enemy
       Target: Enemy
     Status: Warm
     Status: Warm
   - Id: 430
   - Id: 430
@@ -11686,7 +11684,6 @@ Body:
     SplashArea: 1
     SplashArea: 1
     Knockback: 2
     Knockback: 2
     CastCancel: true
     CastCancel: true
-    AfterCastActDelay: 1000
     Duration1:
     Duration1:
       - Level: 1
       - Level: 1
         Time: 10000
         Time: 10000
@@ -11699,7 +11696,7 @@ Body:
     Unit:
     Unit:
       Id: Dummyskill
       Id: Dummyskill
       Range: 1
       Range: 1
-      Interval: 100
+      Interval: 20
       Target: Enemy
       Target: Enemy
     Status: Warm
     Status: Warm
   - Id: 431
   - Id: 431
@@ -30822,7 +30819,6 @@ Body:
     TargetType: Self
     TargetType: Self
     DamageFlags:
     DamageFlags:
       NoDamage: true
       NoDamage: true
-    Hit: Single
     AfterCastActDelay: 1000
     AfterCastActDelay: 1000
     AfterCastWalkDelay: 1000
     AfterCastWalkDelay: 1000
     Requires:
     Requires:
@@ -30834,7 +30830,6 @@ Body:
     TargetType: Self
     TargetType: Self
     DamageFlags:
     DamageFlags:
       NoDamage: true
       NoDamage: true
-    Hit: Single
     AfterCastActDelay: 30000
     AfterCastActDelay: 30000
     AfterCastWalkDelay: 1000
     AfterCastWalkDelay: 1000
     Duration1:
     Duration1:
@@ -30865,8 +30860,6 @@ Body:
     Name: HAMI_SKIN
     Name: HAMI_SKIN
     Description: Adamantium Skin
     Description: Adamantium Skin
     MaxLevel: 5
     MaxLevel: 5
-    DamageFlags:
-      NoDamage: true
   - Id: 8008
   - Id: 8008
     Name: HAMI_BLOODLUST
     Name: HAMI_BLOODLUST
     Description: Bloodlust
     Description: Bloodlust
@@ -30874,7 +30867,6 @@ Body:
     TargetType: Self
     TargetType: Self
     DamageFlags:
     DamageFlags:
       NoDamage: true
       NoDamage: true
-    Hit: Single
     AfterCastActDelay:
     AfterCastActDelay:
       - Level: 1
       - Level: 1
         Time: 300000
         Time: 300000
@@ -31031,19 +31023,7 @@ Body:
     MaxLevel: 5
     MaxLevel: 5
     Type: Magic
     Type: Magic
     TargetType: Attack
     TargetType: Attack
-    Range: 15
-    Hit: Single
-    HitCount:
-      - Level: 1
-        Count: 1
-      - Level: 2
-        Count: 2
-      - Level: 3
-        Count: 3
-      - Level: 4
-        Count: 4
-      - Level: 5
-        Count: 5
+    Range: 9
     Requires:
     Requires:
       SpCost:
       SpCost:
         - Level: 1
         - Level: 1
@@ -31060,10 +31040,10 @@ Body:
     Name: HVAN_CHAOTIC
     Name: HVAN_CHAOTIC
     Description: Benediction of Chaos
     Description: Benediction of Chaos
     MaxLevel: 5
     MaxLevel: 5
+    Type: Magic
     TargetType: Self
     TargetType: Self
     DamageFlags:
     DamageFlags:
       NoDamage: true
       NoDamage: true
-    Hit: Single
     AfterCastWalkDelay: 1500
     AfterCastWalkDelay: 1500
     Requires:
     Requires:
       SpCost: 40
       SpCost: 40
@@ -31071,8 +31051,6 @@ Body:
     Name: HVAN_INSTRUCT
     Name: HVAN_INSTRUCT
     Description: Instruct
     Description: Instruct
     MaxLevel: 5
     MaxLevel: 5
-    DamageFlags:
-      NoDamage: true
   - Id: 8016
   - Id: 8016
     Name: HVAN_EXPLOSION
     Name: HVAN_EXPLOSION
     Description: Bio Explosion
     Description: Bio Explosion
@@ -31084,10 +31062,13 @@ Body:
       IgnoreElement: true
       IgnoreElement: true
       IgnoreFlee: true
       IgnoreFlee: true
       IgnoreDefCard: true
       IgnoreDefCard: true
+    Flags:
+      TargetTrap: true
     Hit: Single
     Hit: Single
     HitCount: 1
     HitCount: 1
-    Element: Weapon
-    SplashArea: 4
+    Element: Neutral
+    SplashArea: 5
+    Duration1: 1500
     Requires:
     Requires:
       SpCost: 1
       SpCost: 1
   - Id: 8018
   - Id: 8018

+ 30 - 0
db/pre-re/statpoint.yml

@@ -552,3 +552,33 @@ Body:
     Points: 4545
     Points: 4545
   - Level: 260
   - Level: 260
     Points: 4545
     Points: 4545
+  - Level: 261
+    Points: 4545
+  - Level: 262
+    Points: 4545
+  - Level: 263
+    Points: 4545
+  - Level: 264
+    Points: 4545
+  - Level: 265
+    Points: 4545
+  - Level: 266
+    Points: 4545
+  - Level: 267
+    Points: 4545
+  - Level: 268
+    Points: 4545
+  - Level: 269
+    Points: 4545
+  - Level: 270
+    Points: 4545
+  - Level: 271
+    Points: 4545
+  - Level: 272
+    Points: 4545
+  - Level: 273
+    Points: 4545
+  - Level: 274
+    Points: 4545
+  - Level: 275
+    Points: 4545

File diff suppressed because it is too large
+ 150 - 307
db/pre-re/status.yml


+ 40 - 40
db/re/enchantgrade.yml

@@ -76,15 +76,15 @@ Body:
               - Refine: 15
               - Refine: 15
                 Chance: 7000
                 Chance: 7000
               - Refine: 16
               - Refine: 16
-                Chance: 7000
+                Chance: 8000
               - Refine: 17
               - Refine: 17
-                Chance: 7000
+                Chance: 8000
               - Refine: 18
               - Refine: 18
-                Chance: 7000
+                Chance: 8000
               - Refine: 19
               - Refine: 19
-                Chance: 7000
+                Chance: 8000
               - Refine: 20
               - Refine: 20
-                Chance: 7000
+                Chance: 8000
             Bonus: 10
             Bonus: 10
             Catalyst:
             Catalyst:
                 Item: Blessed_Etel_Dust
                 Item: Blessed_Etel_Dust
@@ -116,15 +116,15 @@ Body:
               - Refine: 15
               - Refine: 15
                 Chance: 6000
                 Chance: 6000
               - Refine: 16
               - Refine: 16
-                Chance: 6000
+                Chance: 7000
               - Refine: 17
               - Refine: 17
-                Chance: 6000
+                Chance: 7000
               - Refine: 18
               - Refine: 18
-                Chance: 6000
+                Chance: 7000
               - Refine: 19
               - Refine: 19
-                Chance: 6000
+                Chance: 7000
               - Refine: 20
               - Refine: 20
-                Chance: 6000
+                Chance: 7000
             Bonus: 30
             Bonus: 30
             Catalyst:
             Catalyst:
                 Item: Blessed_Etel_Dust
                 Item: Blessed_Etel_Dust
@@ -154,15 +154,15 @@ Body:
               - Refine: 15
               - Refine: 15
                 Chance: 5000
                 Chance: 5000
               - Refine: 16
               - Refine: 16
-                Chance: 5000
+                Chance: 6000
               - Refine: 17
               - Refine: 17
-                Chance: 5000
+                Chance: 6000
               - Refine: 18
               - Refine: 18
-                Chance: 5000
+                Chance: 6000
               - Refine: 19
               - Refine: 19
-                Chance: 5000
+                Chance: 6000
               - Refine: 20
               - Refine: 20
-                Chance: 5000
+                Chance: 6000
             Bonus: 50
             Bonus: 50
             AnnounceFail: true
             AnnounceFail: true
             Catalyst:
             Catalyst:
@@ -193,15 +193,15 @@ Body:
               - Refine: 15
               - Refine: 15
                 Chance: 4000
                 Chance: 4000
               - Refine: 16
               - Refine: 16
-                Chance: 4000
+                Chance: 5000
               - Refine: 17
               - Refine: 17
-                Chance: 4000
+                Chance: 5000
               - Refine: 18
               - Refine: 18
-                Chance: 4000
+                Chance: 5000
               - Refine: 19
               - Refine: 19
-                Chance: 4000
+                Chance: 5000
               - Refine: 20
               - Refine: 20
-                Chance: 4000
+                Chance: 5000
             Bonus: 100
             Bonus: 100
             AnnounceFail: true
             AnnounceFail: true
             Catalyst:
             Catalyst:
@@ -240,15 +240,15 @@ Body:
               - Refine: 15
               - Refine: 15
                 Chance: 7000
                 Chance: 7000
               - Refine: 16
               - Refine: 16
-                Chance: 7000
+                Chance: 8000
               - Refine: 17
               - Refine: 17
-                Chance: 7000
+                Chance: 8000
               - Refine: 18
               - Refine: 18
-                Chance: 7000
+                Chance: 8000
               - Refine: 19
               - Refine: 19
-                Chance: 7000
+                Chance: 8000
               - Refine: 20
               - Refine: 20
-                Chance: 7000
+                Chance: 8000
             Bonus: 10
             Bonus: 10
             Catalyst:
             Catalyst:
                 Item: Blessed_Etel_Dust
                 Item: Blessed_Etel_Dust
@@ -280,15 +280,15 @@ Body:
               - Refine: 15
               - Refine: 15
                 Chance: 6000
                 Chance: 6000
               - Refine: 16
               - Refine: 16
-                Chance: 6000
+                Chance: 7000
               - Refine: 17
               - Refine: 17
-                Chance: 6000
+                Chance: 7000
               - Refine: 18
               - Refine: 18
-                Chance: 6000
+                Chance: 7000
               - Refine: 19
               - Refine: 19
-                Chance: 6000
+                Chance: 7000
               - Refine: 20
               - Refine: 20
-                Chance: 6000
+                Chance: 7000
             Bonus: 30
             Bonus: 30
             Catalyst:
             Catalyst:
                 Item: Blessed_Etel_Dust
                 Item: Blessed_Etel_Dust
@@ -318,15 +318,15 @@ Body:
               - Refine: 15
               - Refine: 15
                 Chance: 5000
                 Chance: 5000
               - Refine: 16
               - Refine: 16
-                Chance: 5000
+                Chance: 6000
               - Refine: 17
               - Refine: 17
-                Chance: 5000
+                Chance: 6000
               - Refine: 18
               - Refine: 18
-                Chance: 5000
+                Chance: 6000
               - Refine: 19
               - Refine: 19
-                Chance: 5000
+                Chance: 6000
               - Refine: 20
               - Refine: 20
-                Chance: 5000
+                Chance: 6000
             Bonus: 50
             Bonus: 50
             AnnounceFail: true
             AnnounceFail: true
             Catalyst:
             Catalyst:
@@ -357,15 +357,15 @@ Body:
               - Refine: 15
               - Refine: 15
                 Chance: 4000
                 Chance: 4000
               - Refine: 16
               - Refine: 16
-                Chance: 4000
+                Chance: 5000
               - Refine: 17
               - Refine: 17
-                Chance: 4000
+                Chance: 5000
               - Refine: 18
               - Refine: 18
-                Chance: 4000
+                Chance: 5000
               - Refine: 19
               - Refine: 19
-                Chance: 4000
+                Chance: 5000
               - Refine: 20
               - Refine: 20
-                Chance: 4000
+                Chance: 5000
             Bonus: 100
             Bonus: 100
             AnnounceFail: true
             AnnounceFail: true
             Catalyst:
             Catalyst:

+ 3768 - 76
db/re/item_combos.yml

@@ -411,14 +411,16 @@ Body:
       bonus bAspdRate,15;
       bonus bAspdRate,15;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - Bone_Wand
-          - Skull_Cap
+          - Bone_Wand    # 1662
+          - Skull_Cap    # 18539
       - Combo:
       - Combo:
-          - Thorn_Staff
-          - Skull_Cap
+          - Thorn_Staff   # 1636
+          - Skull_Cap    # 18539
     Script: |
     Script: |
-      bonus bMatk,10*getequiprefinerycnt(EQI_HAND_R);
-      bonus bVariableCastrate,-10;
+      .@r = getequiprefinerycnt(EQI_HAND_R);
+      bonus bMatk,10*.@r;
+      if (.@r>=10)
+         bonus bVariableCastrate,-10;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - Staff_Of_Wing
           - Staff_Of_Wing
@@ -2690,7 +2692,7 @@ Body:
       bonus2 bVariableCastrate,"PR_MAGNUS",-25;
       bonus2 bVariableCastrate,"PR_MAGNUS",-25;
       bonus bHealPower,10;
       bonus bHealPower,10;
       bonus bAddItemHealRate,10;
       bonus bAddItemHealRate,10;
-      autobonus2 "{ bonus bIgnoreMDefRace,RC_All; }",getequiprefinerycnt(EQI_HAND_R)*20,2000,BF_SHORT|BF_NORMAL;
+      autobonus2 "{ bonus2 bIgnoreMdefRaceRate,RC_All,100; }",getequiprefinerycnt(EQI_HAND_R)*20,2000,BF_SHORT|BF_NORMAL;
       /* Confirm: Success rate and duration */
       /* Confirm: Success rate and duration */
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -11739,7 +11741,7 @@ Body:
           - S2_Spirit_M_E_Weapon
           - S2_Spirit_M_E_Weapon
     Script: |
     Script: |
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25) {
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25) {
-         bonus bIgnoreMDefRace,RC_DemiHuman;
+         bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -11749,7 +11751,7 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
-         bonus bIgnoreMDefRace,RC_DemiHuman;
+         bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - S_Tempest_Earring
           - S_Tempest_Earring
@@ -11758,7 +11760,7 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
-         bonus bIgnoreMDefRace,RC_Demon;
+         bonus2 bIgnoreMdefRaceRate,RC_Demon,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - S_Tempest_Earring
           - S_Tempest_Earring
@@ -11767,8 +11769,8 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25) {
       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;
+         bonus2 bIgnoreMdefRaceRate,RC_Brute,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -11778,7 +11780,7 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
-         bonus bIgnoreMDefRace,RC_Insect;
+         bonus2 bIgnoreMdefRaceRate,RC_Insect,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - S_Tempest_Earring
           - S_Tempest_Earring
@@ -11787,7 +11789,7 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
-         bonus bIgnoreMDefRace,RC_Fish;
+         bonus2 bIgnoreMdefRaceRate,RC_Fish,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - S_Tempest_Earring
           - S_Tempest_Earring
@@ -11796,7 +11798,7 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
-         bonus bIgnoreMDefRace,RC_Dragon;
+         bonus2 bIgnoreMdefRaceRate,RC_Dragon,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - S_Tempest_Earring
           - S_Tempest_Earring
@@ -11805,7 +11807,7 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
-         bonus bIgnoreMDefRace,RC_Angel;
+         bonus2 bIgnoreMdefRaceRate,RC_Angel,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - S_Tempest_Earring
           - S_Tempest_Earring
@@ -11814,7 +11816,7 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
-         bonus bIgnoreMDefRace,RC_Formless;
+         bonus2 bIgnoreMdefRaceRate,RC_Formless,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - S_Tempest_Earring
           - S_Tempest_Earring
@@ -11823,7 +11825,7 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
-         bonus bIgnoreMDefRace,RC_Undead;
+         bonus2 bIgnoreMdefRaceRate,RC_Undead,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - S_Tempest_Earring
           - S_Tempest_Earring
@@ -11832,7 +11834,7 @@ Body:
     Script: |
     Script: |
       bonus bMatk,5;
       bonus bMatk,5;
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
       if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 25)
-         bonus bIgnoreMDefRace,RC_Plant;
+         bonus2 bIgnoreMdefRaceRate,RC_Plant,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - S_Tempest_Earring
           - S_Tempest_Earring
@@ -12260,8 +12262,8 @@ Body:
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       bonus bMdef,5;
       bonus bMdef,5;
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_DemiHuman;
-         bonus bIgnoreMDefRace,RC_Undead;
+         bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Undead,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -12272,8 +12274,8 @@ Body:
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       bonus bMdef,5;
       bonus bMdef,5;
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_Demon;
-         bonus bIgnoreMDefRace,RC_Angel;
+         bonus2 bIgnoreMdefRaceRate,RC_Demon,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Angel,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -12284,8 +12286,8 @@ Body:
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       bonus bMdef,5;
       bonus bMdef,5;
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_Formless;
-         bonus bIgnoreMDefRace,RC_Dragon;
+         bonus2 bIgnoreMdefRaceRate,RC_Formless,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Dragon,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -12296,8 +12298,8 @@ Body:
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       bonus bMdef,5;
       bonus bMdef,5;
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_Plant;
-         bonus bIgnoreMDefRace,RC_Brute;
+         bonus2 bIgnoreMdefRaceRate,RC_Plant,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Brute,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -12308,8 +12310,8 @@ Body:
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       .@r = getequiprefinerycnt(EQI_SHADOW_SHIELD) + getequiprefinerycnt(EQI_SHADOW_SHOES) + getequiprefinerycnt(EQI_SHADOW_ARMOR);
       bonus bMdef,5;
       bonus bMdef,5;
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_Fish;
-         bonus bIgnoreMDefRace,RC_Insect;
+         bonus2 bIgnoreMdefRaceRate,RC_Fish,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Insect,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -12551,8 +12553,8 @@ Body:
       bonus bMatk,5;
       bonus bMatk,5;
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_Demon;
-         bonus bIgnoreMDefRace,RC_Angel;
+         bonus2 bIgnoreMdefRaceRate,RC_Demon,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Angel,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -12563,8 +12565,8 @@ Body:
       bonus bMatk,5;
       bonus bMatk,5;
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_Formless;
-         bonus bIgnoreMDefRace,RC_Dragon;
+         bonus2 bIgnoreMdefRaceRate,RC_Formless,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Dragon,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -12575,8 +12577,8 @@ Body:
       bonus bMatk,5;
       bonus bMatk,5;
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_Brute;
-         bonus bIgnoreMDefRace,RC_Plant;
+         bonus2 bIgnoreMdefRaceRate,RC_Brute,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Plant,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -12587,8 +12589,8 @@ Body:
       bonus bMatk,5;
       bonus bMatk,5;
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_Fish;
-         bonus bIgnoreMDefRace,RC_Insect;
+         bonus2 bIgnoreMdefRaceRate,RC_Fish,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Insect,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -12599,8 +12601,8 @@ Body:
       bonus bMatk,5;
       bonus bMatk,5;
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       .@r = getequiprefinerycnt(EQI_SHADOW_WEAPON) + getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L);
       if (.@r >= 25) {
       if (.@r >= 25) {
-         bonus bIgnoreMDefRace,RC_DemiHuman;
-         bonus bIgnoreMDefRace,RC_Undead;
+         bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,100;
+         bonus2 bIgnoreMdefRaceRate,RC_Undead,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -18420,8 +18422,11 @@ Body:
       bonus2 bSubRace,RC_DemiHuman,10+.@r_armor;
       bonus2 bSubRace,RC_DemiHuman,10+.@r_armor;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - Elemental_BootsK
-          - Elemental_Sword
+          - Elemental_Sword    # 13414
+          - Elemental_BootsK    # 470033
+      - Combo:
+          - Elemental_Sword    # 13414
+          - aegis_470282    # 470282
     Script: |
     Script: |
       bonus bMatk,70;
       bonus bMatk,70;
       bonus bAspd,2;
       bonus bAspd,2;
@@ -19245,7 +19250,7 @@ Body:
       .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
       .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
       bonus bMatkRate,2;
       bonus bMatkRate,2;
       if (.@sum >= 18) {
       if (.@sum >= 18) {
-         bonus bIgnoreMDefRace,RC_All;
+         bonus2 bIgnoreMdefRaceRate,RC_All,100;
          bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-100;
          bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-100;
          bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-100;
          bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-100;
       }
       }
@@ -19257,7 +19262,7 @@ Body:
       .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
       .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
       bonus bMatkRate,2;
       bonus bMatkRate,2;
       if (.@sum >= 18) {
       if (.@sum >= 18) {
-         bonus bIgnoreMDefRace,RC_All;
+         bonus2 bIgnoreMdefRaceRate,RC_All,100;
          bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-100;
          bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-100;
          bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-100;
          bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-100;
       }
       }
@@ -20662,10 +20667,10 @@ Body:
       bonus bMaxHPrate,3*(.@r/2);
       bonus bMaxHPrate,3*(.@r/2);
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - Astraea_Armor
-          - B_Magaleta_Card
+          - B_Magaleta_Card    # 4363
+          - Astraea_Armor    # 15367
     Script: |
     Script: |
-      .@r = getrefine();
+      .@r = getequiprefinerycnt(EQI_ARMOR);
       if (.@r >= 10) {
       if (.@r >= 10) {
          .@r = min(14,.@r)-5;
          .@r = min(14,.@r)-5;
          bonus bMaxHPrate,pow(.@r,2);
          bonus bMaxHPrate,pow(.@r,2);
@@ -20854,8 +20859,11 @@ Body:
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - Astraea_Ring
-          - B_Magaleta_Card
+          - B_Magaleta_Card    # 4363
+          - Astraea_Ring    # 32219
+      - Combo:
+          - B_Magaleta_Card    # 4363
+          - Astraea_Ring_LT    # 490595
     Script: |
     Script: |
       bonus bDefEle,Ele_Ghost;
       bonus bDefEle,Ele_Ghost;
       bonus5 bAutoSpellWhenHit,"HP_ASSUMPTIO",5,-50,BF_WEAPON|BF_MAGIC,0;
       bonus5 bAutoSpellWhenHit,"HP_ASSUMPTIO",5,-50,BF_WEAPON|BF_MAGIC,0;
@@ -20863,8 +20871,8 @@ Body:
       bonus2 bMagicAddClass,Class_Boss,20;
       bonus2 bMagicAddClass,Class_Boss,20;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - Astraea_Ring
-          - Astraea_Helm_TW
+          - Astraea_Ring    # 32219
+          - Astraea_Helm_TW    # 400075
     Script: |
     Script: |
       bonus bAllStats,3;
       bonus bAllStats,3;
       bonus bDelayrate,-7;
       bonus bDelayrate,-7;
@@ -21587,7 +21595,7 @@ Body:
           - Release_Of_Magic
           - Release_Of_Magic
     Script: |
     Script: |
       if (eaclass()&EAJL_THIRD && BaseJob == Job_Sage) {
       if (eaclass()&EAJL_THIRD && BaseJob == Job_Sage) {
-         bonus bIgnoreMDefRace,RC_All;
+         bonus2 bIgnoreMdefRaceRate,RC_All,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -21618,7 +21626,7 @@ Body:
           - Release_Of_Magic
           - Release_Of_Magic
     Script: |
     Script: |
       if (eaclass()&EAJL_THIRD && BaseJob == Job_Wizard) {
       if (eaclass()&EAJL_THIRD && BaseJob == Job_Wizard) {
-         bonus bIgnoreMDefRace,RC_All;
+         bonus2 bIgnoreMdefRaceRate,RC_All,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -21634,7 +21642,7 @@ Body:
     Script: |
     Script: |
       if (eaclass()&EAJL_THIRD && BaseJob == Job_Soul_Linker) {
       if (eaclass()&EAJL_THIRD && BaseJob == Job_Soul_Linker) {
          skill "MG_FIREWALL",10;
          skill "MG_FIREWALL",10;
-         bonus bIgnoreMDefRace,RC_All;
+         bonus2 bIgnoreMdefRaceRate,RC_All,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -21649,7 +21657,7 @@ Body:
           - Release_Of_Magic
           - Release_Of_Magic
     Script: |
     Script: |
       if (eaclass()&EAJL_THIRD && BaseJob == Job_Priest) {
       if (eaclass()&EAJL_THIRD && BaseJob == Job_Priest) {
-         bonus bIgnoreMDefRace,RC_All;
+         bonus2 bIgnoreMdefRaceRate,RC_All,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -25157,8 +25165,15 @@ Body:
           - Ring_Of_TheAbyssKing_A     # 490139
           - Ring_Of_TheAbyssKing_A     # 490139
     Script: |
     Script: |
       bonus bBaseAtk,BaseLevel;
       bonus bBaseAtk,BaseLevel;
-      bonus2 bHPDrainRate,100,2;
-      /*Unknow Rate*/
+      bonus2 bHPDrainRate,1000,2;
+  - Combos:
+      - Combo:
+          - Abyss_AncientKing_Card     # 27128
+          - aegis_312305     # 312305
+          - Ring_Of_TheAbyssKing_A     # 490139
+    Script: |
+      bonus bBaseAtk,-BaseLevel;
+      bonus2 bHPDrainRate,-1000,-2;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - Pyuriel_Card     # 4578
           - Pyuriel_Card     # 4578
@@ -25426,7 +25441,7 @@ Body:
     Script: |
     Script: |
       bonus bAtkRate,5;
       bonus bAtkRate,5;
       bonus bMatkRate,5;
       bonus bMatkRate,5;
-      autobonus "{ bonus bIgnoreDefClass,Class_All; bonus bIgnoreMdefRace,RC_All; }",30,7000,BF_WEAPON|BF_MAGIC,"{ active_transform 3658,7000; }";
+      autobonus "{ bonus bIgnoreDefClass,Class_All; bonus2 bIgnoreMdefRaceRate,RC_All,100; }",30,7000,BF_WEAPON|BF_MAGIC,"{ active_transform 3658,7000; }";
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - Ring_Of_Hunter     # 490096
           - Ring_Of_Hunter     # 490096
@@ -25478,6 +25493,9 @@ Body:
       - Combo:
       - Combo:
           - aegis_410136     # 410136
           - aegis_410136     # 410136
           - Subject_CapeRange_TH     # 480161
           - Subject_CapeRange_TH     # 480161
+      - Combo:
+          - aegis_410137     # 410137
+          - Subject_CapeRange_TH     # 480161
     Script: |
     Script: |
       .@r = getequiprefinerycnt(EQI_GARMENT);
       .@r = getequiprefinerycnt(EQI_GARMENT);
       bonus bLongAtkRate,7;
       bonus bLongAtkRate,7;
@@ -25487,6 +25505,9 @@ Body:
       - Combo:
       - Combo:
           - aegis_410136     # 410136
           - aegis_410136     # 410136
           - Subject_CapeMagic_TH     # 480166
           - Subject_CapeMagic_TH     # 480166
+      - Combo:
+          - aegis_410137     # 410137
+          - Subject_CapeMagic_TH     # 480166
     Script: |
     Script: |
       .@r = getequiprefinerycnt(EQI_GARMENT);
       .@r = getequiprefinerycnt(EQI_GARMENT);
       bonus bMatk,50;
       bonus bMatk,50;
@@ -25496,6 +25517,9 @@ Body:
       - Combo:
       - Combo:
           - aegis_410136     # 410136
           - aegis_410136     # 410136
           - Subject_CapeMelee_TH     # 480172
           - Subject_CapeMelee_TH     # 480172
+      - Combo:
+          - aegis_410137     # 410137
+          - Subject_CapeMelee_TH     # 480172
     Script: |
     Script: |
       .@r = getequiprefinerycnt(EQI_GARMENT);
       .@r = getequiprefinerycnt(EQI_GARMENT);
       bonus bBaseAtk,50;
       bonus bBaseAtk,50;
@@ -27938,19 +27962,19 @@ Body:
       bonus bFixedCast,-500;
       bonus bFixedCast,-500;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - aegis_311466   # 311466
+          - Reaper_Top3   # 311466
           - Soulreaper_Robe   # 29654
           - Soulreaper_Robe   # 29654
     Script: |
     Script: |
       bonus2 bSkillUseSPrate,"SP_SPA",15;
       bonus2 bSkillUseSPrate,"SP_SPA",15;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - aegis_311467   # 311467
+          - Reaper_Middle3   # 311467
           - Soulreaper_Robe   # 29654
           - Soulreaper_Robe   # 29654
     Script: |
     Script: |
       bonus2 bSkillAtk,"SP_SWHOO",15;
       bonus2 bSkillAtk,"SP_SWHOO",15;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - aegis_311468   # 311468
+          - Reaper_Bottom3   # 311468
           - Soulreaper_Robe   # 29654
           - Soulreaper_Robe   # 29654
     Script: |
     Script: |
       bonus bFixedCast,-500;
       bonus bFixedCast,-500;
@@ -30284,7 +30308,7 @@ Body:
     Script: |
     Script: |
       bonus bAllStats,(getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_SHOES));
       bonus bAllStats,(getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_SHOES));
       bonus bIgnoreDefRace,RC_All;
       bonus bIgnoreDefRace,RC_All;
-      bonus bIgnoreMDefRace,RC_All;
+      bonus2 bIgnoreMdefRaceRate,RC_All,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - Garm_Card   # 4324
           - Garm_Card   # 4324
@@ -30363,7 +30387,7 @@ Body:
       bonus bMatk,80;
       bonus bMatk,80;
       bonus2 bSkillAtk,"CD_FRAMEN",5*(.@r/2);
       bonus2 bSkillAtk,"CD_FRAMEN",5*(.@r/2);
       bonus2 bSkillAtk,"AB_ADORAMUS",10*(.@r/3);
       bonus2 bSkillAtk,"AB_ADORAMUS",10*(.@r/3);
-      bonus2 bSkillAtk,"2038 AB_JUDEX",10*(.@r/3);
+      bonus2 bSkillAtk,"AB_JUDEX",10*(.@r/3);
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - LightOfCardinal   # 490269
           - LightOfCardinal   # 490269
@@ -35963,7 +35987,7 @@ Body:
           - aegis_300387    # 300387
           - aegis_300387    # 300387
           - Inteligence10    # 4719
           - Inteligence10    # 4719
     Script: |
     Script: |
-      bonus bIgnoreMDefRace,RC_All;
+      bonus2 bIgnoreMdefRaceRate,RC_All,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - aegis_300386    # 300386
           - aegis_300386    # 300386
@@ -43333,6 +43357,7 @@ Body:
     Script: |
     Script: |
       bonus2 bMagicAddEle,Ele_All,20;
       bonus2 bMagicAddEle,Ele_All,20;
       bonus bDelayrate,-5;
       bonus bDelayrate,-5;
+      bonus2 bSkillAtk,"CD_ARBITRIUM",40;
       bonus2 bSkillAtk,"CD_ARBITRIUM_ATK",40;
       bonus2 bSkillAtk,"CD_ARBITRIUM_ATK",40;
       bonus2 bSkillAtk,"CD_FRAMEN",20;
       bonus2 bSkillAtk,"CD_FRAMEN",20;
   - Combos:
   - Combos:
@@ -47248,7 +47273,7 @@ Body:
          .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
          .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
          bonus2 bSkillAtk,"SN_SHARPSHOOTING",2*.@sum;
          bonus2 bSkillAtk,"SN_SHARPSHOOTING",2*.@sum;
          if (getskilllv("SN_SHARPSHOOTING") > 0) {
          if (getskilllv("SN_SHARPSHOOTING") > 0) {
-            bonus4 bAutoSpellOnSkill,"WH_CRESCIVE_BOLT","SN_SHARPSHOOTING",getskilllv("SN_SHARPSHOOTING"),500;
+            bonus4 bAutoSpellOnSkill,"WH_CRESCIVE_BOLT","SN_SHARPSHOOTING",getskilllv("SN_SHARPSHOOTING"),1000;
          }
          }
       }
       }
   - Combos:
   - Combos:
@@ -48723,6 +48748,8 @@ Body:
           - FuriousBoots   # 470265
           - FuriousBoots   # 470265
     Script: |
     Script: |
       bonus2 bSkillAtk,"DK_HACKANDSLASHER",15;
       bonus2 bSkillAtk,"DK_HACKANDSLASHER",15;
+      if (getskilllv("DK_HACKANDSLASHER") > 4)
+         bonus3 bAutoSpell,"DK_HACKANDSLASHER",5,50;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - Trident_Furious   # 630045
           - Trident_Furious   # 630045
@@ -49290,7 +49317,7 @@ Body:
           - aegis_490459    # 490459
           - aegis_490459    # 490459
           - aegis_490461    # 490461
           - aegis_490461    # 490461
     Script: |
     Script: |
-      bonus bIgnoreMDefRace,RC_All;
+      bonus2 bIgnoreMdefRaceRate,RC_All,100;
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - Wild_Beast    # 400409
           - Wild_Beast    # 400409
@@ -49548,18 +49575,26 @@ Body:
           - aegis_300519   # 300519
           - aegis_300519   # 300519
           - aegis_300506   # 300506
           - aegis_300506   # 300506
     Script: |
     Script: |
+      bonus2 bAddSize,Size_All,15;
       if (getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_WEAPONLEVEL)==5) {
       if (getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_WEAPONLEVEL)==5) {
-         bonus2 bAddSize,Size_All,25+15;
-         bonus bPAtk,5;
+         .@i = getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW);
+         if (.@i == W_2HSWORD || .@i == W_2HSPEAR || .@i == W_2HSTAFF || .@i == W_2HAXE || .@i == W_KATAR || .@i == W_BOW || .@i == W_HUUMA || .@i == W_REVOLVER || .@i == W_RIFLE || .@i == W_GATLING || .@i == W_SHOTGUN || .@i == W_GRENADE) {
+            bonus2 bAddSize,Size_All,25;
+            bonus bPAtk,5;
+         }
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - aegis_300520   # 300520
           - aegis_300520   # 300520
           - aegis_300507   # 300507
           - aegis_300507   # 300507
     Script: |
     Script: |
+      bonus2 bMagicAddSize,Size_All,15;
       if (getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_WEAPONLEVEL)==5) {
       if (getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_WEAPONLEVEL)==5) {
-         bonus2 bMagicAddSize,Size_All,25+15;
-         bonus bSMatk,5;
+         .@i = getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW);
+         if (.@i == W_2HSWORD || .@i == W_2HSPEAR || .@i == W_2HSTAFF || .@i == W_2HAXE || .@i == W_KATAR || .@i == W_BOW || .@i == W_HUUMA || .@i == W_REVOLVER || .@i == W_RIFLE || .@i == W_GATLING || .@i == W_SHOTGUN || .@i == W_GRENADE) {
+            bonus2 bMagicAddSize,Size_All,25;
+            bonus bSMatk,5;
+         }
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -51414,7 +51449,7 @@ Body:
       bonus2 bMagicAtkEle,Ele_All,8;
       bonus2 bMagicAtkEle,Ele_All,8;
       if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 39) {
       if ((getequiprefinerycnt(EQI_ARMOR) + getequiprefinerycnt(EQI_GARMENT) + getequiprefinerycnt(EQI_SHOES)) >= 39) {
          bonus bIgnoreDefRace,RC_All;
          bonus bIgnoreDefRace,RC_All;
-         bonus bIgnoreMDefRace,RC_All;
+         bonus2 bIgnoreMdefRaceRate,RC_All,100;
       }
       }
   - Combos:
   - Combos:
       - Combo:
       - Combo:
@@ -51760,16 +51795,16 @@ Body:
       bonus2 bMagicAddRace,RC_All,2*getequiprefinerycnt(EQI_HAND_R);
       bonus2 bMagicAddRace,RC_All,2*getequiprefinerycnt(EQI_HAND_R);
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - aegis_420342    # 420342
-          - aegis_480451    # 480451
+          - WL_Security_Drone_TH    # 420342
+          - Auto_E_WingC_TH    # 480451
     Script: |
     Script: |
       bonus2 bExpAddRace,RC_All,4+(getequiprefinerycnt(EQI_GARMENT)/2);
       bonus2 bExpAddRace,RC_All,4+(getequiprefinerycnt(EQI_GARMENT)/2);
   - Combos:
   - Combos:
       - Combo:
       - Combo:
-          - aegis_420342    # 420342
+          - WL_Security_Drone_TH    # 420342
           - Auto_Armor_A    # 450127
           - Auto_Armor_A    # 450127
       - Combo:
       - Combo:
-          - aegis_420342    # 420342
+          - WL_Security_Drone_TH    # 420342
           - Auto_Armor_B    # 450128
           - Auto_Armor_B    # 450128
     Script: |
     Script: |
       bonus2 bAddRace,RC_All,8;
       bonus2 bAddRace,RC_All,8;
@@ -51778,10 +51813,10 @@ Body:
   - Combos:
   - Combos:
       - Combo:
       - Combo:
           - Auto_Armor_A    # 450127
           - Auto_Armor_A    # 450127
-          - aegis_480451    # 480451
+          - Auto_E_WingC_TH    # 480451
       - Combo:
       - Combo:
           - Auto_Armor_B    # 450128
           - Auto_Armor_B    # 450128
-          - aegis_480451    # 480451
+          - Auto_E_WingC_TH    # 480451
     Script: |
     Script: |
       if ((getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)) >= 21) {
       if ((getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)) >= 21) {
          bonus2 bIgnoreDefRaceRate,RC_Dragon,30;
          bonus2 bIgnoreDefRaceRate,RC_Dragon,30;
@@ -52207,3 +52242,3660 @@ Body:
       bonus bShortAtkRate,7;
       bonus bShortAtkRate,7;
       bonus bLongAtkRate,7;
       bonus bLongAtkRate,7;
       bonus2 bMagicAtkEle,Ele_All,7;
       bonus2 bMagicAtkEle,Ele_All,7;
+  - Combos:
+      - Combo:
+          - S_SHC_EC_Earring   # 24906
+          - S_Master_Weapon   # 24792
+          - S_SHC_EC_Pendant   # 24907
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_SHC_EC_Earring   # 24906
+          - S_SHC_EC_Pendant   # 24907
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_SHC_SI_Armor   # 24908
+          - S_Master_Shield   # 24793
+          - S_SHC_SI_Shoes   # 24909
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_SHC_SI_Armor   # 24908
+          - S_SHC_SI_Shoes   # 24909
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_WH_GS_Earring   # 24910
+          - S_Master_Weapon   # 24792
+          - S_WH_GS_Pendant   # 24911
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus2 bAddEle,Ele_All,3;
+      bonus bPAtk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_WH_GS_Earring   # 24910
+          - S_WH_GS_Pendant   # 24911
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_WH_CB_Armor   # 24912
+          - S_Master_Shield   # 24793
+          - S_WH_CB_Shoes   # 24913
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_WH_CB_Armor   # 24912
+          - S_WH_CB_Shoes   # 24913
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_SS_SR_Earring   # 24914
+          - S_Master_Weapon   # 24792
+          - S_SS_SR_Pendant   # 24915
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_SS_SR_Earring   # 24914
+          - S_SS_SR_Pendant   # 24915
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_SS_KR_Armor   # 24916
+          - S_Master_Shield   # 24793
+          - S_SS_KR_Shoes   # 24917
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_SS_KR_Armor   # 24916
+          - S_SS_KR_Shoes   # 24917
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_DK_SS_Earring   # 24918
+          - S_Master_Weapon   # 24792
+          - S_DK_SS_Pendant   # 24919
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_DK_SS_Earring   # 24918
+          - S_DK_SS_Pendant   # 24919
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_DK_HS_Armor   # 24920
+          - S_Master_Shield   # 24793
+          - S_DK_HS_Shoes   # 24921
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_DK_HS_Armor   # 24920
+          - S_DK_HS_Shoes   # 24921
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_TR_RW_Earring   # 24922
+          - S_Master_Weapon   # 24792
+          - S_TR_RW_Pendant   # 24923
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_TR_RW_Earring   # 24922
+          - S_TR_RW_Pendant   # 24923
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_TR_MF_Armor   # 24924
+          - S_Master_Shield   # 24793
+          - S_TR_MF_Shoes   # 24925
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_TR_MF_Armor   # 24924
+          - S_TR_MF_Shoes   # 24925
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_NW_SO_Earring   # 24926
+          - S_Master_Weapon   # 24792
+          - S_NW_SO_Pendant   # 24927
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_NW_SO_Earring   # 24926
+          - S_NW_SO_Pendant   # 24927
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_NW_WB_Armor   # 24928
+          - S_Master_Shield   # 24793
+          - S_NW_WB_Shoes   # 24929
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_NW_WB_Armor   # 24928
+          - S_NW_WB_Shoes   # 24929
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - aegis_313359   # 313359
+          - Warlock_Top3   # 310884
+    Script: |
+      bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",10;
+  - Combos:
+      - Combo:
+          - aegis_313359   # 313359
+          - Warlock_Middle3   # 310885
+    Script: |
+      bonus2 bSkillAtk,"AG_MYSTERY_ILLUSION",10;
+  - Combos:
+      - Combo:
+          - aegis_313359   # 313359
+          - Warlock_Bottom3   # 310886
+    Script: |
+      bonus2 bMagicAddSize,Size_All,3*(getskilllv("AG_TWOHANDSTAFF")/2);
+  - Combos:
+      - Combo:
+          - aegis_313360   # 313360
+          - Ranger_Top3   # 311359
+    Script: |
+      bonus2 bAddEle,Ele_All,3*getskilllv("WH_WIND_SIGN");
+  - Combos:
+      - Combo:
+          - aegis_313360   # 313360
+          - Ranger_Middle3   # 311360
+    Script: |
+      bonus2 bSkillAtk,"WH_CRESCIVE_BOLT",15;
+  - Combos:
+      - Combo:
+          - aegis_313360   # 313360
+          - Ranger_Bottom3   # 311361
+    Script: |
+      bonus bPAtk,3;
+      bonus2 bSkillAtk,"WH_GALESTORM",10;
+  - Combos:
+      - Combo:
+          - aegis_313361   # 313361
+          - Reaper_Top3   # 311466
+    Script: |
+      bonus2 bSkillAtk,"SOA_TALISMAN_OF_BLUE_DRAGON",15;
+      bonus2 bSkillAtk,"SOA_TALISMAN_OF_RED_PHOENIX",15;
+  - Combos:
+      - Combo:
+          - aegis_313361   # 313361
+          - Reaper_Middle3   # 311467
+    Script: |
+      bonus2 bSkillAtk,"SOA_TALISMAN_OF_WHITE_TIGER",10;
+      bonus2 bSkillAtk,"SOA_TALISMAN_OF_BLACK_TORTOISE",10;
+  - Combos:
+      - Combo:
+          - aegis_313361   # 313361
+          - Reaper_Bottom3   # 311468
+    Script: |
+      bonus2 bSkillAtk,"SOA_TALISMAN_OF_FOUR_BEARING_GOD",10;
+  - Combos:
+      - Combo:
+          - aegis_450405   # 450405
+          - Cvt_Physical_Wing   # 480124
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT);
+      bonus bDelayrate,-5;
+      if (.@sum>=18) {
+         bonus2 bAddEle,Ele_All,10;
+         if (.@sum>=23) {
+            bonus bShortAtkRate,.@sum;
+            bonus bLongAtkRate,.@sum;
+         }
+      }
+  - Combos:
+      - Combo:
+          - aegis_450406   # 450406
+          - Cvt_Magical_Wing   # 480125
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT);
+      bonus bDelayrate,-5;
+      if (.@sum>=18) {
+         bonus2 bMagicAddEle,Ele_All,10;
+         if (.@sum>=23) {
+            bonus2 bMagicAtkEle,Ele_All,.@sum;
+         }
+      }
+  - Combos:
+      - Combo:
+          - aegis_450407   # 450407
+          - aegis_480197   # 480197
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT);
+      bonus bDelayrate,-5;
+      if (.@sum>=18) {
+         bonus2 bAddEle,Ele_All,10;
+         if (.@sum>=23) {
+            bonus bCritAtkRate,.@sum;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_Spear_IG   # 530060
+          - Time_DM_R_Crown_IG   # 400530
+    Script: |
+      bonus bLongAtkRate,20;
+      bonus2 bSkillAtk,"LG_CANNONSPEAR",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"LG_CANNONSPEAR",2*.@sum;
+         if (getskilllv("LG_CANNONSPEAR") > 0) {
+            bonus4 bAutoSpellOnSkill,"IG_RADIANT_SPEAR","LG_CANNONSPEAR",getskilllv("LG_CANNONSPEAR"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_HN_Staff   # 550152
+          - Time_DM_R_Crown_HN   # 400545
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,10;
+      bonus2 bSkillAtk,"HN_NAPALM_VULCAN_STRIKE",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"HN_NAPALM_VULCAN_STRIKE",.@sum;
+         bonus2 bSkillAtk,"HN_JACK_FROST_NOVA",.@sum;
+         bonus2 bSkillCooldown,"HN_JUPITEL_THUNDER_STORM",-300;
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_TR_Vilolin   # 570075
+          - Time_DM_R_Crown_TR   # 400540
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,10;
+      bonus2 bSkillAtk,"TR_METALIC_FURY",15;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus bDelayrate,-10;
+         bonus2 bSkillAtk,"TR_METALIC_FURY",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_TR_Ribbon   # 580075
+          - Time_DM_R_Crown_TR   # 400540
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,10;
+      bonus2 bSkillAtk,"TR_METALIC_FURY",15;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus bDelayrate,-10;
+         bonus2 bSkillAtk,"TR_METALIC_FURY",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_MT_Axe   # 620043
+          - Time_DM_R_Crown_MT   # 400531
+    Script: |
+      bonus2 bSubEle,Ele_All,15;
+      bonus2 bSkillAtk,"MT_RUSH_STRIKE",40;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bAddEle,Ele_All,15;
+         bonus2 bSkillAtk,"MT_MIGHTY_SMASH",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_Staff_AG   # 640054
+          - Time_DM_R_Crown_AG   # 400535
+    Script: |
+      bonus2 bSkillAtk,"AG_MYSTERY_ILLUSION",45;
+      bonus2 bMagicAtkEle,Ele_Dark,20;
+      bonus2 bMagicAtkEle,Ele_Ghost,15;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"AG_MYSTERY_ILLUSION",.@sum;
+         bonus2 bSkillCooldown,"AG_SOUL_VC_STRIKE",-200;
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_Revolver_NW   # 800042
+          - Time_DM_R_Crown_NW   # 400542
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",25;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",.@sum;
+         bonus2 bSkillCooldown,"NW_WILD_SHOT",-200;
+      }
+  - Combos:
+      - Combo:
+          - S_MT_MS_Earring   # 24936
+          - S_Master_Weapon   # 24792
+          - S_MT_MS_Pendant   # 24937
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus2 bAddEle,Ele_All,3;
+      bonus bPAtk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_MT_MS_Earring   # 24936
+          - S_MT_MS_Pendant   # 24937
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_MT_PR_Armor   # 24938
+          - S_Master_Shield   # 24793
+          - S_MT_PR_Shoes   # 24939
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus2 bAddEle,Ele_All,3;
+      bonus bPAtk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_MT_PR_Armor   # 24938
+          - S_MT_PR_Shoes   # 24939
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_BO_EP_Earring   # 24940
+          - S_Master_Weapon   # 24792
+          - S_BO_EP_Pendant   # 24941
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus2 bAddEle,Ele_All,3;
+      bonus bPAtk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_BO_EP_Earring   # 24940
+          - S_BO_EP_Pendant   # 24941
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_BO_MD_Armor   # 24942
+          - S_Master_Shield   # 24793
+          - S_BO_MD_Shoes   # 24943
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus2 bAddEle,Ele_All,3;
+      bonus bPAtk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_BO_MD_Armor   # 24942
+          - S_BO_MD_Shoes   # 24943
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_HN_VJ_Earring   # 24944
+          - S_Master_Weapon   # 24792
+          - S_HN_VJ_Pendant   # 24945
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_HN_VJ_Earring   # 24944
+          - S_HN_VJ_Pendant   # 24945
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_HN_TB_Armor   # 24946
+          - S_Master_Shield   # 24793
+          - S_HN_TB_Shoes   # 24947
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_HN_TB_Armor   # 24946
+          - S_HN_TB_Shoes   # 24947
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - aegis_300585   # 300585
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"DK_HACKANDSLASHER",(.@r-10)*12;
+         bonus2 bSkillAtk,"DK_STORMSLASH",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300586   # 300586
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"IG_IMPERIAL_CROSS",(.@r-10)*12;
+         bonus2 bSkillAtk,"IG_OVERSLASH",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300587   # 300587
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",(.@r-10)*12;
+         bonus2 bSkillAtk,"IQ_BLAZING_FLAME_BLAST",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300588   # 300588
+          - Yorscalp_M_Circlet   # 400724
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"CD_ARBITRIUM",(.@r-10)*12;
+         bonus2 bSkillAtk,"CD_ARBITRIUM_ATK",(.@r-10)*12;
+         bonus2 bSkillAtk,"CD_DIVINUS_FLOS",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300589   # 300589
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"MT_ENERGY_CANNONADE",(.@r-10)*12;
+         bonus2 bSkillAtk,"MT_SPARK_BLASTER",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300590   # 300590
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"BO_DUST_EXPLOSION",(.@r-10)*12;
+         bonus2 bSkillAtk,"BO_MYSTERY_POWDER",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300591   # 300591
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"SHC_ETERNAL_SLASH",(.@r-10)*12;
+         bonus2 bSkillAtk,"SHC_CROSS_SLASH",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300592   # 300592
+          - Yorscalp_M_Circlet   # 400724
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"ABC_ABYSS_SQUARE",(.@r-10)*12;
+         bonus2 bSkillAtk,"ABC_ABYSS_FLAME",(.@r-10)*12;
+         bonus2 bSkillAtk,"ABC_ABYSS_FLAME_ATK",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300593   # 300593
+          - Yorscalp_M_Circlet   # 400724
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"AG_ALL_BLOOM",(.@r-10)*12;
+         bonus2 bSkillAtk,"AG_ALL_BLOOM_ATK",(.@r-10)*12;
+         bonus2 bSkillAtk,"AG_ALL_BLOOM_ATK2",(.@r-10)*12;
+         bonus2 bSkillAtk,"AG_DESTRUCTIVE_HURRICANE",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300594   # 300594
+          - Yorscalp_M_Circlet   # 400724
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"EM_LIGHTNING_LAND",(.@r-10)*12;
+         bonus2 bSkillAtk,"EM_TERRA_DRIVE",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300595   # 300595
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"WH_CRESCIVE_BOLT",(.@r-10)*12;
+         bonus2 bSkillAtk,"WH_WILD_WALK",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300596   # 300596
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",(.@r-10)*12;
+         bonus2 bSkillAtk,"TR_ROSEBLOSSOM",(.@r-10)*12;
+         bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300597   # 300597
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"SKE_NOON_BLAST",(.@r-10)*12;
+         bonus2 bSkillAtk,"SKE_ALL_IN_THE_SKY",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300598   # 300598
+          - Yorscalp_P_Circlet   # 400723
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",(.@r-10)*12;
+         bonus2 bSkillAtk,"NW_WILD_SHOT",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300599   # 300599
+          - Yorscalp_M_Circlet   # 400724
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"SS_ANKOKURYUUAKUMU",(.@r-10)*12;
+         bonus2 bSkillAtk,"SS_ANTENPOU",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300600   # 300600
+          - Yorscalp_M_Circlet   # 400724
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"SOA_TALISMAN_OF_FOUR_BEARING_GOD",(.@r-10)*12;
+         bonus2 bSkillAtk,"SOA_TALISMAN_OF_RED_PHOENIX",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300601   # 300601
+          - Yorscalp_M_Circlet   # 400724
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"HN_JUPITEL_THUNDER_STORM",(.@r-10)*12;
+         bonus2 bSkillAtk,"HN_JACK_FROST_NOVA",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300602   # 300602
+          - Yorscalp_M_Circlet   # 400724
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      if (getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A && .@r>=10) {
+         bonus2 bSkillAtk,"SH_HYUN_ROK_SPIRIT_POWER",(.@r-10)*12;
+         bonus2 bSkillAtk,"SH_HYUN_ROK_CANNON",(.@r-10)*12;
+      }
+  - Combos:
+      - Combo:
+          - Yorscalp_P_Circlet   # 400723
+          - Yorscalp_Armor   # 450412
+    Script: |
+      bonus bMaxHPrate,10;
+  - Combos:
+      - Combo:
+          - Yorscalp_P_Circlet   # 400723
+          - Yorscalp_Boots   # 470303
+    Script: |
+      bonus bLongAtkRate,10;
+      bonus bShortAtkRate,10;
+  - Combos:
+      - Combo:
+          - Yorscalp_P_Circlet   # 400723
+          - Yorscalp_Manteau   # 480495
+    Script: |
+      bonus bDelayrate,-10;
+  - Combos:
+      - Combo:
+          - Yorscalp_P_Circlet   # 400723
+          - Yorscalp_Ring   # 490620
+    Script: |
+      bonus bPAtk,10;
+  - Combos:
+      - Combo:
+          - Yorscalp_P_Circlet   # 400723
+          - Yorscalp_Glove   # 490621
+    Script: |
+      bonus bAtkRate,10;
+  - Combos:
+      - Combo:
+          - Yorscalp_M_Circlet   # 400724
+          - Yorscalp_Robe   # 450413
+    Script: |
+      bonus bMaxHPrate,10;
+  - Combos:
+      - Combo:
+          - Yorscalp_M_Circlet   # 400724
+          - Yorscalp_Shoes   # 470304
+    Script: |
+      bonus2 bMagicAtkEle,Ele_All,10;
+  - Combos:
+      - Combo:
+          - Yorscalp_M_Circlet   # 400724
+          - Yorscalp_Muffler   # 480496
+    Script: |
+      bonus bDelayrate,-10;
+  - Combos:
+      - Combo:
+          - Yorscalp_M_Circlet   # 400724
+          - Yorscalp_Earring   # 490622
+    Script: |
+      bonus bSMatk,10;
+  - Combos:
+      - Combo:
+          - Yorscalp_M_Circlet   # 400724
+          - Yorscalp_Necklace   # 490623
+    Script: |
+      bonus bMatkRate,10;
+  - Combos:
+      - Combo:
+          - Yorscalp_Armor   # 450412
+          - Yorscalp_Boots   # 470303
+          - Yorscalp_Manteau   # 480495
+    Script: |
+      bonus2 bAddRace,RC_All,15;
+      bonus2 bAddRace,RC_Player_Human,-15;
+      bonus2 bAddRace,RC_Player_Doram,-15;
+  - Combos:
+      - Combo:
+          - Yorscalp_Armor   # 450412
+          - Yorscalp_Manteau   # 480495
+    Script: |
+      bonus2 bAddEle,Ele_All,15;
+  - Combos:
+      - Combo:
+          - Yorscalp_Robe   # 450413
+          - Yorscalp_Shoes   # 470304
+          - Yorscalp_Muffler   # 480496
+    Script: |
+      bonus2 bMagicAddRace,RC_All,15;
+      bonus2 bMagicAddRace,RC_Player_Human,-15;
+      bonus2 bMagicAddRace,RC_Player_Doram,-15;
+  - Combos:
+      - Combo:
+          - Yorscalp_Robe   # 450413
+          - Yorscalp_Muffler   # 480496
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,15;
+  - Combos:
+      - Combo:
+          - Yorscalp_Boots   # 470303
+          - Yorscalp_Armor   # 450412
+    Script: |
+      bonus2 bAddEle,Ele_All,15;
+  - Combos:
+      - Combo:
+          - Yorscalp_Shoes   # 470304
+          - Yorscalp_Robe   # 450413
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,15;
+  - Combos:
+      - Combo:
+          - Yorscalp_Manteau   # 480495
+          - Yorscalp_Boots   # 470303
+    Script: |
+      bonus2 bAddRace,RC_All,15;
+      bonus2 bAddRace,RC_Player_Human,-15;
+      bonus2 bAddRace,RC_Player_Doram,-15;
+  - Combos:
+      - Combo:
+          - Yorscalp_Muffler   # 480496
+          - Yorscalp_Shoes   # 470304
+    Script: |
+      bonus2 bMagicAddRace,RC_All,15;
+      bonus2 bMagicAddRace,RC_Player_Human,-15;
+      bonus2 bMagicAddRace,RC_Player_Doram,-15;
+  - Combos:
+      - Combo:
+          - Yorscalp_Ring   # 490620
+          - Yorscalp_Glove   # 490621
+    Script: |
+      bonus bDelayrate,-10;
+      bonus bVariableCastrate,-10;
+  - Combos:
+      - Combo:
+          - Yorscalp_Earring   # 490622
+          - Yorscalp_Necklace   # 490623
+    Script: |
+      bonus bDelayrate,-10;
+      bonus bVariableCastrate,-10;
+  - Combos:
+      - Combo:
+          - Time_Gap_BO_Blade   # 500107
+          - Time_DM_R_Crown_BO   # 400532
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",25;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"BO_DUST_EXPLOSION",15;
+         bonus2 bSkillAtk,"BO_EXPLOSIVE_POWDER",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_SHC_Dagger1   # 510165
+          - Time_DM_R_Crown_SHC   # 400533
+          - Time_Gap_SHC_Dagger2   # 510166
+    Script: |
+      if (getequipid(EQI_HAND_L) == 510166) {
+         bonus bShortAtkRate,15;
+         bonus2 bSkillAtk,"SHC_ETERNAL_SLASH",25;
+         if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HAND_L)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+            .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HAND_L)+getequiprefinerycnt(EQI_HEAD_TOP);
+            bonus2 bSkillAtk,"SHC_ETERNAL_SLASH",.@sum;
+            bonus bCritical,15;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_SHC_Dagger1   # 510165
+          - Time_Gap_SHC_Dagger2   # 510166
+    Script: |
+      if (getequipid(EQI_HAND_L) == 510166) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HAND_L);
+         bonus bAtkRate,.@sum;
+         bonus bBaseAtk,25*.@sum;
+         bonus2 bSkillAtk,"SHC_CROSS_SLASH",5*(.@sum/4);
+         if (.@sum>=14) {
+            bonus bCritAtkRate,20;
+            if (.@sum>=17) {
+               bonus bCRate,5;
+               bonus bCritical,15;
+               if (.@sum>=21) {
+                  bonus2 bSkillAtk,"SHC_CROSS_SLASH",15;
+               }
+            }
+         }
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_SOA_Rod   # 550155
+          - Time_DM_R_Crown_SOA   # 400544
+    Script: |
+      bonus2 bMagicAtkEle,Ele_All,10;
+      bonus2 bSkillAtk,"SOA_EXORCISM_OF_MALICIOUS_SOUL",20;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         bonus2 bSkillCooldown,"SOA_EXORCISM_OF_MALICIOUS_SOUL",-300;
+         bonus2 bSkillCooldown,"SOA_SOUL_GATHERING",-300;
+      }
+  - Combos:
+      - Combo:
+          - aegis_313327    # 313327
+          - aegis_410322    # 410322
+      - Combo:
+          - aegis_313327    # 313327
+          - aegis_410323    # 410323
+      - Combo:
+          - aegis_313327    # 313327
+          - aegis_410340    # 410340
+      - Combo:
+          - aegis_313327    # 313327
+          - aegis_410341    # 410341
+    Script: |
+      bonus2 bSubRace,RC_Player_Doram,5;
+      bonus2 bSubRace,RC_Player_Human,5;
+      bonus2 bSubEle,Ele_Holy,5;
+      bonus2 bSubEle,Ele_Poison,5;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_WL    # 19482
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"AG_CRIMSON_ARROW",BaseLevel/10;
+      bonus2 bSkillAtk,"AG_FROZEN_SLASH",BaseLevel/10;
+      bonus2 bSkillAtk,"AG_STORM_CANNON",BaseLevel/10;
+      bonus2 bSkillAtk,"AG_ROCK_DOWN",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_SC    # 19479
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"ABC_CHAIN_REACTION_SHOT",BaseLevel/10;
+      bonus2 bSkillAtk,"ABC_FRENZY_SHOT",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_SR    # 19481
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"IQ_OLEUM_SANCTUM",BaseLevel/10;
+      bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",BaseLevel/10;
+      bonus2 bSkillAtk,"IQ_MASSIVE_F_BLASTER",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_LG    # 19475
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"IG_OVERSLASH",BaseLevel/10;
+      bonus2 bSkillAtk,"IG_GRAND_JUDGEMENT",BaseLevel/10;
+      bonus2 bSkillAtk,"IG_SHIELD_SHOOTING",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_RA    # 19484
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"WH_CRESCIVE_BOLT",BaseLevel/10;
+      bonus2 bSkillAtk,"WH_GALESTORM",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_SO    # 19483
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"EM_CONFLAGRATION",BaseLevel/10;
+      bonus2 bSkillAtk,"EM_DIAMOND_STORM",BaseLevel/10;
+      bonus2 bSkillAtk,"EM_LIGHTNING_LAND",BaseLevel/10;
+      bonus2 bSkillAtk,"EM_TERRA_DRIVE",BaseLevel/10;
+      bonus2 bSkillAtk,"EM_VENOM_SWAMP",BaseLevel/10;
+      bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_AB    # 19480
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"CD_ARBITRIUM",BaseLevel/10;
+      bonus2 bSkillAtk,"CD_PNEUMATICUS_PROCELLA",BaseLevel/10;
+      bonus2 bSkillAtk,"CD_FRAMEN",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_GC    # 19478
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"SHC_DANCING_KNIFE",BaseLevel/10;
+      bonus2 bSkillAtk,"SHC_SHADOW_STAB",BaseLevel/10;
+      bonus2 bSkillAtk,"SHC_ETERNAL_SLASH",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_RK    # 19474
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"DK_HACKANDSLASHER",BaseLevel/10;
+      bonus2 bSkillAtk,"DK_MADNESS_CRUSHER",BaseLevel/10;
+      bonus2 bSkillAtk,"DK_DRAGONIC_AURA",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_WM    # 19485
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",BaseLevel/10;
+      bonus2 bSkillAtk,"TR_ROSEBLOSSOM",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_RL    # 19488
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"NW_ONLY_ONE_BULLET",BaseLevel/10;
+      bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",BaseLevel/10;
+      bonus2 bSkillAtk,"NW_WILD_FIRE",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_GN    # 19477
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_GROUND",BaseLevel/10;
+      bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WATER",BaseLevel/10;
+      bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_FIRE",BaseLevel/10;
+      bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WIND",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_NV    # 19491
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"HN_JUPITEL_THUNDER_STORM",BaseLevel/10;
+      bonus2 bSkillAtk,"HN_HELLS_DRIVE",BaseLevel/10;
+      bonus2 bSkillAtk,"HN_NAPALM_VULCAN_STRIKE",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_NV    # 19476
+          - aegis_313327    # 313327
+    Script: |
+      skill "AL_BLESSING",10;
+      bonus bDelayrate,-20;
+      bonus2 bSkillAtk,"MT_SPARK_BLASTER",BaseLevel/10;
+      bonus2 bSkillAtk,"MT_TRIPLE_LASER",BaseLevel/10;
+  - Combos:
+      - Combo:
+          - C_Himel_Card    # 27381
+          - aegis_313327    # 313327
+    Script: |
+      bonus bMaxHPrate,50;
+      bonus2 bSubEle,Ele_Dark,50;
+  - Combos:
+      - Combo:
+          - Illusion_Box_Garden    # 311075
+          - aegis_420334    # 420334
+    Script: |
+      bonus2 bSubRace,RC_Player_Doram,3;
+      bonus2 bSubRace,RC_Player_Human,3;
+      bonus bNoCastCancel;
+  - Combos:
+      - Combo:
+          - aegis_311909    # 311909
+          - aegis_450372    # 450372
+    Script: |
+      bonus2 bAddSize,Size_All,30;
+      bonus2 bMagicAddSize,Size_All,30;
+      bonus2 bSubEle,Ele_Holy,15;
+  - Combos:
+      - Combo:
+          - aegis_470278    # 470278
+          - Signet_Of_Star    # 490131
+      - Combo:
+          - aegis_470278    # 470278
+          - Signet_Of_Pow_Star    # 490132
+      - Combo:
+          - aegis_470278    # 470278
+          - Signet_Of_Sta_Star    # 490133
+      - Combo:
+          - aegis_470278    # 470278
+          - Signet_Of_Con_Star    # 490134
+      - Combo:
+          - aegis_470278    # 470278
+          - Signet_Of_Crt_Star    # 490135
+      - Combo:
+          - aegis_470278    # 470278
+          - Signet_Of_Spl_Star    # 490136
+      - Combo:
+          - aegis_470278    # 470278
+          - Signet_Of_Wis_Star    # 490137
+    Script: |
+      bonus bAllStats,30;
+      bonus2 bAddClass,Class_All,30;
+      bonus bMatkRate,30;
+      autobonus "{}",30,20000,BF_WEAPON|BF_MAGIC,"{ sc_start SC_REFRESH,20000,1; specialeffect2 EF_ENHANCE; }";
+  - Combos:
+      - Combo:
+          - Arcana    # 29585
+          - aegis_480442    # 480442
+      - Combo:
+          - Enchant_Groza    # 310321
+          - aegis_480442    # 480442
+    Script: |
+      bonus2 bResEff,Eff_Stone,5000;
+  - Combos:
+      - Combo:
+          - Kings_Magic    # 311284
+          - aegis_480442    # 480442
+    Script: |
+      autobonus "{ bonus2 bRegenPercentSP,10,1000; }",10,10000,BF_WEAPON|BF_MAGIC;
+  - Combos:
+      - Combo:
+          - B_Seyren_Card    # 4357
+          - Injured_Eyepatch_JP    # 19445
+      - Combo:
+          - B_Seyren_Card    # 4357
+          - Injured_Eyepatch_JP_    # 19446
+    Script: |
+      bonus bSpeedRate,25;
+      autobonus3 "{ bonus bBaseAtk,1000; }",200,5000,"LK_BERSERK";
+      /*Todo : Should be When using the Berserk skill while in this state, when attacking physically, there is a 20% chance to gain ATK + 1000 for 5 seconds. (don't know to wrtite this script)*/
+  - Combos:
+      - Combo:
+          - Release_Of_Magic    # 29371
+          - aegis_312645    # 312645
+    Script: |
+      bonus2 bSkillFixedCast,"CD_ARBITRIUM",-1000;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312646    # 312646
+    Script: |
+      autobonus3 "{}",50,100,"WH_HAWKBOOMERANG","{ sc_start SC_UNLIMIT,20000,5; }";
+      autobonus3 "{}",50,100,"WH_HAWKRUSH","{ sc_start SC_UNLIMIT,20000,5; }";
+    UnEquipScript: |
+      sc_end SC_UNLIMIT;
+  - Combos:
+      - Combo:
+          - Release_Of_Magic    # 29371
+          - aegis_312397    # 312397
+    Script: |
+      bonus2 bSkillFixedCast,"ABC_ABYSS_SQUARE",-1500;
+  - Combos:
+      - Combo:
+          - aegis_300580    # 300580
+          - Goddess_of_Abundance    # 311073
+    Script: |
+      bonus bMaxHPrate,15;
+      bonus2 bSubEle,Ele_Holy,10;
+  - Combos:
+      - Combo:
+          - aegis_300580    # 300580
+          - aegis_312418    # 312418
+    Script: |
+      bonus2 bRegenPercentHP,1,1000;
+      bonus2 bIgnoreMdefRaceRate,RC_All,50;
+  - Combos:
+      - Combo:
+          - Release_Of_Magic    # 29371
+          - aegis_312928    # 312928
+    Script: |
+      bonus2 bSkillCooldown,"AG_CRIMSON_ARROW",-200;
+      bonus2 bSkillCooldown,"AG_STORM_CANNON",-200;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312930    # 312930
+    Script: |
+      bonus2 bSkillCooldown,"ABC_CHAIN_REACTION_SHOT",-200;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312931    # 312931
+    Script: |
+      bonus2 bSkillCooldown,"ABC_FRENZY_SHOT",-200;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312933    # 312933
+    Script: |
+      bonus2 bSkillCooldown,"IQ_EXPOSION_BLASTER",-100;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312936    # 312936
+    Script: |
+      bonus2 bSkillCooldown,"IG_SHIELD_SHOOTING",-200;
+  - Combos:
+      - Combo:
+          - Release_Of_Magic    # 29371
+          - aegis_312937    # 312937
+    Script: |
+      bonus2 bSkillCooldown,"IG_JUDGEMENT_CROSS",-200;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312939    # 312939
+    Script: |
+      bonus2 bSkillCooldown,"WH_CRESCIVE_BOLT",-100;
+  - Combos:
+      - Combo:
+          - Release_Of_Magic    # 29371
+          - aegis_312942    # 312942
+    Script: |
+      bonus2 bSkillCooldown,"EM_CONFLAGRATION",-500;
+      bonus2 bSkillCooldown,"EM_LIGHTNING_LAND",-500;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312945    # 312945
+    Script: |
+      bonus2 bSkillCooldown,"CD_EFFLIGO",-200;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312947    # 312947
+    Script: |
+      bonus2 bSkillCooldown,"SHC_SHADOW_STAB",-500;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312948    # 312948
+    Script: |
+      bonus2 bSkillCooldown,"SHC_IMPACT_CRATER",-200;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312949    # 312949
+    Script: |
+      bonus2 bSkillCooldown,"DK_DRAGONIC_AURA",-300;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312952    # 312952
+    Script: |
+      bonus2 bSkillCooldown,"TR_RHYTHMSHOOTING",-100;
+  - Combos:
+      - Combo:
+          - Release_Of_Magic    # 29371
+          - aegis_312962    # 312962
+    Script: |
+      bonus2 bSkillCooldown,"HN_JUPITEL_THUNDER_STORM",-300;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312969    # 312969
+    Script: |
+      autobonus "{ bonus2 bSkillUseSP,\"NW_ONLY_ONE_BULLET\",99; bonus2 bSkillUseSP,\"NW_SPIRAL_SHOOTING\",179; }",30,20000,BF_WEAPON;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312970    # 312970
+    Script: |
+      bonus2 bSkillCooldown,"NW_SPIRAL_SHOOTING",-300;
+  - Combos:
+      - Combo:
+          - Hero    # 29509
+          - aegis_312978    # 312978
+    Script: |
+      bonus2 bSkillCooldown,"MT_MIGHTY_SMASH",-200;
+  - Combos:
+      - Combo:
+          - aegis_312022    # 312022
+          - aegis_313328    # 313328
+      - Combo:
+          - aegis_312045    # 312045
+          - aegis_313328    # 313328
+      - Combo:
+          - aegis_312046    # 312046
+          - aegis_313328    # 313328
+      - Combo:
+          - aegis_312047    # 312047
+          - aegis_313328    # 313328
+      - Combo:
+          - aegis_312048    # 312048
+          - aegis_313328    # 313328
+      - Combo:
+          - aegis_312049    # 312049
+          - aegis_313328    # 313328
+    Script: |
+      autobonus "{ bonus bAllStats,BaseLevel/10; bonus bMaxHPrate,BaseLevel/10; bonus bFlee,10*(BaseLevel/10); bonus bBaseAtk,10*(BaseLevel/10); bonus bMatk,10*(BaseLevel/10); }",20,10000,BF_WEAPON|BF_MAGIC;
+  - Combos:
+      - Combo:
+          - Supplement_Part_Str_J    # 15148
+          - Supplement_Part_Con_J    # 20776
+          - Supplement_Part_Agi_J    # 22073
+          - Supplement_Part_Dex_J    # 28368
+    Script: |
+      bonus2 bSkillAtk,"NC_COLDSLOWER",50;
+      bonus2 bSkillAtk,"NC_FLAMELAUNCHER",50;
+      bonus2 bSkillAtk,"NC_ARMSCANNON",50;
+      autobonus2 "{ bonus bDelayrate,-30; }",20,7000,BF_WEAPON|BF_MAGIC;
+      if (getequiprefinerycnt(EQI_ARMOR) >= 7 && getequiprefinerycnt(EQI_GARMENT) >= 7 && getequiprefinerycnt(EQI_SHOES) >= 7) {
+         bonus2 bSkillAtk,"NC_COLDSLOWER",50;
+         bonus2 bSkillAtk,"NC_FLAMELAUNCHER",50;
+         bonus2 bSkillAtk,"NC_ARMSCANNON",50;
+         bonus bNoMadoFuel;
+      }
+  - Combos:
+      - Combo:
+          - Guardian_Processor    # 19170
+          - Upgrade_Part_Gun_B_J    # 28369
+    Script: |
+      bonus bAllStats,1;
+      bonus2 bSubRace,RC_DemiHuman,2;
+  - Combos:
+      - Combo:
+          - Upgrade_Part_Plate_J    # 15149
+          - Guardian_Processor    # 19170
+    Script: |
+      .@r = getequiprefinerycnt(EQI_ARMOR);
+      bonus2 bSubRace,RC_DemiHuman,3;
+      if (.@r>=7) {
+         bonus bMaxHPrate,10;
+         bonus2 bSubRace,RC_DemiHuman,2;
+         if (.@r>=9) {
+             bonus bMaxHPrate,10;
+             bonus2 bSubRace,RC_DemiHuman,2;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Guardian_Processor    # 19170
+          - Upgrade_Part_Engine_J    # 20777
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT);
+      bonus2 bSubRace,RC_DemiHuman,3;
+      if (.@r>=7) {
+         bonus2 bSubEle,Ele_Holy,15;
+         bonus2 bSubEle,Ele_Dark,15;
+         bonus2 bSubRace,RC_DemiHuman,1;
+         if (.@r>=9) {
+             bonus2 bSubEle,Ele_Holy,15;
+             bonus2 bSubEle,Ele_Dark,15;
+             bonus2 bSubRace,RC_DemiHuman,1;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Guardian_Processor    # 19170
+          - Upgrade_Part_Booster_J    # 22074
+    Script: |
+      .@r = getequiprefinerycnt(EQI_SHOES);
+      bonus2 bSubRace,RC_DemiHuman,3;
+      if (.@r>=7) {
+         bonus bAspdRate,5;
+         bonus2 bSubRace,RC_DemiHuman,1;
+         if (.@r>=9) {
+             bonus bAspdRate,5;
+             bonus2 bSubRace,RC_DemiHuman,1;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Upgrade_Part_Plate_J    # 15149
+          - Upgrade_Part_Engine_J    # 20777
+          - Upgrade_Part_Booster_J    # 22074
+          - Upgrade_Part_Gun_B_J    # 28369
+    Script: |
+      bonus2 bVariableCastrate,"NC_VULCANARM",-100;
+      bonus2 bVariableCastrate,"NC_BOOSTKNUCKLE",-100;
+      bonus2 bResEff,Eff_Freeze,10000;
+      if (getequiprefinerycnt(EQI_ARMOR) >= 7 && getequiprefinerycnt(EQI_GARMENT) >= 7 && getequiprefinerycnt(EQI_SHOES) >= 7) {
+         bonus2 bSubEle,Ele_Holy,10;
+         bonus2 bSkillAtk,"NC_VULCANARM",50;
+         bonus2 bSkillAtk,"NC_BOOSTKNUCKLE",50;
+         bonus4 bAutoSpellOnSkill,"NC_PILEBUNKER","SA_DISPELL",5,1000;
+         bonus2 bSkillCooldown,"NC_PILEBUNKER",3000;
+      }
+  - Combos:
+      - Combo:
+          - SingingPere_Card    # 27108
+          - aegis_570070    # 570070
+    Script: |
+      bonus bMatkRate,7;
+      bonus2 bSkillCooldown,"WM_METALICSOUND",-2000;
+      bonus2 bMagicAtkEle,Ele_Neutral,20;
+  - Combos:
+      - Combo:
+          - PlayingPere_Card    # 27107
+          - aegis_570070    # 570070
+    Script: |
+      bonus2 bAddClass,Class_All,7;
+      bonus bLongAtkRate,20;
+      bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-2000;
+  - Combos:
+      - Combo:
+          - JitterbugCard    # 27109
+          - aegis_570070    # 570070
+    Script: |
+      bonus bNoCastCancel;
+      bonus5 bAutoSpell,"NPC_WIDESLEEP",2,50,BF_MAGIC,1;
+      bonus5 bAutoSpell,"RA_UNLIMIT",3,50,BF_WEAPON,0;
+    UnEquipScript: |
+      sc_end SC_UNLIMIT;
+  - Combos:
+      - Combo:
+          - Grand_Pere_Card    # 27106
+          - aegis_570070    # 570070
+    Script: |
+      bonus2 bResEff,Eff_Sleep,10000;
+      bonus bUnbreakableArmor;
+      bonus bUnbreakableWeapon;
+      bonus2 bSkillCooldown,"WM_LULLABY_DEEPSLEEP",-1000*getequiprefinerycnt(EQI_ARMOR);
+  - Combos:
+      - Combo:
+          - Cap_IL    # 19223
+          - aegis_410306    # 410306
+    Script: |
+      bonus bAspdRate,10;
+      bonus bShortAtkRate,15;
+      autobonus "{ bonus bAspd,5; bonus3 bAutoSpell,\"TF_DOUBLE\",10,1000; }",50,7000,BF_WEAPON;
+  - Combos:
+      - Combo:
+          - Goibne_Helmet_IL    # 19366
+          - aegis_410306    # 410306
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      autobonus "{ bonus bSPDrainValue,3; }",50,7000,BF_WEAPON;
+      bonus bMaxSPrate,2*.@r;
+      bonus bSPrecovRate,10*.@r;
+  - Combos:
+      - Combo:
+          - Nurse_Cap_IL    # 19209
+          - aegis_410306    # 410306
+    Script: |
+      bonus bHealPower2,20;
+      autobonus "{ bonus bDef,80*getequiprefinerycnt(EQI_HEAD_TOP); }",15,7000,BF_WEAPON;
+      bonus bMaxHPrate,2*getequiprefinerycnt(EQI_HEAD_TOP);
+  - Combos:
+      - Combo:
+          - Fancy_Flower_IL    # 19247
+          - aegis_410306    # 410306
+    Script: |
+      bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",100;
+      bonus2 bSkillAtk,"WZ_EARTHSPIKE",100;
+      bonus2 bSkillAtk,"MG_FIREBOLT",100;
+      bonus2 bSkillAtk,"MG_COLDBOLT",100;
+      bonus3 bAutoSpell,"PF_DOUBLECASTING",max(getskilllv("PF_DOUBLECASTING"),1),70;
+      bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",max(getskilllv("MG_LIGHTNINGBOLT"),1),150;
+      bonus3 bAutoSpell,"WZ_EARTHSPIKE",max(getskilllv("WZ_EARTHSPIKE"),1),150;
+      bonus3 bAutoSpell,"MG_FIREBOLT",max(getskilllv("MG_FIREBOLT"),1),150;
+      bonus3 bAutoSpell,"MG_COLDBOLT",max(getskilllv("MG_COLDBOLT"),1),150;
+  - Combos:
+      - Combo:
+          - Angry_Mouth    # 5113
+          - aegis_400622    # 400622
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bCritical,10;
+      if (.@r>=7)
+         bonus bCritAtkRate,10;
+      if (.@r>=9)
+         bonus bAspd,1;
+  - Combos:
+      - Combo:
+          - Crecendo_Eclipse_Bless    # 313144
+          - Lunar_E_Armor_LT    # 450263
+    Script: |
+      .@r = getequiprefinerycnt(EQI_ARMOR);
+      if ((eaclass()&EAJL_FOURTH) && (BaseJob == Job_Wizard || BaseJob == Job_Sage || BaseJob == Job_Priest)) {
+         bonus2 bMagicAtkEle,Ele_All,20;
+         if (.@r>=14) {
+             bonus bNearAtkDef,7;
+         }
+      }
+      if ((eaclass()&EAJL_FOURTH) && (BaseJob == Job_Hunter || BaseJob == Job_Bard || BaseJob == Job_Dancer)) {
+         bonus bLongAtkRate,20;
+         if (.@r>=14) {
+             bonus2 bSubSize,Size_Medium,8;
+             bonus2 bSubSize,Size_Large,8;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_SO    # 19483
+          - aegis_490590    # 490590
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bDelayrate,-5;
+      bonus2 bMagicAddSize,Size_All,4*(.@r/3);
+      if (.@r>=11)
+         autobonus "{ bonus bMatkRate,20; bonus bInt,100; }",30,10000,BF_MAGIC;
+  - Combos:
+      - Combo:
+          - aegis_15981    # 15981
+          - aegis_490590    # 490590
+      - Combo:
+          - aegis_15981    # 15981
+          - aegis_490591    # 490591
+    Script: |
+      bonus bDelayrate,-5;
+      bonus2 bMagicAddRace,RC_All,10;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Int_3    # 29683
+          - aegis_490590    # 490590
+      - Combo:
+          - Time_Jewely_Int_3    # 29683
+          - aegis_490591    # 490591
+    Script: |
+      bonus2 bSkillCooldown,"SO_PSYCHIC_WAVE",-1000;
+      bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",20*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Agi_3    # 29677
+          - aegis_490590    # 490590
+      - Combo:
+          - Time_Jewely_Agi_3    # 29677
+          - aegis_490591    # 490591
+    Script: |
+      bonus2 bSkillCooldown,"SO_DIAMONDDUST",-1000;
+      bonus2 bSkillAtk,"SO_DIAMONDDUST",20*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Vit_3    # 29680
+          - aegis_490590    # 490590
+      - Combo:
+          - Time_Jewely_Vit_3    # 29680
+          - aegis_490591    # 490591
+    Script: |
+      bonus3 bAutoSpell,"MG_COLDBOLT",10,150;
+      bonus2 bMagicAddRace,RC_All,8*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - aegis_313354    # 313354
+          - aegis_490590    # 490590
+      - Combo:
+          - aegis_313354    # 313354
+          - aegis_490591    # 490591
+    Script: |
+      bonus2 bSkillCooldown,"SO_PSYCHIC_WAVE",-350;
+      bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",70;
+  - Combos:
+      - Combo:
+          - aegis_313350    # 313350
+          - aegis_490590    # 490590
+      - Combo:
+          - aegis_313350    # 313350
+          - aegis_490591    # 490591
+    Script: |
+      bonus2 bMagicAddSize,Size_All,10;
+      bonus2 bSkillAtk,"SO_DIAMONDDUST",70;
+  - Combos:
+      - Combo:
+          - aegis_313352    # 313352
+          - aegis_490590    # 490590
+      - Combo:
+          - aegis_313352    # 313352
+          - aegis_490591    # 490591
+    Script: |
+      bonus3 bAutoSpell,"GC_DARKCROW",5,80;
+      bonus2 bSkillAtk,"MG_FIREBOLT",280;
+      bonus2 bSkillAtk,"MG_COLDBOLT",280;
+      bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",280;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_RA    # 19484
+          - Black_Eagle_Ring_TH    # 490586
+      - Combo:
+          - S_Circlet_Of_Time_RA    # 19484
+          - aegis_490587    # 490587
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bDelayrate,-5;
+      bonus2 bAddSize,Size_All,4*(.@r/3);
+      if (.@r>=11) {
+         bonus2 bVariableCastrate,"RA_AIMEDBOLT",-100;
+         bonus2 bVariableCastrate,"RA_ARROWSTORM",-100;
+         bonus2 bVariableCastrate,"SN_SHARPSHOOTING",-100;
+      }
+  - Combos:
+      - Combo:
+          - aegis_15982    # 15982
+          - Black_Eagle_Ring_TH    # 490586
+      - Combo:
+          - aegis_15982    # 15982
+          - aegis_490587    # 490587
+    Script: |
+      bonus bDelayrate,-5;
+      bonus2 bAddRace,RC_All,10;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - Black_Eagle_Ring_TH    # 490586
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490587    # 490587
+    Script: |
+      bonus bFixedCast,-500;
+      bonus2 bSkillAtk,"RA_AIMEDBOLT",20*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Dex_3    # 29686
+          - Black_Eagle_Ring_TH    # 490586
+      - Combo:
+          - Time_Jewely_Dex_3    # 29686
+          - aegis_490587    # 490587
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bDelayrate,-8;
+      bonus2 bSkillCooldown,"RA_ARROWSTORM",-300*(.@r/2);
+      bonus2 bSkillAtk,"RA_ARROWSTORM",20*(.@r/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Luk_3    # 29689
+          - Black_Eagle_Ring_TH    # 490586
+      - Combo:
+          - Time_Jewely_Luk_3    # 29689
+          - aegis_490587    # 490587
+    Script: |
+      bonus bCritAtkRate,15;
+      bonus2 bSkillAtk,"SN_SHARPSHOOTING",20*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - ATW_Ring_TW    # 490389
+          - Quick_Ring    # 490588
+    Script: |
+      bonus2 bAddRace,RC_All,15;
+      bonus2 bMagicAddRace,RC_All,15;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - Black_Eagle_Ring_TH    # 490586
+          - aegis_490592    # 490592
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490587    # 490587
+          - aegis_490592    # 490592
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - Black_Eagle_Ring_TH    # 490586
+          - aegis_490593    # 490593
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490587    # 490587
+          - aegis_490593    # 490593
+    Script: |
+      bonus2 bAddSize,Size_All,20;
+      bonus2 bSkillAtk,"RA_AIMEDBOLT",10*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Dex_3    # 29686
+          - Black_Eagle_Ring_TH    # 490586
+          - aegis_490592    # 490592
+      - Combo:
+          - Time_Jewely_Dex_3    # 29686
+          - aegis_490587    # 490587
+          - aegis_490592    # 490592
+      - Combo:
+          - Time_Jewely_Dex_3    # 29686
+          - Black_Eagle_Ring_TH    # 490586
+          - aegis_490593    # 490593
+      - Combo:
+          - Time_Jewely_Dex_3    # 29686
+          - aegis_490587    # 490587
+          - aegis_490593    # 490593
+    Script: |
+      bonus2 bAddRace,RC_All,15;
+      bonus2 bSkillAtk,"RA_ARROWSTORM",10*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Luk_3    # 29689
+          - Black_Eagle_Ring_TH    # 490586
+          - aegis_490592    # 490592
+      - Combo:
+          - Time_Jewely_Luk_3    # 29689
+          - aegis_490587    # 490587
+          - aegis_490592    # 490592
+      - Combo:
+          - Time_Jewely_Luk_3    # 29689
+          - Black_Eagle_Ring_TH    # 490586
+          - aegis_490593    # 490593
+      - Combo:
+          - Time_Jewely_Luk_3    # 29689
+          - aegis_490587    # 490587
+          - aegis_490593    # 490593
+    Script: |
+      bonus bBaseAtk,80;
+      bonus bCritAtkRate,15;
+      bonus2 bSkillAtk,"SN_SHARPSHOOTING",10*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Str_2    # 29673
+          - aegis_490583    # 490583
+      - Combo:
+          - aegis_313347    # 313347
+          - aegis_490583    # 490583
+    Script: |
+      bonus2 bAddSize,Size_All,15;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Agi_2    # 29676
+          - aegis_490583    # 490583
+      - Combo:
+          - aegis_313349    # 313349
+          - aegis_490583    # 490583
+    Script: |
+      bonus bDelayrate,-8;
+      bonus2 bMagicAddRace,RC_All,8;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Vit_2    # 29679
+          - aegis_490583    # 490583
+      - Combo:
+          - aegis_313351    # 313351
+          - aegis_490583    # 490583
+    Script: |
+      bonus bMaxHPrate,8;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Int_2    # 29682
+          - aegis_490583    # 490583
+      - Combo:
+          - aegis_313353    # 313353
+          - aegis_490583    # 490583
+    Script: |
+      bonus2 bMagicAddSize,Size_All,15;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Dex_2    # 29685
+          - aegis_490583    # 490583
+      - Combo:
+          - aegis_313355    # 313355
+          - aegis_490583    # 490583
+    Script: |
+      bonus2 bAddRace,RC_All,8;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Luk_2    # 29688
+          - aegis_490583    # 490583
+      - Combo:
+          - aegis_313357    # 313357
+          - aegis_490583    # 490583
+    Script: |
+      bonus bBaseAtk,40;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490584    # 490584
+      - Combo:
+          - aegis_313348    # 313348
+          - aegis_490584    # 490584
+    Script: |
+      bonus2 bAddSize,Size_All,20;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Agi_3    # 29677
+          - aegis_490583    # 490583
+      - Combo:
+          - aegis_313350    # 313350
+          - aegis_490584    # 490584
+    Script: |
+      bonus bDelayrate,-12;
+      bonus2 bMagicAddRace,RC_All,12;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Vit_3    # 29680
+          - aegis_490584    # 490584
+      - Combo:
+          - aegis_313352    # 313352
+          - aegis_490584    # 490584
+    Script: |
+      bonus bMaxHPrate,12;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Int_3    # 29683
+          - aegis_490584    # 490584
+      - Combo:
+          - aegis_313354    # 313354
+          - aegis_490584    # 490584
+    Script: |
+      bonus2 bMagicAddSize,Size_All,20;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Dex_3    # 29686
+          - aegis_490584    # 490584
+      - Combo:
+          - aegis_313356    # 313356
+          - aegis_490584    # 490584
+    Script: |
+      bonus2 bAddRace,RC_All,15;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Luk_3    # 29689
+          - aegis_490584    # 490584
+      - Combo:
+          - aegis_313358    # 313358
+          - aegis_490584    # 490584
+    Script: |
+      bonus bBaseAtk,80;
+  - Combos:
+      - Combo:
+          - Snowflower_Pendant    # 490176
+          - Ice_Pendant    # 490594
+    Script: |
+      bonus bAllTraitStats,3;
+      bonus2 bSPDrainRate,30,1;
+      bonus2 bAddClass,Class_Boss,20;
+  - Combos:
+      - Combo:
+          - Snowflower_Ring    # 490177
+          - Ice_Pendant    # 490594
+    Script: |
+      bonus bAllTraitStats,3;
+      bonus bCritical,15;
+      bonus bHit,15;
+      bonus bShortAtkRate,20;
+      bonus bLongAtkRate,20;
+  - Combos:
+      - Combo:
+          - Snowflower_Earring    # 490179
+          - Ice_Pendant    # 490594
+    Script: |
+      bonus bAllTraitStats,3;
+      bonus bDelayrate,-8;
+      bonus2 bMagicAddClass,Class_Boss,20;
+  - Combos:
+      - Combo:
+          - Snowflower_Necklace    # 490178
+          - Ice_Pendant    # 490594
+    Script: |
+      bonus bAllTraitStats,3;
+      bonus2 bMagicAtkEle,Ele_All,20;
+      bonus bFixedCast,-400;
+  - Combos:
+      - Combo:
+          - B_Seyren_Card    # 4357
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus bMaxHPrate,50;
+      bonus bBaseAtk,120;
+      bonus bLongAtkDef,5;
+      bonus bIgnoreDefRace,RC_All;
+  - Combos:
+      - Combo:
+          - B_Katrinn_Card    # 4365
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus bMatk,120;
+      bonus bNearAtkDef,5;
+      bonus2 bMagicAtkEle,Ele_All,40;
+  - Combos:
+      - Combo:
+          - B_Magaleta_Card    # 4363
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus bDef,200;
+      bonus bMdef,80;
+      bonus bMaxHPrate,40;
+      bonus2 bSubEle,Ele_All,15;
+  - Combos:
+      - Combo:
+          - B_Eremes_Card    # 4359
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus bCritical,30;
+      bonus bCritAtkRate,50;
+  - Combos:
+      - Combo:
+          - B_Shecil_Card    # 4367
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus2 bSPDrainRate,20,1;
+      bonus bLongAtkRate,40;
+  - Combos:
+      - Combo:
+          - B_Harword_Card    # 4361
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus bIgnoreDefRace,RC_All;
+      bonus bShortAtkRate,40;
+  - Combos:
+      - Combo:
+          - Real_Seyren_Card    # 4689
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus2 bAddSize,Size_All,25;
+      bonus2 bSkillCooldown,"RK_IGNITIONBREAK",-1000;
+    UnEquipScript: |
+      heal 0,-2000;
+  - Combos:
+      - Combo:
+          - Real_Katrinn_Card    # 4686
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus2 bMagicAddSize,Size_All,25;
+      bonus2 bSkillCooldown,"WL_CRIMSONROCK",-1500;
+    UnEquipScript: |
+      heal 0,-2000;
+  - Combos:
+      - Combo:
+          - Real_Magaleta_Card    # 4685
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus2 bMagicAddSize,Size_All,25;
+      bonus2 bSkillCooldown,"AB_ADORAMUS",-1000;
+    UnEquipScript: |
+      heal 0,-2000;
+  - Combos:
+      - Combo:
+          - Real_Eremes_Card    # 4684
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus2 bAddSize,Size_All,25;
+      bonus2 bSkillCooldown,"GC_DARKCROW",-10000;
+    UnEquipScript: |
+      heal 0,-2000;
+  - Combos:
+      - Combo:
+          - Real_Shecil_Card    # 4687
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus2 bAddSize,Size_All,25;
+      bonus2 bSkillCooldown,"RA_ARROWSTORM",-1500;
+    UnEquipScript: |
+      heal 0,-2000;
+  - Combos:
+      - Combo:
+          - Real_Harword_Card    # 4688
+          - RingOfThought_LT    # 490596
+    Script: |
+      bonus2 bAddSize,Size_All,25;
+      bonus2 bSkillCooldown,"NC_AXETORNADO",-2000;
+    UnEquipScript: |
+      heal 0,-2000;
+  - Combos:
+      - Combo:
+          - aegis_410136    # 410136
+          - aegis_420368    # 420368
+      - Combo:
+          - aegis_410137    # 410137
+          - aegis_420368    # 420368
+    Script: |
+      .@a = (readparam(bStr)/15);
+      .@b = (readparam(bAgi)/15);
+      .@c = (readparam(bVit)/15);
+      .@d = (readparam(bInt)/15);
+      .@e = (readparam(bDex)/15);
+      .@f = (readparam(bLuk)/15);
+      .@g = (readparam(bStr)+readparam(bAgi)+readparam(bVit)+readparam(bInt)+readparam(bDex)+readparam(bLuk))/600;
+      bonus bShortAtkRate,.@a;
+      bonus bDelayrate,-.@b;
+      bonus bMaxHPrate,.@c;
+      bonus bAspdRate,.@c;
+      bonus2 bMagicAddSize,Size_All,.@d;
+      bonus bLongAtkRate,.@e;
+      bonus bBaseAtk,6*.@f;
+      bonus bMatk,6*.@f;
+      bonus2 bAddRace,RC_All,.@g;
+      bonus2 bMagicAddRace,RC_All,.@g;
+  - Combos:
+      - Combo:
+          - Old_Rune_Circlet    # 18971
+          - aegis_490605    # 490605
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus2 bSkillCooldown,"RK_IGNITIONBREAK",-1500;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"RK_IGNITIONBREAK",10*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Protect_Of_Crown    # 18983
+          - aegis_490605    # 490605
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus2 bSkillCooldown,"LG_EARTHDRIVE",-2500;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"LG_EARTHDRIVE",30*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Circlet_Of_Bone    # 18982
+          - aegis_490606    # 490606
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus2 bSkillCooldown,"GC_DARKCROW",-10000;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"GC_CROSSIMPACT",10*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Shadow_Handicraft    # 18975
+          - aegis_490606    # 490606
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      skill "RA_UNLIMIT",1;
+      bonus2 bSkillCooldown,"RA_UNLIMIT",180000;
+      bonus2 bSubEle,Ele_All,30;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"SC_TRIANGLESHOT",10*(.@r/2);
+    UnEquipScript: |
+      sc_end SC_UNLIMIT;
+  - Combos:
+      - Combo:
+          - Old_Driver_Band_R    # 18973
+          - aegis_490607    # 490607
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus2 bSkillCooldown,"NC_AXETORNADO",-1000;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"NC_AXETORNADO",10*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Driver_Band_Y    # 18974
+          - aegis_490607    # 490607
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus2 bVariableCastrate,"NC_ARMSCANNON",-100;
+      bonus2 bSkillCooldown,"NC_ARMSCANNON",-500;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"NC_ARMSCANNON",10*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Midas_Whisper    # 18977
+          - aegis_490607    # 490607
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus2 bAddMonsterDropItem,6212,50;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"GN_CARTCANNON",10*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Magic_Stone_Hat    # 18978
+          - aegis_490608    # 490608
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bDelayrate,-15;
+      bonus2 bMagicAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"WL_COMET",12*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Wind_Whisper    # 18980
+          - aegis_490608    # 490608
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bDelayrate,-15;
+      bonus2 bMagicAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"SO_VARETYR_SPEAR",15*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Camo_RabbitHood    # 18984
+          - aegis_490609    # 490609
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bDelayrate,-15;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"SN_SHARPSHOOTING",15*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Minstrel_Song_Hat    # 18976
+          - aegis_490609    # 490609
+      - Combo:
+          - Old_Dying_Swan    # 18981
+          - aegis_490609    # 490609
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus2 bSkillUseSP,"WM_SEVERE_RAINSTORM",60;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",10*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Mitra    # 18972
+          - aegis_490610    # 490610
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bDelayrate,-15;
+      bonus2 bMagicAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"AB_JUDEX",40*(.@r/2);
+  - Combos:
+      - Combo:
+          - Old_Blazing_Soul    # 18979
+          - aegis_490610    # 490610
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus4 bAutoSpellOnSkill,"SR_RAMPAGEBLASTER","CH_SOULCOLLECT",1,1000;
+      bonus2 bAddRace,RC_All,4*(.@r/2);
+      bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",10*(.@r/2);
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_SR    # 19481
+          - aegis_490611    # 490611
+      - Combo:
+          - S_Circlet_Of_Time_SR    # 19481
+          - aegis_490612    # 490612
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bShortAtkRate,10;
+      bonus bLongAtkRate,10;
+      bonus2 bSkillAtk,"SR_KNUCKLEARROW",15*(.@r/2);
+      bonus2 bSkillAtk,"SR_TIGERCANNON",15*(.@r/2);
+      bonus2 bAddSize,Size_All,4*(.@r/3);
+      if (.@r>=11)
+         autobonus "{ bonus bVit,100; bonus2 bAddClass,Class_All,20; }",30,10000,BF_WEAPON;
+  - Combos:
+      - Combo:
+          - aegis_15982    # 15982
+          - aegis_490611    # 490611
+      - Combo:
+          - aegis_15983    # 15983
+          - aegis_490611    # 490611
+      - Combo:
+          - aegis_15982    # 15982
+          - aegis_490612    # 490612
+      - Combo:
+          - aegis_15983    # 15983
+          - aegis_490612    # 490612
+    Script: |
+      bonus bDelayrate,-5;
+      bonus2 bAddRace,RC_All,10;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490611    # 490611
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490612    # 490612
+    Script: |
+      bonus bLongAtkRate,20;
+      bonus2 bAddRace,RC_All,7*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Vit_3    # 29680
+          - aegis_490611    # 490611
+      - Combo:
+          - Time_Jewely_Vit_3    # 29680
+          - aegis_490612    # 490612
+    Script: |
+      bonus2 bSkillCooldown,"SR_TIGERCANNON",-500;
+      bonus2 bSkillAtk,"SR_TIGERCANNON",5*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - aegis_313348    # 313348
+          - aegis_490611    # 490611
+      - Combo:
+          - aegis_313348    # 313348
+          - aegis_490612    # 490612
+    Script: |
+      bonus4 bAutoSpellOnSkill,"SR_KNUCKLEARROW","SR_KNUCKLEARROW",10,350;
+      bonus2 bSkillAtk,"SR_KNUCKLEARROW",105;
+  - Combos:
+      - Combo:
+          - aegis_313352    # 313352
+          - aegis_490611    # 490611
+      - Combo:
+          - aegis_313352    # 313352
+          - aegis_490612    # 490612
+    Script: |
+      bonus bShortAtkRate,20;
+      bonus2 bSkillAtk,"SR_TIGERCANNON",105;
+  - Combos:
+      - Combo:
+          - Real_Seyren_Card    # 4689
+          - aegis_300567    # 300567
+    Script: |
+      autobonus "{ bonus bBaseAtk,200; }",60,12000,BF_WEAPON,"{ active_transform 3225,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Randel_Card    # 4690
+          - aegis_300568    # 300568
+    Script: |
+      autobonus "{ bonus bBaseAtk,200; }",60,12000,BF_WEAPON,"{ active_transform 3240,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Magaleta_Card    # 4685
+          - aegis_300569    # 300569
+    Script: |
+      autobonus "{ bonus bMatk,200; }",60,12000,BF_MAGIC,"{ active_transform 3221,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Chen_Card    # 4693
+          - aegis_300570    # 300570
+    Script: |
+      autobonus "{ bonus bBaseAtk,200; }",60,12000,BF_WEAPON,"{ active_transform 3243,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Katrinn_Card    # 4686
+          - aegis_300571    # 300571
+    Script: |
+      autobonus "{ bonus bMatk,200; }",60,12000,BF_MAGIC,"{ active_transform 3224,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Ceila_Card    # 4692
+          - aegis_300572    # 300572
+    Script: |
+      autobonus "{ bonus bMatk,200; }",60,12000,BF_MAGIC,"{ active_transform 3242,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Harword_Card    # 4688
+          - aegis_300573    # 300573
+    Script: |
+      autobonus "{ bonus bBaseAtk,200; }",60,12000,BF_WEAPON,"{ active_transform 3223,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Flamel_Card    # 4691
+          - aegis_300574    # 300574
+    Script: |
+      autobonus "{ bonus bBaseAtk,200; }",60,12000,BF_WEAPON,"{ active_transform 3241,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Eremes_Card    # 4684
+          - aegis_300575    # 300575
+    Script: |
+      autobonus "{ bonus bBaseAtk,200; }",60,12000,BF_WEAPON,"{ active_transform 3220,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Gertie_Card    # 4694
+          - aegis_300576    # 300576
+    Script: |
+      autobonus "{ bonus bBaseAtk,200; }",60,12000,BF_WEAPON,"{ active_transform 3244,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Shecil_Card    # 4687
+          - aegis_300577    # 300577
+    Script: |
+      autobonus "{ bonus bBaseAtk,200; }",60,12000,BF_WEAPON,"{ active_transform 3222,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Alphoccio_Card    # 4696
+          - aegis_300578    # 300578
+    Script: |
+      autobonus "{ bonus bBaseMatk,200; }",60,12000,BF_WEAPON,"{ active_transform 3245,12000; }";
+  - Combos:
+      - Combo:
+          - Real_Trentini_Card    # 4695
+          - aegis_300579    # 300579
+    Script: |
+      autobonus "{ bonus bBaseAtk,200; }",60,12000,BF_WEAPON,"{ active_transform 3246,12000; }";
+  - Combos:
+      - Combo:
+          - Seyren_Memory    # 29594
+          - aegis_300534    # 300534
+          - aegis_480425    # 480425
+      - Combo:
+          - Seyren_Memory    # 29594
+          - aegis_300534    # 300534
+          - aegis_480426    # 480426
+      - Combo:
+          - Seyren_Memory    # 29594
+          - aegis_300534    # 300534
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      autobonus "{ bonus bLongAtkRate,100; }",10+(20*.@r),5000,BF_WEAPON;
+      bonus2 bSkillAtk,"RK_IGNITIONBREAK",5*.@r;
+      bonus2 bSkillAtk,"RK_SONICWAVE",5*.@r;
+      bonus2 bSkillAtk,"RK_HUNDREDSPEAR",5*.@r;
+  - Combos:
+      - Combo:
+          - Harword_Memory    # 29595
+          - aegis_300535    # 300535
+          - aegis_480425    # 480425
+      - Combo:
+          - Harword_Memory    # 29595
+          - aegis_300535    # 300535
+          - aegis_480426    # 480426
+      - Combo:
+          - Harword_Memory    # 29595
+          - aegis_300535    # 300535
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus2 bSkillCooldown,"NC_ARMSCANNON",-100*.@r;
+      bonus2 bSkillAtk,"NC_POWERSWING",5*.@r;
+      bonus2 bSkillAtk,"NC_ARMSCANNON",5*.@r;
+      bonus2 bSkillAtk,"NC_AXETORNADO",5*.@r;
+  - Combos:
+      - Combo:
+          - Eremes_Memory    # 29596
+          - aegis_300536    # 300536
+          - aegis_480425    # 480425
+      - Combo:
+          - Eremes_Memory    # 29596
+          - aegis_300536    # 300536
+          - aegis_480426    # 480426
+      - Combo:
+          - Eremes_Memory    # 29596
+          - aegis_300536    # 300536
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus bCritical,7*.@r;
+      bonus bDelayrate,-3*.@r;
+      bonus2 bSkillAtk,"GC_CROSSIMPACT",5*.@r;
+      bonus2 bSkillAtk,"ASC_BREAKER",5*.@r;
+      bonus2 bSkillAtk,"GC_ROLLINGCUTTER",5*.@r;
+  - Combos:
+      - Combo:
+          - Katrinn_Memory    # 29598
+          - aegis_300537    # 300537
+          - aegis_480425    # 480425
+      - Combo:
+          - Katrinn_Memory    # 29598
+          - aegis_300537    # 300537
+          - aegis_480426    # 480426
+      - Combo:
+          - Katrinn_Memory    # 29598
+          - aegis_300537    # 300537
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus bVariableCastrate,-5*.@r;
+      bonus bDelayrate,-3*.@r;
+      bonus2 bSkillAtk,"WL_CRIMSONROCK",5*.@r;
+      bonus2 bSkillAtk,"WL_SOULEXPANSION",5*.@r;
+      bonus2 bSkillAtk,"WL_COMET",5*.@r;
+  - Combos:
+      - Combo:
+          - Magaleta_Memory    # 29599
+          - aegis_300538    # 300538
+          - aegis_480425    # 480425
+      - Combo:
+          - Magaleta_Memory    # 29599
+          - aegis_300538    # 300538
+          - aegis_480426    # 480426
+      - Combo:
+          - Magaleta_Memory    # 29599
+          - aegis_300538    # 300538
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus2 bSkillCooldown,"AB_ADORAMUS",-50*.@r;
+      bonus2 bSkillAtk,"AB_JUDEX",5*.@r;
+      bonus2 bSkillAtk,"AB_ADORAMUS",5*.@r;
+      bonus2 bSkillAtk,"AB_DUPLELIGHT_MAGIC",5*.@r;
+      bonus2 bSkillAtk,"AB_DUPLELIGHT_MELEE",5*.@r;
+  - Combos:
+      - Combo:
+          - Shecil_Memory    # 29600
+          - aegis_300539    # 300539
+          - aegis_480425    # 480425
+      - Combo:
+          - Shecil_Memory    # 29600
+          - aegis_300539    # 300539
+          - aegis_480426    # 480426
+      - Combo:
+          - Shecil_Memory    # 29600
+          - aegis_300539    # 300539
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus bDelayrate,-3*.@r;
+      bonus bCritAtkRate,5*.@r;
+      bonus2 bSkillAtk,"SN_SHARPSHOOTING",5*.@r;
+      bonus2 bSkillAtk,"RA_ARROWSTORM",5*.@r;
+      bonus2 bSkillAtk,"RA_AIMEDBOLT",5*.@r;
+  - Combos:
+      - Combo:
+          - Randel_Memory    # 29601
+          - aegis_300540    # 300540
+          - aegis_480425    # 480425
+      - Combo:
+          - Randel_Memory    # 29601
+          - aegis_300540    # 300540
+          - aegis_480426    # 480426
+      - Combo:
+          - Randel_Memory    # 29601
+          - aegis_300540    # 300540
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus bCritical,5*.@r;
+      bonus bLongAtkRate,5*.@r;
+      bonus2 bSkillAtk,"LG_RAYOFGENESIS",5*.@r;
+      bonus2 bSkillAtk,"LG_SHIELDPRESS",5*.@r;
+      bonus2 bSkillAtk,"LG_CANNONSPEAR",5*.@r;
+  - Combos:
+      - Combo:
+          - Flamel_Memory    # 29602
+          - aegis_300541    # 300541
+          - aegis_480425    # 480425
+      - Combo:
+          - Flamel_Memory    # 29602
+          - aegis_300541    # 300541
+          - aegis_480426    # 480426
+      - Combo:
+          - Flamel_Memory    # 29602
+          - aegis_300541    # 300541
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus bVariableCastrate,-10*.@r;
+      bonus bLongAtkRate,5*.@r;
+      bonus2 bSkillAtk,"GN_SPORE_EXPLOSION",5*.@r;
+      bonus2 bSkillAtk,"GN_CARTCANNON",5*.@r;
+      bonus2 bSkillAtk,"GN_CRAZYWEED",5*.@r;
+  - Combos:
+      - Combo:
+          - Gertie_Memory    # 29603
+          - aegis_300542    # 300542
+          - aegis_480425    # 480425
+      - Combo:
+          - Gertie_Memory    # 29603
+          - aegis_300542    # 300542
+          - aegis_480426    # 480426
+      - Combo:
+          - Gertie_Memory    # 29603
+          - aegis_300542    # 300542
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus3 bAutoSpell,"SO_PSYCHIC_WAVE",5,10+(60*.@r);
+      bonus2 bMagicAtkEle,Ele_Neutral,5*.@r;
+      bonus2 bSkillAtk,"SC_FATALMENACE",5*.@r;
+      bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",5*.@r;
+      bonus2 bSkillAtk,"SC_TRIANGLESHOT",5*.@r;
+  - Combos:
+      - Combo:
+          - Celia_Memory    # 29604
+          - aegis_300543    # 300543
+          - aegis_480425    # 480425
+      - Combo:
+          - Celia_Memory    # 29604
+          - aegis_300543    # 300543
+          - aegis_480426    # 480426
+      - Combo:
+          - Celia_Memory    # 29604
+          - aegis_300543    # 300543
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus2 bSkillCooldown,"SO_PSYCHIC_WAVE",-70*.@r;
+      bonus2 bMagicAtkEle,Ele_Neutral,5*.@r;
+      bonus2 bSkillAtk,"WZ_HEAVENDRIVE",5*.@r;
+      bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",5*.@r;
+      bonus2 bSkillAtk,"SO_EARTHGRAVE",5*.@r;
+  - Combos:
+      - Combo:
+          - Chen_Memory    # 29605
+          - aegis_300544    # 300544
+          - aegis_480425    # 480425
+      - Combo:
+          - Chen_Memory    # 29605
+          - aegis_300544    # 300544
+          - aegis_480426    # 480426
+      - Combo:
+          - Chen_Memory    # 29605
+          - aegis_300544    # 300544
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus bPerfectHitAddRate,20*.@r;
+      bonus bLongAtkRate,5*.@r;
+      bonus2 bSkillAtk,"MO_CHAINCOMBO",5*.@r;
+      bonus2 bSkillAtk,"SR_KNUCKLEARROW",5*.@r;
+      bonus2 bSkillAtk,"SR_RIDEINLIGHTNING",5*.@r;
+  - Combos:
+      - Combo:
+          - Tren_Memory    # 29606
+          - aegis_300545    # 300545
+          - aegis_480425    # 480425
+      - Combo:
+          - Tren_Memory    # 29606
+          - aegis_300545    # 300545
+          - aegis_480426    # 480426
+      - Combo:
+          - Tren_Memory    # 29606
+          - aegis_300545    # 300545
+          - aegis_480427    # 480427
+      - Combo:
+          - Alpho_Memory    # 29607
+          - aegis_300546    # 300546
+          - aegis_480425    # 480425
+      - Combo:
+          - Alpho_Memory    # 29607
+          - aegis_300546    # 300546
+          - aegis_480426    # 480426
+      - Combo:
+          - Alpho_Memory    # 29607
+          - aegis_300546    # 300546
+          - aegis_480427    # 480427
+    Script: |
+      .@r = getequiprefinerycnt(EQI_GARMENT)/3;
+      bonus bVariableCastrate,-10*.@r;
+      bonus2 bMagicAtkEle,Ele_Neutral,5*.@r;
+      bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",5*.@r;
+      bonus2 bSkillAtk,"WM_METALICSOUND",5*.@r;
+      bonus2 bSkillAtk,"WM_REVERBERATION",5*.@r;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_SC    # 19479
+          - aegis_490598    # 490598
+      - Combo:
+          - S_Circlet_Of_Time_SC    # 19479
+          - aegis_490599    # 490599
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bDelayrate,-5;
+      bonus2 bSkillAtk,"SC_FATALMENACE",15*(.@r/2);
+      bonus2 bSkillAtk,"SC_TRIANGLESHOT",15*(.@r/2);
+      bonus2 bAddSize,Size_All,4*(.@r/3);
+      if (.@r>=11)
+         autobonus "{ bonus2 bAddClass,Class_All,20; bonus bAgi,100; }",30,10000,BF_WEAPON;
+  - Combos:
+      - Combo:
+          - aegis_15982    # 15982
+          - aegis_490598    # 490598
+      - Combo:
+          - aegis_15983    # 15983
+          - aegis_490598    # 490598
+      - Combo:
+          - aegis_15982    # 15982
+          - aegis_490599    # 490599
+      - Combo:
+          - aegis_15983    # 15983
+          - aegis_490599    # 490599
+    Script: |
+      bonus bDelayrate,-5;
+      bonus2 bAddRace,RC_All,10;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490598    # 490598
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490598    # 490599
+    Script: |
+      bonus bShortAtkRate,15;
+      bonus2 bSkillAtk,"SC_FATALMENACE",5*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Dex_3    # 29686
+          - aegis_490598    # 490598
+      - Combo:
+          - Time_Jewely_Dex_3    # 29686
+          - aegis_490599    # 490599
+    Script: |
+      bonus2 bSkillCooldown,"SC_FEINTBOMB",-1800;
+      bonus2 bSkillAtk,"SC_TRIANGLESHOT",10*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - aegis_313348    # 313348
+          - aegis_490598    # 490598
+      - Combo:
+          - aegis_313348    # 313348
+          - aegis_490599    # 490599
+    Script: |
+      bonus2 bHPDrainRate,30,3;
+      bonus2 bHPDrainRate,10,2;
+      bonus2 bSkillAtk,"SC_FATALMENACE",70;
+  - Combos:
+      - Combo:
+          - aegis_313356    # 313356
+          - aegis_490598    # 490598
+      - Combo:
+          - aegis_313356    # 313356
+          - aegis_490599    # 490599
+    Script: |
+      bonus bLongAtkRate,30;
+      bonus2 bSkillAtk,"SC_TRIANGLESHOT",105;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_LG    # 19475
+          - aegis_490600    # 490600
+      - Combo:
+          - S_Circlet_Of_Time_LG    # 19475
+          - aegis_490601    # 490601
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bShortAtkRate,10;
+      bonus bLongAtkRate,10;
+      bonus2 bSkillAtk,"LG_OVERBRAND",15*(.@r/2);
+      bonus2 bSkillAtk,"LG_CANNONSPEAR",15*(.@r/2);
+      bonus2 bAddSize,Size_All,4*(.@r/3);
+      if (.@r>=11)
+         autobonus "{ bonus2 bAddClass,Class_All,20; bonus bStr,100; }",30,10000,BF_WEAPON;
+  - Combos:
+      - Combo:
+          - aegis_15982    # 15982
+          - aegis_490600    # 490600
+      - Combo:
+          - aegis_15983    # 15983
+          - aegis_490600    # 490600
+      - Combo:
+          - aegis_15982    # 15982
+          - aegis_490601    # 490601
+      - Combo:
+          - aegis_15983    # 15983
+          - aegis_490601    # 490601
+    Script: |
+      bonus bStr,20;
+      bonus2 bAddRace,RC_All,10;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490600    # 490600
+      - Combo:
+          - Time_Jewely_Str_3    # 29674
+          - aegis_490601    # 490601
+    Script: |
+      bonus bDelayrate,-15;
+      bonus2 bSkillAtk,"LG_OVERBRAND",10*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Luk_3    # 29689
+          - aegis_490600    # 490600
+      - Combo:
+          - Time_Jewely_Luk_3    # 29689
+          - aegis_490601    # 490601
+    Script: |
+      bonus bCritical,20;
+      bonus bCritAtkRate,20;
+      bonus2 bSkillAtk,"LG_CANNONSPEAR",5*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - aegis_313348    # 313348
+          - aegis_490600    # 490600
+      - Combo:
+          - aegis_313348    # 313348
+          - aegis_490601    # 490601
+    Script: |
+      bonus bDelayrate,-5;
+      bonus2 bSkillCooldown,"LG_OVERBRAND",-100;
+      bonus2 bSkillAtk,"LG_OVERBRAND",105;
+  - Combos:
+      - Combo:
+          - aegis_313358    # 313358
+          - aegis_490600    # 490600
+      - Combo:
+          - aegis_313358    # 313358
+          - aegis_490601    # 490601
+    Script: |
+      bonus bLongAtkRate,20;
+      bonus bStr,56;
+      bonus2 bSkillAtk,"LG_CANNONSPEAR",70;
+  - Combos:
+      - Combo:
+          - S_Circlet_Of_Time_WL    # 19482
+          - aegis_490603    # 490603
+      - Combo:
+          - S_Circlet_Of_Time_WL    # 19482
+          - aegis_490604    # 490604
+    Script: |
+      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
+      bonus bDelayrate,-5;
+      bonus2 bSkillAtk,"WL_JACKFROST",10*(.@r/2);
+      bonus2 bSkillAtk,"WL_CHAINLIGHTNING",10*(.@r/2);
+      bonus2 bMagicAddSize,Size_All,4*(.@r/3);
+      if (.@r>=11) {
+         bonus2 bSkillCooldown,"WL_JACKFROST",-2500;
+         bonus bVariableCastrate,-30;
+      }
+  - Combos:
+      - Combo:
+          - aegis_15981    # 15981
+          - aegis_490603    # 490603
+      - Combo:
+          - aegis_15981    # 15981
+          - aegis_490604    # 490604
+    Script: |
+      bonus bDelayrate,-5;
+      bonus2 bMagicAddRace,RC_All,10;
+  - Combos:
+      - Combo:
+          - Time_Jewely_Int_3    # 29683
+          - aegis_490603    # 490603
+      - Combo:
+          - Time_Jewely_Int_3    # 29683
+          - aegis_490604    # 490604
+    Script: |
+      bonus2 bSkillCooldown,"WL_FROSTMISTY",-3000;
+      bonus2 bSkillAtk,"WL_JACKFROST",10*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - Time_Jewely_Agi_3    # 29677
+          - aegis_490603    # 490603
+      - Combo:
+          - Time_Jewely_Agi_3    # 29677
+          - aegis_490604    # 490604
+    Script: |
+      bonus bDelayrate,-10;
+      bonus bAspdRate,10;
+      bonus2 bSkillAtk,"WL_CHAINLIGHTNING",10*(getequiprefinerycnt(EQI_HEAD_TOP)/2);
+  - Combos:
+      - Combo:
+          - aegis_313354    # 313354
+          - aegis_490603    # 490603
+      - Combo:
+          - aegis_313354    # 313354
+          - aegis_490604    # 490604
+    Script: |
+      bonus2 bSkillCooldown,"WL_JACKFROST",-500;
+      bonus bAspdRate,15;
+      bonus2 bSkillAtk,"WL_JACKFROST",70;
+  - Combos:
+      - Combo:
+          - aegis_313350    # 313350
+          - aegis_490603    # 490603
+      - Combo:
+          - aegis_313350    # 313350
+          - aegis_490604    # 490604
+    Script: |
+      bonus4 bAutoSpellOnSkill,"WL_CHAINLIGHTNING","WL_CHAINLIGHTNING",5,350;
+      bonus2 bSkillAtk,"WL_CHAINLIGHTNING",70;
+  - Combos:
+      - Combo:
+          - Old_Rune_Circlet    # 18971
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"RK_IGNITIONBREAK",60;
+  - Combos:
+      - Combo:
+          - Old_Protect_Of_Crown    # 18983
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"LG_EARTHDRIVE",60;
+  - Combos:
+      - Combo:
+          - Old_Driver_Band_R    # 18973
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"NC_AXETORNADO",60;
+  - Combos:
+      - Combo:
+          - Old_Driver_Band_Y    # 18974
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"NC_ARMSCANNON",60;
+  - Combos:
+      - Combo:
+          - Old_Midas_Whisper    # 18977
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"GN_CARTCANNON",60;
+  - Combos:
+      - Combo:
+          - Old_Magic_Stone_Hat    # 18978
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"WL_COMET",60;
+  - Combos:
+      - Combo:
+          - Old_Wind_Whisper    # 18980
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"SO_VARETYR_SPEAR",60;
+  - Combos:
+      - Combo:
+          - Old_Circlet_Of_Bone    # 18982
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"GC_CROSSIMPACT",60;
+  - Combos:
+      - Combo:
+          - Old_Shadow_Handicraft    # 18975
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"SC_TRIANGLESHOT",60;
+  - Combos:
+      - Combo:
+          - Old_Mitra    # 18972
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"AB_JUDEX",60;
+  - Combos:
+      - Combo:
+          - Old_Blazing_Soul    # 18979
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",60;
+  - Combos:
+      - Combo:
+          - Old_Camo_RabbitHood    # 18984
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"SN_SHARPSHOOTING",60;
+  - Combos:
+      - Combo:
+          - Old_Minstrel_Song_Hat    # 18976
+          - aegis_490613    # 490613
+      - Combo:
+          - Old_Dying_Swan    # 18981
+          - aegis_490613    # 490613
+    Script: |
+      bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",60;
+  - Combos:
+      - Combo:
+          - Astraea_Helm_LT    # 400699
+          - Astraea_Shoes_LT    # 470205
+    Script: |
+      bonus bMaxHP,7000;
+      bonus bFixedCast,-500;
+      bonus bFlee2,12;
+  - Combos:
+      - Combo:
+          - Astraea_Helm_LT    # 400699
+          - Astraea_Cape_LT    # 480338
+    Script: |
+      bonus bShortAtkRate,15;
+      bonus bLongAtkRate,15;
+      bonus2 bMagicAtkEle,Ele_All,15;
+      bonus bLongAtkDef,15;
+      bonus2 bSubEle,Ele_All,5;
+  - Combos:
+      - Combo:
+          - Astraea_Helm_LT    # 400699
+          - Astraea_Armor_LT    # 450385
+    Script: |
+      bonus bHealPower,20;
+      bonus bAddItemHealRate,20;
+      autobonus2 "{ bonus bVit,200; }",30,10000,BF_WEAPON;
+      if (eaclass()&EAJL_THIRD && (BaseJob == Job_Priest))
+         skill "MG_ENERGYCOAT",1;
+  - Combos:
+      - Combo:
+          - Star_Cluster_Of_Sta3    # 310679
+          - Astraea_Helm_LT    # 400699
+    Script: |
+      bonus2 bSubSize,Size_Medium,15;
+      if (readparam(bSta)>=90) {
+         bonus bLongAtkDef,10;
+         bonus bNearAtkDef,-10;
+      }
+  - Combos:
+      - Combo:
+          - Star_Cluster_Of_Wis3    # 310691
+          - Astraea_Helm_LT    # 400699
+    Script: |
+      bonus2 bMagicSubSize,Size_All,15;
+      if (readparam(bWis)>=90) {
+         bonus bLongAtkDef,-10;
+         bonus bNearAtkDef,10;
+      }
+  - Combos:
+      - Combo:
+          - Astraea_Shoes_LT    # 470205
+          - Astraea_Ring_LT    # 490595
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus bLongAtkRate,10;
+      bonus2 bMagicAtkEle,Ele_All,10;
+      bonus bDelayrate,-8;
+      bonus bMaxHPrate,8;
+      bonus bMaxSPrate,8;
+      if (getequiprefinerycnt(EQI_SHOES)>=13) {
+         bonus2 bSubSize,Size_All,5;
+         bonus2 bMagicSubSize,Size_All,5;
+         bonus2 bSubRace,RC_DemiHuman,3;
+         bonus2 bSubRace,RC_Player_Doram,3;
+         bonus2 bSubRace,RC_Player_Human,3;
+      }
+  - Combos:
+      - Combo:
+          - Astraea_Helm_LT    # 400699
+          - Astraea_Ring_LT    # 490595
+    Script: |
+      bonus bAllStats,5;
+      bonus bDelayrate,-7;
+  - Combos:
+      - Combo:
+          - Evil_Druid_Card    # 4141
+          - Astraea_Armor_LT    # 450385
+    Script: |
+      bonus2 bAddClass,Class_All,15;
+      bonus2 bMagicAddClass,Class_All,15;
+      bonus bMaxHPrate,8*(min(14,getequiprefinerycnt(EQI_ARMOR))/2);
+  - Combos:
+      - Combo:
+          - B_Magaleta_Card    # 4363
+          - Astraea_Armor_LT    # 450385
+    Script: |
+      .@r = getequiprefinerycnt(EQI_ARMOR);
+      bonus2 bAddClass,Class_All,25;
+      bonus2 bMagicAddClass,Class_All,25;
+      if (.@r>=10)
+         bonus bMaxHPrate,pow(min(14,.@r)-4,2);
+  - Combos:
+      - Combo:
+          - Astraea_Armor_LT    # 450385
+          - Astraea_Shoes_LT    # 470205
+          - Astraea_Cape_LT    # 480338
+    Script: |
+      bonus bAllStats,3;
+      bonus bMaxHPrate,15;
+      bonus2 bSubSize,Size_All,10;
+      if (getenchantgrade(EQI_GARMENT)>=ENCHANTGRADE_A && getenchantgrade(EQI_SHOES)>=ENCHANTGRADE_A) {
+         bonus2 bResEff,Eff_Freeze,10000;
+         bonus2 bResEff,Eff_Stone,10000;
+         bonus2 bResEff,Eff_Stun,10000;
+         bonus2 bResEff,Eff_Sleep,10000;
+         bonus2 bResEff,Eff_Curse,10000;
+      }
+  - Combos:
+      - Combo:
+          - Pure_Heart_LT_TW    # 490492
+          - Infinity_Chip_EX    # 490572
+    Script: |
+      if (BaseJob == Job_Merchant) {
+         bonus bPow,5;
+         bonus bCrt,5;
+         bonus bPAtk,5;
+         bonus bFixedCast,-500;
+         autobonus3 "{ bonus2 bSkillAtk,\"NC_ARMSCANNON\",30; bonus2 bSkillAtk,\"MT_SPARK_BLASTER\",20; bonus2 bSkillAtk,\"MT_AXE_STOMP\",30; bonus2 bSkillAtk,\"MT_MIGHTY_SMASH\",20; }",1000,120000,"MT_D_MACHINE";
+      }
+  - Combos:
+      - Combo:
+          - S_IG_OC_Earring   # 24948
+          - S_Master_Weapon   # 24792
+          - S_IG_OC_Pendant   # 24949
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus2 bAddEle,Ele_All,3;
+      bonus bPAtk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_IG_OC_Earring   # 24948
+          - S_IG_OC_Pendant   # 24949
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_IG_RF_Armor   # 24950
+          - S_Master_Shield   # 24793
+          - S_IG_RF_Shoes   # 24951
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_IG_RF_Armor   # 24950
+          - S_IG_RF_Shoes   # 24951
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_IQ_EB_Earring   # 24952
+          - S_Master_Weapon   # 24792
+          - S_IQ_EB_Pendant   # 24953
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_IQ_EB_Earring   # 24952
+          - S_IQ_EB_Pendant   # 24953
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_IQ_BFB_Armor   # 24954
+          - S_Master_Shield   # 24793
+          - S_IQ_BFB_Shoes   # 24955
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_IQ_BFB_Armor   # 24954
+          - S_IQ_BFB_Shoes   # 24955
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_SU_CS_Earring   # 24956
+          - S_Master_Weapon   # 24792
+          - S_SU_CS_Pendant   # 24957
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_SU_CS_Earring   # 24956
+          - S_SU_CS_Pendant   # 24957
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_SU_HB_Armor   # 24958
+          - S_Master_Shield   # 24793
+          - S_SU_HB_Shoes   # 24959
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_SU_HB_Armor   # 24958
+          - S_SU_HB_Shoes   # 24959
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_CD_AR_Earring   # 24967
+          - S_Master_Weapon   # 24792
+          - S_CD_AR_Pendant   # 24968
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_CD_AR_Earring   # 24967
+          - S_CD_AR_Pendant   # 24968
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_CD_DF_Armor   # 24969
+          - S_Master_Shield   # 24793
+          - S_CD_DF_Shoes   # 24970
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_CD_DF_Armor   # 24969
+          - S_CD_DF_Shoes   # 24970
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_AG_FB_Earring   # 24971
+          - S_Master_Weapon   # 24792
+          - S_AG_FB_Pendant   # 24972
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_AG_FB_Earring   # 24971
+          - S_AG_FB_Pendant   # 24972
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_AG_SH_Armor   # 24973
+          - S_Master_Shield   # 24793
+          - S_AG_SH_Shoes   # 24974
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus2 bMagicAddEle,Ele_All,3;
+      bonus bSMatk,2;
+      if (.@sum>=27) {
+         bonus2 bIgnoreMResRaceRate,RC_All,10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreMResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_AG_SH_Armor   # 24973
+          - S_AG_SH_Shoes   # 24974
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=15) {
+         bonus2 bMagicAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreMdefRaceRate,RC_All,50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreMdefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_SKE_NS_Earring   # 24975
+          - S_Master_Weapon   # 24792
+          - S_SKE_NS_Pendant   # 24976
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_SKE_NS_Earring   # 24975
+          - S_SKE_NS_Pendant   # 24976
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - S_SKE_SB_Armor   # 24977
+          - S_Master_Shield   # 24793
+          - S_SKE_SB_Shoes   # 24978
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bCRate,1;
+      bonus bCritical,3;
+      if (.@sum>=27) {
+         bonus2 bIgnoreResRaceRate,RC_All,10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Human,-10;
+         bonus2 bIgnoreResRaceRate,RC_Player_Doram,-10;
+      }
+  - Combos:
+      - Combo:
+          - S_SKE_SB_Armor   # 24977
+          - S_SKE_SB_Shoes   # 24978
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=15) {
+         bonus2 bAddSize,Size_All,7;
+         if (.@sum>=18) {
+            bonus2 bIgnoreDefRaceRate,RC_All,50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Human,-50;
+            bonus2 bIgnoreDefRaceRate,RC_Player_Doram,-50;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_ABC_Dagger   # 28785
+          - Time_DM_R_Crown_ABC   # 400534
+    Script: |
+      bonus2 bMagicAddSize,Size_All,15;
+      bonus2 bSkillAtk,"ABC_ABYSS_SQUARE",25;
+      if (getenchantgrade()>=ENCHANTGRADE_A) {
+         bonus2 bMagicAddEle,Ele_All,15;
+         bonus bMatkRate,7;
+         bonus2 bSkillAtk,"ABC_ABYSS_FLAME",15;
+         bonus2 bSkillAtk,"ABC_ABYSS_FLAME_ATK",15;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300606   # 300606
+          - aegis_300495   # 300495
+    Script: |
+      bonus2 bMagicAddSize,Size_Medium,10;
+  - Combos:
+      - Combo:
+          - aegis_300606   # 300606
+          - aegis_300495   # 300495
+          - aegis_300497   # 300497
+    Script: |
+      bonus2 bMagicAddSize,Size_Medium,20;
+      bonus2 bMagicAddRace,RC_Dragon,15;
+  - Combos:
+      - Combo:
+          - aegis_300606   # 300606
+          - aegis_300497   # 300497
+    Script: |
+      bonus2 bMagicAddRace,RC_Brute,15;
+      bonus2 bMagicAddRace,RC_Player_Doram,15;
+  - Combos:
+      - Combo:
+          - aegis_300607   # 300607
+          - aegis_300491   # 300491
+    Script: |
+      bonus2 bAddSize,Size_Medium,10;
+  - Combos:
+      - Combo:
+          - aegis_300607   # 300607
+          - aegis_300491   # 300491
+          - aegis_300493   # 300493
+    Script: |
+      bonus2 bAddRace,RC_Dragon,15;
+      bonus2 bAddSize,Size_Medium,20;
+  - Combos:
+      - Combo:
+          - aegis_300607   # 300607
+          - aegis_300493   # 300493
+    Script: |
+      bonus2 bAddRace,RC_Brute,15;
+      bonus2 bAddRace,RC_Player_Doram,15;
+  - Combos:
+      - Combo:
+          - aegis_300608   # 300608
+          - aegis_300487   # 300487
+    Script: |
+      bonus2 bAddSize,Size_Medium,10;
+  - Combos:
+      - Combo:
+          - aegis_300608   # 300608
+          - aegis_300487   # 300487
+          - aegis_300489   # 300489
+    Script: |
+      bonus2 bAddRace,RC_Dragon,15;
+      bonus2 bAddSize,Size_Medium,20;
+  - Combos:
+      - Combo:
+          - aegis_300608   # 300608
+          - aegis_300489   # 300489
+    Script: |
+      bonus2 bAddRace,RC_Brute,15;
+      bonus2 bAddRace,RC_Player_Doram,15;
+  - Combos:
+      - Combo:
+          - Royal_H_Mail_A   # 450421
+          - Royal_H_Manteau_A   # 480510
+    Script: |
+      bonus bDelayrate,-10;
+      bonus bBaseAtk,50;
+  - Combos:
+      - Combo:
+          - Royal_H_Mail_B   # 450422
+          - Royal_H_Manteau_B   # 480511
+    Script: |
+      bonus bAspdRate,10;
+      bonus bMatk,50;
+  - Combos:
+      - Combo:
+          - Royal_H_Boots_A   # 470313
+          - Royal_H_Mail_A   # 450421
+    Script: |
+      bonus bAtkRate,5;
+      bonus bMaxHPrate,5;
+  - Combos:
+      - Combo:
+          - Royal_H_Boots_B   # 470314
+          - Royal_H_Mail_B   # 450422
+    Script: |
+      bonus bMatkRate,5;
+      bonus bMaxSPrate,5;
+  - Combos:
+      - Combo:
+          - Royal_H_Manteau_A   # 480510
+          - Royal_H_Boots_A   # 470313
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus bLongAtkRate,10;
+      bonus bVariableCastrate,-10;
+  - Combos:
+      - Combo:
+          - Royal_H_Manteau_B   # 480511
+          - Royal_H_Boots_B   # 470314
+    Script: |
+      bonus2 bMagicAtkEle,Ele_All,10;
+      bonus bDelayrate,-10;
+  - Combos:
+      - Combo:
+          - Time_Gap_SKE_Book   # 540094
+          - Time_DM_R_Crown_SKE   # 400543
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus2 bSkillAtk,"SKE_SKY_SUN",30;
+      bonus2 bSkillAtk,"SKE_SKY_MOON",30;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"SKE_STAR_LIGHT_KICK",15;
+         bonus2 bSkillAtk,"SKE_SKY_SUN",.@sum;
+         bonus2 bSkillAtk,"SKE_SKY_MOON",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_CD_Staff   # 550156
+          - Time_DM_R_Crown_CD   # 400537
+    Script: |
+      bonus2 bSkillAtk,"CD_PNEUMATICUS_PROCELLA",15;
+      bonus2 bSkillAtk,"CD_ARBITRIUM",20;
+      bonus2 bSkillAtk,"CD_ARBITRIUM_ATK",20;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"CD_PNEUMATICUS_PROCELLA",.@sum;
+         bonus2 bSkillAtk,"CD_ARBITRIUM",.@sum;
+         bonus2 bSkillAtk,"CD_ARBITRIUM_ATK",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_SH_Foxtail   # 550159
+          - Time_DM_R_Crown_SH   # 400546
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"SH_CHUL_HO_SONIC_CLAW",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"SH_CHUL_HO_BATTERING",.@sum;
+         bonus2 bSkillCooldown,"SH_CHUL_HO_SONIC_CLAW",150;
+         if (getskilllv("SH_CHUL_HO_BATTERING") > 0) {
+            bonus4 bAutoSpellOnSkill,"SH_CHUL_HO_SONIC_CLAW","SH_CHUL_HO_BATTERING",getskilllv("SH_CHUL_HO_BATTERING"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_IQ_Knuckle   # 560072
+          - Time_DM_R_Crown_IQ   # 400538
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",25;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"IQ_EXPOSION_BLASTER",-300;
+         bonus2 bSkillCooldown,"IQ_BLAZING_FLAME_BLAST",-300;
+         bonus2 bSkillAtk,"IQ_EXPOSION_BLASTER",.@sum;
+         bonus2 bSkillAtk,"IQ_BLAZING_FLAME_BLAST",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Time_Gap_DK_Spear   # 630049
+          - Time_DM_R_Crown_DK   # 400529
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"DK_HACKANDSLASHER",20;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"DK_HACKANDSLASHER",.@sum;
+         bonus2 bSkillAtk,"DK_DRAGONIC_PIERCE",15;
+         bonus bCritical,10;
+      }

File diff suppressed because it is too large
+ 241 - 94
db/re/item_db_equip.yml


File diff suppressed because it is too large
+ 3022 - 1402
db/re/item_db_etc.yml


File diff suppressed because it is too large
+ 209 - 123
db/re/item_db_usable.yml


+ 1653 - 0
db/re/item_enchant.yml

@@ -22318,6 +22318,10 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: DK_Soul_DP
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 72
   - Id: 72
     TargetItems:
     TargetItems:
       S_IG_Armor: true
       S_IG_Armor: true
@@ -22382,6 +22386,18 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: IG_Soul_IC
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: IG_Soul_RS
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: IG_Soul_IP
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 73
   - Id: 73
     TargetItems:
     TargetItems:
       S_SHC_Armor: true
       S_SHC_Armor: true
@@ -22450,6 +22466,10 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: SHC_Soul_CS
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 74
   - Id: 74
     TargetItems:
     TargetItems:
       S_ABC_Armor: true
       S_ABC_Armor: true
@@ -22526,6 +22546,22 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: ABC_Soul_HAS
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: ABC_Soul_CB
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: ABC_Soul_CS
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: ABC_Soul_AF
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 75
   - Id: 75
     TargetItems:
     TargetItems:
       S_CD_Armor: true
       S_CD_Armor: true
@@ -22590,6 +22626,10 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: CD_Soul_DF
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 76
   - Id: 76
     TargetItems:
     TargetItems:
       S_IQ_Armor: true
       S_IQ_Armor: true
@@ -22658,6 +22698,10 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: IQ_Soul_BFB
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 77
   - Id: 77
     TargetItems:
     TargetItems:
       S_MT_Armor: true
       S_MT_Armor: true
@@ -22726,6 +22770,18 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: MT_Soul_RS
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: MT_Soul_PS
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: MT_Soul_EC
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 78
   - Id: 78
     TargetItems:
     TargetItems:
       S_BO_Armor: true
       S_BO_Armor: true
@@ -22790,6 +22846,14 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: BO_Soul_MP
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: BO_Soul_DE
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 79
   - Id: 79
     TargetItems:
     TargetItems:
       S_WH_Armor: true
       S_WH_Armor: true
@@ -22934,6 +22998,10 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: TR_Soul_RW
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 81
   - Id: 81
     TargetItems:
     TargetItems:
       S_AG_Armor: true
       S_AG_Armor: true
@@ -23174,6 +23242,14 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: NW_Soul_WS
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: NW_Soul_MF
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 84
   - Id: 84
     TargetItems:
     TargetItems:
       S_SH_Armor: true
       S_SH_Armor: true
@@ -23242,6 +23318,14 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: SH_Soul_CHB
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: SH_Soul_HRSP
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 85
   - Id: 85
     TargetItems:
     TargetItems:
       S_SS_Armor: true
       S_SS_Armor: true
@@ -23414,6 +23498,18 @@ Body:
             Materials:
             Materials:
               - Material: S_Enchant_Essence
               - Material: S_Enchant_Essence
                 Amount: 5
                 Amount: 5
+          - Item: SKE_Soul_SS
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: SKE_Soul_SM
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
+          - Item: SKE_Soul_SLK
+            Materials:
+              - Material: S_Enchant_Essence
+                Amount: 5
   - Id: 87
   - Id: 87
     TargetItems:
     TargetItems:
       S_SOA_Armor: true
       S_SOA_Armor: true
@@ -32780,3 +32876,1560 @@ Body:
                 Amount: 30
                 Amount: 30
               - Material: EP19_N_P_Crystal
               - Material: EP19_N_P_Crystal
                 Amount: 30
                 Amount: 30
+  - Id: 150
+    TargetItems:
+      Time_Gap_Spear_IG: true
+      Time_Gap_Staff_AG: true
+      Time_Gap_Revolver_NW: true
+      Time_Gap_MT_Axe: true
+      Time_Gap_TR_Ribbon: true
+      Time_Gap_TR_Vilolin: true
+      Time_Gap_HN_Staff: true
+      Time_Gap_BO_Blade: true
+      Time_Gap_SHC_Dagger1: true
+      Time_Gap_SOA_Rod: true
+      Time_Gap_DK_Spear: true
+      Time_Gap_CD_Staff: true
+      Time_Gap_SKE_Book: true
+      Time_Gap_ABC_Dagger: true
+      Time_Gap_SH_Foxtail: true
+      Time_Gap_IQ_Knuckle: true
+    Reset:
+      Chance: 100000
+      Price: 5000000
+      Materials:
+        - Material: Zelunium
+          Amount: 50
+        - Material: Shadowdecon
+          Amount: 50
+        - Material: Etel_Dust
+          Amount: 100
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Bio_Jam_Df2
+            Materials:
+              - Material: Bar_D_St_Rune
+                Amount: 15
+              - Material: Bar_D_Ic_Rune
+                Amount: 15
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+          - Item: Bio_Jam_Es2
+            Materials:
+              - Material: Bar_D_Co_Rune
+                Amount: 15
+              - Material: Bar_D_Po_Rune
+                Amount: 15
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+          - Item: Bio_Jam_Vl2
+            Materials:
+              - Material: Bar_D_Pu_Rune
+                Amount: 15
+              - Material: Bar_D_So_Rune
+                Amount: 15
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+          - Item: Bio_Jam_Eq2
+            Materials:
+              - Material: Bar_D_Fl_Rune
+                Amount: 15
+              - Material: Bar_D_Po_Rune
+                Amount: 15
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+          - Item: Bio_Jam_Hd2
+            Materials:
+              - Material: Bar_D_Ea_Rune
+                Amount: 15
+              - Material: Bar_D_So_Rune
+                Amount: 15
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Barmund_Flame3
+            Materials:
+              - Material: Energy_Of_Elemental
+                Amount: 10
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+          - Item: Barmund_Ice3
+            Materials:
+              - Material: Energy_Of_Elemental
+                Amount: 10
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+          - Item: Barmund_Plain3
+            Materials:
+              - Material: Energy_Of_Elemental
+                Amount: 10
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+          - Item: Barmund_Death3
+            Materials:
+              - Material: Energy_Of_Elemental
+                Amount: 10
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+          - Item: Barmund_Poison3
+            Materials:
+              - Material: Energy_Of_Elemental
+                Amount: 10
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+  - Id: 151
+    TargetItems:
+      Rising_Circlet: true
+    Reset:
+      Chance: 100000
+      Price: 300000
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Rising_Swordman
+            Materials:
+              - Material: Symposium_Card_RD
+                Amount: 7
+              - Material: Symposium_Card_SB
+                Amount: 7
+          - Item: Rising_Thief
+            Materials:
+              - Material: Symposium_Card_RD
+                Amount: 7
+              - Material: Symposium_Card_SB
+                Amount: 7
+          - Item: Rising_Merchant
+            Materials:
+              - Material: Symposium_Card_RD
+                Amount: 7
+              - Material: Symposium_Card_SB
+                Amount: 7
+          - Item: Rising_Magician
+            Materials:
+              - Material: Symposium_Card_OR
+                Amount: 7
+              - Material: Symposium_Card_BU
+                Amount: 7
+          - Item: Rising_Archer
+            Materials:
+              - Material: Symposium_Card_OR
+                Amount: 7
+              - Material: Symposium_Card_BU
+                Amount: 7
+          - Item: Rising_Acolyte
+            Materials:
+              - Material: Symposium_Card_OR
+                Amount: 7
+              - Material: Symposium_Card_BU
+                Amount: 7
+          - Item: Rising_Ninja
+            Materials:
+              - Material: Symposium_Card_YL
+                Amount: 7
+              - Material: Symposium_Card_PP
+                Amount: 7
+          - Item: Rising_Gunner
+            Materials:
+              - Material: Symposium_Card_YL
+                Amount: 7
+              - Material: Symposium_Card_PP
+                Amount: 7
+          - Item: Rising_TK_Star
+            Materials:
+              - Material: Symposium_Card_YL
+                Amount: 7
+              - Material: Symposium_Card_PP
+                Amount: 7
+          - Item: Rising_TK_Soul
+            Materials:
+              - Material: Symposium_Card_GR
+                Amount: 7
+              - Material: Symposium_Card_BL
+                Amount: 7
+          - Item: Rising_Summoner
+            Materials:
+              - Material: Symposium_Card_GR
+                Amount: 7
+              - Material: Symposium_Card_BL
+                Amount: 7
+          - Item: Rinsing_Novice
+            Materials:
+              - Material: Symposium_Card_GR
+                Amount: 7
+              - Material: Symposium_Card_BL
+                Amount: 7
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Expert_Fighter3
+            Materials:
+              - Material: Symposium_Coin
+                Amount: 5
+          - Item: Expert_Magician3
+            Materials:
+              - Material: Symposium_Coin
+                Amount: 5
+          - Item: Attack_Delay_5
+            Materials:
+              - Material: Symposium_Coin
+                Amount: 5
+          - Item: Hit_Plus5
+            Materials:
+              - Material: Symposium_Coin
+                Amount: 5
+          - Item: Caster5
+            Materials:
+              - Material: Symposium_Coin
+                Amount: 5
+          - Item: Expert_Archer3
+            Materials:
+              - Material: Symposium_Coin
+                Amount: 5
+  - Id: 152
+    TargetItems:
+      Yorscalp_Armor: true
+      Yorscalp_Robe: true
+    Order:
+      - Slot: 3
+      - Slot: 2
+      - Slot: 1
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Ep21_4_Def
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+          - Item: Ep21_4_Mdef
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+          - Item: Ep21_4_Warrior
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+          - Item: Ep21_4_Archer
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+          - Item: Ep21_4_Assassin
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+          - Item: Ep21_4_Magician
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Ep21_3_Berserker
+            Price: 2000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone2
+                Amount: 25
+              - Material: EP19_S_F_1_Extract
+                Amount: 30
+              - Material: EP19_S_F_2_Extract
+                Amount: 30
+              - Material: EP19_Gla_Extract
+                Amount: 30
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+          - Item: Ep21_3_Marksman
+            Price: 2000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone2
+                Amount: 25
+              - Material: EP19_S_F_1_Extract
+                Amount: 30
+              - Material: EP19_S_F_2_Extract
+                Amount: 30
+              - Material: EP19_Gla_Extract
+                Amount: 30
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+          - Item: Ep21_3_Executioner
+            Price: 2000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone2
+                Amount: 25
+              - Material: EP19_S_F_1_Extract
+                Amount: 30
+              - Material: EP19_S_F_2_Extract
+                Amount: 30
+              - Material: EP19_Gla_Extract
+                Amount: 30
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+          - Item: Ep21_3_Wizard
+            Price: 2000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone2
+                Amount: 25
+              - Material: EP19_S_F_1_Extract
+                Amount: 30
+              - Material: EP19_S_F_2_Extract
+                Amount: 30
+              - Material: EP19_Gla_Extract
+                Amount: 30
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+      - Slot: 1
+        PerfectEnchants:
+          - Item: Ep21_2_P_Force
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+          - Item: Ep21_2_M_Force
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+          - Item: Ep21_2_G_Cooldown
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Armor_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+  - Id: 153
+    TargetItems:
+      Yorscalp_Manteau: true
+      Yorscalp_Muffler: true
+    Order:
+      - Slot: 3
+      - Slot: 2
+      - Slot: 1
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Ep21_4_Def
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Robe_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+          - Item: Ep21_4_Mdef
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Robe_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Ep21_3_Speed
+            Price: 2000000
+            Materials:
+              - Material: Ep21_Robe_E_Stone2
+                Amount: 25
+              - Material: EP19_S_F_1_Extract
+                Amount: 30
+              - Material: EP19_S_F_2_Extract
+                Amount: 30
+              - Material: EP19_Gla_Extract
+                Amount: 30
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+          - Item: Ep21_3_Caster
+            Price: 2000000
+            Materials:
+              - Material: Ep21_Robe_E_Stone2
+                Amount: 25
+              - Material: EP19_S_F_1_Extract
+                Amount: 30
+              - Material: EP19_S_F_2_Extract
+                Amount: 30
+              - Material: EP19_Gla_Extract
+                Amount: 30
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+      - Slot: 1
+        PerfectEnchants:
+          - Item: Ep21_2_Melee
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Robe_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+          - Item: Ep21_2_Range
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Robe_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+          - Item: Ep21_2_Critical
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Robe_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+          - Item: Ep21_2_Spell
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Robe_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+          - Item: Ep21_2_Ab_All
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Robe_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+  - Id: 154
+    TargetItems:
+      Yorscalp_Boots: true
+      Yorscalp_Shoes: true
+    Order:
+      - Slot: 3
+      - Slot: 2
+      - Slot: 1
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Ep21_4_Hp
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+          - Item: Ep21_4_Sp
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+          - Item: Ep21_4_Phy_Force
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+          - Item: Ep21_4_Mag_Force
+            Price: 1000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone1
+                Amount: 50
+              - Material: EP19_S_F_1_Extract
+                Amount: 20
+              - Material: EP19_S_F_2_Extract
+                Amount: 20
+              - Material: EP19_Gla_Extract
+                Amount: 20
+              - Material: EP19_S_F_3_Extract
+                Amount: 10
+              - Material: EP20_D_P_Extract
+                Amount: 10
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Ep21_3_Size_Atk
+            Price: 2000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone2
+                Amount: 25
+              - Material: EP19_S_F_1_Extract
+                Amount: 30
+              - Material: EP19_S_F_2_Extract
+                Amount: 30
+              - Material: EP19_Gla_Extract
+                Amount: 30
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+          - Item: Ep21_3_Size_Matk
+            Price: 2000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone2
+                Amount: 25
+              - Material: EP19_S_F_1_Extract
+                Amount: 30
+              - Material: EP19_S_F_2_Extract
+                Amount: 30
+              - Material: EP19_Gla_Extract
+                Amount: 30
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+      - Slot: 1
+        PerfectEnchants:
+          - Item: Ep21_2_Ov_Power
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+          - Item: Ep21_2_Fi_Shot
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+          - Item: Ep21_2_Luk_Strike
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+          - Item: Ep21_2_Spl_Buster
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Shoes_E_Stone3
+                Amount: 15
+              - Material: EP19_S_F_1_Extract
+                Amount: 40
+              - Material: EP19_S_F_2_Extract
+                Amount: 40
+              - Material: EP19_Gla_Extract
+                Amount: 40
+              - Material: EP19_S_F_3_Extract
+                Amount: 20
+              - Material: EP20_D_P_Extract
+                Amount: 20
+  - Id: 155
+    TargetItems:
+      Yorscalp_Ring: true
+      Yorscalp_Glove: true
+      Yorscalp_Earring: true
+      Yorscalp_Necklace: true
+    Order:
+      - Slot: 3
+      - Slot: 2
+      - Slot: 1
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Ep21_4_F_Spirit
+            Price: 1500000
+            Materials:
+              - Material: Ep21_Acc_E_Stone1
+                Amount: 70
+              - Material: EP19_S_F_1_Extract
+                Amount: 35
+              - Material: EP19_S_F_2_Extract
+                Amount: 35
+              - Material: EP19_Gla_Extract
+                Amount: 35
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+          - Item: Ep21_4_E_Archer
+            Price: 1500000
+            Materials:
+              - Material: Ep21_Acc_E_Stone1
+                Amount: 70
+              - Material: EP19_S_F_1_Extract
+                Amount: 35
+              - Material: EP19_S_F_2_Extract
+                Amount: 35
+              - Material: EP19_Gla_Extract
+                Amount: 35
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+          - Item: Ep21_4_Fatal
+            Price: 1500000
+            Materials:
+              - Material: Ep21_Acc_E_Stone1
+                Amount: 70
+              - Material: EP19_S_F_1_Extract
+                Amount: 35
+              - Material: EP19_S_F_2_Extract
+                Amount: 35
+              - Material: EP19_Gla_Extract
+                Amount: 35
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+          - Item: Ep21_4_Sp_Power
+            Price: 1500000
+            Materials:
+              - Material: Ep21_Acc_E_Stone1
+                Amount: 70
+              - Material: EP19_S_F_1_Extract
+                Amount: 35
+              - Material: EP19_S_F_2_Extract
+                Amount: 35
+              - Material: EP19_Gla_Extract
+                Amount: 35
+              - Material: EP19_S_F_3_Extract
+                Amount: 15
+              - Material: EP20_D_P_Extract
+                Amount: 15
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Ep21_3_Tenacity
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Acc_E_Stone2
+                Amount: 35
+              - Material: EP19_S_F_1_Extract
+                Amount: 45
+              - Material: EP19_S_F_2_Extract
+                Amount: 45
+              - Material: EP19_Gla_Extract
+                Amount: 45
+              - Material: EP19_S_F_3_Extract
+                Amount: 25
+              - Material: EP20_D_P_Extract
+                Amount: 25
+          - Item: Ep21_3_M_Archer
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Acc_E_Stone2
+                Amount: 35
+              - Material: EP19_S_F_1_Extract
+                Amount: 45
+              - Material: EP19_S_F_2_Extract
+                Amount: 45
+              - Material: EP19_Gla_Extract
+                Amount: 45
+              - Material: EP19_S_F_3_Extract
+                Amount: 25
+              - Material: EP20_D_P_Extract
+                Amount: 25
+          - Item: Ep21_3_Acute
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Acc_E_Stone2
+                Amount: 35
+              - Material: EP19_S_F_1_Extract
+                Amount: 45
+              - Material: EP19_S_F_2_Extract
+                Amount: 45
+              - Material: EP19_Gla_Extract
+                Amount: 45
+              - Material: EP19_S_F_3_Extract
+                Amount: 25
+              - Material: EP20_D_P_Extract
+                Amount: 25
+          - Item: Ep21_3_M_Eessence
+            Price: 3000000
+            Materials:
+              - Material: Ep21_Acc_E_Stone2
+                Amount: 35
+              - Material: EP19_S_F_1_Extract
+                Amount: 45
+              - Material: EP19_S_F_2_Extract
+                Amount: 45
+              - Material: EP19_Gla_Extract
+                Amount: 45
+              - Material: EP19_S_F_3_Extract
+                Amount: 25
+              - Material: EP20_D_P_Extract
+                Amount: 25
+      - Slot: 1
+        PerfectEnchants:
+          - Item: Ep21_2_Phy_Power
+            Price: 4500000
+            Materials:
+              - Material: Ep21_Acc_E_Stone3
+                Amount: 20
+              - Material: EP19_S_F_1_Extract
+                Amount: 65
+              - Material: EP19_S_F_2_Extract
+                Amount: 65
+              - Material: EP19_Gla_Extract
+                Amount: 65
+              - Material: EP19_S_F_3_Extract
+                Amount: 35
+              - Material: EP20_D_P_Extract
+                Amount: 35
+          - Item: Ep21_2_Mag_Power
+            Price: 4500000
+            Materials:
+              - Material: Ep21_Acc_E_Stone3
+                Amount: 20
+              - Material: EP19_S_F_1_Extract
+                Amount: 65
+              - Material: EP19_S_F_2_Extract
+                Amount: 65
+              - Material: EP19_Gla_Extract
+                Amount: 65
+              - Material: EP19_S_F_3_Extract
+                Amount: 35
+              - Material: EP20_D_P_Extract
+                Amount: 35
+  - Id: 156
+    TargetItems:
+      Yorscalp_P_Circlet: true
+      Yorscalp_M_Circlet: true
+    Reset:
+      Chance: 100000
+      Materials:
+        - Material: Zelunium
+          Amount: 20
+        - Material: Shadowdecon
+          Amount: 20
+        - Material: Yorscalp_Spirit
+          Amount: 20
+    Order:
+      - Slot: 3
+      - Slot: 2
+      - Slot: 1
+    Slots:
+      - Slot: 3
+        Price: 300000
+        Materials:
+          - Material: Yorscalp_Serpent
+          - Material: Yorscalp_Symbol
+            Amount: 5
+          - Material: Yorscalp_Spirit
+            Amount: 10
+        Enchants:
+          - Enchantgrade: 0
+            Items:
+              - Item: Strength1
+                Chance: 11500
+              - Item: Strength2
+                Chance: 8000
+              - Item: Strength3
+                Chance: 3500
+              - Item: Strength4
+                Chance: 1500
+              - Item: Strength5
+                Chance: 500
+              - Item: Inteligence1
+                Chance: 11500
+              - Item: Inteligence2
+                Chance: 8000
+              - Item: Inteligence3
+                Chance: 3500
+              - Item: Inteligence4
+                Chance: 1500
+              - Item: Inteligence5
+                Chance: 500
+              - Item: Vitality1
+                Chance: 11500
+              - Item: Vitality2
+                Chance: 8000
+              - Item: Vitality3
+                Chance: 3500
+              - Item: Vitality4
+                Chance: 1500
+              - Item: Vitality5
+                Chance: 500
+              - Item: Luck1
+                Chance: 11500
+              - Item: Luck2
+                Chance: 8000
+              - Item: Luck3
+                Chance: 3500
+              - Item: Luck4
+                Chance: 1500
+              - Item: Luck5
+                Chance: 500
+          - Enchantgrade: 1
+            Items:
+              - Item: Strength1
+                Chance: 11500
+              - Item: Strength2
+                Chance: 8000
+              - Item: Strength3
+                Chance: 3500
+              - Item: Strength4
+                Chance: 1500
+              - Item: Strength5
+                Chance: 500
+              - Item: Inteligence1
+                Chance: 11500
+              - Item: Inteligence2
+                Chance: 8000
+              - Item: Inteligence3
+                Chance: 3500
+              - Item: Inteligence4
+                Chance: 1500
+              - Item: Inteligence5
+                Chance: 500
+              - Item: Vitality1
+                Chance: 11500
+              - Item: Vitality2
+                Chance: 8000
+              - Item: Vitality3
+                Chance: 3500
+              - Item: Vitality4
+                Chance: 1500
+              - Item: Vitality5
+                Chance: 500
+              - Item: Luck1
+                Chance: 11500
+              - Item: Luck2
+                Chance: 8000
+              - Item: Luck3
+                Chance: 3500
+              - Item: Luck4
+                Chance: 1500
+              - Item: Luck5
+                Chance: 500
+          - Enchantgrade: 2
+            Items:
+              - Item: Strength1
+                Chance: 11500
+              - Item: Strength2
+                Chance: 8000
+              - Item: Strength3
+                Chance: 3500
+              - Item: Strength4
+                Chance: 1500
+              - Item: Strength5
+                Chance: 500
+              - Item: Inteligence1
+                Chance: 11500
+              - Item: Inteligence2
+                Chance: 8000
+              - Item: Inteligence3
+                Chance: 3500
+              - Item: Inteligence4
+                Chance: 1500
+              - Item: Inteligence5
+                Chance: 500
+              - Item: Vitality1
+                Chance: 11500
+              - Item: Vitality2
+                Chance: 8000
+              - Item: Vitality3
+                Chance: 3500
+              - Item: Vitality4
+                Chance: 1500
+              - Item: Vitality5
+                Chance: 500
+              - Item: Luck1
+                Chance: 11500
+              - Item: Luck2
+                Chance: 8000
+              - Item: Luck3
+                Chance: 3500
+              - Item: Luck4
+                Chance: 1500
+              - Item: Luck5
+                Chance: 500
+          - Enchantgrade: 3
+            Items:
+              - Item: Strength1
+                Chance: 11500
+              - Item: Strength2
+                Chance: 8000
+              - Item: Strength3
+                Chance: 3500
+              - Item: Strength4
+                Chance: 1500
+              - Item: Strength5
+                Chance: 500
+              - Item: Inteligence1
+                Chance: 11500
+              - Item: Inteligence2
+                Chance: 8000
+              - Item: Inteligence3
+                Chance: 3500
+              - Item: Inteligence4
+                Chance: 1500
+              - Item: Inteligence5
+                Chance: 500
+              - Item: Vitality1
+                Chance: 11500
+              - Item: Vitality2
+                Chance: 8000
+              - Item: Vitality3
+                Chance: 3500
+              - Item: Vitality4
+                Chance: 1500
+              - Item: Vitality5
+                Chance: 500
+              - Item: Luck1
+                Chance: 11500
+              - Item: Luck2
+                Chance: 8000
+              - Item: Luck3
+                Chance: 3500
+              - Item: Luck4
+                Chance: 1500
+              - Item: Luck5
+                Chance: 500
+          - Enchantgrade: 4
+            Items:
+              - Item: Strength1
+                Chance: 11500
+              - Item: Strength2
+                Chance: 8000
+              - Item: Strength3
+                Chance: 3500
+              - Item: Strength4
+                Chance: 1500
+              - Item: Strength5
+                Chance: 500
+              - Item: Inteligence1
+                Chance: 11500
+              - Item: Inteligence2
+                Chance: 8000
+              - Item: Inteligence3
+                Chance: 3500
+              - Item: Inteligence4
+                Chance: 1500
+              - Item: Inteligence5
+                Chance: 500
+              - Item: Vitality1
+                Chance: 11500
+              - Item: Vitality2
+                Chance: 8000
+              - Item: Vitality3
+                Chance: 3500
+              - Item: Vitality4
+                Chance: 1500
+              - Item: Vitality5
+                Chance: 500
+              - Item: Luck1
+                Chance: 11500
+              - Item: Luck2
+                Chance: 8000
+              - Item: Luck3
+                Chance: 3500
+              - Item: Luck4
+                Chance: 1500
+              - Item: Luck5
+                Chance: 500
+      - Slot: 2
+        Price: 300000
+        Materials:
+          - Material: Yorscalp_Serpent
+            Amount: 2
+          - Material: Yorscalp_Symbol
+            Amount: 10
+          - Material: Yorscalp_Spirit
+            Amount: 20
+        Enchants:
+          - Enchantgrade: 0
+            Items:
+              - Item: Yorscalp_Str1
+                Chance: 11400
+              - Item: Yorscalp_Str2
+                Chance: 6000
+              - Item: Yorscalp_Str3
+                Chance: 2500
+              - Item: Yorscalp_Str4
+                Chance: 100
+              - Item: Yorscalp_Int1
+                Chance: 11400
+              - Item: Yorscalp_Int2
+                Chance: 6000
+              - Item: Yorscalp_Int3
+                Chance: 2500
+              - Item: Yorscalp_Int4
+                Chance: 100
+              - Item: Yorscalp_Smart1
+                Chance: 11400
+              - Item: Yorscalp_Smart2
+                Chance: 6000
+              - Item: Yorscalp_Smart3
+                Chance: 2500
+              - Item: Yorscalp_Smart4
+                Chance: 100
+              - Item: Yorscalp_Speed1
+                Chance: 11400
+              - Item: Yorscalp_Speed2
+                Chance: 6000
+              - Item: Yorscalp_Speed3
+                Chance: 2500
+              - Item: Yorscalp_Speed4
+                Chance: 100
+              - Item: Yorscalp_Def1
+                Chance: 11400
+              - Item: Yorscalp_Def2
+                Chance: 6000
+              - Item: Yorscalp_Def3
+                Chance: 2500
+              - Item: Yorscalp_Def4
+                Chance: 100
+          - Enchantgrade: 1
+            Items:
+              - Item: Yorscalp_Str1
+                Chance: 11400
+              - Item: Yorscalp_Str2
+                Chance: 6000
+              - Item: Yorscalp_Str3
+                Chance: 2500
+              - Item: Yorscalp_Str4
+                Chance: 100
+              - Item: Yorscalp_Int1
+                Chance: 11400
+              - Item: Yorscalp_Int2
+                Chance: 6000
+              - Item: Yorscalp_Int3
+                Chance: 2500
+              - Item: Yorscalp_Int4
+                Chance: 100
+              - Item: Yorscalp_Smart1
+                Chance: 11400
+              - Item: Yorscalp_Smart2
+                Chance: 6000
+              - Item: Yorscalp_Smart3
+                Chance: 2500
+              - Item: Yorscalp_Smart4
+                Chance: 100
+              - Item: Yorscalp_Speed1
+                Chance: 11400
+              - Item: Yorscalp_Speed2
+                Chance: 6000
+              - Item: Yorscalp_Speed3
+                Chance: 2500
+              - Item: Yorscalp_Speed4
+                Chance: 100
+              - Item: Yorscalp_Def1
+                Chance: 11400
+              - Item: Yorscalp_Def2
+                Chance: 6000
+              - Item: Yorscalp_Def3
+                Chance: 2500
+              - Item: Yorscalp_Def4
+                Chance: 100
+          - Enchantgrade: 2
+            Items:
+              - Item: Yorscalp_Str1
+                Chance: 11400
+              - Item: Yorscalp_Str2
+                Chance: 6000
+              - Item: Yorscalp_Str3
+                Chance: 2500
+              - Item: Yorscalp_Str4
+                Chance: 100
+              - Item: Yorscalp_Int1
+                Chance: 11400
+              - Item: Yorscalp_Int2
+                Chance: 6000
+              - Item: Yorscalp_Int3
+                Chance: 2500
+              - Item: Yorscalp_Int4
+                Chance: 100
+              - Item: Yorscalp_Smart1
+                Chance: 11400
+              - Item: Yorscalp_Smart2
+                Chance: 6000
+              - Item: Yorscalp_Smart3
+                Chance: 2500
+              - Item: Yorscalp_Smart4
+                Chance: 100
+              - Item: Yorscalp_Speed1
+                Chance: 11400
+              - Item: Yorscalp_Speed2
+                Chance: 6000
+              - Item: Yorscalp_Speed3
+                Chance: 2500
+              - Item: Yorscalp_Speed4
+                Chance: 100
+              - Item: Yorscalp_Def1
+                Chance: 11400
+              - Item: Yorscalp_Def2
+                Chance: 6000
+              - Item: Yorscalp_Def3
+                Chance: 2500
+              - Item: Yorscalp_Def4
+                Chance: 100
+          - Enchantgrade: 3
+            Items:
+              - Item: Yorscalp_Str1
+                Chance: 11400
+              - Item: Yorscalp_Str2
+                Chance: 6000
+              - Item: Yorscalp_Str3
+                Chance: 2500
+              - Item: Yorscalp_Str4
+                Chance: 100
+              - Item: Yorscalp_Int1
+                Chance: 11400
+              - Item: Yorscalp_Int2
+                Chance: 6000
+              - Item: Yorscalp_Int3
+                Chance: 2500
+              - Item: Yorscalp_Int4
+                Chance: 100
+              - Item: Yorscalp_Smart1
+                Chance: 11400
+              - Item: Yorscalp_Smart2
+                Chance: 6000
+              - Item: Yorscalp_Smart3
+                Chance: 2500
+              - Item: Yorscalp_Smart4
+                Chance: 100
+              - Item: Yorscalp_Speed1
+                Chance: 11400
+              - Item: Yorscalp_Speed2
+                Chance: 6000
+              - Item: Yorscalp_Speed3
+                Chance: 2500
+              - Item: Yorscalp_Speed4
+                Chance: 100
+              - Item: Yorscalp_Def1
+                Chance: 11400
+              - Item: Yorscalp_Def2
+                Chance: 6000
+              - Item: Yorscalp_Def3
+                Chance: 2500
+              - Item: Yorscalp_Def4
+                Chance: 100
+          - Enchantgrade: 4
+            Items:
+              - Item: Yorscalp_Str1
+                Chance: 11400
+              - Item: Yorscalp_Str2
+                Chance: 6000
+              - Item: Yorscalp_Str3
+                Chance: 2500
+              - Item: Yorscalp_Str4
+                Chance: 100
+              - Item: Yorscalp_Int1
+                Chance: 11400
+              - Item: Yorscalp_Int2
+                Chance: 6000
+              - Item: Yorscalp_Int3
+                Chance: 2500
+              - Item: Yorscalp_Int4
+                Chance: 100
+              - Item: Yorscalp_Smart1
+                Chance: 11400
+              - Item: Yorscalp_Smart2
+                Chance: 6000
+              - Item: Yorscalp_Smart3
+                Chance: 2500
+              - Item: Yorscalp_Smart4
+                Chance: 100
+              - Item: Yorscalp_Speed1
+                Chance: 11400
+              - Item: Yorscalp_Speed2
+                Chance: 6000
+              - Item: Yorscalp_Speed3
+                Chance: 2500
+              - Item: Yorscalp_Speed4
+                Chance: 100
+              - Item: Yorscalp_Def1
+                Chance: 11400
+              - Item: Yorscalp_Def2
+                Chance: 6000
+              - Item: Yorscalp_Def3
+                Chance: 2500
+              - Item: Yorscalp_Def4
+                Chance: 100
+      - Slot: 1
+        PerfectEnchants:
+          - Item: Arbiter_Warrant
+            Price: 5000000
+            Materials:
+              - Material: Yorscalp_Serpent
+                Amount: 20
+              - Material: Yorscalp_Symbol
+                Amount: 100
+              - Material: Yorscalp_Spirit
+                Amount: 200
+          - Item: Bailiff_Warrant
+            Price: 5000000
+            Materials:
+              - Material: Yorscalp_Serpent
+                Amount: 20
+              - Material: Yorscalp_Symbol
+                Amount: 100
+              - Material: Yorscalp_Spirit
+                Amount: 200
+  - Id: 157
+    TargetItems:
+      Royal_H_Mail_A: true
+      Royal_H_Mail_B: true
+    Order:
+      - Slot: 3
+      - Slot: 2
+      - Slot: 1
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Hunt_Ev_State
+            Price: 100000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 10
+              - Material: E_Hunting_Tag
+                Amount: 30
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Hunt_Ev_Atk
+            Price: 150000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 15
+              - Material: E_Hunting_Tag
+                Amount: 45
+          - Item: Hunt_Ev_Matk
+            Price: 150000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 15
+              - Material: E_Hunting_Tag
+                Amount: 45
+      - Slot: 1
+        PerfectEnchants:
+          - Item: Hunt_Ev_Warrior
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+          - Item: Hunt_Ev_Archer
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+          - Item: Hunt_Ev_Assassin
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+          - Item: Hunt_Ev_Magician
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+  - Id: 158
+    TargetItems:
+      Royal_H_Manteau_A: true
+      Royal_H_Manteau_B: true
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Hunt_Ev_Speed
+            Price: 150000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 15
+              - Material: E_Hunting_Tag
+                Amount: 45
+          - Item: Hunt_Ev_Caster
+            Price: 150000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 15
+              - Material: E_Hunting_Tag
+                Amount: 45
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Hunt_Ev_Melee
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+          - Item: Hunt_Ev_Range
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+          - Item: Hunt_Ev_Critical
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+          - Item: Hunt_Ev_Spell
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+  - Id: 159
+    TargetItems:
+      Royal_H_Boots_A: true
+      Royal_H_Boots_B: true
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Hunt_Ev_Hp
+            Price: 150000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 15
+              - Material: E_Hunting_Tag
+                Amount: 45
+          - Item: Hunt_Ev_Sp
+            Price: 150000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 15
+              - Material: E_Hunting_Tag
+                Amount: 45
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Hunt_Ev_P_Force
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+          - Item: Hunt_Ev_M_Force
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+          - Item: Hunt_Ev_Robust
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90
+          - Item: Hunt_Ev_F_Cast
+            Price: 300000
+            Materials:
+              - Material: E_Hunter_Bdg
+                Amount: 30
+              - Material: E_Hunting_Tag
+                Amount: 90

File diff suppressed because it is too large
+ 308 - 281
db/re/item_group_db.yml


+ 79 - 0
db/re/item_packages.yml

@@ -980,3 +980,82 @@ Body:
       - Group: 1
       - Group: 1
         Items:
         Items:
           - Item: C_Chaos_Emerald
           - Item: C_Chaos_Emerald
+  - Item: Summer_Select_Box1
+    Groups:
+      - Group: 0
+        Items:
+          - Item: C_Gold_Paeonia
+      - Group: 1
+        Items:
+          - Item: C_Red_Paeonia
+  - Item: Summer_Select_Box2
+    Groups:
+      - Group: 0
+        Items:
+          - Item: C_Buoyant_Parasol_B
+      - Group: 1
+        Items:
+          - Item: C_Buoyant_Parasol_R
+  - Item: Summer_Select_Box3
+    Groups:
+      - Group: 0
+        Items:
+          - Item: C_Blue_Sunbed
+      - Group: 1
+        Items:
+          - Item: C_Green_Sunbed
+  - Item: Summer_Select_Box4
+    Groups:
+      - Group: 0
+        Items:
+          - Item: PurpleStar_Foot_Robe
+          - Item: C_Summer_Beach
+      - Group: 1
+        Items:
+          - Item: YellowStar_Foot_Robe
+          - Item: C_Summer_Beach
+  - Item: CLB_SS_Box
+    Groups:
+      - Group: 0
+        Items:
+          - Item: C_CLB_SS_DF
+      - Group: 1
+        Items:
+          - Item: C_CLB_SS_EA
+      - Group: 2
+        Items:
+          - Item: C_CLB_SS_LL
+      - Group: 3
+        Items:
+          - Item: C_CLB_SS_LT
+  - Item: Enriched_Refine_Box
+    Groups:
+      - Group: 0
+        Items:
+          - Item: Enriched_Elunium
+            Amount: 100
+      - Group: 1
+        Items:
+          - Item: Enriched_Oridecon
+            Amount: 100
+  - Item: Henriched_Refine_Box
+    Groups:
+      - Group: 0
+        Items:
+          - Item: HD_Elunium
+            Amount: 26
+      - Group: 1
+        Items:
+          - Item: HD_Oridecon
+            Amount: 26
+#  - Item: Calender_Costume_Box
+#    Groups:
+#      - Group: 0
+#        Items:
+#          - Item: C_berry_Prince_Crown
+#      - Group: 1
+#        Items:
+#          - Item: C_Loki_Nidhogg_Hat
+#      - Group: 2
+#        Items:
+#          - Item: C_Firinto_Scarf

+ 3420 - 6
db/re/item_reform.yml

@@ -9390,12 +9390,12 @@ Body:
         RandomOptionGroup: Group_0
         RandomOptionGroup: Group_0
         ClearSlots: true
         ClearSlots: true
         RemoveEnchantgrade: true
         RemoveEnchantgrade: true
-      - BaseItem: Card_Coin
-        MaximumRefine: 0
-        ResultItem: R_Recycle_Card
-        RandomOptionGroup: Group_0
-        ClearSlots: true
-        RemoveEnchantgrade: true
+#     - BaseItem: Card_Coin   # mistake ?
+#       MaximumRefine: 0
+#       ResultItem: R_Recycle_Card
+#       RandomOptionGroup: Group_0
+#       ClearSlots: true
+#       RemoveEnchantgrade: true
       - BaseItem: Adulter_F_A_Bow
       - BaseItem: Adulter_F_A_Bow
         Materials:
         Materials:
           - Material: Imperfect_Rune
           - Material: Imperfect_Rune
@@ -11719,3 +11719,3417 @@ Body:
             Amount: 5
             Amount: 5
         ResultItem: Gaebolg_Shoes
         ResultItem: Gaebolg_Shoes
         ChangeRefine: 1
         ChangeRefine: 1
+  - Item: Reform_4th_Skill_Shadow
+    BaseItems:
+      - BaseItem: S_SHC_EC_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SHC_EC_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SHC_EC_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SHC_EC_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SHC_SI_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SHC_SI_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SHC_SI_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SHC_SI_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_WH_GS_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_WH_GS_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_WH_GS_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_WH_GS_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_WH_CB_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_WH_CB_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_WH_CB_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_WH_CB_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SS_SR_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SS_SR_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SS_SR_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SS_SR_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SS_KR_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SS_KR_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SS_KR_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SS_KR_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_DK_SS_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_DK_SS_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_DK_SS_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_DK_SS_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_DK_HS_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_DK_HS_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_DK_HS_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_DK_HS_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_TR_RW_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_TR_RW_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_TR_RW_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_TR_RW_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_TR_MF_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_TR_MF_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_TR_MF_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_TR_MF_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_NW_SO_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_NW_SO_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_NW_SO_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_NW_SO_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_NW_WB_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_NW_WB_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_NW_WB_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_NW_WB_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_MT_MS_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_MT_MS_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_MT_MS_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_MT_MS_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_MT_PR_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_MT_PR_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_MT_PR_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_MT_PR_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_BO_EP_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_BO_EP_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_BO_EP_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_BO_EP_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_BO_MD_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_BO_MD_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_BO_MD_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_BO_MD_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_HN_VJ_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_HN_VJ_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_HN_VJ_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_HN_VJ_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_HN_TB_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_HN_TB_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_HN_TB_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_HN_TB_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_IG_OC_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_IG_OC_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_IG_OC_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_IG_OC_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_IG_RF_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_IG_RF_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_IG_RF_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_IG_RF_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_IQ_EB_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_IQ_EB_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_IQ_EB_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_IQ_EB_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_IQ_BFB_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_IQ_BFB_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_IQ_BFB_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_IQ_BFB_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SU_CS_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SU_CS_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SU_CS_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SU_CS_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SU_HB_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SU_HB_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SU_HB_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SU_HB_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_CD_AR_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_CD_AR_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_CD_AR_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_CD_AR_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_CD_DF_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_CD_DF_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_CD_DF_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_CD_DF_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_AG_FB_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_AG_FB_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_AG_FB_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_AG_FB_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_AG_SH_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_AG_SH_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_AG_SH_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_AG_SH_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SKE_NS_Earring
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SKE_NS_Earring
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SKE_NS_Pendant
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SKE_NS_Pendant
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SKE_SB_Armor
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SKE_SB_Armor
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+      - BaseItem: S_SKE_SB_Shoes
+        MaximumRefine: 10
+        Materials:
+          - Material: S_Enchant_Essence
+            Amount: 2
+        ResultItem: S_SKE_SB_Shoes
+        #RandomOptionGroup: NSU # TODO: translate to our group names
+  - Item: Time_Gap_Refine_Hammer
+    BaseItems:
+      - BaseItem: Time_Gap_Spear_IG
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_Spear_IG
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_Staff_AG
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_Staff_AG
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_Revolver_NW
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_Revolver_NW
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_MT_Axe
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_MT_Axe
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_TR_Ribbon
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_TR_Ribbon
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_TR_Vilolin
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_TR_Vilolin
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_HN_Staff
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_HN_Staff
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_BO_Blade
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_BO_Blade
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_SHC_Dagger1
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_SHC_Dagger1
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_SHC_Dagger2
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_SHC_Dagger2
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_SOA_Rod
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_SOA_Rod
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_DK_Spear
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_DK_Spear
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_CD_Staff
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_CD_Staff
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_SKE_Book
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_SKE_Book
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_ABC_Dagger
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_ABC_Dagger
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_IQ_Knuckle
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_IQ_Knuckle
+        ChangeRefine: 1
+      - BaseItem: Time_Gap_SH_Foxtail
+        MinimumRefine: 9
+        MaximumRefine: 11
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 12
+          - Material: Time_D_Ma_Rune
+            Amount: 2
+        ResultItem: Time_Gap_SH_Foxtail
+        ChangeRefine: 1
+  - Item: Yorscalp_Refin_Hammer
+    BaseItems:
+      - BaseItem: Yorscalp_Armor
+        MinimumRefine: 10
+        MaximumRefine: 10
+        Materials:
+          - Material: Zelunium
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 100
+        ResultItem: Yorscalp_Armor
+        ChangeRefine: 1
+      - BaseItem: Yorscalp_Robe
+        MinimumRefine: 10
+        MaximumRefine: 10
+        Materials:
+          - Material: Zelunium
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 100
+        ResultItem: Yorscalp_Robe
+        ChangeRefine: 1
+      - BaseItem: Yorscalp_Manteau
+        MinimumRefine: 10
+        MaximumRefine: 10
+        Materials:
+          - Material: Zelunium
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 100
+        ResultItem: Yorscalp_Manteau
+        ChangeRefine: 1
+      - BaseItem: Yorscalp_Muffler
+        MinimumRefine: 10
+        MaximumRefine: 10
+        Materials:
+          - Material: Zelunium
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 100
+        ResultItem: Yorscalp_Muffler
+        ChangeRefine: 1
+      - BaseItem: Yorscalp_Boots
+        MinimumRefine: 10
+        MaximumRefine: 10
+        Materials:
+          - Material: Zelunium
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 100
+        ResultItem: Yorscalp_Boots
+        ChangeRefine: 1
+      - BaseItem: Yorscalp_Shoes
+        MinimumRefine: 10
+        MaximumRefine: 10
+        Materials:
+          - Material: Zelunium
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 100
+        ResultItem: Yorscalp_Shoes
+        ChangeRefine: 1
+      - BaseItem: Yorscalp_P_Circlet
+        MinimumRefine: 10
+        MaximumRefine: 10
+        Materials:
+          - Material: Zelunium
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 100
+        ResultItem: Yorscalp_P_Circlet
+        ChangeRefine: 1
+      - BaseItem: Yorscalp_M_Circlet
+        MinimumRefine: 10
+        MaximumRefine: 10
+        Materials:
+          - Material: Zelunium
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 100
+        ResultItem: Yorscalp_M_Circlet
+        ChangeRefine: 1
+  - Item: Yorscalp_Scroll_A
+    BaseItems:
+      - BaseItem: Gaebolg_Armor
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Armor
+      - BaseItem: Gaebolg_Robe
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Robe
+      - BaseItem: Gaebolg_Manteau
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Manteau
+      - BaseItem: Gaebolg_Muffler
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Muffler
+      - BaseItem: Gaebolg_Boots
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Boots
+      - BaseItem: Gaebolg_Shoes
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Shoes
+      - BaseItem: Gaebolg_Earring
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Earring
+      - BaseItem: Gaebolg_Glove
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Glove
+      - BaseItem: Gaebolg_Ring
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Ring
+      - BaseItem: Gaebolg_Necklace
+        Materials:
+          - Material: Ep21_Wigner_Ticket
+            Amount: 200
+          - Material: Yorscalp_Serpent
+            Amount: 10
+          - Material: Yorscalp_Symbol
+            Amount: 50
+          - Material: Yorscalp_Spirit
+            Amount: 200
+        ResultItem: Yorscalp_Necklace
+  - Item: Plus7_Refine_NPC
+    BaseItems:
+      - BaseItem: F_Ein_1HGUN
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HGUN
+        ChangeRefine: 7
+      - BaseItem: F_Ein_BHBOW
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_BHBOW
+        ChangeRefine: 7
+      - BaseItem: F_Ein_BHHuuma
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_BHHuuma
+        ChangeRefine: 7
+      - BaseItem: F_Ein_BHSTAFF
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_BHSTAFF
+        ChangeRefine: 7
+      - BaseItem: F_Ein_BHAXE
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_BHAXE
+        ChangeRefine: 7
+      - BaseItem: F_Ein_BHKATAR
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_BHKATAR
+        ChangeRefine: 7
+      - BaseItem: F_Ein_BHSWORD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_BHSWORD
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HHAMMER
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HHAMMER
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HWHIP
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HWHIP
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HLUTE
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HLUTE
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HKNUCK
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HKNUCK
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HWAND
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HWAND
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1H_Foxtail
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1H_Foxtail
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HBOOK
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HBOOK
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HSPEAR
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HSPEAR
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HDAGGER2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HDAGGER2
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HDAGGER
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HDAGGER
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HMAGGER
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HMAGGER
+        ChangeRefine: 7
+      - BaseItem: F_Ein_1HSWORD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: F_Ein_Weapon_Hammer
+        ResultItem: F_Ein_1HSWORD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Sword_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Sword_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Dagger_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Dagger_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Spear_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Spear_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Staff_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Staff_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Knuckle_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Knuckle_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Violin_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Violin_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Whip_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Whip_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Hammer_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Hammer_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_TSword_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_TSword_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Katar_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Katar_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Axe_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Axe_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Rod_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Rod_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Bow_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Bow_AD
+        ChangeRefine: 7
+      - BaseItem: Thanos_Helm_1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Helm_1
+        ChangeRefine: 7
+      - BaseItem: Thanos_Helm1_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Helm1_LT
+        ChangeRefine: 7
+      - BaseItem: Thanos_Helm_2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Helm_2
+        ChangeRefine: 7
+      - BaseItem: Thanos_Helm2_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Helm2_LT
+        ChangeRefine: 7
+      - BaseItem: Thanos_Helm_3
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Helm_3
+        ChangeRefine: 7
+      - BaseItem: Thanos_Helm3_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Helm3_LT
+        ChangeRefine: 7
+      - BaseItem: Thanos_Helm_4
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Helm_4
+        ChangeRefine: 7
+      - BaseItem: Thanos_Helm4_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Thanos_Refine_Hammer
+        ResultItem: Thanos_Helm4_LT
+        ChangeRefine: 7
+      - BaseItem: Sagittarius_DiademK_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Helm_Hammer
+        ResultItem: Sagittarius_DiademK_LT
+        ChangeRefine: 7
+      - BaseItem: Scorpio_Diadem_K_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Helm_Hammer
+        ResultItem: Scorpio_Diadem_K_LT
+        ChangeRefine: 7
+      - BaseItem: Large_Sorcerer_Crown_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Helm_Hammer
+        ResultItem: Large_Sorcerer_Crown_LT
+        ChangeRefine: 7
+      - BaseItem: Stripe_Hat_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Helm_Hammer
+        ResultItem: Stripe_Hat_LT
+        ChangeRefine: 7
+      - BaseItem: Phantom_Cap_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Helm_Hammer
+        ResultItem: Phantom_Cap_LT
+        ChangeRefine: 7
+      - BaseItem: Ignis_CapK_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Helm_Hammer
+        ResultItem: Ignis_CapK_LT
+        ChangeRefine: 7
+      - BaseItem: Clock_Casket_RD_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Helm_Hammer
+        ResultItem: Clock_Casket_RD_LT
+        ChangeRefine: 7
+      - BaseItem: Beam_Claymore_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Beam_Claymore_AD
+        ChangeRefine: 7
+      - BaseItem: Meuchler_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Meuchler_AD
+        ChangeRefine: 7
+      - BaseItem: Blasti_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Blasti_AD
+        ChangeRefine: 7
+      - BaseItem: Virtual_Bow_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Virtual_Bow_AD
+        ChangeRefine: 7
+      - BaseItem: MH_P89_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: MH_P89_AD
+        ChangeRefine: 7
+      - BaseItem: AC_B44_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: AC_B44_AD
+        ChangeRefine: 7
+      - BaseItem: HR_S55_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: HR_S55_AD
+        ChangeRefine: 7
+      - BaseItem: Burning_Knuckle_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Burning_Knuckle_AD
+        ChangeRefine: 7
+      - BaseItem: Cannon_Rapier_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Cannon_Rapier_AD
+        ChangeRefine: 7
+      - BaseItem: Saphir_Hall_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Saphir_Hall_AD
+        ChangeRefine: 7
+      - BaseItem: Ultio_Spes_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Ultio_Spes_AD
+        ChangeRefine: 7
+      - BaseItem: Rutilus_Stick_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Rutilus_Stick_AD
+        ChangeRefine: 7
+      - BaseItem: ElectricFox_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: ElectricFox_AD
+        ChangeRefine: 7
+      - BaseItem: Circuit_Board_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Circuit_Board_AD
+        ChangeRefine: 7
+      - BaseItem: Kuroiro_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Kuroiro_AD
+        ChangeRefine: 7
+      - BaseItem: Boost_Lance_AD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: OS_Weapon_Hammer
+        ResultItem: Boost_Lance_AD
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Gladius
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Gladius
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Ligula
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Ligula
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Orbis
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Orbis
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Mucro
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Mucro
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Sol
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Sol
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Jana
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Jana
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Hasta
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Hasta
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Codex
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Codex
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Liber
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Liber
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Radius
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Radius
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Scipio
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Scipio
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Crystallum
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Crystallum
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Ramus
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Ramus
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Planta
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Planta
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Ferrum
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Ferrum
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Caestus
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Caestus
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Ungula
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Ungula
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Chorda
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Chorda
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Flagellum
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Flagellum
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Clava
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Clava
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Pendulus
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Pendulus
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Ensis
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Ensis
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Manus
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Manus
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Ascia
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Ascia
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Catapulta
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Catapulta
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Termes
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Termes
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Virga
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Virga
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Tenon
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Tenon
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Nervus
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Nervus
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Foramen
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Foramen
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Penet
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Penet
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Veloci
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Veloci
+        ChangeRefine: 7
+      - BaseItem: Poenitentia_Ruina
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenitentia_Ruina
+        ChangeRefine: 7
+      - BaseItem: Poenetentia_Vatia
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenetentia_Vatia
+        ChangeRefine: 7
+      - BaseItem: Poenetentia_Attendo
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenetentia_Attendo
+        ChangeRefine: 7
+      - BaseItem: Poenetentia_Dilacero
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Poenitentia_Hammer
+        ResultItem: Poenetentia_Dilacero
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_M_Book
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_M_Book
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_P_Book
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_P_Book
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Bible
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Bible
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Ribbon
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Ribbon
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Harp
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Harp
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Claw
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Claw
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_C_Rope
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_C_Rope
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Violin
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Violin
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_A_Bow
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_A_Bow
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Ballista
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Ballista
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Knuckle
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Knuckle
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Wand
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Wand
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Rod
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Rod
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_T_Staff
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_T_Staff
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_C_Bow
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_C_Bow
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Cakram
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Cakram
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Hall
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Hall
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Dagger
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Dagger
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Katar
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Katar
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Lapier
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Lapier
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Mace
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Mace
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_G_Sword
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_G_Sword
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Axe
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Axe
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_G_Spear
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_G_Spear
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Lance
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Lance
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_T_Sword
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_T_Sword
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Humma
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Humma
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_C_Humma
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_C_Humma
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Revolver
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Revolver
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Rifle
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Rifle
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Gatling
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Gatling
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Launcher
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Launcher
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Moon_B
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Moon_B
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Star_B
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Star_B
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_S_Stick
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_S_Stick
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_D_Wand
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_D_Wand
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_F_Wand
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_F_Wand
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_Shotgun
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_Shotgun
+        ChangeRefine: 7
+      - BaseItem: Vivatus_F_F_model
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Vivatus_Weapon_Hammer
+        ResultItem: Vivatus_F_F_model
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_WL1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_WL1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_WL2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_WL2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SR1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SR1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SR2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SR2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_AB1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_AB1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_AB2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_AB2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SC1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SC1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SC2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SC2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_RA1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_RA1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_RA2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_RA2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_LG1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_LG1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_LG2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_LG2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_GC1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_GC1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_GC2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_GC2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SO1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SO1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SO2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SO2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_RK1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_RK1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_RK2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_RK2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_WM1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_WM1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_WM2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_WM2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_NC1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_NC1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_NC2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_NC2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_GN1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_GN1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_GN2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_GN2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_KO1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_KO1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_KO2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_KO2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_RL1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_RL1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_RL2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_RL2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SP1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SP1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SP2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SP2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SJ1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SJ1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SJ2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SJ2
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SU1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SU1
+        ChangeRefine: 7
+      - BaseItem: Viva_Adul_Hat_SU2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Helm_Of_Faith_Hammer
+        ResultItem: Viva_Adul_Hat_SU2
+        ChangeRefine: 7
+      - BaseItem: Precision_Bow
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Bow
+        ChangeRefine: 7
+      - BaseItem: Precision_Fist
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Fist
+        ChangeRefine: 7
+      - BaseItem: Precision_Fuuma
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Fuuma
+        ChangeRefine: 7
+      - BaseItem: Precision_Gatling
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Gatling
+        ChangeRefine: 7
+      - BaseItem: Precision_Grenade
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Grenade
+        ChangeRefine: 7
+      - BaseItem: Precision_Lute
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Lute
+        ChangeRefine: 7
+      - BaseItem: Precision_Pistol
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Pistol
+        ChangeRefine: 7
+      - BaseItem: Precision_Rifle
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Rifle
+        ChangeRefine: 7
+      - BaseItem: Precision_Shotgun
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Shotgun
+        ChangeRefine: 7
+      - BaseItem: Precision_Whip
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Precision_Whip
+        ChangeRefine: 7
+      - BaseItem: Solid_Claymore
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Solid_Claymore
+        ChangeRefine: 7
+      - BaseItem: Solid_Dagger
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Solid_Dagger
+        ChangeRefine: 7
+      - BaseItem: Solid_Edge
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Solid_Edge
+        ChangeRefine: 7
+      - BaseItem: Solid_Manual
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Solid_Manual
+        ChangeRefine: 7
+      - BaseItem: Solid_Rod
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Solid_Rod
+        ChangeRefine: 7
+      - BaseItem: Solid_Spear
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Solid_Spear
+        ChangeRefine: 7
+      - BaseItem: Solid_Staff
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Solid_Staff
+        ChangeRefine: 7
+      - BaseItem: Solid_Wand
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Solid_Wand
+        ChangeRefine: 7
+      - BaseItem: Wicked_Axe
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Wicked_Axe
+        ChangeRefine: 7
+      - BaseItem: Wicked_Blade
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Wicked_Blade
+        ChangeRefine: 7
+      - BaseItem: Wicked_Book
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Wicked_Book
+        ChangeRefine: 7
+      - BaseItem: Wicked_Cross
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Wicked_Cross
+        ChangeRefine: 7
+      - BaseItem: Wicked_Dagger
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Wicked_Dagger
+        ChangeRefine: 7
+      - BaseItem: Wicked_Edge
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Wicked_Edge
+        ChangeRefine: 7
+      - BaseItem: Wicked_Katar
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Wicked_Katar
+        ChangeRefine: 7
+      - BaseItem: Wicked_Plant
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Clock_Tower_W_Hammer
+        ResultItem: Wicked_Plant
+        ChangeRefine: 7
+      - BaseItem: Glacier_Helm_1
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Isgard_Crown_Hammer
+        ResultItem: Glacier_Helm_1
+        ChangeRefine: 7
+      - BaseItem: Glacier_Helm_2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Isgard_Crown_Hammer
+        ResultItem: Glacier_Helm_2
+        ChangeRefine: 7
+      - BaseItem: Glacier_Helm_3
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Isgard_Crown_Hammer
+        ResultItem: Glacier_Helm_3
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_DK
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_DK
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_IG
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_IG
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_AG
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_AG
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_EM
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_EM
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_CD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_CD
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_IQ
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_IQ
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_MT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_MT
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_BO
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_BO
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_SHC
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_SHC
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_ABC
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_ABC
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_WH
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_WH
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_TR
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_TR
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_SS
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_SS
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_SKE
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_SKE
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_SOA
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_SOA
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_HN
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_HN
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_SH
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_SH
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_NW
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_NW
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_NW2
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_NW2
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_NW3
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_NW3
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_NW4
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_NW4
+        ChangeRefine: 7
+      - BaseItem: GoodnEvil_Circlet_NW5
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: GoodnEvil_Helm_Hammer
+        ResultItem: GoodnEvil_Circlet_NW5
+        ChangeRefine: 7
+      - BaseItem: Punish_Hall
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Punish_Hall
+        ChangeRefine: 7
+      - BaseItem: Saint_Bringer
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Saint_Bringer
+        ChangeRefine: 7
+      - BaseItem: Humma_Brilliance
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Humma_Brilliance
+        ChangeRefine: 7
+      - BaseItem: Luppiter_Spear
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Luppiter_Spear
+        ChangeRefine: 7
+      - BaseItem: Holy_Raise_Spear
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Holy_Raise_Spear
+        ChangeRefine: 7
+      - BaseItem: Lightforce_Foxtail_Wand
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Lightforce_Foxtail_Wand
+        ChangeRefine: 7
+      - BaseItem: Shining_Light_Katar
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Shining_Light_Katar
+        ChangeRefine: 7
+      - BaseItem: Angel_Wing_Bow
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Angel_Wing_Bow
+        ChangeRefine: 7
+      - BaseItem: Guardian_Saber
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Guardian_Saber
+        ChangeRefine: 7
+      - BaseItem: Holy_Light_Dagger
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Holy_Light_Dagger
+        ChangeRefine: 7
+      - BaseItem: Light_Power_Harp
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Light_Power_Harp
+        ChangeRefine: 7
+      - BaseItem: Light_Power_Spark
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Light_Power_Spark
+        ChangeRefine: 7
+      - BaseItem: Lighting_Splatter
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Lighting_Splatter
+        ChangeRefine: 7
+      - BaseItem: Justice_Bomber
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Justice_Bomber
+        ChangeRefine: 7
+      - BaseItem: Last_Dawn
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Last_Dawn
+        ChangeRefine: 7
+      - BaseItem: Devil_Hunter
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Devil_Hunter
+        ChangeRefine: 7
+      - BaseItem: Road_Of_Glory
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Road_Of_Glory
+        ChangeRefine: 7
+      - BaseItem: Victory_Sword
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Victory_Sword
+        ChangeRefine: 7
+      - BaseItem: Divine_Buster
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Divine_Buster
+        ChangeRefine: 7
+      - BaseItem: Orign_Of_Life
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Orign_Of_Life
+        ChangeRefine: 7
+      - BaseItem: Destiny_Staff
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Destiny_Staff
+        ChangeRefine: 7
+      - BaseItem: Blessed_Bible
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Blessed_Bible
+        ChangeRefine: 7
+      - BaseItem: Soul_Liberator
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Justice_Weapon_Hammer
+        ResultItem: Soul_Liberator
+        ChangeRefine: 7
+      - BaseItem: Demonic_Claw
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Demonic_Claw
+        ChangeRefine: 7
+      - BaseItem: Sealed_Bible
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Sealed_Bible
+        ChangeRefine: 7
+      - BaseItem: Darkness_Tablet
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Darkness_Tablet
+        ChangeRefine: 7
+      - BaseItem: Devil_Wing_Staff
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Devil_Wing_Staff
+        ChangeRefine: 7
+      - BaseItem: Doom_Bible
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Doom_Bible
+        ChangeRefine: 7
+      - BaseItem: Soul_Harvest
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Soul_Harvest
+        ChangeRefine: 7
+      - BaseItem: The_Reaper
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: The_Reaper
+        ChangeRefine: 7
+      - BaseItem: Underworld_Knife
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Underworld_Knife
+        ChangeRefine: 7
+      - BaseItem: Devil_Cursed_Sword
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Devil_Cursed_Sword
+        ChangeRefine: 7
+      - BaseItem: Dark_Angel_Ray_Bow
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Dark_Angel_Ray_Bow
+        ChangeRefine: 7
+      - BaseItem: Crime_Violine
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Crime_Violine
+        ChangeRefine: 7
+      - BaseItem: Crime_Whip
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Crime_Whip
+        ChangeRefine: 7
+      - BaseItem: RG_5649
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: RG_5649
+        ChangeRefine: 7
+      - BaseItem: Devil_L_Launcher
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Devil_L_Launcher
+        ChangeRefine: 7
+      - BaseItem: Screaming_Rifle
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Screaming_Rifle
+        ChangeRefine: 7
+      - BaseItem: Devils_Bullet
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Devils_Bullet
+        ChangeRefine: 7
+      - BaseItem: Outlaw_Cursed_Shotgun
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Outlaw_Cursed_Shotgun
+        ChangeRefine: 7
+      - BaseItem: Blood_Rapier
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Blood_Rapier
+        ChangeRefine: 7
+      - BaseItem: Destruction_Axe
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Destruction_Axe
+        ChangeRefine: 7
+      - BaseItem: Devil_Claw
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Devil_Claw
+        ChangeRefine: 7
+      - BaseItem: Execution_Great_Sword
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Execution_Great_Sword
+        ChangeRefine: 7
+      - BaseItem: Devil_Guardian_Sword
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Devil_Guardian_Sword
+        ChangeRefine: 7
+      - BaseItem: Darkness_Foxtail_Model
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Injustice_Weapon_Hammer
+        ResultItem: Darkness_Foxtail_Model
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_CD
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_CD
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_IQ
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_IQ
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_SOA
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_SOA
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_BO
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_BO
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_DK
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_DK
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_SH
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_SH
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_EM
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_EM
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_WH
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_WH
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_SKE
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_SKE
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_MT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_MT
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_SHC
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_SHC
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_SS
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_SS
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_ABC
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_ABC
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_TR
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_TR
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_HN
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_HN
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_IG
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_IG
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_AG
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_AG
+        ChangeRefine: 7
+      - BaseItem: FateSin_Boots_NW
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: FateSin_Boots_Hammer
+        ResultItem: FateSin_Boots_NW
+        ChangeRefine: 7
+      - BaseItem: Saint_Hall_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_1
+        ResultItem: Saint_Hall_LT
+        ChangeRefine: 7
+      - BaseItem: Undine_Spear_K_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_1
+        ResultItem: Undine_Spear_K_LT
+        ChangeRefine: 7
+      - BaseItem: Demon_Hunting_Bible_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_1
+        ResultItem: Demon_Hunting_Bible_LT
+        ChangeRefine: 7
+      - BaseItem: Light_Blade_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_1
+        ResultItem: Light_Blade_LT
+        ChangeRefine: 7
+      - BaseItem: Magic_Sword_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_1
+        ResultItem: Magic_Sword_LT
+        ChangeRefine: 7
+      - BaseItem: Fatalist_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_1
+        ResultItem: Fatalist_LT
+        ChangeRefine: 7
+      - BaseItem: Iron_Staff_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_2
+        ResultItem: Iron_Staff_LT
+        ChangeRefine: 7
+      - BaseItem: Blue_Crystal_Staff_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_2
+        ResultItem: Blue_Crystal_Staff_LT
+        ChangeRefine: 7
+      - BaseItem: Shadow_Staff_K_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_2
+        ResultItem: Shadow_Staff_K_LT
+        ChangeRefine: 7
+      - BaseItem: Freezing_Rod_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_2
+        ResultItem: Freezing_Rod_LT
+        ChangeRefine: 7
+      - BaseItem: Iron_Nail_K_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_2
+        ResultItem: Iron_Nail_K_LT
+        ChangeRefine: 7
+      - BaseItem: Ray_Knuckle_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_2
+        ResultItem: Ray_Knuckle_LT
+        ChangeRefine: 7
+      - BaseItem: Sword_Of_Bluefire_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_3
+        ResultItem: Sword_Of_Bluefire_LT
+        ChangeRefine: 7
+      - BaseItem: Slate_Sword_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_3
+        ResultItem: Slate_Sword_LT
+        ChangeRefine: 7
+      - BaseItem: Royal_Bow_K_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_3
+        ResultItem: Royal_Bow_K_LT
+        ChangeRefine: 7
+      - BaseItem: Scalet_Dragon_L_Bow_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_3
+        ResultItem: Scalet_Dragon_L_Bow_LT
+        ChangeRefine: 7
+      - BaseItem: Trumpet_Shell_K_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_4
+        ResultItem: Trumpet_Shell_K_LT
+        ChangeRefine: 7
+      - BaseItem: Barb_Wire_K_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_4
+        ResultItem: Barb_Wire_K_LT
+        ChangeRefine: 7
+      - BaseItem: Narcis_Bow_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_4
+        ResultItem: Narcis_Bow_LT
+        ChangeRefine: 7
+      - BaseItem: Avenger_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_4
+        ResultItem: Avenger_LT
+        ChangeRefine: 7
+      - BaseItem: Meteor_Striker_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_4
+        ResultItem: Meteor_Striker_LT
+        ChangeRefine: 7
+      - BaseItem: Blade_Katar_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_5
+        ResultItem: Blade_Katar_LT
+        ChangeRefine: 7
+      - BaseItem: Shiver_Katar_K_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_5
+        ResultItem: Shiver_Katar_K_LT
+        ChangeRefine: 7
+      - BaseItem: Dragonic_Slayer_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_5
+        ResultItem: Dragonic_Slayer_LT
+        ChangeRefine: 7
+      - BaseItem: Oriental_Sword_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_5
+        ResultItem: Oriental_Sword_LT
+        ChangeRefine: 7
+      - BaseItem: Humma_Clear_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: Humma_Clear_LT
+        ChangeRefine: 7
+      - BaseItem: Fog_Dew_Sword_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: Fog_Dew_Sword_LT
+        ChangeRefine: 7
+      - BaseItem: Crimson_Rose_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: Crimson_Rose_LT
+        ChangeRefine: 7
+      - BaseItem: Master_Soul_Rifle_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: Master_Soul_Rifle_LT
+        ChangeRefine: 7
+      - BaseItem: Demon_S_Shot_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: Demon_S_Shot_LT
+        ChangeRefine: 7
+      - BaseItem: The_Black_Gatling_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: The_Black_Gatling_LT
+        ChangeRefine: 7
+      - BaseItem: Golden_L_Launcher_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: Golden_L_Launcher_LT
+        ChangeRefine: 7
+      - BaseItem: MeawFoxtail_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: MeawFoxtail_LT
+        ChangeRefine: 7
+      - BaseItem: OneSkyOneSun_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: OneSkyOneSun_LT
+        ChangeRefine: 7
+      - BaseItem: SoulWeight_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: SoulWeight_LT
+        ChangeRefine: 7
+      - BaseItem: Freedom_Stick_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: Freedom_Stick_LT
+        ChangeRefine: 7
+      - BaseItem: Blessed_Knife_LT
+        MaximumRefine: 4
+        Materials:
+          - Material: Blacksmith_Blessing
+            Amount: 5
+          - Material: Hero_Weapon_Hammer_6
+        ResultItem: Blessed_Knife_LT
+        ChangeRefine: 7

File diff suppressed because it is too large
+ 811 - 1
db/re/job_basepoints.yml


+ 43 - 3
db/re/job_exp.yml

@@ -3365,7 +3365,7 @@ Body:
       Night_Watch: true
       Night_Watch: true
       Hyper_Novice: true
       Hyper_Novice: true
       Spirit_Handler: true
       Spirit_Handler: true
-    MaxBaseLevel: 260
+    MaxBaseLevel: 275
     BaseExp:
     BaseExp:
       - Level: 1
       - Level: 1
         Exp: 658
         Exp: 658
@@ -3886,6 +3886,36 @@ Body:
       - Level: 259
       - Level: 259
         Exp: 270217017679
         Exp: 270217017679
       - Level: 260
       - Level: 260
+        Exp: 283727868563
+      - Level: 261
+        Exp: 297914261991
+      - Level: 262
+        Exp: 312809975091
+      - Level: 263
+        Exp: 328450473845
+      - Level: 264
+        Exp: 344872997537
+      - Level: 265
+        Exp: 353494822476
+      - Level: 266
+        Exp: 362332193038
+      - Level: 267
+        Exp: 371390497864
+      - Level: 268
+        Exp: 380675260310
+      - Level: 269
+        Exp: 390192141818
+      - Level: 270
+        Exp: 397995984654
+      - Level: 271
+        Exp: 405955904348
+      - Level: 272
+        Exp: 414075022434
+      - Level: 273
+        Exp: 422356522883
+      - Level: 274
+        Exp: 430803653341
+      - Level: 275
         Exp: 999999999999
         Exp: 999999999999
   - Jobs:
   - Jobs:
       Dragon_Knight: true
       Dragon_Knight: true
@@ -3912,7 +3942,7 @@ Body:
       Night_Watch: true
       Night_Watch: true
       Hyper_Novice: true
       Hyper_Novice: true
       Spirit_Handler: true
       Spirit_Handler: true
-    MaxJobLevel: 55
+    MaxJobLevel: 60
     JobExp:
     JobExp:
       - Level: 1
       - Level: 1
         Exp: 4700000
         Exp: 4700000
@@ -4023,4 +4053,14 @@ Body:
       - Level: 54
       - Level: 54
         Exp: 6559840847
         Exp: 6559840847
       - Level: 55
       - Level: 55
-        Exp: 9999999999
+        Exp: 7543816974
+      - Level: 56
+        Exp: 8675389520
+      - Level: 57
+        Exp: 9976697948
+      - Level: 58
+        Exp: 11473202640
+      - Level: 59
+        Exp: 13194183036
+      - Level: 60
+        Exp: 99999999999

File diff suppressed because it is too large
+ 551 - 391
db/re/job_stats.yml


+ 365 - 0
db/re/map_drops.yml

@@ -2063,3 +2063,368 @@ Body:
           - Index: 13
           - Index: 13
             Item: S_Twins_Box_IL
             Item: S_Twins_Box_IL
             Rate: 150
             Rate: 150
+  - Map: for_dun01
+    SpecificDrops:
+      - Monster: SPIRIT_G_LAND_M
+        Drops:
+          - Index: 0
+            Item: Etel_Stone
+            Rate: 25
+      - Monster: SPIRIT_G_LAND_L
+        Drops:
+          - Index: 0
+            Item: Etel_Skyblue_Jewel
+            Rate: 15
+          - Index: 1
+            Item: Etel_Stone
+            Rate: 35
+      - Monster: SPIRIT_G_LAND_SL
+        Drops:
+          - Index: 0
+            Item: Etel_Skyblue_Jewel
+            Rate: 20
+          - Index: 1
+            Item: Etel_Stone
+            Rate: 45
+          - Index: 2
+            Item: Etel_Topaz
+            Rate: 10
+      - Monster: SPIRIT_B_FLAME_M
+        Drops:
+          - Index: 0
+            Item: Etel_Stone
+            Rate: 25
+      - Monster: SPIRIT_B_FLAME_L
+        Drops:
+          - Index: 0
+            Item: Etel_Skyblue_Jewel
+            Rate: 15
+          - Index: 1
+            Item: Etel_Stone
+            Rate: 35
+      - Monster: SPIRIT_B_FLAME_SL
+        Drops:
+          - Index: 0
+            Item: Etel_Skyblue_Jewel
+            Rate: 20
+          - Index: 1
+            Item: Etel_Stone
+            Rate: 45
+          - Index: 2
+            Item: Etel_Topaz
+            Rate: 10
+      - Monster: SPIRIT_S_WIND_M
+        Drops:
+          - Index: 0
+            Item: Etel_Stone
+            Rate: 25
+      - Monster: SPIRIT_S_WIND_L
+        Drops:
+          - Index: 0
+            Item: Etel_Skyblue_Jewel
+            Rate: 15
+          - Index: 1
+            Item: Etel_Stone
+            Rate: 35
+      - Monster: SPIRIT_S_WIND_SL
+        Drops:
+          - Index: 0
+            Item: Etel_Skyblue_Jewel
+            Rate: 20
+          - Index: 1
+            Item: Etel_Stone
+            Rate: 45
+          - Index: 2
+            Item: Etel_Topaz
+            Rate: 10
+      - Monster: SPIRIT_I_WATER_M
+        Drops:
+          - Index: 0
+            Item: Etel_Stone
+            Rate: 25
+      - Monster: SPIRIT_I_WATER_L
+        Drops:
+          - Index: 0
+            Item: Etel_Skyblue_Jewel
+            Rate: 15
+          - Index: 1
+            Item: Etel_Stone
+            Rate: 35
+      - Monster: SPIRIT_I_WATER_SL
+        Drops:
+          - Index: 0
+            Item: Etel_Skyblue_Jewel
+            Rate: 20
+          - Index: 1
+            Item: Etel_Stone
+            Rate: 45
+          - Index: 2
+            Item: Etel_Topaz
+            Rate: 10
+      - Monster: SPIRIT_C_LAND_S
+        Drops:
+          - Index: 0
+            Item: MD_Hol_Fragment
+            Rate: 300
+          - Index: 1
+            Item: Etel_Skyblue_Jewel
+            Rate: 15
+          - Index: 2
+            Item: Etel_Stone
+            Rate: 30
+      - Monster: SPIRIT_C_LAND_M
+        Drops:
+          - Index: 0
+            Item: MD_Hol_Fragment
+            Rate: 350
+          - Index: 1
+            Item: Etel_Skyblue_Jewel
+            Rate: 25
+          - Index: 2
+            Item: Etel_Stone
+            Rate: 40
+          - Index: 3
+            Item: Etel_Topaz
+            Rate: 10
+      - Monster: SPIRIT_C_LAND_L
+        Drops:
+          - Index: 0
+            Item: MD_Hol_Fragment
+            Rate: 400
+          - Index: 1
+            Item: Etel_Violet_Jewel
+            Rate: 10
+          - Index: 2
+            Item: Etel_Skyblue_Jewel
+            Rate: 35
+          - Index: 3
+            Item: Etel_Stone
+            Rate: 50
+          - Index: 4
+            Item: Etel_Topaz
+            Rate: 20
+      - Monster: SPIRIT_C_LAND_SL
+        Drops:
+          - Index: 0
+            Item: MD_Hol_Fragment
+            Rate: 450
+          - Index: 1
+            Item: Etel_Amber
+            Rate: 7
+          - Index: 2
+            Item: Etel_Violet_Jewel
+            Rate: 15
+          - Index: 3
+            Item: Etel_Skyblue_Jewel
+            Rate: 45
+          - Index: 4
+            Item: Etel_Stone
+            Rate: 60
+          - Index: 5
+            Item: Etel_Topaz
+            Rate: 30
+      - Monster: SPIRIT_C_FLAME_S
+        Drops:
+          - Index: 0
+            Item: MD_Hol_Fragment
+            Rate: 300
+          - Index: 1
+            Item: Etel_Skyblue_Jewel
+            Rate: 15
+          - Index: 2
+            Item: Etel_Stone
+            Rate: 30
+      - Monster: SPIRIT_C_FLAME_M
+        Drops:
+          - Index: 0
+            Item: MD_Hol_Fragment
+            Rate: 350
+          - Index: 1
+            Item: Etel_Skyblue_Jewel
+            Rate: 25
+          - Index: 2
+            Item: Etel_Stone
+            Rate: 40
+          - Index: 3
+            Item: Etel_Topaz
+            Rate: 10
+      - Monster: SPIRIT_C_FLAME_L
+        Drops:
+          - Index: 0
+            Item: MD_Hol_Fragment
+            Rate: 400
+          - Index: 1
+            Item: Etel_Violet_Jewel
+            Rate: 10
+          - Index: 2
+            Item: Etel_Skyblue_Jewel
+            Rate: 35
+          - Index: 3
+            Item: Etel_Stone
+            Rate: 50
+          - Index: 4
+            Item: Etel_Topaz
+            Rate: 20
+      - Monster: SPIRIT_C_FLAME_SL
+        Drops:
+          - Index: 0
+            Item: MD_Hol_Fragment
+            Rate: 450
+          - Index: 1
+            Item: Etel_Amber
+            Rate: 7
+          - Index: 2
+            Item: Etel_Violet_Jewel
+            Rate: 15
+          - Index: 3
+            Item: Etel_Skyblue_Jewel
+            Rate: 45
+          - Index: 4
+            Item: Etel_Stone
+            Rate: 60
+          - Index: 5
+            Item: Etel_Topaz
+            Rate: 30
+  - Map: 1@xm_d
+    SpecificDrops:
+      - Monster: XM_MARIONETTE
+        Drops:
+          - Index: 0
+            Item: Bloody_Coin
+            Rate: 5000
+          - Index: 1
+            Item: Bloody_Coin
+            Rate: 2500
+          - Index: 2
+            Item: Bloody_Coin
+            Rate: 500
+          - Index: 3
+            Item: Shadow_Walk_
+            Rate: 25
+      - Monster: XM_LUDE
+        Drops:
+          - Index: 0
+            Item: Bloody_Coin
+            Rate: 5000
+          - Index: 1
+            Item: Bloody_Coin
+            Rate: 2500
+          - Index: 2
+            Item: Bloody_Coin
+            Rate: 500
+          - Index: 3
+            Item: Red_Lantern
+            Rate: 25
+      - Monster: XM_TREE
+        Drops:
+          - Index: 0
+            Item: Bloody_Coin
+            Rate: 5000
+          - Index: 1
+            Item: Bloody_Coin
+            Rate: 2500
+          - Index: 2
+            Item: Bloody_Coin
+            Rate: 500
+          - Index: 3
+            Item: Lush_Rose
+            Rate: 25
+      - Monster: XM_HYLOZOIST
+        Drops:
+          - Index: 0
+            Item: Bloody_Coin
+            Rate: 5000
+          - Index: 1
+            Item: Bloody_Coin
+            Rate: 2500
+          - Index: 2
+            Item: Bloody_Coin
+            Rate: 500
+          - Index: 3
+            Item: Old_Parasol
+            Rate: 25
+      - Monster: XM_TEDDY_BEAR
+        Drops:
+          - Index: 0
+            Item: Bloody_Coin
+            Rate: 5000
+          - Index: 1
+            Item: Bloody_Coin
+            Rate: 2500
+          - Index: 2
+            Item: Bloody_Coin
+            Rate: 500
+          - Index: 3
+            Item: KindHeart
+            Rate: 25
+      - Monster: XM_COOKIE
+        Drops:
+          - Index: 0
+            Item: Bloody_Coin
+            Rate: 5000
+          - Index: 1
+            Item: Bloody_Coin
+            Rate: 2500
+          - Index: 2
+            Item: Bloody_Coin
+            Rate: 500
+          - Index: 3
+            Item: Hurt_Mind
+            Rate: 25
+      - Monster: XM_MYSTCASE
+        Drops:
+          - Index: 0
+            Item: Bloody_Coin
+            Rate: 5000
+          - Index: 1
+            Item: Bloody_Coin
+            Rate: 2500
+          - Index: 2
+            Item: Bloody_Coin
+            Rate: 500
+          - Index: 3
+            Item: Noble_Cross
+            Rate: 25
+      - Monster: XM_ANTONIO
+        Drops:
+          - Index: 0
+            Item: Bloody_Coin
+            Rate: 15000
+          - Index: 1
+            Item: Bloody_Coin
+            Rate: 1000
+          - Index: 2
+            Item: Bloody_Coin
+            Rate: 5000
+          - Index: 3
+            Item: Chrismas_Tree
+            Rate: 1000
+      - Monster: XM_CELINE_KIMI
+        Drops:
+          - Index: 0
+            Item: Bloody_Coin
+            Rate: 15000
+          - Index: 1
+            Item: Bloody_Coin
+            Rate: 12500
+          - Index: 2
+            Item: Bloody_Coin
+            Rate: 10000
+          - Index: 3
+            Item: Bloody_Coin
+            Rate: 5000
+          - Index: 4
+            Item: Bloody_Coin
+            Rate: 2500
+          - Index: 5
+            Item: Celine_Brooch_K
+            Rate: 150
+          - Index: 6
+            Item: Celine_Dress
+            Rate: 150
+          - Index: 7
+            Item: Celines_Ribbon
+            Rate: 50
+          - Index: 8
+            Item: Evilspirit_Gloves
+            Rate: 50

File diff suppressed because it is too large
+ 2466 - 117
db/re/mob_db.yml


+ 2 - 0
db/re/mob_skill_db.txt

@@ -14803,3 +14803,5 @@
 21361,EP18_MD_DEMI_FREYJA_L@NPC_DEADLYCURSE2,attack,779,5,5000,1000,30000,no,self,always,0,,,,,,55,
 21361,EP18_MD_DEMI_FREYJA_L@NPC_DEADLYCURSE2,attack,779,5,5000,1000,30000,no,self,always,0,,,,,,55,
 21361,EP18_MD_DEMI_FREYJA_L@NPC_CANE_OF_EVIL_EYE,chase,780,3,8000,300,30000,no,target,always,0,,,,,,,
 21361,EP18_MD_DEMI_FREYJA_L@NPC_CANE_OF_EVIL_EYE,chase,780,3,8000,300,30000,no,target,always,0,,,,,,,
 21361,EP18_MD_DEMI_FREYJA_L@NPC_CANE_OF_EVIL_EYE,attack,780,5,7000,300,30000,yes,target,always,0,,,,,,,
 21361,EP18_MD_DEMI_FREYJA_L@NPC_CANE_OF_EVIL_EYE,attack,780,5,7000,300,30000,yes,target,always,0,,,,,,,
+
+// Garden of Time (placeholder). Ids [22177-22180], [22192-22239]

+ 254 - 97
db/re/pet_db.yml

@@ -65,7 +65,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bCritical,1;
          bonus bCritical,1;
          bonus bLuk,3;
          bonus bLuk,3;
@@ -91,7 +91,7 @@ Body:
     CaptureRate: 1500
     CaptureRate: 1500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bBaseAtk,5;
          bonus bBaseAtk,5;
          bonus bHit,5;
          bonus bHit,5;
@@ -131,7 +131,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bSubEle,Ele_Poison,15;
          bonus2 bSubEle,Ele_Poison,15;
          bonus bLuk,3;
          bonus bLuk,3;
@@ -151,7 +151,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bCritical,3;
          bonus bCritical,3;
          bonus bBaseAtk,3;
          bonus bBaseAtk,3;
@@ -181,7 +181,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bBaseAtk,8;
          bonus bBaseAtk,8;
          bonus bStr,2;
          bonus bStr,2;
@@ -200,7 +200,7 @@ Body:
     CaptureRate: 1500
     CaptureRate: 1500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bAgi,2;
          bonus bAgi,2;
          bonus bFlee,3;
          bonus bFlee,3;
@@ -219,7 +219,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bFlee,9;
          bonus bFlee,9;
       }
       }
@@ -236,7 +236,7 @@ Body:
     CaptureRate: 500
     CaptureRate: 500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bFlee2,2;
          bonus bFlee2,2;
          bonus bHit,1;
          bonus bHit,1;
@@ -255,7 +255,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bVit,2;
          bonus bVit,2;
          bonus bMaxHP,75;
          bonus bMaxHP,75;
@@ -286,7 +286,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bInt,2;
          bonus bInt,2;
          bonus bMaxSP,75;
          bonus bMaxSP,75;
@@ -317,7 +317,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bHPrecovRate,8;
          bonus bHPrecovRate,8;
          bonus bMaxHP,38;
          bonus bMaxHP,38;
@@ -348,7 +348,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bHit,8;
          bonus bHit,8;
       }
       }
@@ -366,7 +366,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bStr,2;
          bonus bStr,2;
          bonus bInt,2;
          bonus bInt,2;
@@ -385,7 +385,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bMaxHP,200;
          bonus bMaxHP,200;
       }
       }
@@ -415,7 +415,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bFlee2,1;
          bonus bFlee2,1;
          bonus bAgi,2;
          bonus bAgi,2;
@@ -434,7 +434,7 @@ Body:
     CaptureRate: 1000
     CaptureRate: 1000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bCritical,5;
          bonus bCritical,5;
       }
       }
@@ -462,7 +462,7 @@ Body:
     CaptureRate: 500
     CaptureRate: 500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bBaseAtk,15;
          bonus bBaseAtk,15;
       }
       }
@@ -493,7 +493,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bDef,2;
          bonus bDef,2;
          bonus bInt,2;
          bonus bInt,2;
@@ -513,7 +513,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bMatkRate,2;
          bonus bMatkRate,2;
       }
       }
@@ -542,7 +542,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bStr,2;
          bonus bStr,2;
          bonus bDex,2;
          bonus bDex,2;
@@ -562,7 +562,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bAddClass,Class_All,2;
          bonus2 bAddClass,Class_All,2;
       }
       }
@@ -591,7 +591,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bAspdRate,1;
          bonus bAspdRate,1;
          bonus bAgi,1;
          bonus bAgi,1;
@@ -621,7 +621,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bAddClass,Class_All,1;
          bonus2 bAddClass,Class_All,1;
          bonus bMatkRate,1;
          bonus bMatkRate,1;
@@ -654,7 +654,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bResEff,Eff_Stun,200;
          bonus2 bResEff,Eff_Stun,200;
          bonus bMdef,2;
          bonus bMdef,2;
@@ -686,7 +686,7 @@ Body:
     CaptureRate: 500
     CaptureRate: 500
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bResEff,Eff_Stun,200;
          bonus2 bResEff,Eff_Stun,200;
          bonus bVit,2;
          bonus bVit,2;
@@ -716,7 +716,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bAddRace,RC_DemiHuman,3;
          bonus2 bAddRace,RC_DemiHuman,3;
          bonus2 bMagicAddRace,RC_DemiHuman,3;
          bonus2 bMagicAddRace,RC_DemiHuman,3;
@@ -739,7 +739,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bSubRace,RC_DemiHuman,2;
          bonus2 bSubRace,RC_DemiHuman,2;
          bonus2 bSubRace,RC_Player_Human,2;
          bonus2 bSubRace,RC_Player_Human,2;
@@ -769,7 +769,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bSubEle,Ele_Neutral,2;
          bonus2 bSubEle,Ele_Neutral,2;
       }
       }
@@ -786,7 +786,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bSubEle,Ele_Water,2;
          bonus2 bSubEle,Ele_Water,2;
          bonus bMaxHP,45;
          bonus bMaxHP,45;
@@ -795,6 +795,27 @@ Body:
          bonus2 bSubEle,Ele_Water,1;
          bonus2 bSubEle,Ele_Water,1;
          bonus bMaxHP,30;
          bonus bMaxHP,30;
       }
       }
+  - Mob: CHUNG_E
+    TameItem: Tantanmen
+    EggItem: Chung_E_Egg
+    FoodItem: Bun_
+    Fullness: 3
+    IntimacyFed: 50
+    CaptureRate: 2000
+    SpecialPerformance: false
+    Script: >
+      .@i = getpetinfo(PETINFO_INTIMATE);
+
+      if (.@i >= PET_INTIMATE_LOYAL) {
+         bonus2 bSubRace,RC_DemiHuman,2;
+         bonus2 bSubRace,RC_Player_Human,2;
+         bonus bDef,2;
+      }
+      else if (.@i >= PET_INTIMATE_CORDIAL) {
+         bonus2 bSubRace,RC_DemiHuman,1;
+         bonus2 bSubRace,RC_Player_Human,1;
+         bonus bDef,1;
+      }
   - Mob: CHUNG_E_
   - Mob: CHUNG_E_
     TameItem: Tantanmen
     TameItem: Tantanmen
     EggItem: Chung_E_Egg
     EggItem: Chung_E_Egg
@@ -805,7 +826,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bSubRace,RC_DemiHuman,2;
          bonus2 bSubRace,RC_DemiHuman,2;
          bonus2 bSubRace,RC_Player_Human,2;
          bonus2 bSubRace,RC_Player_Human,2;
@@ -873,7 +894,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bAgi,4;
          bonus bAgi,4;
       }
       }
@@ -909,7 +930,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bMaxHP,150;
          bonus bMaxHP,150;
       }
       }
@@ -955,7 +976,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bResEff,Eff_Stone,800;
          bonus2 bResEff,Eff_Stone,800;
          bonus bVit,2;
          bonus bVit,2;
@@ -993,7 +1014,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bAddRace,RC_DemiHuman,5;
          bonus2 bAddRace,RC_DemiHuman,5;
          bonus2 bAddRace,RC_Player_Human,5;
          bonus2 bAddRace,RC_Player_Human,5;
@@ -1013,7 +1034,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bHPDrainRate,30,5;
          bonus2 bHPDrainRate,30,5;
          bonus bMaxHPrate,1;
          bonus bMaxHPrate,1;
@@ -1050,7 +1071,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bInt,1;
          bonus bInt,1;
       }
       }
@@ -1079,7 +1100,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bAgi,3;
          bonus bAgi,3;
       }
       }
@@ -1097,7 +1118,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bVariableCastrate,-5;
          bonus bVariableCastrate,-5;
          bonus bInt,2;
          bonus bInt,2;
@@ -1117,7 +1138,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bSPrecovRate,8;
          bonus bSPrecovRate,8;
          bonus bMaxSP,45;
          bonus bMaxSP,45;
@@ -1148,7 +1169,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bSubEle,Ele_Fire,5;
          bonus2 bSubEle,Ele_Fire,5;
       }
       }
@@ -1166,7 +1187,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bCritAtkRate,8;
          bonus bCritAtkRate,8;
       }
       }
@@ -1184,7 +1205,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus3 bAutoSpellWhenHit,"AL_HEAL",2,10;
          bonus3 bAutoSpellWhenHit,"AL_HEAL",2,10;
          bonus bMaxHPrate,3;
          bonus bMaxHPrate,3;
@@ -1215,7 +1236,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bMaxSP,15;
          bonus bMaxSP,15;
       }
       }
@@ -1233,7 +1254,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bSubRace,RC_Brute,5;
          bonus2 bSubRace,RC_Brute,5;
          bonus2 bSubRace,RC_Player_Doram,5;
          bonus2 bSubRace,RC_Player_Doram,5;
@@ -1273,7 +1294,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bAddEle,Ele_Fire,2;
          bonus2 bAddEle,Ele_Fire,2;
          bonus2 bSubEle,Ele_Fire,3;
          bonus2 bSubEle,Ele_Fire,3;
@@ -1376,7 +1397,7 @@ Body:
     SpecialPerformance: false
     SpecialPerformance: false
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bHPrecovRate,75;
          bonus bHPrecovRate,75;
       }
       }
@@ -1392,7 +1413,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bCritical,3;
          bonus bCritical,3;
          bonus bHit,3;
          bonus bHit,3;
@@ -1421,7 +1442,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bHit,1;
          bonus bHit,1;
          bonus bDex,2;
          bonus bDex,2;
@@ -1450,7 +1471,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bHit,5;
          bonus bHit,5;
       }
       }
@@ -1477,7 +1498,7 @@ Body:
     CaptureRate: 2000
     CaptureRate: 2000
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bMaxSP,100;
          bonus bMaxSP,100;
       }
       }
@@ -1526,7 +1547,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bCritical,3;
          bonus bCritical,3;
          bonus bLuk,3;
          bonus bLuk,3;
@@ -1565,7 +1586,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bAddRace,RC_Plant,6;
          bonus2 bAddRace,RC_Plant,6;
          bonus2 bMagicAddRace,RC_Plant,6;
          bonus2 bMagicAddRace,RC_Plant,6;
@@ -1597,7 +1618,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bMaxHPrate,2;
          bonus bMaxHPrate,2;
          bonus bHealPower,8;
          bonus bHealPower,8;
@@ -1653,7 +1674,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bVit,2;
          bonus bVit,2;
          bonus bMaxHP,200;
          bonus bMaxHP,200;
@@ -1681,7 +1702,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bBaseAtk,25;
          bonus bBaseAtk,25;
       }
       }
@@ -1716,7 +1737,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bLongAtkRate,3;
          bonus bLongAtkRate,3;
          bonus bCritical,9;
          bonus bCritical,9;
@@ -1743,7 +1764,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bAddRace,RC_Dragon,6;
          bonus2 bAddRace,RC_Dragon,6;
          bonus2 bMagicAddRace,RC_Dragon,6;
          bonus2 bMagicAddRace,RC_Dragon,6;
@@ -1771,7 +1792,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bMatkRate,4;
          bonus bMatkRate,4;
       }
       }
@@ -1833,7 +1854,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bMaxHP,400;
          bonus bMaxHP,400;
       }
       }
@@ -1884,7 +1905,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bCritAtkRate,9;
          bonus bCritAtkRate,9;
          bonus bHit,2;
          bonus bHit,2;
@@ -1948,7 +1969,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bBaseAtk,9;
          bonus bBaseAtk,9;
          bonus bHit,9;
          bonus bHit,9;
@@ -1976,7 +1997,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bAddRace,RC_Formless,6;
          bonus2 bAddRace,RC_Formless,6;
          bonus2 bMagicAddRace,RC_Formless,6;
          bonus2 bMagicAddRace,RC_Formless,6;
@@ -2008,7 +2029,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bAddClass,Class_All,4;
          bonus2 bAddClass,Class_All,4;
       }
       }
@@ -2066,7 +2087,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bAspdRate,3;
          bonus bAspdRate,3;
          bonus bAgi,3;
          bonus bAgi,3;
@@ -2108,7 +2129,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bResEff,Eff_Sleep,10000;
          bonus2 bResEff,Eff_Sleep,10000;
          bonus bMaxSPrate,3;
          bonus bMaxSPrate,3;
@@ -2136,7 +2157,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bCritAtkRate,7;
          bonus bCritAtkRate,7;
          bonus bCritical,3;
          bonus bCritical,3;
@@ -2165,7 +2186,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bAspdRate,5;
          bonus bAspdRate,5;
          bonus bHit,12;
          bonus bHit,12;
@@ -2203,7 +2224,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bMagicAtkEle,Ele_Neutral,5;
          bonus2 bMagicAtkEle,Ele_Neutral,5;
          bonus bVariableCastrate,-5;
          bonus bVariableCastrate,-5;
@@ -2229,7 +2250,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bMdef,7;
          bonus bMdef,7;
          bonus bHealPower,6;
          bonus bHealPower,6;
@@ -2255,7 +2276,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bDelayrate,-3;
 #         bonus bDelayrate,-3;
 #         bonus bMaxSPrate,5;
 #         bonus bMaxSPrate,5;
@@ -2283,7 +2304,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bCritAtkRate,3;
 #         bonus bCritAtkRate,3;
 #         bonus bAtkRate,7;
 #         bonus bAtkRate,7;
@@ -2310,7 +2331,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bHit,18;
 #         bonus bHit,18;
 #         bonus bPerfectHitRate,15;
 #         bonus bPerfectHitRate,15;
@@ -2413,7 +2434,7 @@ Body:
     SpecialPerformance: false   # unknown
     SpecialPerformance: false   # unknown
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus bInt,3;
          bonus bInt,3;
       }
       }
@@ -2430,7 +2451,7 @@ Body:
     SpecialPerformance: false   # unknown
     SpecialPerformance: false   # unknown
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bMagicAtkEle,Ele_Wind,3;
          bonus2 bMagicAtkEle,Ele_Wind,3;
       }
       }
@@ -2464,7 +2485,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus2 bMagicAtkEle,Ele_Fire,7;
 #         bonus2 bMagicAtkEle,Ele_Fire,7;
 #         bonus2 bMagicAtkEle,Ele_Ghost,7;
 #         bonus2 bMagicAtkEle,Ele_Ghost,7;
@@ -2494,7 +2515,7 @@ Body:
 #    SpecialPerformance: false   # unknown
 #    SpecialPerformance: false   # unknown
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bPerfectHitRate,10;
 #         bonus bPerfectHitRate,10;
 #      }
 #      }
@@ -2513,7 +2534,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bShortAtkRate,5;
 #         bonus bShortAtkRate,5;
 #         bonus bAspdRate,7;
 #         bonus bAspdRate,7;
@@ -2544,7 +2565,7 @@ Body:
     SpecialPerformance: false   # unknown
     SpecialPerformance: false   # unknown
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bMagicAddEle,Ele_Holy,5;
          bonus2 bMagicAddEle,Ele_Holy,5;
          bonus bInt,2;
          bonus bInt,2;
@@ -2575,7 +2596,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bMagicAtkEle,Ele_Earth,5;
          bonus2 bMagicAtkEle,Ele_Earth,5;
          bonus bInt,4;
          bonus bInt,4;
@@ -2605,7 +2626,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bMaxSPrate,3;
 #         bonus bMaxSPrate,3;
 #         bonus bFlee,15;
 #         bonus bFlee,15;
@@ -2642,7 +2663,7 @@ Body:
     AllowAutoFeed: true
     AllowAutoFeed: true
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bMagicAtkEle,Ele_Fire,5;
          bonus2 bMagicAtkEle,Ele_Fire,5;
          bonus bMaxHP,500;
          bonus bMaxHP,500;
@@ -2668,7 +2689,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus2 bAddClass,Class_Boss,5;
 #         bonus2 bAddClass,Class_Boss,5;
 #         bonus bPAtk,2;
 #         bonus bPAtk,2;
@@ -2696,7 +2717,7 @@ Body:
 #    SpecialPerformance: false   # unknown
 #    SpecialPerformance: false   # unknown
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bMatkRate,2;
 #         bonus bMatkRate,2;
 #         bonus bAtkRate,2;
 #         bonus bAtkRate,2;
@@ -2738,7 +2759,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus2 bMagicAddClass,Class_Boss,5;
 #         bonus2 bMagicAddClass,Class_Boss,5;
 #         bonus bSMatk,2;
 #         bonus bSMatk,2;
@@ -2767,7 +2788,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bLongAtkRate,5;
 #         bonus bLongAtkRate,5;
 #         bonus bMaxSPrate,7;
 #         bonus bMaxSPrate,7;
@@ -2799,7 +2820,7 @@ Body:
     SpecialPerformance: false   # unknown
     SpecialPerformance: false   # unknown
     Script: >
     Script: >
       .@i = getpetinfo(PETINFO_INTIMATE);
       .@i = getpetinfo(PETINFO_INTIMATE);
-      
+
       if (.@i >= PET_INTIMATE_LOYAL) {
       if (.@i >= PET_INTIMATE_LOYAL) {
          bonus2 bResEff,Eff_Curse,2000;
          bonus2 bResEff,Eff_Curse,2000;
          bonus bInt,5;
          bonus bInt,5;
@@ -2819,7 +2840,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus2 bMagicAtkEle,Ele_Dark,5;
 #         bonus2 bMagicAtkEle,Ele_Dark,5;
 #         bonus bVariableCastrate,-5;
 #         bonus bVariableCastrate,-5;
@@ -2857,7 +2878,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bMaxHPrate,5;
 #         bonus bMaxHPrate,5;
 #         bonus bVit,4;
 #         bonus bVit,4;
@@ -2886,7 +2907,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bAspdRate,5;
 #         bonus bAspdRate,5;
 #         bonus bCritical,7;
 #         bonus bCritical,7;
@@ -2924,7 +2945,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bCRate,3;
 #         bonus bCRate,3;
 #         bonus bCritical,8;
 #         bonus bCritical,8;
@@ -2950,7 +2971,7 @@ Body:
 #    SpecialPerformance: false   # unknown
 #    SpecialPerformance: false   # unknown
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bCritical,5;
 #         bonus bCritical,5;
 #         bonus bHit,10;
 #         bonus bHit,10;
@@ -2971,7 +2992,7 @@ Body:
 #    SpecialPerformance: false   # unknown
 #    SpecialPerformance: false   # unknown
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bMatkRate,2;
 #         bonus bMatkRate,2;
 #         bonus bAtkRate,2;
 #         bonus bAtkRate,2;
@@ -3013,7 +3034,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bAtkRate,3;
 #         bonus bAtkRate,3;
 #         bonus bPow,2;
 #         bonus bPow,2;
@@ -3040,7 +3061,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bMatkRate,3;
 #         bonus bMatkRate,3;
 #         bonus bSpl,2;
 #         bonus bSpl,2;
@@ -3067,7 +3088,7 @@ Body:
 #    AllowAutoFeed: true
 #    AllowAutoFeed: true
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus2 bMagicAtkEle,Ele_Dark,7;
 #         bonus2 bMagicAtkEle,Ele_Dark,7;
 #         bonus bSpeedRate,25;
 #         bonus bSpeedRate,25;
@@ -3092,7 +3113,7 @@ Body:
 #    SpecialPerformance: false   # unknown
 #    SpecialPerformance: false   # unknown
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bMaxHP,300;
 #         bonus bMaxHP,300;
 #         bonus bMaxSP,30;
 #         bonus bMaxSP,30;
@@ -3113,7 +3134,7 @@ Body:
 #    SpecialPerformance: false   # unknown
 #    SpecialPerformance: false   # unknown
 #    Script: >
 #    Script: >
 #      .@i = getpetinfo(PETINFO_INTIMATE);
 #      .@i = getpetinfo(PETINFO_INTIMATE);
-#      
+#
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #      if (.@i >= PET_INTIMATE_LOYAL) {
 #         bonus bMRes,10;
 #         bonus bMRes,10;
 #         bonus bRes,10;
 #         bonus bRes,10;
@@ -3122,4 +3143,140 @@ Body:
 #         bonus bMRes,5;
 #         bonus bMRes,5;
 #         bonus bRes,5;
 #         bonus bRes,5;
 #      }
 #      }
+#
+  - Mob: HORNET
+    EggItem: aegis_9155
+    FoodItem: Apple_Pudding
+    Fullness: 2   # unknown
+    HungryDelay: 120   # unknown
+    IntimacyFed: 15   # unknown
+    CaptureRate: 0   # unknown
+    SpecialPerformance: false   # unknown
+    Script: >
+      .@i = getpetinfo(PETINFO_INTIMATE);
+
+      if (.@i >= PET_INTIMATE_LOYAL) {
+         bonus2 bMagicAtkEle,Ele_Wind,2;
+         bonus bVariableCastrate,-2;
+      }
+      else if (.@i >= PET_INTIMATE_CORDIAL) {
+         bonus2 bMagicAtkEle,Ele_Wind,1;
+         bonus bVariableCastrate,-1;
+      }
+#    Evolution:
+#      - Target: GIANT_HONET2
+#        ItemRequirements:
+#          - Item: Honey
+#            Amount: 80
+#          - Item: Royal_Jelly
+#            Amount: 50
+#          - Item: Honey_Jar
+#            Amount: 200
+#          - Item: Sharp_Feeler
+#            Amount: 300
+#          - Item: Hornet_Card
+#            Amount: 10
+#  - Mob: CLB_SS_FC
+#    EggItem: CLB_SS_Egg01
+#    FoodItem: Pet_Food
+#    Fullness: 2   # unknown
+#    HungryDelay: 120   # unknown
+#    IntimacyFed: 15   # unknown
+#    CaptureRate: 0   # unknown
+#    SpecialPerformance: false   # unknown
+#    Script: >
+#      .@i = getpetinfo(PETINFO_INTIMATE);
+#
+#      if (.@i >= PET_INTIMATE_LOYAL) {
+#         bonus bBaseAtk,25;
+#         bonus bLuk,3;
+#      }
+#      else if (.@i >= PET_INTIMATE_CORDIAL) {
+#         bonus bBaseAtk,15;
+#         bonus bLuk,1;
+#      }
+#
+#  - Mob: CLB_SS_TZ
+#    EggItem: CLB_SS_Egg02
+#    FoodItem: Pet_Food
+#    Fullness: 2   # unknown
+#    HungryDelay: 120   # unknown
+#    IntimacyFed: 15   # unknown
+#    CaptureRate: 0   # unknown
+#    SpecialPerformance: false   # unknown
+#    Script: >
+#      .@i = getpetinfo(PETINFO_INTIMATE);
+#
+#      if (.@i >= PET_INTIMATE_LOYAL) {
+#         bonus bMatk,25;
+#         bonus bInt,3;
+#      }
+#      else if (.@i >= PET_INTIMATE_CORDIAL) {
+#         bonus bMatk,15;
+#         bonus bInt,1;
+#      }
+#
+#  - Mob: GIANT_HONET2
+#    EggItem: aegis_9192
+#    FoodItem: Pet_Food
+#    Fullness: 2   # unknown
+#    HungryDelay: 120   # unknown
+#    IntimacyFed: 15   # unknown
+#    CaptureRate: 0   # unknown
+#    SpecialPerformance: false   # unknown
+#    AllowAutoFeed: true
+#    Script: >
+#      .@i = getpetinfo(PETINFO_INTIMATE);
+#
+#      if (.@i >= PET_INTIMATE_LOYAL) {
+#         bonus2 bMagicAtkEle,Ele_Wind,5;
+#         bonus bVariableCastrate,-5;
+#      }
+#      else if (.@i >= PET_INTIMATE_CORDIAL) {
+#         bonus2 bMagicAtkEle,Ele_Wind,3;
+#         bonus bVariableCastrate,-4;
+#      }
+#      else if (.@i >= PET_INTIMATE_NEUTRAL) {
+#         bonus bVariableCastrate,-3;
+#      }
+#      else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) {
+#         bonus bVariableCastrate,-2;
+#      }
+#
+#    Evolution:
+#      - Target: MISTRESS3
+#        ItemRequirements:
+#          - Item: Driller_Card
+#            Amount: 10
+#          - Item: Mantis_Card
+#            Amount: 10
+#          - Item: Side_Winder_Card
+#            Amount: 10
+#          - Item: Mightysoul_Essence
+#            Amount: 30
+#  - Mob: MISTRESS3
+#    EggItem: aegis_9193
+#    FoodItem: High_Class_Pet_food
+#    Fullness: 2   # unknown
+#    HungryDelay: 120   # unknown
+#    IntimacyFed: 15   # unknown
+#    CaptureRate: 0   # unknown
+#    SpecialPerformance: false   # unknown
+#    AllowAutoFeed: true
+#    Script: >
+#      .@i = getpetinfo(PETINFO_INTIMATE);
+#
+#      if (.@i >= PET_INTIMATE_LOYAL) {
+#         bonus2 bAddClass,Class_Normal,7;
+#         bonus bNoSizeFix;
+#      }
+#      else if (.@i >= PET_INTIMATE_CORDIAL) {
+#         bonus2 bAddClass,Class_Normal,5;
+#      }
+#      else if (.@i >= PET_INTIMATE_NEUTRAL) {
+#         bonus2 bAddClass,Class_Normal,3;
+#      }
+#      else if (.@i >= PET_INTIMATE_AWKWARD || .@i >= PET_INTIMATE_SHY) {
+#         bonus2 bAddClass,Class_Normal,1;
+#      }
 #
 #

+ 249 - 0
db/re/quest_db.yml

@@ -9829,6 +9829,255 @@ Body:
     Targets:
     Targets:
       - Mob: EP19_MD_AQUILA
       - Mob: EP19_MD_AQUILA
         Count: 1
         Count: 1
+  - Id: 12592
+    Title: Garden of Time
+  - Id: 12593
+    Title: Helping Leticia
+  - Id: 12594
+    Title: Watching Rigel
+  - Id: 12595
+    Title: Western Barrier
+  - Id: 12596
+    Title: Eastern Barrier
+  - Id: 12597
+    Title: Access list registration
+  - Id: 12598
+    Title: Atmospheric state - Water
+    TimeLimit: 4h
+  - Id: 12599
+    Title: Standby - Earth
+    TimeLimit: 4h
+  - Id: 12600
+    Title: Standby - Poison
+    TimeLimit: 4h
+  - Id: 12601
+    Title: Atmospheric state - Wind
+    TimeLimit: 4h
+  - Id: 12602
+    Title: Standby - Flame
+    TimeLimit: 4h
+  - Id: 12610
+    Title: Cleaning complete!
+    TimeLimit: 4h
+  - Id: 12611
+    Title: Interview completed
+    TimeLimit: 4h
+  - Id: 12612
+    Title: Rewarded
+    TimeLimit: Monday 4h
+  - Id: 12613
+    Title: Divine Beast of Spring
+    Targets:
+      - Mob: MD_PRI_DRAGON_1
+        Count: 1
+  - Id: 12614
+    Title: The Divine Beast of Summer
+    Targets:
+      - Mob: MD_PRI_DRAGON_2
+        Count: 1
+  - Id: 12615
+    Title: Divine Beast of Autumn
+    Targets:
+      - Mob: MD_PRI_DRAGON_3
+        Count: 1
+  - Id: 12616
+    Title: The Divine Beast of Winter
+    Targets:
+      - Mob: MD_PRI_DRAGON_4
+        Count: 1
+  - Id: 12617
+    Title: Dimensional Criminal Correction
+  - Id: 12618
+    Title: Face to face with Oscar
+  - Id: 12619
+    Title: Take a break
+    TimeLimit: +1h
+  - Id: 12620
+    Title: Meeting with the Spirit
+  - Id: 12621
+    Title: Teremotus's Request 1
+    Targets:
+      - Mob: SPIRIT_G_LAND_S
+        Count: 50
+      - Mob: SPIRIT_G_LAND_SL
+        Count: 50
+  - Id: 12622
+    Title: Teremotus's Request 2
+    Targets:
+      - Mob: SPIRIT_G_LAND_M
+        Count: 50
+      - Mob: SPIRIT_G_LAND_L
+        Count: 50
+  - Id: 12623
+    Title: Teremotus's Request 3
+    Targets:
+      - Mob: SPIRIT_F_LAND_S
+        Count: 50
+      - Mob: SPIRIT_F_LAND_SL
+        Count: 50
+  - Id: 12624
+    Title: Teremotus's Request 4
+    Targets:
+      - Mob: SPIRIT_F_LAND_M
+        Count: 50
+      - Mob: SPIRIT_F_LAND_L
+        Count: 50
+  - Id: 12625
+    Title: Ardor's Request 1
+    Targets:
+      - Mob: SPIRIT_B_FLAME_S
+        Count: 50
+      - Mob: SPIRIT_B_FLAME_SL
+        Count: 50
+  - Id: 12626
+    Title: Ardor's Request 2
+    Targets:
+      - Mob: SPIRIT_B_FLAME_M
+        Count: 50
+      - Mob: SPIRIT_B_FLAME_L
+        Count: 50
+  - Id: 12627
+    Title: Ardor's Request 3
+    Targets:
+      - Mob: SPIRIT_R_FLAME_S
+        Count: 50
+      - Mob: SPIRIT_R_FLAME_SL
+        Count: 50
+  - Id: 12628
+    Title: Ardor's Request 4
+    Targets:
+      - Mob: SPIRIT_R_FLAME_M
+        Count: 50
+      - Mob: SPIRIT_R_FLAME_L
+        Count: 50
+  - Id: 12629
+    Title: Procella's Request 1
+    Targets:
+      - Mob: SPIRIT_S_WIND_S
+        Count: 50
+      - Mob: SPIRIT_S_WIND_SL
+        Count: 50
+  - Id: 12630
+    Title: Procella's Request 2
+    Targets:
+      - Mob: SPIRIT_S_WIND_M
+        Count: 50
+      - Mob: SPIRIT_S_WIND_L
+        Count: 50
+  - Id: 12631
+    Title: Procella's Request 3
+    Targets:
+      - Mob: SPIRIT_D_WIND_S
+        Count: 50
+      - Mob: SPIRIT_D_WIND_SL
+        Count: 50
+  - Id: 12632
+    Title: Procella's Request 4
+    Targets:
+      - Mob: SPIRIT_D_WIND_M
+        Count: 50
+      - Mob: SPIRIT_D_WIND_L
+        Count: 50
+  - Id: 12633
+    Title: Diluvio's Request 1
+    Targets:
+      - Mob: SPIRIT_I_WATER_S
+        Count: 50
+      - Mob: SPIRIT_I_WATER_SL
+        Count: 50
+  - Id: 12634
+    Title: Diluvio's Request 2
+    Targets:
+      - Mob: SPIRIT_I_WATER_M
+        Count: 50
+      - Mob: SPIRIT_I_WATER_L
+        Count: 50
+  - Id: 12635
+    Title: Diluvio's Request 3
+    Targets:
+      - Mob: SPIRIT_H_WATER_S
+        Count: 50
+      - Mob: SPIRIT_H_WATER_SL
+        Count: 50
+  - Id: 12636
+    Title: Diluvio's Request 4
+    Targets:
+      - Mob: SPIRIT_H_WATER_M
+        Count: 50
+      - Mob: SPIRIT_H_WATER_L
+        Count: 50
+  - Id: 12637
+    Title: Serpens's Request 1
+    Targets:
+      - Id: 1
+        Count: 150
+        Location: for_dun01
+        MapMobTargets:
+          SPIRIT_G_LAND_S: true
+          SPIRIT_G_LAND_M: true
+          SPIRIT_G_LAND_L: true
+          SPIRIT_B_FLAME_S: true
+          SPIRIT_B_FLAME_M: true
+          SPIRIT_B_FLAME_L: true
+          SPIRIT_S_WIND_S: true
+          SPIRIT_S_WIND_M: true
+          SPIRIT_S_WIND_L: true
+          SPIRIT_I_WATER_S: true
+          SPIRIT_I_WATER_M: true
+          SPIRIT_I_WATER_L: true
+          SPIRIT_G_LAND_SL: true
+          SPIRIT_B_FLAME_SL: true
+          SPIRIT_S_WIND_SL: true
+          SPIRIT_I_WATER_SL: true
+          SPIRIT_C_LAND_L: true
+          SPIRIT_C_LAND_M: true
+          SPIRIT_C_LAND_S: true
+          SPIRIT_C_LAND_SL: true
+          SPIRIT_C_FLAME_L: true
+          SPIRIT_C_FLAME_M: true
+          SPIRIT_C_FLAME_S: true
+          SPIRIT_C_FLAME_SL: true
+  - Id: 12638
+    Title: Serpens's Request 2
+    Targets:
+      - Id: 1
+        Count: 150
+        Location: for_dun02
+        MapMobTargets:
+          SPIRIT_H_WATER_S: true
+          SPIRIT_H_WATER_M: true
+          SPIRIT_H_WATER_L: true
+          SPIRIT_D_WIND_S: true
+          SPIRIT_D_WIND_M: true
+          SPIRIT_D_WIND_L: true
+          SPIRIT_R_FLAME_S: true
+          SPIRIT_R_FLAME_M: true
+          SPIRIT_R_FLAME_L: true
+          SPIRIT_F_LAND_S: true
+          SPIRIT_F_LAND_M: true
+          SPIRIT_F_LAND_L: true
+          SPIRIT_H_WATER_SL: true
+          SPIRIT_D_WIND_SL: true
+          SPIRIT_R_FLAME_SL: true
+          SPIRIT_F_LAND_SL: true
+          SPIRIT_C_WATER_L: true
+          SPIRIT_C_WATER_M: true
+          SPIRIT_C_WATER_S: true
+          SPIRIT_C_WATER_SL: true
+          SPIRIT_C_WIND_L: true
+          SPIRIT_C_WIND_M: true
+          SPIRIT_C_WIND_S: true
+          SPIRIT_C_WIND_SL: true
+  - Id: 12639
+    Title: Serpens's Request 3
+  - Id: 12640
+    Title: Serpens's Request 4
+  - Id: 12641
+    Title: Serpens's Request 5
+  - Id: 12642
+    Title: Serpens's Request 6
+  - Id: 12643
+    Title: Serpens's Request 7
   - Id: 13000
   - Id: 13000
     Title: RWC2011Card Gathering
     Title: RWC2011Card Gathering
   - Id: 13001
   - Id: 13001

+ 2 - 0
db/re/size_fix.yml

@@ -35,3 +35,5 @@ Header:
 Body:
 Body:
   - Weapon: Knuckle
   - Weapon: Knuckle
     Large: 75
     Large: 75
+  - Weapon: Whip
+    Large: 75

File diff suppressed because it is too large
+ 1261 - 14
db/re/skill_db.yml


+ 259 - 0
db/re/skill_tree.yml

@@ -6807,6 +6807,21 @@ Body:
             Level: 4
             Level: 4
           - Name: MT_SUMMON_ABR_MOTHER_NET
           - Name: MT_SUMMON_ABR_MOTHER_NET
             Level: 4
             Level: 4
+      - Name: MT_RUSH_STRIKE
+        MaxLevel: 5
+        Requires:
+          - Name: MT_RUSH_QUAKE
+            Level: 5
+      - Name: MT_POWERFUL_SWING
+        MaxLevel: 5
+        Requires:
+          - Name: MT_RUSH_STRIKE
+            Level: 3
+      - Name: MT_ENERGY_CANNONADE
+        MaxLevel: 5
+        Requires:
+          - Name: MT_TRIPLE_LASER
+            Level: 3
   - Job: Shadow_Cross
   - Job: Shadow_Cross
     Inherit:
     Inherit:
       Novice: true
       Novice: true
@@ -6891,6 +6906,13 @@ Body:
             Level: 5
             Level: 5
           - Name: SHC_SHADOW_STAB
           - Name: SHC_SHADOW_STAB
             Level: 5
             Level: 5
+      - Name: SHC_CROSS_SLASH
+        MaxLevel: 5
+        Requires:
+          - Name: GC_WEAPONBLOCKING
+            Level: 3
+          - Name: SHC_DANCING_KNIFE
+            Level: 3
   - Job: Arch_Mage
   - Job: Arch_Mage
     Inherit:
     Inherit:
       Novice: true
       Novice: true
@@ -7257,6 +7279,18 @@ Body:
         Requires:
         Requires:
           - Name: IG_SHIELD_MASTERY
           - Name: IG_SHIELD_MASTERY
             Level: 1
             Level: 1
+      - Name: IG_IMPERIAL_CROSS
+        MaxLevel: 5
+        Requires:
+          - Name: IG_OVERSLASH
+            Level: 5
+      - Name: IG_RADIANT_SPEAR
+        MaxLevel: 10
+        Requires:
+          - Name: IG_OVERSLASH
+            Level: 3
+          - Name: IG_SHIELD_SHOOTING
+            Level: 3
   - Job: Biolo
   - Job: Biolo
     Inherit:
     Inherit:
       Novice: true
       Novice: true
@@ -7348,6 +7382,16 @@ Body:
             Level: 5
             Level: 5
           - Name: BO_EXPLOSIVE_POWDER
           - Name: BO_EXPLOSIVE_POWDER
             Level: 3
             Level: 3
+      - Name: BO_MYSTERY_POWDER
+        MaxLevel: 5
+        Requires:
+          - Name: BO_EXPLOSIVE_POWDER
+            Level: 5
+      - Name: BO_DUST_EXPLOSION
+        MaxLevel: 5
+        Requires:
+          - Name: BO_MYSTERY_POWDER
+            Level: 3
   - Job: Abyss_Chaser
   - Job: Abyss_Chaser
     Inherit:
     Inherit:
       Novice: true
       Novice: true
@@ -7864,6 +7908,116 @@ Body:
       Royal_Guard: true
       Royal_Guard: true
       Royal_Guard_T: true
       Royal_Guard_T: true
       Imperial_Guard: true
       Imperial_Guard: true
+  - Job: Soul_Ascetic
+    Inherit:
+      Novice: true
+      Taekwon: true
+      Soul_Linker: true
+      Soul_Reaper: true
+    Tree:
+      - Name: SOA_SOUL_MASTERY
+        MaxLevel: 10
+      - Name: SOA_TALISMAN_MASTERY
+        MaxLevel: 10
+      - Name: SOA_SOUL_GATHERING
+        MaxLevel: 5
+        Requires:
+          - Name: SP_SOULENERGY
+            Level: 5
+          - Name: SOA_SOUL_MASTERY
+            Level: 3
+      - Name: SOA_TALISMAN_OF_PROTECTION
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_MASTERY
+            Level: 1
+      - Name: SOA_TALISMAN_OF_WARRIOR
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_MASTERY
+            Level: 1
+      - Name: SOA_TALISMAN_OF_MAGICIAN
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_MASTERY
+            Level: 1
+      - Name: SOA_EXORCISM_OF_MALICIOUS_SOUL
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_SOUL_GATHERING
+            Level: 1
+          - Name: SP_SOULCURSE
+            Level: 5
+      - Name: SOA_TALISMAN_OF_SOUL_STEALING
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_MASTERY
+            Level: 1
+          - Name: SOA_SOUL_MASTERY
+            Level: 1
+      - Name: SOA_TOTEM_OF_TUTELARY
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_MASTERY
+            Level: 3
+          - Name: SOA_SOUL_MASTERY
+            Level: 3
+      - Name: SOA_TALISMAN_OF_FIVE_ELEMENTS
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_MASTERY
+            Level: 1
+      - Name: SOA_TALISMAN_OF_BLUE_DRAGON
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_OF_SOUL_STEALING
+            Level: 1
+      - Name: SOA_TALISMAN_OF_WHITE_TIGER
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_OF_BLUE_DRAGON
+            Level: 1
+      - Name: SOA_TALISMAN_OF_RED_PHOENIX
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_OF_WHITE_TIGER
+            Level: 1
+      - Name: SOA_TALISMAN_OF_BLACK_TORTOISE
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_OF_RED_PHOENIX
+            Level: 1
+      - Name: SOA_TALISMAN_OF_FOUR_BEARING_GOD
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_TALISMAN_OF_BLUE_DRAGON
+            Level: 1
+          - Name: SOA_TALISMAN_OF_WHITE_TIGER
+            Level: 1
+          - Name: SOA_TALISMAN_OF_RED_PHOENIX
+            Level: 1
+          - Name: SOA_TALISMAN_OF_BLACK_TORTOISE
+            Level: 1
+      - Name: SOA_CIRCLE_OF_DIRECTIONS_AND_ELEMENTALS
+        MaxLevel: 5
+        Requires:
+          - Name: SOA_SOUL_MASTERY
+            Level: 3
+          - Name: SOA_TALISMAN_OF_FIVE_ELEMENTS
+            Level: 1
+          - Name: SOA_TALISMAN_OF_FOUR_BEARING_GOD
+            Level: 1
+      - Name: SOA_SOUL_OF_HEAVEN_AND_EARTH
+        MaxLevel: 10
+        Requires:
+          - Name: SOA_TALISMAN_OF_PROTECTION
+            Level: 5
+          - Name: SOA_TALISMAN_OF_WARRIOR
+            Level: 5
+          - Name: SOA_TALISMAN_OF_MAGICIAN
+            Level: 5
+          - Name: SOA_TALISMAN_OF_FIVE_ELEMENTS
+            Level: 5
   - Job: Night_Watch
   - Job: Night_Watch
     Inherit:
     Inherit:
       Novice: true
       Novice: true
@@ -8039,3 +8193,108 @@ Body:
             Level: 5
             Level: 5
           - Name: HN_NAPALM_VULCAN_STRIKE
           - Name: HN_NAPALM_VULCAN_STRIKE
             Level: 5
             Level: 5
+  - Job: Spirit_Handler
+    Inherit:
+      Summoner: true
+    Tree:
+      - Name: SH_MYSTICAL_CREATURE_MASTERY
+        MaxLevel: 10
+      - Name: SH_CHUL_HO_SONIC_CLAW
+        MaxLevel: 7
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 1
+      - Name: SH_KI_SUL_WATER_SPRAYING
+        MaxLevel: 7
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 1
+      - Name: SH_COLORS_OF_HYUN_ROK
+        MaxLevel: 7
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 1
+      - Name: SH_HOWLING_OF_CHUL_HO
+        MaxLevel: 7
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 3
+          - Name: SH_CHUL_HO_SONIC_CLAW
+            Level: 3
+      - Name: SH_MARINE_FESTIVAL_OF_KI_SUL
+        MaxLevel: 5
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 3
+          - Name: SH_KI_SUL_WATER_SPRAYING
+            Level: 3
+      - Name: SH_SANDY_FESTIVAL_OF_KI_SUL
+        MaxLevel: 5
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 3
+          - Name: SH_KI_SUL_WATER_SPRAYING
+            Level: 3
+      - Name: SH_HYUN_ROKS_BREEZE
+        MaxLevel: 7
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 3
+          - Name: SH_COLORS_OF_HYUN_ROK
+            Level: 3
+      - Name: SH_HOGOGONG_STRIKE
+        MaxLevel: 7
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 5
+          - Name: SH_CHUL_HO_SONIC_CLAW
+            Level: 3
+      - Name: SH_KI_SUL_RAMPAGE
+        MaxLevel: 7
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 5
+          - Name: SH_MARINE_FESTIVAL_OF_KI_SUL
+            Level: 2
+          - Name: SH_SANDY_FESTIVAL_OF_KI_SUL
+            Level: 2
+      - Name: SH_HYUN_ROK_CANNON
+        MaxLevel: 7
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 5
+          - Name: SH_HYUN_ROKS_BREEZE
+            Level: 3
+      - Name: SH_COMMUNE_WITH_CHUL_HO
+        MaxLevel: 1
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 7
+          - Name: SH_HOGOGONG_STRIKE
+            Level: 3
+      - Name: SH_COMMUNE_WITH_KI_SUL
+        MaxLevel: 1
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 7
+          - Name: SH_KI_SUL_RAMPAGE
+            Level: 3
+      - Name: SH_COMMUNE_WITH_HYUN_ROK
+        MaxLevel: 1
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 7
+          - Name: SH_HYUN_ROK_CANNON
+            Level: 3
+      - Name: SH_TEMPORARY_COMMUNION
+        MaxLevel: 5
+        Requires:
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 10
+      - Name: SH_BLESSING_OF_MYSTICAL_CREATURES
+        MaxLevel: 5
+        Requires:
+          - Name: SH_COMMUNE_WITH_KI_SUL
+            Level: 1
+          - Name: SH_MYSTICAL_CREATURE_MASTERY
+            Level: 10

+ 45 - 0
db/re/statpoint.yml

@@ -612,3 +612,48 @@ Body:
   - Level: 260
   - Level: 260
     Points: 4099
     Points: 4099
     TraitPoints: 228
     TraitPoints: 228
+  - Level: 261
+    Points: 4099
+    TraitPoints: 231
+  - Level: 262
+    Points: 4099
+    TraitPoints: 234
+  - Level: 263
+    Points: 4099
+    TraitPoints: 237
+  - Level: 264
+    Points: 4099
+    TraitPoints: 240
+  - Level: 265
+    Points: 4099
+    TraitPoints: 247
+  - Level: 266
+    Points: 4099
+    TraitPoints: 250
+  - Level: 267
+    Points: 4099
+    TraitPoints: 253
+  - Level: 268
+    Points: 4099
+    TraitPoints: 256
+  - Level: 269
+    Points: 4099
+    TraitPoints: 259
+  - Level: 270
+    Points: 4099
+    TraitPoints: 266
+  - Level: 271
+    Points: 4099
+    TraitPoints: 269
+  - Level: 272
+    Points: 4099
+    TraitPoints: 272
+  - Level: 273
+    Points: 4099
+    TraitPoints: 275
+  - Level: 274
+    Points: 4099
+    TraitPoints: 278
+  - Level: 275
+    Points: 4099
+    TraitPoints: 285

File diff suppressed because it is too large
+ 199 - 143
db/re/status.yml


+ 0 - 1
db/size_fix.yml

@@ -66,7 +66,6 @@ Body:
     Large: 75
     Large: 75
   - Weapon: Whip
   - Weapon: Whip
     Small: 75
     Small: 75
-    Large: 50
   - Weapon: Book
   - Weapon: Book
     Large: 50
     Large: 50
   - Weapon: Katar
   - Weapon: Katar

+ 2 - 1
db/status.yml

@@ -38,11 +38,12 @@
 #   EndOnStart:               List of Status Changes that will end when the status activates. (Optional)
 #   EndOnStart:               List of Status Changes that will end when the status activates. (Optional)
 #   EndReturn:                List of Status Changes that will end when the status activates and won't give its effect. (Optional)
 #   EndReturn:                List of Status Changes that will end when the status activates and won't give its effect. (Optional)
 #   EndOnEnd:                 List of Status Changes that will end when the status becomes inactive. (Optional)
 #   EndOnEnd:                 List of Status Changes that will end when the status becomes inactive. (Optional)
+#   Script:                   Script to execute, when starting the status change. (Optional)
 ###########################################################################
 ###########################################################################
 
 
 Header:
 Header:
   Type: STATUS_DB
   Type: STATUS_DB
-  Version: 3
+  Version: 4
 
 
 Footer:
 Footer:
   Imports:
   Imports:

+ 5 - 0
doc/atcommands.txt

@@ -1250,6 +1250,11 @@ Adds a card or enchant to the specific slot of the equipment.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
+@resetcooltime
+/resetcooltime
+
+Resets the cooldown of all skills of the player and if active also of the homunculus or the mercenary.
+
 ==============================
 ==============================
 | 5. Administrative Commands |
 | 5. Administrative Commands |
 ==============================
 ==============================

+ 6 - 2
doc/item_bonus.txt

@@ -31,7 +31,8 @@ This list contains all available constants referenced in the 'bonus' commands.
 	RC2_Bio5_Swordman_Thief, RC2_Bio5_Acolyte_Merchant, RC2_Bio5_Mage_Archer, RC2_Bio5_MVP,
 	RC2_Bio5_Swordman_Thief, RC2_Bio5_Acolyte_Merchant, RC2_Bio5_Mage_Archer, RC2_Bio5_MVP,
 	RC2_Clocktower, RC2_Thanatos, RC2_Faceworm, RC2_Hearthunter, RC2_Rockridge, RC2_Werner_Lab,
 	RC2_Clocktower, RC2_Thanatos, RC2_Faceworm, RC2_Hearthunter, RC2_Rockridge, RC2_Werner_Lab,
 	RC2_Temple_Demon, RC2_Illusion_Vampire, RC2_Malangdo, RC2_EP172ALPHA, RC2_EP172BETA, RC2_EP172BATH,
 	RC2_Temple_Demon, RC2_Illusion_Vampire, RC2_Malangdo, RC2_EP172ALPHA, RC2_EP172BETA, RC2_EP172BATH,
-	RC2_Illusion_Turtle, RC2_Rachel_Sanctuary, RC2_Illusion_Luanda, RC2_Illusion_Frozen, RC2_Illusion_Moonlight
+	RC2_Illusion_Turtle, RC2_Rachel_Sanctuary, RC2_Illusion_Luanda, RC2_Illusion_Frozen, RC2_Illusion_Moonlight,
+	RC2_Ep16_def, RC2_Edda_Arunafeltz
 
 
 * Class (c)
 * Class (c)
 	Class_Normal, Class_Boss, Class_Guardian, Class_All
 	Class_Normal, Class_Boss, Class_Guardian, Class_All
@@ -480,7 +481,10 @@ bonus3 bAddMonsterDropItemGroup,ig,r,n;	Adds a n/100% chance to get an item of g
 bonus3 bAddClassDropItemGroup,ig,c,n;	Adds a n/100% chance to get an item of group type ig when killing a monster of class c
 bonus3 bAddClassDropItemGroup,ig,c,n;	Adds a n/100% chance to get an item of group type ig when killing a monster of class c
                                      	NOTE: If 'x' is negative value, then it's a part of formula:
                                      	NOTE: If 'x' is negative value, then it's a part of formula:
                                      	      chance = -n*(killed_mob_level/10)+1
                                      	      chance = -n*(killed_mob_level/10)+1
-                                     	LIMIT: Only 10 of these bonuses can be set. Those which exceed 10 are ignored.
+                                     	NOTE: Officially, the drop bonus for groups always activates to 100% so n should be 10000 for all
+                                              official items. The actual drop rate of each item is defined in the item_group_db instead.
+                                              Please note that each time only one random item in the group is checked for its drop rate.
+                                              That means that the chance is divided by the number of items in the group.
 
 
 bonus2 bGetZenyNum,x,n;   		Adds a n% chance of gaining 1~x zeny when killing a monster (only the highest among all is applied)
 bonus2 bGetZenyNum,x,n;   		Adds a n% chance of gaining 1~x zeny when killing a monster (only the highest among all is applied)
 bonus2 bAddGetZenyNum,x,n;		Adds a n% chance of gaining 1~x zeny when killing a monster
 bonus2 bAddGetZenyNum,x,n;		Adds a n% chance of gaining 1~x zeny when killing a monster

+ 1 - 0
doc/item_db.txt

@@ -101,6 +101,7 @@ Attack: Weapon's attack.
 ---------------------------------------
 ---------------------------------------
 
 
 MagicAttack: Weapon's magic attack. (Renewal only)
 MagicAttack: Weapon's magic attack. (Renewal only)
+             Unlike matk bonus from equipment, MagicAttack is taken into account in weapon variance calculation on Renewal.
 
 
 ---------------------------------------
 ---------------------------------------
 
 

+ 76 - 2
doc/item_group.txt

@@ -75,19 +75,39 @@ Amount: Amount of item that will be obtained.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
-SubGroup: Setting this to '0' makes the item always obtainable ("must" item).
-		  SubGroup value will allocate where the item will be stored at random group.
+SubGroup: Unique number to create a list of item.
 
 
+---------------------------------------
+
+Algorithm: Type of algorithm associated with SubGroup.
+
+Random            - A random item is picked from the sub group using rate as chance for an item being picked.
+                    The chance remains the same every time.
+All               - All items in this sub group shall be picked.
+                    If you use a command that is supposed to return only one item with such a sub group, then a random item is returned instead, with each
+                    item having the same chance to be picked.
+                    When using this algorithm, the rate must remain unspecified (0).
+SharedPool        - Rate is the amount of items of this item ID in the sub group. A random item is picked from all the items in the group and then removed
+                    from the sub group. That means each time an item is returned from the sub group, it will have a lower chance to be returned again and if
+                    no more items of this item ID remain in the sub group, it cannot be returned at all anymore. This also means that if the server requests
+                    an item from this sub group as often as there are total items in this sub group, it will get exactly the amounts specified under "rate".
+                    Only when the group is completely empty or the server restarts, the group refills.
+
+Default: SharedPool
+
+Example:
 	Item Group:
 	Item Group:
       - Group: MyItemGroup
       - Group: MyItemGroup
         SubGroups:
         SubGroups:
           - SubGroup: 0
           - SubGroup: 0
+            Algorithm: All
             List:
             List:
               - Index: 0
               - Index: 0
                 Item: Knife       # "must" item(s)
                 Item: Knife       # "must" item(s)
               - Index: 1
               - Index: 1
                 Item: Dagger      # "must" item(s)
                 Item: Dagger      # "must" item(s)
           - SubGroup: 1
           - SubGroup: 1
+            Algorithm: Random
             List:
             List:
               - Index: 0
               - Index: 0
                 Item: Stiletto    # random at SubGroup 1
                 Item: Stiletto    # random at SubGroup 1
@@ -96,6 +116,7 @@ SubGroup: Setting this to '0' makes the item always obtainable ("must" item).
                 Item: Stiletto_   # random at SubGroup 1
                 Item: Stiletto_   # random at SubGroup 1
                 Rate: 2
                 Rate: 2
           - SubGroup: 2
           - SubGroup: 2
+            Algorithm: Random
             List:
             List:
               - Index: 0
               - Index: 0
                 Item: Stiletto    # random at SubGroup 2
                 Item: Stiletto    # random at SubGroup 2
@@ -151,6 +172,59 @@ SubGroup: Setting this to '0' makes the item always obtainable ("must" item).
 		- Returns Item ID of Dagger by chance 2/7 from 'must' SubGroup
 		- Returns Item ID of Dagger by chance 2/7 from 'must' SubGroup
 		- 'SubGroup 1' and 'SubGroup 2' are ignored
 		- 'SubGroup 1' and 'SubGroup 2' are ignored
 
 
+Example #2:
+
+	Item Group:
+	  - Group: MyItemGroup2
+	    SubGroups:
+	      - SubGroup: 1
+	        Algorithm: SharedPool
+	        List:
+	          - Index: 0
+	            Item: Milk
+	            Rate: 10
+	            Amount: 3
+	          - Index: 1
+	            Item: Well_Baked_Cookie
+	            Rate: 5
+	            Amount: 2
+	          - Index: 2
+	            Item: Gift_Box
+	            Rate: 1
+
+(Note: Specifying the "SharedPool" algorithm is optional, as it defaults to SharedPool if not specified.)
+
+You can interpret this as within MyItemGroup2 there are 10 packs of 3x Milk, 5 packs of 2x Well_Baked_Cookie and 1 Gift_Box; 16 packs in total.
+
+Usages:
+'getgroupitem(IG_MyItemGroup2);'
+'getrandgroupitem(IG_MyItemGroup2);'
+
+The first time one of the two commands above are called:
+	- Player has chance to get 3x Milk by chance 10/16
+	- Player has chance to get 2x Well_Baked_Cookie by chance 5/16
+	- Player has chance to get 1x Gift_Box by chance 1/16
+
+Let's say a pack of Well_Baked_Cookie was received from the group. That means only 4 packs of Well_Baked_Cookie remain in the group.
+
+The second time one of the two commands above are called:
+	- Player has chance to get 3x Milk by chance 10/15
+	- Player has chance to get 2x Well_Baked_Cookie by chance 4/15
+	- Player has chance to get 1x Gift_Box by chance 1/15
+
+Now a Gift_Box is received from the group. That means no more Gift_Box are remaining in the group.
+
+The third time one of the two commands above are called:
+	- Player has chance to get 3x Milk by chance 10/14
+	- Player has chance to get 2x Well_Baked_Cookie by chance 4/14
+
+After the two commands were called 16 times, the server will always have given out exactly:
+	- 30 Milk (10 packs of 3x Milk)
+	- 10 Well_Baked_Cookie (5 packs of 2x Well_Baked_Cookie)
+	- 1 Gift_Box
+
+Now the group is refilled and the next time the command is called, it will behave similar to the first time.
+
 ---------------------------------------
 ---------------------------------------
 
 
 Announced: If player obtained this item, it will be broadcast to the server.
 Announced: If player obtained this item, it will be broadcast to the server.

+ 34 - 24
doc/script_commands.txt

@@ -1,4 +1,4 @@
-//===== rAthena Documentation================================
+//===== rAthena Documentation================================
 //= rAthena Script Commands
 //= rAthena Script Commands
 //===== By:==================================================
 //===== By:==================================================
 //= rAthena Dev Team
 //= rAthena Dev Team
@@ -5389,7 +5389,11 @@ example, for a random pet lure:
 getitem groupranditem(IG_Taming),1;
 getitem groupranditem(IG_Taming),1;
 
 
 'sub_group' is used to get the available random items of item group from specified random
 'sub_group' is used to get the available random items of item group from specified random
-group. 0 for 'must' item group, and random item group is 1 until 5 (MAX_ITEMGROUP_RANDGROUP+1).
+group. If 'sub_group' is not defined the value will be 1. Make sure the group has defined a
+sub group with the given value.
+The algorithm specified in the sub group determines how the item is picked.
+If the sub group algorithm is "All", then a random item in the group will be returned with
+each item having the same chance of being picked.
 
 
 More info, see doc/item_group.txt.
 More info, see doc/item_group.txt.
 
 
@@ -5397,14 +5401,13 @@ More info, see doc/item_group.txt.
 
 
 *getrandgroupitem <group_id>{,<quantity>{,<sub_group>{,<identify>{,<char_id>}}}};
 *getrandgroupitem <group_id>{,<quantity>{,<sub_group>{,<identify>{,<char_id>}}}};
 
 
-Similar to the above example, this command allows players to obtain the specified
+Similar to "groupranditem", this command allows players to obtain the specified
 quantity of a random item from the group "<group id>". The different groups and
 quantity of a random item from the group "<group id>". The different groups and
 their group number are specified in db/(pre-)re/item_group_db.yml
 their group number are specified in db/(pre-)re/item_group_db.yml
 
 
 If 'quantity' is not defined or 0, it will uses defined amount from Item Group list.
 If 'quantity' is not defined or 0, it will uses defined amount from Item Group list.
 
 
-If 'sub_group' is not defined the value will be 1 (since random group is 1 ~ 5, and 0 is
-'must' item group).
+Sub groups and their algorithm work the same way as explained for "groupranditem".
 
 
 For item with type IT_WEAPON, IT_ARMOR, IT_PETARMOR, and IT_SHADOWGEAR will be given
 For item with type IT_WEAPON, IT_ARMOR, IT_PETARMOR, and IT_SHADOWGEAR will be given
 as unidentified item (as defined by itemdb_isidentified in src/map/itemdb.cpp) except
 as unidentified item (as defined by itemdb_isidentified in src/map/itemdb.cpp) except
@@ -5424,6 +5427,9 @@ For item with type IT_WEAPON, IT_ARMOR, IT_PETARMOR, and IT_SHADOWGEAR will be g
 as unidentified item (as defined by itemdb_isidentified in src/map/itemdb.cpp) except
 as unidentified item (as defined by itemdb_isidentified in src/map/itemdb.cpp) except
 if 'identify' is defined with value 1.
 if 'identify' is defined with value 1.
 
 
+For each sub group defined for the item group, items will be given out according to
+their corresponding algorithm.
+
 More info, see doc/item_group.txt.
 More info, see doc/item_group.txt.
 
 
 ---------------------------------------
 ---------------------------------------
@@ -5756,7 +5762,7 @@ window, to avoid any disruption when both windows overlap.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
-*openstorage2 <storage_id>,<mode>{,<account_id>};
+*openstorage2 <storage_id>{,<mode>{,<account_id>}};
 
 
 Just like the 'openstorage' command, except this command can open additional storages
 Just like the 'openstorage' command, except this command can open additional storages
 by the specified <storage_id>. For <storage_id>, please read the conf/inter_server.yml
 by the specified <storage_id>. For <storage_id>, please read the conf/inter_server.yml
@@ -5766,13 +5772,14 @@ Values for <mode> are:
 	STOR_MODE_NONE : Player only can read the storage entries.
 	STOR_MODE_NONE : Player only can read the storage entries.
 	STOR_MODE_GET  : Player can get items from the storage.
 	STOR_MODE_GET  : Player can get items from the storage.
 	STOR_MODE_PUT  : Player can put items in the storage.
 	STOR_MODE_PUT  : Player can put items in the storage.
+	STOR_MODE_ALL  : Player can get and put items in the storage. (default)
 
 
 Example:
 Example:
 	if (vip_status(VIP_STATUS_ACTIVE)) {
 	if (vip_status(VIP_STATUS_ACTIVE)) {
 		mes "I will open your Premium storage.";
 		mes "I will open your Premium storage.";
 		mes "Thank you for using our service.";
 		mes "Thank you for using our service.";
 		close2;
 		close2;
-		openstorage2 1,STOR_MODE_GET|STOR_MODE_PUT;
+		openstorage2 1;
 	} else {
 	} else {
 		mes "Sorry, your Premium status is expired.";
 		mes "Sorry, your Premium status is expired.";
 		mes "Storage will be opened but you can't put any item into it.";
 		mes "Storage will be opened but you can't put any item into it.";
@@ -10428,19 +10435,25 @@ This is still usable outside item scripts.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
-*pet <pet id>;
-*catchpet <pet id>;
+*pet {<item_id>{,flag}};
+*catchpet {<item_id>{,flag}};
+
+This command is used in all the item scripts for taming items.
+Running this command will make the pet catching cursor appear on the client of the invoking character
+and the player can then attempt to catch a monster.
+
+If the item ID is not specified, the command will use the item ID from the invoking item script.
+It will also work outside of an item script, if the item ID is provided.
+
+The following constants can be used as <flag> parameter:
+
+	PET_CATCH_NORMAL:				Will attempt to catch the targeted monster as long as it is in the pet database and
+									the taming item corresponds with the required taming item in the pet database.
+									This is the default if <flag> is not specified.
+	PET_CATCH_UNIVERSAL_NO_BOSS:	Will attempt to catch the targeted monster as long as it is in the pet database and
+									does not have the MD_STATUS_IMMUNE monster mode.
+	PET_CATCH_UNIVERSAL_ALL:		Will attempt to catch the targeted monster as long as it is in the pet database.
 
 
-This command is used in all the item scripts for taming items. Running this
-command will make the pet catching cursor appear on the client connected to the
-invoking character, usable on the monsters with the specified pet ID number. It
-will still work outside an item script.
-If the <pet id> is PET_CATCH_UNIVERSAL the item will attempt to catch the targeted
-monster as long as it is in the pet database and does not have the MD_STATUS_IMMUNE
-monster mode.
-If the <pet id> is PET_CATCH_UNIVERSAL_ITEM the item will attempt to catch the targeted
-monster as long as it is in the pet database and the targeted monster requires the lure
-item used.
 See 'doc/mob_db_mode_list.txt' for more information about monster modes.
 See 'doc/mob_db_mode_list.txt' for more information about monster modes.
 
 
 A full list of pet IDs can be found inside 'db/(pre-)re/pet_db.yml'.
 A full list of pet IDs can be found inside 'db/(pre-)re/pet_db.yml'.
@@ -11018,18 +11031,15 @@ The command returns 1 upon success, and these values upon failure:
 
 
 ---------------------------------------
 ---------------------------------------
 
 
-*opendressroom(<flag>{,<char_id>});
+*opendressroom({<char_id>});
 
 
 This will open the Dress Room window on the client connected to the invoking character.
 This will open the Dress Room window on the client connected to the invoking character.
 
 
 	mes "Close this window to open the Dress Room window.";
 	mes "Close this window to open the Dress Room window.";
 	close2;
 	close2;
-	opendressroom(1);
+	opendressroom();
 	end;
 	end;
 
 
-Valid flag are:
- 1 - Open the Dress Room window
-
 ---------------------------------------
 ---------------------------------------
 
 
 *navigateto("<map>"{,<x>,<y>,<flag>,<hide_window>,<monster_id>,<char_id>});
 *navigateto("<map>"{,<x>,<y>,<flag>,<hide_window>,<monster_id>,<char_id>});

+ 6 - 1
doc/status.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //===== By: ==================================================
 //= rAthena Dev Team
 //= rAthena Dev Team
 //===== Last Updated: ========================================
 //===== Last Updated: ========================================
-//= 20221216
+//= 20241109
 //===== Description: =========================================
 //===== Description: =========================================
 //= Explanation of the status.yml file and structure.
 //= Explanation of the status.yml file and structure.
 //============================================================
 //============================================================
@@ -285,6 +285,11 @@ EndOnEnd: List of status that will end when the status becomes inactive.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
+Script:	Script to execute, when starting the status change. When this is set all battle relevant status will be recalculated, after
+		executing the script. Scripted status changes can only be started on players.
+
+---------------------------------------
+
 Notes:
 Notes:
 
 
 By default, statuses are 'Buff' (those that aren't explicitely given the 'Debuff' flag) which are removable by 'map_quit' in combination with 'battle_config.debuff_on_logout'.
 By default, statuses are 'Buff' (those that aren't explicitely given the 'Debuff' flag) which are removable by 'map_quit' in combination with 'battle_config.debuff_on_logout'.

+ 78 - 8
doc/status_change.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //===== By: ==================================================
 //= rAthena Dev Team
 //= rAthena Dev Team
 //===== Last Updated: ========================================
 //===== Last Updated: ========================================
-//= 20171207
+//= 20241024
 //===== Description: =========================================
 //===== Description: =========================================
 //= List of all Status Changes and theirs val1, val2, val3, and
 //= List of all Status Changes and theirs val1, val2, val3, and
 //= val4 usage in source. Providing easier guide to use
 //= val4 usage in source. Providing easier guide to use
@@ -1012,9 +1012,12 @@ SC_CHANGE	(EFST_HLIF_CHANGE)
 	val2: VIT increase (20 * val1)
 	val2: VIT increase (20 * val1)
 	val3: INT increase (30 * val1)
 	val3: INT increase (30 * val1)
 
 
-SC_BLOODLUST	()
-	desc:
-	val1:
+SC_BLOODLUST	(EFST_HAMI_BLOODLUST)
+	desc: Increase the homunculus ATK and has a chance to leech HP from the target
+	val1: Skill Level
+	val2: ATK increase (20 + (10 * val1))
+	val3: Chance to leech HP (9 * val1)%
+	val4: Leeched HP percentage 20%
 
 
 SC_FLEET	()
 SC_FLEET	()
 	desc:
 	desc:
@@ -1024,10 +1027,10 @@ SC_SPEED	()
 	desc:
 	desc:
 	val1:
 	val1:
 
 
-SC_DEFENCE	()
-	desc: Increase Defense, HAMI_DEFENCE effect
-	val1: (none)
-	val2: + Def(Pre-renewal) or VIT (Renewal)
+SC_DEFENCE	(EFST_HAMI_DEFENCE)
+	desc: Increase VIT and as result VIT-based DEF of the Player and plain VIT of the Homunculus
+	val1: Skill Level
+	val2: VIT increase for players, DEF increase for homunculus (5 + (5 * val1)) [Renewal], (2 * val1) [Pre-Renewal]
 
 
 SC_INCASPDRATE	()
 SC_INCASPDRATE	()
 	desc: Increase ASPD
 	desc: Increase ASPD
@@ -2845,3 +2848,70 @@ SC_AGIUP
 	desc: Increase Speed and Flee.
 	desc: Increase Speed and Flee.
 	val1: +% Walkspeed
 	val1: +% Walkspeed
 	val2: +% Flee
 	val2: +% Flee
+
+SC_BATH_FOAM_A	(EFST_BATH_FOAM_A)
+	desc: Increases physical and magical damage against Meditathio Dungeon Monsters.
+	val1: +% damage
+
+SC_BATH_FOAM_B	(EFST_BATH_FOAM_B)
+	desc: Increases physical and magical damage against Meditathio Dungeon Monsters.
+	val1: +% damage
+
+SC_BATH_FOAM_C	(EFST_BATH_FOAM_C)
+	desc: Increases physical and magical damage against Meditathio Dungeon Monsters.
+	val1: +% damage
+
+SC_BUCHEDENOEL (EFST_BUCHEDENOEL)
+	desc: Increases HP & SP restoration by 3%, Hit +3, and Critical +7.
+
+SC_EP16_DEF	(EFST_EP16_DEF)
+	desc: Decrease physical and magical damage against monsters in the Room of Consciousness and Prontera Invasion Dungeon. Restores 1000 HP. Cures Curse, Poison and Silence.
+	val1: +% reduction
+
+SC_STR_SCROLL	(EFST_STR_SCROLL)
+	desc: Increases STR.
+	val1: + STR
+
+SC_INT_SCROLL	(EFST_INT_SCROLL)
+	desc: Increases INT.
+	val1: + INT
+
+SC_CONTENTS_1	(EFST_CONTENTS_1)
+	desc: Increase physical and magical damage to all element enemies
+	val1: +% damage
+	
+SC_CONTENTS_2	(EFST_CONTENTS_2)
+	desc: Increase melee physical damage, range physical damage, and all elemental magic damage.
+	val1: +% damage
+	
+SC_CONTENTS_3	(EFST_CONTENTS_3)
+	desc: Increase ATK and MATK
+	val1: +% damage
+	
+SC_CONTENTS_4	(EFST_CONTENTS_4)
+	desc: Increase ATK and MATK
+	val1: +% damage
+	
+SC_CONTENTS_5	(EFST_CONTENTS_5)
+	desc: Increase ASPD and reduce variable casttime
+	val1: +% increase ASPD, -% reduce variable casttime
+	
+SC_CONTENTS_6	(EFST_CONTENTS_6)
+	desc: Increase physical and magical damage to Dragon and Plant race.
+	val1: +% damage
+	
+SC_CONTENTS_7	(EFST_CONTENTS_7)
+	desc: Increase physical and magical damage to Demon and Undead race.
+	val1: +% damage
+	
+SC_CONTENTS_8	(EFST_CONTENTS_8)
+	desc: Increase physical and magical damage to Formless and Fish race.
+	val1: +% damage
+	
+SC_CONTENTS_9	(EFST_CONTENTS_9)
+	desc: Increase physical and magical damage to Angel and Brute race.
+	val1: +% damage
+	
+SC_CONTENTS_10	(EFST_CONTENTS10)
+	desc: Increase physical and magical damage to Insect and Demihuman race.
+	val1: +% damage

+ 1 - 0
doc/yaml/db/item_group_db.yml

@@ -8,6 +8,7 @@
 # - Group                      Group name of the item.
 # - Group                      Group name of the item.
 #   SubGroups:
 #   SubGroups:
 #     - SubGroup:              SubGroup number associated with the list of item. See doc/item_group.txt for more information.
 #     - SubGroup:              SubGroup number associated with the list of item. See doc/item_group.txt for more information.
+#       Algorithm:             Type of algorithm associated with SubGroup. (Default: SharedPool)
 #       List:                  List of item(s) for the SubGroup.
 #       List:                  List of item(s) for the SubGroup.
 #        - Index               Unique number that can be used to add the same Item with different data in the list.
 #        - Index               Unique number that can be used to add the same Item with different data in the list.
 #          Item                AegisName of item that will be obtained from this item group.
 #          Item                AegisName of item that will be obtained from this item group.

+ 4 - 0
doc/yaml/sql/mob_db_re.sql

@@ -65,6 +65,10 @@ CREATE TABLE `mob_db_re` (
   `racegroup_illusion_turtle` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_turtle` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_rachel_sanctuary` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_rachel_sanctuary` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_ep16_def` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_edda_arunafeltz` tinyint(1) unsigned DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,

+ 1 - 1
npc/airports/airships.txt

@@ -1152,7 +1152,7 @@ airplane_01,32,61,4	script	Nils#ein	49,1,1,{
 		input .@save2$;
 		input .@save2$;
 		set .@end_time, gettimetick(1);
 		set .@end_time, gettimetick(1);
 		set .@total_time, .@total_time + (.@start_time - .@end_time);
 		set .@total_time, .@total_time + (.@start_time - .@end_time);
-		set .@tasoo, (.@letters[.@wordtest] / .@total_time) * 6;
+		set .@tasoo, (.@letters[.@wordtest] / ( .@total_time > 0 ?  .@total_time : 1)) * 6;
 		if ((.@save1$ == .@word1$[.@wordtest]) && (.@save2$ == .@word2$[.@wordtest])) {
 		if ((.@save1$ == .@word1$[.@wordtest]) && (.@save2$ == .@word2$[.@wordtest])) {
 			mes "[Nils]";
 			mes "[Nils]";
 			mes "Your record is ^ff0000" + .@total_time + " seconds^000000 and";
 			mes "Your record is ^ff0000" + .@total_time + " seconds^000000 and";

+ 1 - 1
npc/cities/amatsu.txt

@@ -138,7 +138,7 @@ amatsu,194,79,5	script	Sea Captain#ama2	709,{
 		mes "right? All aboard now.";
 		mes "right? All aboard now.";
 		close2;
 		close2;
 		if (checkre(0))
 		if (checkre(0))
-			warp "alberta",244,72;
+			warp "alberta",245,87;
 		else
 		else
 			warp "alberta",243,91;
 			warp "alberta",243,91;
 		end;
 		end;

+ 2 - 2
npc/cities/ayothaya.txt

@@ -87,9 +87,9 @@ ayothaya,152,68,1	script	Aibakthing#ayo2	843,{
 		mes "You will be welcome to come back whenever you please. I hope that we will see each other again sometime soon. Thank you~";
 		mes "You will be welcome to come back whenever you please. I hope that we will see each other again sometime soon. Thank you~";
 		close2;
 		close2;
 		if (checkre(0))
 		if (checkre(0))
-			warp "alberta",235,45;
+			warp "alberta",245,87;
 		else
 		else
-			warp "alberta",238,22;
+			warp "alberta",235,45;
 		end;
 		end;
 	}
 	}
 	mes "[Aibakthing]";
 	mes "[Aibakthing]";

+ 1 - 1
npc/cities/brasilis.txt

@@ -60,7 +60,7 @@ brasilis,316,57,3	script	Crewman#bra1	100,{
 		mes "I sure do miss home.";
 		mes "I sure do miss home.";
 		close2;
 		close2;
 		if (checkre(0))
 		if (checkre(0))
-			warp "alberta",243,82;
+			warp "alberta",245,87;
 		else
 		else
 			warp "alberta",244,115;
 			warp "alberta",244,115;
 		end;
 		end;

+ 0 - 69
npc/cities/einbroch.txt

@@ -783,75 +783,6 @@ ein_in01,43,252,3	script	Canphotii#ein	852,{
 	close;
 	close;
 }
 }
 
 
-ein_in01,206,224,3	script	Hotel Employee#ein	855,{
-	mes "[Hotel Employee]";
-	mes "Good day, welcome to the";
-	mes "Einbroch Hotel. The staff is";
-	mes "always striving to accommodate";
-	mes "our guests with the highest";
-	mes "standards in cleanliness,";
-	mes "service and convenience~";
-	next;
-	if (kain_ticket == 5) {
-		mes "[Hotel Employee]";
-		mes "Are you looking";
-		mes "for Mr. Defru Ark?";
-		mes "Oh right, he did mention";
-		mes "waiting for some package";
-		mes "from the Airport. Now let";
-		mes "me pull up that information...";
-		next;
-		mes "[Hotel Employee]";
-		mes "Ah, here we are.";
-		mes "Mr. Defru Ark is";
-		mes "staying in Room 201.";
-		next;
-	}
-	else {
-		switch(select("Save:Take Rest - 5,000 zeny:Cancel")) {
-		case 1:
-			mes "[Hotel Employee]";
-			mes "Your Respawn Point";
-			mes "has been saved here";
-			mes "in the Einbroch Hotel.";
-			mes "Thank you, and please";
-			mes "come again.";
-			close2;
-			savepoint "ein_in01",200,224,1,1;
-			end;
-		case 2:
-			if (Zeny > 4999) {
-				mes "[Hotel Employee]";
-				mes "Thank you.";
-				mes "Please enjoy";
-				mes "your rest~";
-				close2;
-				set Zeny, Zeny-5000;
-				percentheal 100,100;
-				warp "ein_in01",272,167;
-				end;
-			}
-			else {
-				mes "[Hotel Employee]";
-				mes "I'm sorry, but the";
-				mes "accommodation fee is";
-				mes "5,000 zeny. Next time,";
-				mes "please make sure that you";
-				mes "bring enough zeny, okay?";
-				close;
-			}
-		case 3:
-			mes "[Hotel Employee]";
-			mes "Thank you and";
-			mes "please come again~";
-			close;
-		}
-	}
-	mes "[Hotel Employee]";
-	mes "Have a good day.";
-	close;
-}
-
 einbroch,244,255,5	script	Bulletin Board#ein1	858,{
 einbroch,244,255,5	script	Bulletin Board#ein1	858,{
 	mes " ";
 	mes " ";
 	mes " Train Station ";
 	mes " Train Station ";

+ 1 - 1
npc/cities/gonryun.txt

@@ -145,7 +145,7 @@ gon_fild01,255,79,7	script	Kunlun Envoy#gon2	776,{
 		mes "back to Alberta.";
 		mes "back to Alberta.";
 		close2;
 		close2;
 		if (checkre(0))
 		if (checkre(0))
-			warp "alberta",244,60;
+			warp "alberta",245,87;
 		else
 		else
 			warp "alberta",243,67;
 			warp "alberta",243,67;
 		end;
 		end;

+ 1 - 1
npc/cities/louyang.txt

@@ -110,7 +110,7 @@ lou_fild01,190,100,7	script	Girl#1lou	815,{
 		mes "Bye bye!";
 		mes "Bye bye!";
 		close2;
 		close2;
 		if (checkre(0))
 		if (checkre(0))
-			warp "alberta",236,40;
+			warp "alberta",245,87;
 		else
 		else
 			warp "alberta",235,45;
 			warp "alberta",235,45;
 		end;
 		end;

+ 1 - 1
npc/cities/moscovia.txt

@@ -110,7 +110,7 @@ moscovia,166,53,4	script	Moscovia P.R. Officer#2	960,{
 	mes "Ok then, Let's get going.";
 	mes "Ok then, Let's get going.";
 	close2;
 	close2;
 	if (checkre(0))
 	if (checkre(0))
-		warp "alberta",244,52;
+		warp "alberta",244,86;
 	else
 	else
 		warp "alberta",243,67;
 		warp "alberta",243,67;
 	end;
 	end;

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

@@ -1,15 +1,9 @@
-//===== rAthena Script ======================================= 
+//===== rAthena Script =======================================
 //= Assassin Job Quest
 //= Assassin Job Quest
-//===== By: ================================================== 
-//= kobra_k88
-//===== Current Version: ===================================== 
-//= 3.7
-//===== Compatible With: ===================================== 
-//= rAthena Project
-//===== Description: ========================================= 
+//===== Description: =========================================
 //= [Official Conversion]
 //= [Official Conversion]
 //= Job Change quest for Assassin class.
 //= Job Change quest for Assassin class.
-//===== Additional Comments: ================================= 
+//===== Changelog: ===========================================
 //= 1.0 Used some dialogue from the aegis Assassin script translated By: Pgro Team (OwNaGe)
 //= 1.0 Used some dialogue from the aegis Assassin script translated By: Pgro Team (OwNaGe)
 //=     Also converted the booby traps from the aegis script.[kobra_k88]
 //=     Also converted the booby traps from the aegis script.[kobra_k88]
 //= 1.1 Made adjustments to ontouch npcs to work with the new "ontouch" functionality.
 //= 1.1 Made adjustments to ontouch npcs to work with the new "ontouch" functionality.
@@ -28,7 +22,7 @@
 //= 2.0 Changed numbers to constants. [Vicious]
 //= 2.0 Changed numbers to constants. [Vicious]
 //= 2.1 Removed Duplicates [Silent]
 //= 2.1 Removed Duplicates [Silent]
 //= 2.2 Merged back JFunc. Fixed missing dialogue [Lupus]
 //= 2.2 Merged back JFunc. Fixed missing dialogue [Lupus]
-//= 2.3 Fixed typo and change Nameless addtimer to 100 (with 700ms I 
+//= 2.3 Fixed typo and change Nameless addtimer to 100 (with 700ms I
 //=     was still able to bypass it) [Toms]
 //=     was still able to bypass it) [Toms]
 //= 2.4 Fixed skipping of Nameless NPC [Lupus]
 //= 2.4 Fixed skipping of Nameless NPC [Lupus]
 //= 2.5 Fixed a Rogue exploit [Lupus]
 //= 2.5 Fixed a Rogue exploit [Lupus]
@@ -50,8 +44,8 @@
 //= 3.5 Fixed the waitingroom where player can enter the Test Area without passing the written exam. Now player will not be warp inside the Test Area when did not passed the written exam instead the player will be warp back to the written exam entrance [JayPee]
 //= 3.5 Fixed the waitingroom where player can enter the Test Area without passing the written exam. Now player will not be warp inside the Test Area when did not passed the written exam instead the player will be warp back to the written exam entrance [JayPee]
 //= 3.6 Fixed broken event calls. [Euphy]
 //= 3.6 Fixed broken event calls. [Euphy]
 //= 3.7 Fixed issue that the player can't progress in the quest if timed out at weapon reward step. This issue is fixed on iRO but not on kRO. [https://forums.warpportal.com/index.php?/topic/130060-didnt-receive-necklace-of-oblivion-when-changing-assassin/#entry1496042] [MrAntares]
 //= 3.7 Fixed issue that the player can't progress in the quest if timed out at weapon reward step. This issue is fixed on iRO but not on kRO. [https://forums.warpportal.com/index.php?/topic/130060-didnt-receive-necklace-of-oblivion-when-changing-assassin/#entry1496042] [MrAntares]
-//= 3.8 Another 'unofficial fix'. Player can't change job if time out after the necklace is deleted.
-//============================================================ 
+//= 3.8 Another 'unofficial fix'. Player can't change job if time out after the necklace is deleted. [Atemo]
+//============================================================
 
 
 in_moc_16,19,33,1	script	Guildsman#asn	55,{
 in_moc_16,19,33,1	script	Guildsman#asn	55,{
 	if (Upper == 1) {
 	if (Upper == 1) {
@@ -86,7 +80,7 @@ in_moc_16,19,33,1	script	Guildsman#asn	55,{
 			mes "Well then,";
 			mes "Well then,";
 			mes "go for it!";
 			mes "go for it!";
 			close2;
 			close2;
-			set ASSIN_Q,0;
+			ASSIN_Q = 0;
 			warp "in_moc_16",19,76;
 			warp "in_moc_16",19,76;
 			end;
 			end;
 		}
 		}
@@ -96,9 +90,10 @@ in_moc_16,19,33,1	script	Guildsman#asn	55,{
 		mes "[Ferocious-looking guy]";
 		mes "[Ferocious-looking guy]";
 		mes "You'll have to walk if you want to get back to town. Oh, and don't forget to save your spawn point, alright?";
 		mes "You'll have to walk if you want to get back to town. Oh, and don't forget to save your spawn point, alright?";
 		close2;
 		close2;
-		set ASSIN_Q,0;
-		set ASSIN_Q2,0;
-		set ASSIN_Q3,0;
+		ASSIN_Q = 0;
+		ASSIN_Q2 = 0;
+		if (ASSIN_Q3 < 3)
+			ASSIN_Q3 = 0;
 		savepoint "in_moc_16",18,14,1,1;
 		savepoint "in_moc_16",18,14,1,1;
 		warp "in_moc_16",18,14;
 		warp "in_moc_16",18,14;
 		end;
 		end;
@@ -257,7 +252,7 @@ in_moc_16,19,33,1	script	Guildsman#asn	55,{
 					mes "It's been a while since I've received a guest. I'm sending";
 					mes "It's been a while since I've received a guest. I'm sending";
 					mes "you to the office.";
 					mes "you to the office.";
 					close2;
 					close2;
-					set ASSIN_Q,0;
+					ASSIN_Q = 0;
 					if (checkquest(8000) != -1) {
 					if (checkquest(8000) != -1) {
 						changequest 8000,8001;
 						changequest 8000,8001;
 					} else {
 					} else {
@@ -553,8 +548,9 @@ OnTouch_:
 				mes "Alright then,";
 				mes "Alright then,";
 				mes "best of luck to you!";
 				mes "best of luck to you!";
 				close2;
 				close2;
-				set ASSIN_Q3,1;
-				set ASSIN_Q,1;
+				if (ASSIN_Q3 < 3)
+					ASSIN_Q3 = 1;
+				ASSIN_Q = 1;
 				changequest 8001,8002;
 				changequest 8001,8002;
 				warp "in_moc_16",19,144;
 				warp "in_moc_16",19,144;
 				end;
 				end;
@@ -576,8 +572,9 @@ OnTouch_:
 				mes "to the Test Hall.";
 				mes "to the Test Hall.";
 				mes "Best of luck~";
 				mes "Best of luck~";
 				close2;
 				close2;
-				set ASSIN_Q3,2;
-				set ASSIN_Q,1;
+				if (ASSIN_Q3 < 3)
+					ASSIN_Q3 = 2;
+				ASSIN_Q = 1;
 				changequest 8001,8002;
 				changequest 8001,8002;
 				warp "in_moc_16",19,144;
 				warp "in_moc_16",19,144;
 				end;
 				end;
@@ -602,9 +599,8 @@ OnTouch_:
 				mes "Eh, get outta here.";
 				mes "Eh, get outta here.";
 				mes "Stop wastin' my time...";
 				mes "Stop wastin' my time...";
 				close2;
 				close2;
-				set ASSIN_Q,0;
-				set ASSIN_Q3,0;
-				set ASSIN_Q2,0;
+				ASSIN_Q = 0;
+				ASSIN_Q2 = 0;
 				erasequest 8001;
 				erasequest 8001;
 				warp "moc_fild16",206,229;
 				warp "moc_fild16",206,229;
 				end;
 				end;
@@ -630,8 +626,9 @@ OnTouch_:
 				mes "[Assassin 'Khai']";
 				mes "[Assassin 'Khai']";
 				mes "Are you done filling out the form? Alright, give it to me so I can send you to the Test Hall. Good luck~";
 				mes "Are you done filling out the form? Alright, give it to me so I can send you to the Test Hall. Good luck~";
 				next;
 				next;
-				set ASSIN_Q3,1;
-				set ASSIN_Q,1;
+				if (ASSIN_Q3 < 3)
+					ASSIN_Q3 = 1;
+				ASSIN_Q = 1;
 				changequest 8001,8002;
 				changequest 8001,8002;
 				warp "in_moc_16",19,144;
 				warp "in_moc_16",19,144;
 				end;
 				end;
@@ -644,8 +641,9 @@ OnTouch_:
 				mes "Then give me the form so that I can send you to the Test Hall, alright?";
 				mes "Then give me the form so that I can send you to the Test Hall, alright?";
 				mes "Good luck...";
 				mes "Good luck...";
 				next;
 				next;
-				set ASSIN_Q3,2;
-				set ASSIN_Q,1;
+				if (ASSIN_Q3 < 3)
+					ASSIN_Q3 = 2;
+				ASSIN_Q = 1;
 				changequest 8001,8002;
 				changequest 8001,8002;
 				warp "in_moc_16",19,144;
 				warp "in_moc_16",19,144;
 				end;
 				end;
@@ -711,7 +709,7 @@ OnTouch_:
 			mes "Although I am heartless,";
 			mes "Although I am heartless,";
 			mes "I am not necessarily cruel. Before we proceed, is there anything you wish to know?";
 			mes "I am not necessarily cruel. Before we proceed, is there anything you wish to know?";
 			next;
 			next;
-			set ASSIN_Q2,0;
+			ASSIN_Q2 = 0;
 			while(ASSIN_Q2 < 3) {
 			while(ASSIN_Q2 < 3) {
 				switch(select("...Skills?:...Stats?:Hmpf, I know it all.")) {
 				switch(select("...Skills?:...Stats?:Hmpf, I know it all.")) {
 				case 1:
 				case 1:
@@ -774,7 +772,7 @@ OnTouch_:
 					mes "Now...";
 					mes "Now...";
 					mes "That's all I have to tell you";
 					mes "That's all I have to tell you";
 					mes "about Assassin skills.";
 					mes "about Assassin skills.";
-					set ASSIN_Q2,1;
+					ASSIN_Q2 = 1;
 					next;
 					next;
 					break;
 					break;
 				case 2:
 				case 2:
@@ -787,7 +785,7 @@ OnTouch_:
 					next;
 					next;
 					mes "[The Anonymous One]";
 					mes "[The Anonymous One]";
 					mes "I cannot give you better advice than that in regards to Stats. You should research and see which stats suit you, and decide what kind of Assassin you want to be.";
 					mes "I cannot give you better advice than that in regards to Stats. You should research and see which stats suit you, and decide what kind of Assassin you want to be.";
-					set ASSIN_Q2,2;
+					ASSIN_Q2 = 2;
 					next;
 					next;
 					break;
 					break;
 				case 3:
 				case 3:
@@ -797,7 +795,7 @@ OnTouch_:
 						mes "I'll be the judge of that!";
 						mes "I'll be the judge of that!";
 						next;
 						next;
 					}
 					}
-					set ASSIN_Q2,3;
+					ASSIN_Q2 = 3;
 					break;
 					break;
 				}
 				}
 			}
 			}
@@ -847,53 +845,53 @@ OnTouch_:
 			mes "1. Choose skill that is not required to learn Grimtooth.";
 			mes "1. Choose skill that is not required to learn Grimtooth.";
 			next;
 			next;
 			if (select("Cloaking level 2:Sonic Blow level 5:Katar Mastery level 4:Right hand Mastery level 2") == 4)
 			if (select("Cloaking level 2:Sonic Blow level 5:Katar Mastery level 4:Right hand Mastery level 2") == 4)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "2. What property does Enchant Poison possess?";
 			mes "2. What property does Enchant Poison possess?";
 			next;
 			next;
 			if (select("Poison:Earth:Fire:Wind") == 1)
 			if (select("Poison:Earth:Fire:Wind") == 1)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "3. How does Level 4 Right Hand Mastery work?";
 			mes "3. How does Level 4 Right Hand Mastery work?";
 			next;
 			next;
 			if (select("Recover 80% of damage decrease:Recover 90% of damage decrease:Increase 90% of damage:Increase 108% of damage") == 2)
 			if (select("Recover 80% of damage decrease:Recover 90% of damage decrease:Increase 90% of damage:Increase 108% of damage") == 2)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "4. What is the item required for using Venom Dust?";
 			mes "4. What is the item required for using Venom Dust?";
 			next;
 			next;
 			if (select("Red Blood:Blue Gemstone:Yellow Gemstone:Red Gemstone") == 4)
 			if (select("Red Blood:Blue Gemstone:Yellow Gemstone:Red Gemstone") == 4)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "5. Which skill can you learn when you reach Level 5 Enchant Poison?";
 			mes "5. Which skill can you learn when you reach Level 5 Enchant Poison?";
 			next;
 			next;
 			if (select("Envenom:Sonic Blow:Venom Splasher:Venom Dust") == 4)
 			if (select("Envenom:Sonic Blow:Venom Splasher:Venom Dust") == 4)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "6. Among the following skills, which allows you to walk while invisible?";
 			mes "6. Among the following skills, which allows you to walk while invisible?";
 			next;
 			next;
 			if (select("Hiding:Back Slide:Cloaking:Sand Attack") == 3)
 			if (select("Hiding:Back Slide:Cloaking:Sand Attack") == 3)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "7. Choose the condition that is unrelated to Venom Splasher.";
 			mes "7. Choose the condition that is unrelated to Venom Splasher.";
 			next;
 			next;
 			if (select("Poisoned target.:Red Gemstone.:Remaing HP of Target.") == 2)
 			if (select("Poisoned target.:Red Gemstone.:Remaing HP of Target.") == 2)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "8. Which monster is weak to a weapon with Vadon card (adds 20% damage on Fire property monster)?";
 			mes "8. Which monster is weak to a weapon with Vadon card (adds 20% damage on Fire property monster)?";
 			next;
 			next;
 			if (select("Steel Chonchon:Deviruchi:Elder Willow:Baphomet") == 3)
 			if (select("Steel Chonchon:Deviruchi:Elder Willow:Baphomet") == 3)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "9. How much SP does";
 			mes "9. How much SP does";
 			mes "Double Attack need?";
 			mes "Double Attack need?";
 			next;
 			next;
 			if (select("15:It's a passive skill, so SP use is 0.:It's passive skill, so SP use is 10.:54") == 2)
 			if (select("15:It's a passive skill, so SP use is 0.:It's passive skill, so SP use is 10.:54") == 2)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "10. What is the best elemental Main Gauche weapon for hunting in Izlude dungeon?";
 			mes "10. What is the best elemental Main Gauche weapon for hunting in Izlude dungeon?";
 			next;
 			next;
 			if (select("Wind Main Gauche:Ice Main Gauche:Earth Main Gauche:Fire Main Gauche") == 1)
 			if (select("Wind Main Gauche:Ice Main Gauche:Earth Main Gauche:Fire Main Gauche") == 1)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			break;
 			break;
 		case 2:
 		case 2:
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
@@ -901,104 +899,104 @@ OnTouch_:
 			mes "drops a slotted Katar?";
 			mes "drops a slotted Katar?";
 			next;
 			next;
 			if (select("Thief Bug:Peco Peco:Desert Wolf:Hammer Cobolt") == 3)
 			if (select("Thief Bug:Peco Peco:Desert Wolf:Hammer Cobolt") == 3)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "2. Which monster";
 			mes "2. Which monster";
 			mes "drops a slotted Jur?";
 			mes "drops a slotted Jur?";
 			next;
 			next;
 			if (select("Martin:Desert Wolf:Marionette:Myst") == 1)
 			if (select("Martin:Desert Wolf:Marionette:Myst") == 1)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "3. Which class is allowed to craft elemental weapons?";
 			mes "3. Which class is allowed to craft elemental weapons?";
 			next;
 			next;
 			if (select("Merchant:Blacksmith:Thief:Priest") == 2)
 			if (select("Merchant:Blacksmith:Thief:Priest") == 2)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "4. Choose the weapon which is not in the Katar class.";
 			mes "4. Choose the weapon which is not in the Katar class.";
 			next;
 			next;
 			if (select("Jamadhar:Jur:Katar:Gladius") == 4)
 			if (select("Jamadhar:Jur:Katar:Gladius") == 4)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "5. What property do Izlude dungeon monsters posses?";
 			mes "5. What property do Izlude dungeon monsters posses?";
 			next;
 			next;
 			if (select("Water:Fire:Wind:Earth") == 1)
 			if (select("Water:Fire:Wind:Earth") == 1)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "6. Which monster";
 			mes "6. Which monster";
 			mes "cannot be a Cute Pet?";
 			mes "cannot be a Cute Pet?";
 			next;
 			next;
 			if (select("Poporing:Roda Frog:Smokie:Poison Spore") == 2)
 			if (select("Poporing:Roda Frog:Smokie:Poison Spore") == 2)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "7. Choose a monster that Fire property Daggers work the best on.";
 			mes "7. Choose a monster that Fire property Daggers work the best on.";
 			next;
 			next;
 			if (select("Dagger Goblin:Mace Goblin:Morning Star Goblin:Hammer Goblin") == 4)
 			if (select("Dagger Goblin:Mace Goblin:Morning Star Goblin:Hammer Goblin") == 4)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "8. Choose the non-elemental Katar from the following:";
 			mes "8. Choose the non-elemental Katar from the following:";
 			next;
 			next;
 			if (select("Katar of Raging Blaze:Katar of Dusty Thornbush:Sharpened Legbone of Ghoul:Infiltrator") == 4)
 			if (select("Katar of Raging Blaze:Katar of Dusty Thornbush:Sharpened Legbone of Ghoul:Infiltrator") == 4)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "9. Which is the uncommon monster?";
 			mes "9. Which is the uncommon monster?";
 			next;
 			next;
 			if (select("Poring:Mastering:Ghostring:Spore") == 3)
 			if (select("Poring:Mastering:Ghostring:Spore") == 3)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "10. Choose the monster";
 			mes "10. Choose the monster";
 			mes "that is not Undead.";
 			mes "that is not Undead.";
 			next;
 			next;
 			if (select("Drake:Megalodon:Spore:Khalitzburg") == 3)
 			if (select("Drake:Megalodon:Spore:Khalitzburg") == 3)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			break;
 			break;
 		case 3:
 		case 3:
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "1. Choose the correct amount of the maximum dodge rate increase from the 'Increase Dodge' skill when at level 10.";
 			mes "1. Choose the correct amount of the maximum dodge rate increase from the 'Increase Dodge' skill when at level 10.";
 			next;
 			next;
 			if (select("30:40:160:20") == 1)
 			if (select("30:40:160:20") == 1)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "2. Choose a monster which detects hiding/cloaking Thieves and Assassins.";
 			mes "2. Choose a monster which detects hiding/cloaking Thieves and Assassins.";
 			next;
 			next;
 			if (select("Worm Tail:Andre:Mummy:Soldier Skeleton") == 2)
 			if (select("Worm Tail:Andre:Mummy:Soldier Skeleton") == 2)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "3. Choose a group of weapons that cannot be used by an Assassin at once.";
 			mes "3. Choose a group of weapons that cannot be used by an Assassin at once.";
 			next;
 			next;
 			if (select("Main Gaughe + Gladius:Stiletto + Main Gauche:Katar + Maingauche:Hammer + Stiletto") == 3)
 			if (select("Main Gaughe + Gladius:Stiletto + Main Gauche:Katar + Maingauche:Hammer + Stiletto") == 3)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "4. Choose the town where Thieves can change their jobs.";
 			mes "4. Choose the town where Thieves can change their jobs.";
 			next;
 			next;
 			if (select("Prontera:Lutie:Alberta:Morocc") == 4)
 			if (select("Prontera:Lutie:Alberta:Morocc") == 4)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "5. Choose a card that does not affect the AGI stat.";
 			mes "5. Choose a card that does not affect the AGI stat.";
 			next;
 			next;
 			if (select("Baphomet Jr. card:Whisper Card:Female Thiefbug card:Male Thiefbug card") == 2)
 			if (select("Baphomet Jr. card:Whisper Card:Female Thiefbug card:Male Thiefbug card") == 2)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "6. Choose the correct specialty of the Assassin class.";
 			mes "6. Choose the correct specialty of the Assassin class.";
 			next;
 			next;
 			if (select("Excellent singing talent:Excellent reading talent:Excellent dancing talent:Excellent dodge ability") == 4)
 			if (select("Excellent singing talent:Excellent reading talent:Excellent dancing talent:Excellent dodge ability") == 4)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "7. Choose the maximum AGI bonus an Assassin can get at job level 50.";
 			mes "7. Choose the maximum AGI bonus an Assassin can get at job level 50.";
 			next;
 			next;
-			if (select("7:8:9:10") == 4) 
-				set .@assassin_t,.@assassin_t+10;
+			if (select("7:8:9:10") == 4)
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "8. Choose the item that an Assassin cannot equip.";
 			mes "8. Choose the item that an Assassin cannot equip.";
 			next;
 			next;
-			if (select("Dagger:Helm:Boots:Brooch") == 2) 
-				set .@assassin_t,.@assassin_t+10;
+			if (select("Dagger:Helm:Boots:Brooch") == 2)
+				.@assassin_t += 10;
 			mes "[The Anonymous One]";
 			mes "[The Anonymous One]";
 			mes "9. Choose the job change item for Thief.";
 			mes "9. Choose the job change item for Thief.";
 			next;
 			next;
 			switch(select("Orange Gooey Mushroom:Red Gooey Mushroom:Orange Net Mushroom:Orange Hair Mushroom")) {
 			switch(select("Orange Gooey Mushroom:Red Gooey Mushroom:Orange Net Mushroom:Orange Hair Mushroom")) {
 			case 1:
 			case 1:
 			case 3:
 			case 3:
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 				break;
 				break;
 			default:
 			default:
 				break;
 				break;
@@ -1007,7 +1005,7 @@ OnTouch_:
 			mes "10. Choose a card that would typically benefit an Assassin the least.";
 			mes "10. Choose a card that would typically benefit an Assassin the least.";
 			next;
 			next;
 			if (select("Whisper card:Elder Willow card:Soldier Skeleton card:Cobold card") == 2)
 			if (select("Whisper card:Elder Willow card:Soldier Skeleton card:Cobold card") == 2)
-				set .@assassin_t,.@assassin_t+10;
+				.@assassin_t += 10;
 			break;
 			break;
 		}
 		}
 		if (ASSIN_Q2 == 3) {
 		if (ASSIN_Q2 == 3) {
@@ -1023,7 +1021,7 @@ OnTouch_:
 			mes "You scored";
 			mes "You scored";
 			mes "" + .@assassin_t + " percent...";
 			mes "" + .@assassin_t + " percent...";
 			if (.@assassin_t > 80) {
 			if (.@assassin_t > 80) {
-				set ASSIN_Q2,5;
+				ASSIN_Q2 = 5;
 				changequest 8002,8003;
 				changequest 8002,8003;
 				mes "Well done.";
 				mes "Well done.";
 				mes "You pass.";
 				mes "You pass.";
@@ -1033,7 +1031,7 @@ OnTouch_:
 				close;
 				close;
 			}
 			}
 			else {
 			else {
-				set ASSIN_Q2,4;
+				ASSIN_Q2 = 4;
 				mes "That means you fail!";
 				mes "That means you fail!";
 				next;
 				next;
 				mes "[The Anonymous One]";
 				mes "[The Anonymous One]";
@@ -1060,7 +1058,7 @@ OnTouch_:
 			mes "You scored";
 			mes "You scored";
 			mes "" + .@assassin_t + " points...";
 			mes "" + .@assassin_t + " points...";
 			if (.@assassin_t > 80) {
 			if (.@assassin_t > 80) {
-				set ASSIN_Q2,5;
+				ASSIN_Q2 = 5;
 				changequest 8002,8003;
 				changequest 8002,8003;
 				next;
 				next;
 				mes "[The Anonymous One]";
 				mes "[The Anonymous One]";
@@ -1068,7 +1066,7 @@ OnTouch_:
 				close;
 				close;
 			}
 			}
 			else {
 			else {
-				set ASSIN_Q2,4;
+				ASSIN_Q2 = 4;
 				mes "You failed!";
 				mes "You failed!";
 				next;
 				next;
 				mes "[The Anonymous One]";
 				mes "[The Anonymous One]";
@@ -1194,9 +1192,8 @@ OnTouch_:
 		mes "I guess you";
 		mes "I guess you";
 		mes "could use a break...";
 		mes "could use a break...";
 		close2;
 		close2;
-		set ASSIN_Q,0;
-		set ASSIN_Q3,0;
-		set ASSIN_Q2,0;
+		ASSIN_Q = 0;
+		ASSIN_Q2 = 0;
 		changequest 8003,8000;
 		changequest 8003,8000;
 		warp "in_moc_16",19,13;
 		warp "in_moc_16",19,13;
 		end;
 		end;
@@ -1207,7 +1204,7 @@ in_moc_16,1,1,0	script	Beholder#ASNTEST	-1,{
 	end;
 	end;
 
 
 OnEnable:
 OnEnable:
-	set .MyMobs,6;
+	.MyMobs = 6;
 	// Target mobs
 	// Target mobs
 	monster "in_moc_16",62,161,"Job change target",1002,1,"Beholder#ASNTEST::OnMyMobDead";
 	monster "in_moc_16",62,161,"Job change target",1002,1,"Beholder#ASNTEST::OnMyMobDead";
 	monster "in_moc_16",85,169,"Job change target",1063,1,"Beholder#ASNTEST::OnMyMobDead";
 	monster "in_moc_16",85,169,"Job change target",1063,1,"Beholder#ASNTEST::OnMyMobDead";
@@ -1267,15 +1264,15 @@ OnResetmob:
 	end;
 	end;
 
 
 OnMyMobDead:
 OnMyMobDead:
-	set .MyMobs,.MyMobs-1;
+	.MyMobs--;
 	if (.MyMobs < 1) {
 	if (.MyMobs < 1) {
 		mapannounce "in_moc_16","You seem to be doing quite well. Keep it up!",bc_map;
 		mapannounce "in_moc_16","You seem to be doing quite well. Keep it up!",bc_map;
-		set ASSIN_Q,3;
+		ASSIN_Q = 3;
 		changequest 8003,8004;
 		changequest 8003,8004;
 		donpcevent "timestopper#1::OnEnable";
 		donpcevent "timestopper#1::OnEnable";
 		donpcevent "Keeper of the Door#ASN::OnEnable";
 		donpcevent "Keeper of the Door#ASN::OnEnable";
 		donpcevent "Beholder#ASNTEST::OnResetmob";
 		donpcevent "Beholder#ASNTEST::OnResetmob";
-		set .DisableTraps,1;
+		.DisableTraps = 1;
 		stopnpctimer;
 		stopnpctimer;
 	}
 	}
 	else {
 	else {
@@ -1285,7 +1282,7 @@ OnMyMobDead:
 
 
 OnMyMobDead2:
 OnMyMobDead2:
 	mapannounce "in_moc_16",strcharinfo(0) + "! You made a mistake! I'm bringing you back!",bc_map;
 	mapannounce "in_moc_16",strcharinfo(0) + "! You made a mistake! I'm bringing you back!",bc_map;
-	set ASSIN_Q,2;
+	ASSIN_Q = 2;
 	warp "in_moc_16",19,161;
 	warp "in_moc_16",19,161;
 	donpcevent "Beholder#ASNTEST::OnReset";
 	donpcevent "Beholder#ASNTEST::OnReset";
 	end;
 	end;
@@ -1341,7 +1338,7 @@ OnTimer184000:
 OnTimer185000:
 OnTimer185000:
 	mapannounce "in_moc_16","Time's up!",bc_map;
 	mapannounce "in_moc_16","Time's up!",bc_map;
 	mapannounce "in_moc_16","Well, good job... If you wanted to waste your time. You'll have to try again!",bc_map;
 	mapannounce "in_moc_16","Well, good job... If you wanted to waste your time. You'll have to try again!",bc_map;
-	//set ASSIN_Q,2;
+	//ASSIN_Q = 2;
 	end;
 	end;
 
 
 OnTimer186000:
 OnTimer186000:
@@ -1357,7 +1354,7 @@ in_moc_16,68,158,0	script	01_1::SinTrap	-1,0,0,{
 OnTouch_:
 OnTouch_:
 	if (getvariableofnpc(.DisableTraps,"Beholder#ASNTEST")  < 1) {
 	if (getvariableofnpc(.DisableTraps,"Beholder#ASNTEST")  < 1) {
 		mapannounce "in_moc_16",strcharinfo(0) + ", you're trapped. You will be sent back.",bc_map;
 		mapannounce "in_moc_16",strcharinfo(0) + ", you're trapped. You will be sent back.",bc_map;
-		set ASSIN_Q,2;
+		ASSIN_Q = 2;
 		warp "in_moc_16",19,161;
 		warp "in_moc_16",19,161;
 		donpcevent "Beholder#ASNTEST::OnResetmob";
 		donpcevent "Beholder#ASNTEST::OnResetmob";
 		donpcevent "Standby Room#ASNTEST::OnStart";
 		donpcevent "Standby Room#ASNTEST::OnStart";
@@ -1457,9 +1454,9 @@ OnInit:
 OnTouch_:
 OnTouch_:
 	donpcevent "Thomas#ASNTEST::OnDisable";
 	donpcevent "Thomas#ASNTEST::OnDisable";
 	if (ASSIN_Q == 3)
 	if (ASSIN_Q == 3)
-		set ASSIN_Q,3;
+		ASSIN_Q = 3;
 	else
 	else
-		set ASSIN_Q,4;
+		ASSIN_Q = 4;
 	warp "in_moc_16",87,102;
 	warp "in_moc_16",87,102;
 	savepoint "in_moc_16",16,13,1,1;
 	savepoint "in_moc_16",16,13,1,1;
 	end;
 	end;
@@ -1487,13 +1484,13 @@ OnTimer187000:
 OnDisable:
 OnDisable:
 	stopnpctimer;
 	stopnpctimer;
 	end;
 	end;
-	
+
 OnMyMobDead:
 OnMyMobDead:
 	mapannounce "in_moc_16","Hey, what the hell was that?! I told you: No killing monsters!",bc_map;
 	mapannounce "in_moc_16","Hey, what the hell was that?! I told you: No killing monsters!",bc_map;
 	mapannounce "in_moc_16","I'm bringing you back... *Sigh...*",bc_map;
 	mapannounce "in_moc_16","I'm bringing you back... *Sigh...*",bc_map;
-	set ASSIN_Q,3;
+	ASSIN_Q = 3;
 	warp "in_moc_16",87,102;
 	warp "in_moc_16",87,102;
-	killmonsterall "in_moc_16";
+	killmonster "in_moc_16","timestopper#1::OnMyMobDead";
 	end;
 	end;
 }
 }
 
 
@@ -1525,9 +1522,8 @@ OnTouch_:
 			mes "Oh hey, don't forget to save your respawn point in town.";
 			mes "Oh hey, don't forget to save your respawn point in town.";
 			close2;
 			close2;
 			mapannounce "in_moc_16",strcharinfo(0) + " got scared and quit the test...Who's Next?!",bc_map;
 			mapannounce "in_moc_16",strcharinfo(0) + " got scared and quit the test...Who's Next?!",bc_map;
-			set ASSIN_Q,0;
-			set ASSIN_Q2,0;
-			set ASSIN_Q3,0;
+			ASSIN_Q = 0;
+			ASSIN_Q2 = 0;
 			changequest 8004,8000;
 			changequest 8004,8000;
 			savepoint "in_moc_16",18,14,1,1;
 			savepoint "in_moc_16",18,14,1,1;
 			warp "in_moc_16",18,14;
 			warp "in_moc_16",18,14;
@@ -1548,7 +1544,7 @@ OnTouch_:
 	mes "[Thomas]";
 	mes "[Thomas]";
 	mes "If you run away, get a nose bleed and pass out or something like that, I'll fail ya'. Enough talk. Let's see what you got.";
 	mes "If you run away, get a nose bleed and pass out or something like that, I'll fail ya'. Enough talk. Let's see what you got.";
 	close2;
 	close2;
-	set ASSIN_Q,4;
+	ASSIN_Q = 4;
 
 
 	monster "in_moc_16",81,77,"Mummy",1041,1,"timestopper#1::OnMyMobDead";
 	monster "in_moc_16",81,77,"Mummy",1041,1,"timestopper#1::OnMyMobDead";
 	monster "in_moc_16",82,77,"Mummy",1041,1,"timestopper#1::OnMyMobDead";
 	monster "in_moc_16",82,77,"Mummy",1041,1,"timestopper#1::OnMyMobDead";
@@ -1583,7 +1579,7 @@ OnTouch_:
 
 
 OnDisable:
 OnDisable:
 	donpcevent "Standby Room#ASNTEST::OnStart";
 	donpcevent "Standby Room#ASNTEST::OnStart";
-	killmonsterall "in_moc_16";
+	killmonster "in_moc_16","timestopper#1::OnMyMobDead";
 	end;
 	end;
 }
 }
 
 
@@ -1596,7 +1592,7 @@ OnTouch_:
 	mes "Oh! Congratulations!";
 	mes "Oh! Congratulations!";
 	mes "You may now proceed to our Guildmaster's room. Good luck!!";
 	mes "You may now proceed to our Guildmaster's room. Good luck!!";
 	close2;
 	close2;
-	set ASSIN_Q,5;
+	ASSIN_Q = 5;
 	changequest 8004,8005;
 	changequest 8004,8005;
 	warp "in_moc_16",181,183;
 	warp "in_moc_16",181,183;
 	end;
 	end;
@@ -1606,7 +1602,7 @@ in_moc_16,182,169,0	script	Maze Assistant	45,1,1,{
 OnTouch_:
 OnTouch_:
 	if (ASSIN_Q == 5 || ASSIN_Q == 6) {
 	if (ASSIN_Q == 5 || ASSIN_Q == 6) {
 		warp "in_moc_16",181,183;
 		warp "in_moc_16",181,183;
-		set ASSIN_Q,ASSIN_Q+1;
+		ASSIN_Q++;
 		if (!isbegin_quest(8006))
 		if (!isbegin_quest(8006))
 			changequest 8005,8006;
 			changequest 8005,8006;
 	}
 	}
@@ -1648,7 +1644,7 @@ OnTouch_:
 	else
 	else
 		savepoint "moc_ruins",79,99,1,1;
 		savepoint "moc_ruins",79,99,1,1;
 	if (ASSIN_Q == 7 && BaseJob == Job_Thief) {
 	if (ASSIN_Q == 7 && BaseJob == Job_Thief) {
-		set ASSIN_Q,8;
+		ASSIN_Q = 8;
 		mes "[Guildmaster]";
 		mes "[Guildmaster]";
 		mes "Welcome.";
 		mes "Welcome.";
 		mes "I apologize for";
 		mes "I apologize for";
@@ -1682,7 +1678,6 @@ OnTouch_:
 			next;
 			next;
 			switch(select("Revenge...!:Money~:I want to travel.")) {
 			switch(select("Revenge...!:Money~:I want to travel.")) {
 			case 1:
 			case 1:
-				set ASSIN_Q,8;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Revenge...?";
 				mes "Revenge...?";
 				mes "Yes, I understand. All of us hold grudges against someone else eventually.";
 				mes "Yes, I understand. All of us hold grudges against someone else eventually.";
@@ -1696,7 +1691,7 @@ OnTouch_:
 				next;
 				next;
 				break;
 				break;
 			case 2:
 			case 2:
-				set ASSIN_Q,9;
+				ASSIN_Q = 9;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Financial reasons...? I won't deny that we all need money to live. But being Assassin means living for a higher purpose.";
 				mes "Financial reasons...? I won't deny that we all need money to live. But being Assassin means living for a higher purpose.";
 				next;
 				next;
@@ -1707,7 +1702,7 @@ OnTouch_:
 				next;
 				next;
 				break;
 				break;
 			case 3:
 			case 3:
-				set ASSIN_Q,10;
+				ASSIN_Q = 10;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Good idea. Traveling around the world will allow you to broaden your experiences.";
 				mes "Good idea. Traveling around the world will allow you to broaden your experiences.";
 				next;
 				next;
@@ -1736,7 +1731,7 @@ OnTouch_:
 			next;
 			next;
 			switch(select("I like the solitude.:Making money being an Assassin.:They just look interesting.")) {
 			switch(select("I like the solitude.:Making money being an Assassin.:They just look interesting.")) {
 			case 1:
 			case 1:
-				set ASSIN_Q,11;
+				ASSIN_Q = 11;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "You got the point...";
 				mes "You got the point...";
 				mes "We are lonely. We will always be alone, even amongst each other...";
 				mes "We are lonely. We will always be alone, even amongst each other...";
@@ -1751,13 +1746,13 @@ OnTouch_:
 				next;
 				next;
 				break;
 				break;
 			case 2:
 			case 2:
-				set ASSIN_Q,12;
+				ASSIN_Q = 12;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Well, I can't deny it, we do need money to make a living. But don't you think we should pursue something even more important than money?";
 				mes "Well, I can't deny it, we do need money to make a living. But don't you think we should pursue something even more important than money?";
 				next;
 				next;
 				break;
 				break;
 			case 3:
 			case 3:
-				set ASSIN_Q,13;
+				ASSIN_Q = 13;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Style and appearance is only superficial. It is sad that many people think this way...";
 				mes "Style and appearance is only superficial. It is sad that many people think this way...";
 				next;
 				next;
@@ -1782,7 +1777,7 @@ OnTouch_:
 			next;
 			next;
 			switch(select("To broaden my skills.:It's a goal of mine.:For spiritual improvement.")) {
 			switch(select("To broaden my skills.:It's a goal of mine.:For spiritual improvement.")) {
 			case 1:
 			case 1:
-				set ASSIN_Q,14;
+				ASSIN_Q = 14;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Learning skills comes naturally with the Assassin job. But don't think of skills as the best value of your training.";
 				mes "Learning skills comes naturally with the Assassin job. But don't think of skills as the best value of your training.";
 				next;
 				next;
@@ -1791,7 +1786,7 @@ OnTouch_:
 				next;
 				next;
 				break;
 				break;
 			case 2:
 			case 2:
-				set ASSIN_Q,15;
+				ASSIN_Q = 15;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "It's a goal of yours, eh? Well, I guess you've got to have goals...";
 				mes "It's a goal of yours, eh? Well, I guess you've got to have goals...";
 				next;
 				next;
@@ -1805,7 +1800,7 @@ OnTouch_:
 				next;
 				next;
 				break;
 				break;
 			case 3:
 			case 3:
-				set ASSIN_Q,16;
+				ASSIN_Q = 16;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Good idea...";
 				mes "Good idea...";
 				mes "That is a good way to improve yourself. I've seen many people who know how to be strong physically but not in their mental state.";
 				mes "That is a good way to improve yourself. I've seen many people who know how to be strong physically but not in their mental state.";
@@ -1837,14 +1832,14 @@ OnTouch_:
 			next;
 			next;
 			switch(select("I would level up fast.:I want to explore my Assassin skills.:I will go where I couldn't go as a Thief.")) {
 			switch(select("I would level up fast.:I want to explore my Assassin skills.:I will go where I couldn't go as a Thief.")) {
 			case 1:
 			case 1:
-				set .@assassin_sangdam,.@assassin_sangdam+10;
+				.@assassin_sangdam += 10;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Don't act recklessly...";
 				mes "Don't act recklessly...";
 				mes "Being an Assassin never makes you a different person. And don't rely on chance.";
 				mes "Being an Assassin never makes you a different person. And don't rely on chance.";
 				next;
 				next;
 				break;
 				break;
 			case 2:
 			case 2:
-				set .@assassin_sangdam,.@assassin_sangdam+5;
+				.@assassin_sangdam += 5;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "It is good for one to examine oneself. I can understand that you will be excited by the great change in your ability.";
 				mes "It is good for one to examine oneself. I can understand that you will be excited by the great change in your ability.";
 				next;
 				next;
@@ -1871,14 +1866,14 @@ OnTouch_:
 			next;
 			next;
 			switch(select("My friends.:My Guildsmen.:My lover.")) {
 			switch(select("My friends.:My Guildsmen.:My lover.")) {
 			case 1:
 			case 1:
-				set .@assassin_sangdam,.@assassin_sangdam+5;
+				.@assassin_sangdam += 5;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "I see...";
 				mes "I see...";
 				mes "Appreciate them for caring about you, even when you're alone.";
 				mes "Appreciate them for caring about you, even when you're alone.";
 				next;
 				next;
 				break;
 				break;
 			case 2:
 			case 2:
-				set .@assassin_sangdam,.@assassin_sangdam+5;
+				.@assassin_sangdam += 5;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Great...";
 				mes "Great...";
 				mes "Comrades for whom you would die for...";
 				mes "Comrades for whom you would die for...";
@@ -1909,7 +1904,7 @@ OnTouch_:
 			next;
 			next;
 			switch(select("Places where Assassins can level up...:Main goals as an Assassin.:Financial consulting.")) {
 			switch(select("Places where Assassins can level up...:Main goals as an Assassin.:Financial consulting.")) {
 			case 1:
 			case 1:
-				set .@assassin_sangdam,.@assassin_sangdam+5;
+				.@assassin_sangdam += 5;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "It all depends on your mind. Any place could be the best to level up according to your mind state.";
 				mes "It all depends on your mind. Any place could be the best to level up according to your mind state.";
 				next;
 				next;
@@ -1927,7 +1922,7 @@ OnTouch_:
 				next;
 				next;
 				break;
 				break;
 			case 3:
 			case 3:
-				set .@assassin_sangdam,.@assassin_sangdam+10;
+				.@assassin_sangdam += 10;
 				mes "[Guildmaster]";
 				mes "[Guildmaster]";
 				mes "Oh my lord...";
 				mes "Oh my lord...";
 				mes "Are you planning to become an Assassin in order to make money?";
 				mes "Are you planning to become an Assassin in order to make money?";
@@ -1979,7 +1974,7 @@ OnTouch_:
 		mes "supports you. How";
 		mes "supports you. How";
 		mes "about you, Huey?";
 		mes "about you, Huey?";
 		next;
 		next;
-		if (ASSIN_Q3 == 1) {
+		if (ASSIN_Q3 == 1) { // player Job Level was above 48
 			mes "[Huey]";
 			mes "[Huey]";
 			mes "A rarity.";
 			mes "A rarity.";
 			mes "You can tell";
 			mes "You can tell";
@@ -1989,7 +1984,7 @@ OnTouch_:
 			mes "I agree with";
 			mes "I agree with";
 			mes "the Anonymous One.";
 			mes "the Anonymous One.";
 		}
 		}
-		else {
+		else { // player Job Level was below 48
 			mes "[Huey]";
 			mes "[Huey]";
 			mes "Although "+ strcharinfo(0) +" looks too mellow and gentle, kind of like a pussycat, "+ strcharinfo(0) +" has the stuff.";
 			mes "Although "+ strcharinfo(0) +" looks too mellow and gentle, kind of like a pussycat, "+ strcharinfo(0) +" has the stuff.";
 			next;
 			next;
@@ -2064,7 +2059,8 @@ OnTouch_:
 			mes "I believe you stand out amongst them...";
 			mes "I believe you stand out amongst them...";
 			next;
 			next;
 		}
 		}
-		if (ASSIN_Q3 == 1 && BaseJob == Job_Thief && ASSIN_Q > 6 && ASSIN_Q < 17) {
+		switch(ASSIN_Q3) {
+		case 1: // player Job Level was above 48
 			mes "[Guildmaster]";
 			mes "[Guildmaster]";
 			mes "Well, I've said too much. Please choose a weapon as a present.";
 			mes "Well, I've said too much. Please choose a weapon as a present.";
 			next;
 			next;
@@ -2098,10 +2094,10 @@ OnTouch_:
 				mes "It used to rule over the Assassin weapon market. Please take care of my gladius.";
 				mes "It used to rule over the Assassin weapon market. Please take care of my gladius.";
 				getitem 1220,1; //Gladius_
 				getitem 1220,1; //Gladius_
 			}
 			}
-			ASSIN_Q3 = 2;
+			ASSIN_Q3 = 3;
 			next;
 			next;
-		}
-		else if (ASSIN_Q3 != 2) {
+			break;
+		case 2: // player Job Level was below 48
 			mes "[Guildmaster]";
 			mes "[Guildmaster]";
 			mes "Well, I talked too much.";
 			mes "Well, I talked too much.";
 			mes "Please take this first.";
 			mes "Please take this first.";
@@ -2122,7 +2118,7 @@ OnTouch_:
 			case 5:
 			case 5:
 				getitem 1252,1; //Katar
 				getitem 1252,1; //Katar
 			}
 			}
-			ASSIN_Q3 = 2;
+			ASSIN_Q3 = 3;
 		}
 		}
 		mes "[Guildmaster]";
 		mes "[Guildmaster]";
 		mes "Well, I am giving you a token. Please return to the Assassin expert, the Ferocious-Looking Huey, at the entrance.";
 		mes "Well, I am giving you a token. Please return to the Assassin expert, the Ferocious-Looking Huey, at the entrance.";
@@ -2165,7 +2161,7 @@ OnTouch_:
 		end;
 		end;
 	}
 	}
 	else if (ASSIN_Q > 7 && ASSIN_Q < 17) {
 	else if (ASSIN_Q > 7 && ASSIN_Q < 17) {
-		set ASSIN_Q,7;
+		ASSIN_Q = 7;
 		mes "[Guildmaster]";
 		mes "[Guildmaster]";
 		mes "What the hell? You pressed 'Cancel' during the process. Do you want to change your job or what?";
 		mes "What the hell? You pressed 'Cancel' during the process. Do you want to change your job or what?";
 		next;
 		next;

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

@@ -385,7 +385,7 @@ monk_in,99,58,1	script	Sensei Moohae#mk	60,{
 		case 3: setarray .@items[0], 905,30, 909,5, 955,10, 5; changequest 3016,3019; break;
 		case 3: setarray .@items[0], 905,30, 909,5, 955,10, 5; changequest 3016,3019; break;
 		case 4: setarray .@items[0], 943,5, 935,20, 912,5, 6; changequest 3016,3020; break;
 		case 4: setarray .@items[0], 943,5, 935,20, 912,5, 6; changequest 3016,3020; break;
 		case 5: setarray .@items[0], 7053,5, 509,10, 508,10, 7; changequest 3016,3021; break;
 		case 5: setarray .@items[0], 7053,5, 509,10, 508,10, 7; changequest 3016,3021; break;
-		case 6: setarray .@items[0], 913,10, 948,4, 7033,20, 8; changequest 3016,3022; break;
+		case 6: setarray .@items[0], 913,10, 948,5, 7033,20, 8; changequest 3016,3022; break;
 		case 7: setarray .@items[0], 1027,5, 1025,20, 1042,10, 9; changequest 3016,3023; break;
 		case 7: setarray .@items[0], 1027,5, 1025,20, 1042,10, 9; changequest 3016,3023; break;
 		}
 		}
 		mes "[Sensei Moohae]";
 		mes "[Sensei Moohae]";

+ 70 - 0
npc/merchants/inn.txt

@@ -244,6 +244,76 @@ bra_in01,27,24,3	script	Hotel Keeper#bra1	478,{
 	}
 	}
 }
 }
 
 
+//======================== Einbroch =================================
+ein_in01,206,224,3	script	Hotel Employee#ein	855,{
+	mes "[Hotel Employee]";
+	mes "Good day, welcome to the";
+	mes "Einbroch Hotel. The staff is";
+	mes "always striving to accommodate";
+	mes "our guests with the highest";
+	mes "standards in cleanliness,";
+	mes "service and convenience~";
+	next;
+	if (kain_ticket == 5) {
+		mes "[Hotel Employee]";
+		mes "Are you looking";
+		mes "for Mr. Defru Ark?";
+		mes "Oh right, he did mention";
+		mes "waiting for some package";
+		mes "from the Airport. Now let";
+		mes "me pull up that information...";
+		next;
+		mes "[Hotel Employee]";
+		mes "Ah, here we are.";
+		mes "Mr. Defru Ark is";
+		mes "staying in Room 201.";
+		next;
+	}
+	else {
+		switch(select("Save:Take Rest - 5,000 zeny:Cancel")) {
+		case 1:
+			mes "[Hotel Employee]";
+			mes "Your Respawn Point";
+			mes "has been saved here";
+			mes "in the Einbroch Hotel.";
+			mes "Thank you, and please";
+			mes "come again.";
+			close2;
+			savepoint "ein_in01",200,224,1,1;
+			end;
+		case 2:
+			if (Zeny > 4999) {
+				mes "[Hotel Employee]";
+				mes "Thank you.";
+				mes "Please enjoy";
+				mes "your rest~";
+				close2;
+				set Zeny, Zeny-5000;
+				percentheal 100,100;
+				warp "ein_in01",272,167;
+				end;
+			}
+			else {
+				mes "[Hotel Employee]";
+				mes "I'm sorry, but the";
+				mes "accommodation fee is";
+				mes "5,000 zeny. Next time,";
+				mes "please make sure that you";
+				mes "bring enough zeny, okay?";
+				close;
+			}
+		case 3:
+			mes "[Hotel Employee]";
+			mes "Thank you and";
+			mes "please come again~";
+			close;
+		}
+	}
+	mes "[Hotel Employee]";
+	mes "Have a good day.";
+	close;
+}
+
 //======================= Inn Function ==============================
 //======================= Inn Function ==============================
 function	script	F_InnMaid	{
 function	script	F_InnMaid	{
 	.@npc_name$ = getarg(0);
 	.@npc_name$ = getarg(0);

+ 1 - 1
npc/quests/gunslinger_quests.txt

@@ -1018,7 +1018,7 @@ que_ng,149,178,4	script	Lab Director	744,{
 		}
 		}
 	}
 	}
 	else if(gun_na == 10){
 	else if(gun_na == 10){
-		if (countitem(999) > 69 && countitem(985) > 4 && countitem(984) > 2 && countitem(1003) > 69 && countitem(7317) > 49 && Zeny > 50000){
+		if (countitem(999) > 69 && countitem(985) > 4 && countitem(984) > 2 && countitem(1003) > 69 && countitem(7317) > 49 && Zeny >= 50000){
 			delitem 999,70;
 			delitem 999,70;
 			delitem 985,5;
 			delitem 985,5;
 			delitem 984,3;
 			delitem 984,3;

+ 8 - 2
npc/quests/quests_amatsu.txt

@@ -1926,18 +1926,24 @@ ama_in01,22,111,0	script	Grandma#ama2	761,{
 		mes "it won't harm me!! Yelp!^000000";
 		mes "it won't harm me!! Yelp!^000000";
 		next;
 		next;
 		select("Taaaah!!");
 		select("Taaaah!!");
-		if ((BaseJob == Job_Priest || BaseJob != Job_Acolyte && BaseJob != Job_Monk) || (countitem(523) < 1 || countitem(948) < 1 || countitem(1029) < 1)) {
+		if (BaseJob == Job_Priest) {
 			if (rand(1,4) == 1)
 			if (rand(1,4) == 1)
 				set .@fox_kill,0;
 				set .@fox_kill,0;
 			else
 			else
 				set .@fox_kill,1;
 				set .@fox_kill,1;
 		}
 		}
-		else {
+		else if (BaseJob == Job_Acolyte || BaseJob == Job_Monk || countitem(523) > 0 || countitem(948) > 0 || countitem(1029) > 0) {
 			if (rand(1,2) == 1)
 			if (rand(1,2) == 1)
 				set .@fox_kill,0;
 				set .@fox_kill,0;
 			else
 			else
 				set .@fox_kill,1;
 				set .@fox_kill,1;
 		}
 		}
+		else {
+			if (rand(1,4) == 1)
+				set .@fox_kill,1;
+			else
+				set .@fox_kill,0;
+		}
 		if (.@fox_kill == 1) {
 		if (.@fox_kill == 1) {
 			mes "[....]";
 			mes "[....]";
 			mes "^FF6060Yelp! Yelp! Yelp! Human!";
 			mes "^FF6060Yelp! Yelp! Yelp! Human!";

+ 2 - 2
npc/quests/quests_yuno.txt

@@ -433,7 +433,7 @@ yuno_in01,103,157,3	script	Bain#juno	98,{
 		mes "- after you lose some weight. -";
 		mes "- after you lose some weight. -";
 		close;
 		close;
 	}
 	}
-	if (countitem(974) > 0 && countitem(612) > 4 && countitem(1003) > 4 && countitem(7068) > 4 && countitem(7043) > 4 && countitem(757) > 2 && countitem(756) > 2 && Zeny > 2000) {
+	if (countitem(974) > 0 && countitem(612) > 4 && countitem(1003) > 4 && countitem(7068) > 4 && countitem(7043) > 4 && countitem(757) > 2 && countitem(756) > 2 && Zeny >= 2000) {
 		if (ALCH_Q == 23) set ALCH_Q,24;
 		if (ALCH_Q == 23) set ALCH_Q,24;
 		set .@kyulkwa,rand(1,10);
 		set .@kyulkwa,rand(1,10);
 		mes "[Bain]";
 		mes "[Bain]";
@@ -565,7 +565,7 @@ yuno_in01,100,153,7	script	Bajin	47,0,0,{
 		mes "- after you lose some weight. -";
 		mes "- after you lose some weight. -";
 		close;
 		close;
 	}
 	}
-	if (countitem(974) > 0 && countitem(612) > 4 && countitem(1003) > 4 && countitem(7068) > 4 && countitem(7043) > 4 && countitem(757) > 2 && countitem(756) > 2 && Zeny > 2000) {
+	if (countitem(974) > 0 && countitem(612) > 4 && countitem(1003) > 4 && countitem(7068) > 4 && countitem(7043) > 4 && countitem(757) > 2 && countitem(756) > 2 && Zeny >= 2000) {
 		if (ALCH_Q == 23) set ALCH_Q,24;
 		if (ALCH_Q == 23) set ALCH_Q,24;
 		set .@kyulkwa,rand(1,10);
 		set .@kyulkwa,rand(1,10);
 		mes "[Bajin]";
 		mes "[Bajin]";

+ 1 - 1
npc/re/cities/dewata.txt

@@ -66,7 +66,7 @@ dewata,229,49,6	script	Alberta Sailor#dewata	536,{
 		mes "your trip to ^8B4513Dewata^000000 Island.";
 		mes "your trip to ^8B4513Dewata^000000 Island.";
 		mes "Please come again!";
 		mes "Please come again!";
 		close2;
 		close2;
-		warp "alberta",210,198;
+		warp "alberta",192,215;
 		end;
 		end;
 	case 2:
 	case 2:
 		mes "[Alberta Sailor]";
 		mes "[Alberta Sailor]";

+ 1 - 1
npc/re/cities/malaya.txt

@@ -81,7 +81,7 @@ malaya,276,55,4	script	Optamara Crew#malaya	100,{
 		mes "[Optamara Crew]";
 		mes "[Optamara Crew]";
 		mes "Great! Let's leave now for Alberta!!";
 		mes "Great! Let's leave now for Alberta!!";
 		close2;
 		close2;
-		warp "alberta",239,68;
+		warp "alberta",192,217;
 		end;
 		end;
 	case 2:
 	case 2:
 		mes "[Optamara Crew]";
 		mes "[Optamara Crew]";

+ 2 - 2
npc/re/instances/CorOperation.txt

@@ -444,7 +444,7 @@ OnTimer17000:
 		setd("'rf_" + strnpcinfo(2),1);
 		setd("'rf_" + strnpcinfo(2),1);
 		specialeffect2 EF_ENHANCE;
 		specialeffect2 EF_ENHANCE;
 		specialeffect2 EF_LIGHTSPHERE_STAR;
 		specialeffect2 EF_LIGHTSPHERE_STAR;
-		sc_start SC_GLASTHEIM_STATE,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_STATE,30000,20,10000,SCSTART_NOTICKDEF;
 		npctalk "Power, Overwhelming power!";
 		npctalk "Power, Overwhelming power!";
 		unittalk getcharid(3),strcharinfo(0) + " : My whole body is full of power!",bc_self;
 		unittalk getcharid(3),strcharinfo(0) + " : My whole body is full of power!",bc_self;
 		sleep 1500;
 		sleep 1500;
@@ -890,7 +890,7 @@ OnTouch:
 		setd("'rf_" + strnpcinfo(2),1);
 		setd("'rf_" + strnpcinfo(2),1);
 		specialeffect2 EF_ENHANCE;
 		specialeffect2 EF_ENHANCE;
 		specialeffect2 EF_LIGHTSPHERE_STAR;
 		specialeffect2 EF_LIGHTSPHERE_STAR;
-		sc_start SC_GLASTHEIM_STATE,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_STATE,30000,20,10000,SCSTART_NOTICKDEF;
 		npctalk "Power, Overwhelming power!";
 		npctalk "Power, Overwhelming power!";
 		unittalk getcharid(3),strcharinfo(0) + " : My whole body is full of power!",bc_self;
 		unittalk getcharid(3),strcharinfo(0) + " : My whole body is full of power!",bc_self;
 		sleep 1500;
 		sleep 1500;

+ 6 - 6
npc/re/instances/OldGlastHeim.txt

@@ -1979,16 +1979,16 @@ OnTouch:
 	specialeffect2 EF_ENHANCE;
 	specialeffect2 EF_ENHANCE;
 	.@num = atoi( replacestr(strnpcinfo(2), "Buff", "") );
 	.@num = atoi( replacestr(strnpcinfo(2), "Buff", "") );
 	if (.@num == 1)
 	if (.@num == 1)
-		sc_start SC_GLASTHEIM_HIDDEN,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_HIDDEN,30000,90,10000,SCSTART_NOTICKDEF;
 	else if (.@num == 2)
 	else if (.@num == 2)
-		sc_start SC_GLASTHEIM_STATE,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_STATE,30000,20,10000,SCSTART_NOTICKDEF;
 	else if (.@num == 3) {
 	else if (.@num == 3) {
-		sc_start SC_GLASTHEIM_HEAL,30000,1,10000,SCSTART_NOTICKDEF;
-		sc_start SC_GLASTHEIM_HPSP,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start2 SC_GLASTHEIM_HEAL,30000,100,50,10000,SCSTART_NOTICKDEF;
+		sc_start2 SC_GLASTHEIM_HPSP,30000,10000,1000,10000,SCSTART_NOTICKDEF;
 	}
 	}
 	else {
 	else {
-		sc_start SC_GLASTHEIM_DEF,30000,1,10000,SCSTART_NOTICKDEF;
-		sc_start SC_GLASTHEIM_ITEMDEF,30000,1,10000,SCSTART_NOTICKDEF;
+		sc_start SC_GLASTHEIM_DEF,30000,100,10000,SCSTART_NOTICKDEF;
+		sc_start2 SC_GLASTHEIM_ITEMDEF,30000,200,50,10000,SCSTART_NOTICKDEF;
 	}
 	}
 	end;
 	end;
 OnEvent:
 OnEvent:

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

@@ -457,3 +457,13 @@ que_thr	mapflag	noteleport
 //============================================================
 //============================================================
 itemmall	mapflag	noteleport
 itemmall	mapflag	noteleport
 itemmall	mapflag	monster_noteleport
 itemmall	mapflag	monster_noteleport
+
+//============================================================
+// Forgotten Area 1
+//============================================================
+for_dun01	mapflag	noteleport
+
+//============================================================
+// Forgotten Area 2
+//============================================================
+for_dun02	mapflag	noteleport

+ 8 - 6
npc/re/merchants/barters.yml

@@ -47,18 +47,20 @@ Header:
 
 
 Footer:
 Footer:
   Imports:
   Imports:
+  - Path: npc/re/merchants/barters/cashmall.yml
+  - Path: npc/re/merchants/barters/enchan_illusion_dungeons.yml
+  - Path: npc/re/merchants/barters/enchantgrade.yml
   - Path: npc/re/merchants/barters/Extended_Ammunition.yml
   - Path: npc/re/merchants/barters/Extended_Ammunition.yml
+  - Path: npc/re/merchants/barters/garden_of_time.yml
   - Path: npc/re/merchants/barters/Gemstone_Bagger.yml
   - Path: npc/re/merchants/barters/Gemstone_Bagger.yml
+  - Path: npc/re/merchants/barters/mysterious_cookie_shop.yml
   - Path: npc/re/merchants/barters/quests_16_1.yml
   - Path: npc/re/merchants/barters/quests_16_1.yml
   - Path: npc/re/merchants/barters/quests_16_2.yml
   - Path: npc/re/merchants/barters/quests_16_2.yml
   - Path: npc/re/merchants/barters/quests_17_1.yml
   - Path: npc/re/merchants/barters/quests_17_1.yml
   - Path: npc/re/merchants/barters/quests_17_2.yml
   - Path: npc/re/merchants/barters/quests_17_2.yml
+  - Path: npc/re/merchants/barters/quests_18.yml
+  - Path: npc/re/merchants/barters/quests_exp_175.yml
   - Path: npc/re/merchants/barters/refine.yml
   - Path: npc/re/merchants/barters/refine.yml
-  - Path: npc/re/merchants/barters/enchantgrade.yml
-  - Path: npc/re/merchants/barters/cashmall.yml
   - Path: npc/re/merchants/barters/rgsr_in.yml
   - Path: npc/re/merchants/barters/rgsr_in.yml
-  - Path: npc/re/merchants/barters/enchan_illusion_dungeons.yml
-  - Path: npc/re/merchants/barters/quests_exp_175.yml
-  - Path: npc/re/merchants/barters/mysterious_cookie_shop.yml
-  - Path: npc/re/merchants/barters/quests_18.yml
   - Path: npc/re/merchants/barters/quests_19.yml
   - Path: npc/re/merchants/barters/quests_19.yml
+

+ 355 - 0
npc/re/merchants/barters/garden_of_time.yml

@@ -0,0 +1,355 @@
+# This file is a part of rAthena.
+#   Copyright(C) 2024 rAthena Development Team
+#   https://rathena.org - https://github.com/rathena
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+###########################################################################
+# Barter Database
+###########################################################################
+#
+# Barter Settings
+#
+###########################################################################
+#  - Name               NPC name.
+#    Map                Map name. (Default: not on a map)
+#    X                  Map x coordinate. (Default: 0)
+#    Y                  Map y coordinate. (Default: 0)
+#    Direction          Direction the NPC is looking. (Default: North)
+#    Sprite             Sprite name of the NPC. (Default: FakeNpc)
+#    Items:             List of sold items.
+#      - Index          Index of the item inside the shop. (0-...)
+#                       Maximum index depends on client.
+#        Item           Aegis name of the item.
+#        Stock          Amount of item in stock. 0 means unlimited. (Default: 0)
+#        Zeny           Cost of them item in Zeny. (Default: 0)
+#        RequiredItems: List of required items (Optional)
+#          - Index      Index of the required item. (0-4)
+#            Item       Aegis name of required item.
+#            Amount     Amount of required item. (Default: 1)
+#            Refine     Refine level of required item. (Default: 0)
+###########################################################################
+
+Header:
+  Type: BARTER_DB
+  Version: 1
+
+Body:
+  - Name: barter_t_garden_1
+    Items:
+      - Index: 0
+        Item: Energy_Of_Flame
+        Zeny: 10000
+        RequiredItems:
+          - Index: 0
+            Item: Contored_Agn_Wrath
+            Amount: 10
+          - Index: 1
+            Item: Coagulated_Spell
+            Amount: 5
+          - Index: 2
+            Item: Polluted_Spell
+      - Index: 1
+        Item: Energy_Of_Water
+        Zeny: 10000
+        RequiredItems:
+          - Index: 0
+            Item: Contored_Aqu_Wrath
+            Amount: 10
+          - Index: 1
+            Item: Coagulated_Spell
+            Amount: 5
+          - Index: 2
+            Item: Polluted_Spell
+      - Index: 2
+        Item: Energy_Of_Wind
+        Zeny: 10000
+        RequiredItems:
+          - Index: 0
+            Item: Contored_Ven_Wrath
+            Amount: 10
+          - Index: 1
+            Item: Coagulated_Spell
+            Amount: 5
+          - Index: 2
+            Item: Polluted_Spell
+      - Index: 3
+        Item: Energy_Of_Ground
+        Zeny: 10000
+        RequiredItems:
+          - Index: 0
+            Item: Contored_Ter_Wrath
+            Amount: 10
+          - Index: 1
+            Item: Coagulated_Spell
+            Amount: 5
+          - Index: 2
+            Item: Polluted_Spell
+      - Index: 4
+        Item: Grace_Of_Spirit
+        Zeny: 30000
+        RequiredItems:
+          - Index: 0
+            Item: Contored_Spi_Wrath
+            Amount: 10
+          - Index: 1
+            Item: Spell_Of_Time
+            Amount: 3
+          - Index: 2
+            Item: Jewel_Of_Time_Ore
+            Amount: 3
+          - Index: 3
+            Item: GH_Cursed_Crystal
+            Amount: 3
+      - Index: 5
+        Item: Energy_Of_Elemental
+        RequiredItems:
+          - Index: 0
+            Item: Contored_Agn_Wrath
+            Amount: 10
+          - Index: 1
+            Item: Contored_Aqu_Wrath
+            Amount: 10
+          - Index: 2
+            Item: Contored_Ven_Wrath
+            Amount: 10
+          - Index: 3
+            Item: Contored_Ter_Wrath
+            Amount: 10
+          - Index: 4
+            Item: Polluted_Spell
+            Amount: 5
+  - Name: barter_t_garden_2
+    Items:
+      - Index: 0
+        Item: Energy_Of_Spring
+        Zeny: 50000
+        RequiredItems:
+          - Index: 0
+            Item: Energy_Of_Summer
+          - Index: 1
+            Item: Energy_Of_Autumn
+          - Index: 2
+            Item: Energy_Of_Winter
+          - Index: 3
+            Item: Temporal_Crystal
+            Amount: 50
+      - Index: 1
+        Item: Energy_Of_Summer
+        Zeny: 50000
+        RequiredItems:
+          - Index: 0
+            Item: Energy_Of_Spring
+          - Index: 1
+            Item: Energy_Of_Autumn
+          - Index: 2
+            Item: Energy_Of_Winter
+          - Index: 3
+            Item: Temporal_Crystal
+            Amount: 50
+      - Index: 2
+        Item: Energy_Of_Autumn
+        Zeny: 50000
+        RequiredItems:
+          - Index: 0
+            Item: Energy_Of_Spring
+          - Index: 1
+            Item: Energy_Of_Summer
+          - Index: 2
+            Item: Energy_Of_Winter
+          - Index: 3
+            Item: Temporal_Crystal
+            Amount: 50
+      - Index: 3
+        Item: Energy_Of_Winter
+        Zeny: 50000
+        RequiredItems:
+          - Index: 0
+            Item: Energy_Of_Spring
+          - Index: 1
+            Item: Energy_Of_Summer
+          - Index: 2
+            Item: Energy_Of_Autumn
+          - Index: 3
+            Item: Temporal_Crystal
+            Amount: 50
+  - Name: barter_t_garden_3
+    Items:
+      - Index: 0
+        Item: Unsealing_Scroll
+        Zeny: 5000
+        RequiredItems:
+          - Index: 0
+            Item: MD_Hol_Fragment
+          - Index: 1
+            Item: Etel_Dust
+            Amount: 10
+      - Index: 1
+        Item: Warm_Shield_Scroll
+        Zeny: 5000
+        RequiredItems:
+          - Index: 0
+            Item: MD_Hol_Fragment
+          - Index: 1
+            Item: Etel_Dust
+            Amount: 10
+      - Index: 2
+        Item: MD_Hol_Key
+        Zeny: 300000
+        RequiredItems:
+          - Index: 0
+            Item: MD_Hol_Fragment
+            Amount: 100
+          - Index: 1
+            Item: Etel_Dust
+            Amount: 150
+      - Index: 3
+        Item: Forgotten_Crystal_1
+        Zeny: 1500
+      - Index: 4
+        Item: Forgotten_Crystal_2
+        Zeny: 1500
+  - Name: barter_t_garden_4
+    Items:
+      - Index: 0
+        Item: Signet_Of_Spring
+        Zeny: 5000000
+        RequiredItems:
+          - Index: 0
+            Item: Spring_Material_1
+            Amount: 3
+          - Index: 1
+            Item: Spring_Material_2
+            Amount: 3
+          - Index: 2
+            Item: Spring_Material_3
+            Amount: 3
+          - Index: 3
+            Item: Fruit_Of_Birth
+            Amount: 25
+          - Index: 4
+            Item: Fruit_Of_Extinction
+            Amount: 25
+      - Index: 1
+        Item: Signet_Of_Summer
+        Zeny: 5000000
+        RequiredItems:
+          - Index: 0
+            Item: Summer_Material_1
+            Amount: 3
+          - Index: 1
+            Item: Summer_Material_2
+            Amount: 3
+          - Index: 2
+            Item: Summer_Material_3
+            Amount: 3
+          - Index: 3
+            Item: Fruit_Of_Birth
+            Amount: 25
+          - Index: 4
+            Item: Fruit_Of_Extinction
+            Amount: 25
+      - Index: 2
+        Item: Signet_Of_Autumn
+        Zeny: 5000000
+        RequiredItems:
+          - Index: 0
+            Item: Autumn_Material_1
+            Amount: 3
+          - Index: 1
+            Item: Autumn_Material_2
+            Amount: 3
+          - Index: 2
+            Item: Autumn_Material_3
+            Amount: 3
+          - Index: 3
+            Item: Fruit_Of_Birth
+            Amount: 25
+          - Index: 4
+            Item: Fruit_Of_Extinction
+            Amount: 25
+      - Index: 3
+        Item: Signet_Of_Winter
+        Zeny: 5000000
+        RequiredItems:
+          - Index: 0
+            Item: Winter_Material_1
+            Amount: 3
+          - Index: 1
+            Item: Winter_Material_2
+            Amount: 3
+          - Index: 2
+            Item: Winter_Material_3
+            Amount: 3
+          - Index: 3
+            Item: Fruit_Of_Birth
+            Amount: 25
+          - Index: 4
+            Item: Fruit_Of_Extinction
+            Amount: 25
+  - Name: barter_t_garden_5
+    Items:
+      - Index: 0
+        Item: Season_Hood_Spring
+        Zeny: 5000000
+        RequiredItems:
+          - Index: 0
+            Item: Spring_Material_1
+            Amount: 3
+          - Index: 1
+            Item: Spring_Material_2
+            Amount: 3
+          - Index: 2
+            Item: Spring_Material_3
+            Amount: 3
+      - Index: 1
+        Item: Season_Hood_Summer
+        Zeny: 5000000
+        RequiredItems:
+          - Index: 0
+            Item: Summer_Material_1
+            Amount: 3
+          - Index: 1
+            Item: Summer_Material_2
+            Amount: 3
+          - Index: 2
+            Item: Summer_Material_3
+            Amount: 3
+      - Index: 2
+        Item: Season_Hood_Autumn
+        Zeny: 5000000
+        RequiredItems:
+          - Index: 0
+            Item: Autumn_Material_1
+            Amount: 3
+          - Index: 1
+            Item: Autumn_Material_2
+            Amount: 3
+          - Index: 2
+            Item: Autumn_Material_3
+            Amount: 3
+      - Index: 3
+        Item: Season_Hood_Winter
+        Zeny: 5000000
+        RequiredItems:
+          - Index: 0
+            Item: Winter_Material_1
+            Amount: 3
+          - Index: 1
+            Item: Winter_Material_2
+            Amount: 3
+          - Index: 2
+            Item: Winter_Material_3
+            Amount: 3
+

+ 3 - 3
npc/re/merchants/barters/quests_18.yml

@@ -91,19 +91,19 @@ Body:
             Item: Ep18_Amethyst_Fragment
             Item: Ep18_Amethyst_Fragment
             Amount: 350
             Amount: 350
       - Index: 7
       - Index: 7
-        Item: Gray_W_Robe
+        Item: Gray_W_Ring
         RequiredItems:
         RequiredItems:
           - Index: 0
           - Index: 0
             Item: Ep18_Amethyst_Fragment
             Item: Ep18_Amethyst_Fragment
             Amount: 350
             Amount: 350
       - Index: 8
       - Index: 8
-        Item: Gray_W_Ring
+        Item: Gray_W_Earing
         RequiredItems:
         RequiredItems:
           - Index: 0
           - Index: 0
             Item: Ep18_Amethyst_Fragment
             Item: Ep18_Amethyst_Fragment
             Amount: 350
             Amount: 350
       - Index: 9
       - Index: 9
-        Item: Gray_W_Earing
+        Item: Gray_W_Necklace
         RequiredItems:
         RequiredItems:
           - Index: 0
           - Index: 0
             Item: Ep18_Amethyst_Fragment
             Item: Ep18_Amethyst_Fragment

+ 117 - 0
npc/re/mobs/dungeons/for_dun.txt

@@ -0,0 +1,117 @@
+//===== rAthena Script =======================================
+//= Hall of Life
+//===== Description: =========================================
+//= Hall of Life Monster Spawn Script.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Atemo]
+//============================================================
+
+for_dun01	monster	--ja--	22192,12	// SPIRIT_G_LAND_S
+for_dun01	monster	--ja--	22193,16	// SPIRIT_G_LAND_M
+for_dun01	monster	--ja--	22194,18	// SPIRIT_G_LAND_L
+for_dun01	monster	--ja--	22196,12	// SPIRIT_B_FLAME_S
+for_dun01	monster	--ja--	22197,16	// SPIRIT_B_FLAME_M
+for_dun01	monster	--ja--	22198,18	// SPIRIT_B_FLAME_L
+for_dun01	monster	--ja--	22200,12	// SPIRIT_S_WIND_S
+for_dun01	monster	--ja--	22201,16	// SPIRIT_S_WIND_M
+for_dun01	monster	--ja--	22202,18	// SPIRIT_S_WIND_L
+for_dun01	monster	--ja--	22204,12	// SPIRIT_I_WATER_S
+for_dun01	monster	--ja--	22205,16	// SPIRIT_I_WATER_M
+for_dun01	monster	--ja--	22206,18	// SPIRIT_I_WATER_L
+for_dun01	monster	--ja--	22195,4	// SPIRIT_G_LAND_SL
+for_dun01	monster	--ja--	22199,4	// SPIRIT_B_FLAME_SL
+for_dun01	monster	--ja--	22203,4	// SPIRIT_S_WIND_SL
+for_dun01	monster	--ja--	22207,4	// SPIRIT_I_WATER_SL
+
+for_dun02	monster	--ja--	22216,24	// SPIRIT_H_WATER_S
+for_dun02	monster	--ja--	22217,28	// SPIRIT_H_WATER_M
+for_dun02	monster	--ja--	22218,32	// SPIRIT_H_WATER_L
+for_dun02	monster	--ja--	22220,24	// SPIRIT_D_WIND_S
+for_dun02	monster	--ja--	22221,28	// SPIRIT_D_WIND_M
+for_dun02	monster	--ja--	22222,32	// SPIRIT_D_WIND_L
+for_dun02	monster	--ja--	22224,24	// SPIRIT_R_FLAME_S
+for_dun02	monster	--ja--	22225,28	// SPIRIT_R_FLAME_M
+for_dun02	monster	--ja--	22226,32	// SPIRIT_R_FLAME_L
+for_dun02	monster	--ja--	22228,24	// SPIRIT_F_LAND_S
+for_dun02	monster	--ja--	22229,28	// SPIRIT_F_LAND_M
+for_dun02	monster	--ja--	22230,32	// SPIRIT_F_LAND_L
+for_dun02	monster	--ja--	22219,7	// SPIRIT_H_WATER_SL
+for_dun02	monster	--ja--	22223,7	// SPIRIT_D_WIND_SL
+for_dun02	monster	--ja--	22227,7	// SPIRIT_R_FLAME_SL
+for_dun02	monster	--ja--	22231,7	// SPIRIT_F_LAND_SL
+
+t_garden,1,1,0	script	control_t_garden	HIDDEN_WARP_NPC,{
+	end;
+OnInit:
+OnMinute59:
+	.zone = !.zone;
+
+	if (.zone == 0) {	// Zone 2 (for_dun01) -> Zone 1 (for_dun02)
+		mapannounce "t_garden", "In approximately 1 minute, the dimensional contamination in Area 2 will subside and a large-scale dimensional contamination will occur in Area 1.", bc_map, 0xCCFF00;
+		mapannounce "for_dun02", "Large-scale dimensional contamination event will occur in this dungeon in approximately 1 minute.", bc_map, 0xFFDD;
+		mapannounce "for_dun01", "The dimensional contamination phenomenon in this dungeon is expected to subside in about 1 minute.", bc_map, 0xFFDD;
+	}
+	else {	// Zone 1 (for_dun02) -> Zone 2 (for_dun01)
+		mapannounce "t_garden", "In approximately 1 minute, the dimensional contamination in Area 1 will subside and a large-scale dimensional contamination will occur in Area 2.", bc_map, 0xCCFF00;
+		mapannounce "for_dun02", "The dimensional contamination phenomenon in this dungeon is expected to subside in about 1 minute.", bc_map, 0xFFDD;
+		mapannounce "for_dun01", "Large-scale dimensional contamination event will occur in this dungeon in approximately 1 minute.", bc_map, 0xFFDD;
+	}
+	initnpctimer;
+	end;
+
+OnTimer60000:
+	stopnpctimer;
+
+	for ( .@i = 22208; .@i <= 22215; ++.@i )
+		killmonster "for_dun01", "control_t_garden::OnMob" + .@i;
+	for ( .@i = 22232; .@i <= 22239; ++.@i )
+		killmonster "for_dun02", "control_t_garden::OnMob" + .@i;
+
+	if (.zone == 0) {	// Zone 2 (for_dun01) -> Zone 1 (for_dun02)
+		mapannounce "t_garden", "Forgotten Memories : The dimensional contamination phenomenon in Area 2 has calmed down, and a large-scale dimensional contamination phenomenon has occurred in Area 1.", bc_map, 0xFFDD;
+		mapannounce "for_dun02", "Large-scale dimensional contamination is occurring in this dungeon...", bc_map, 0xFFDD;
+		mapannounce "for_dun01", "All dimensional contamination that occurred in this dungeon has been calmed down.", bc_map, 0xFFDD;
+
+		callsub( S_Spawn, "for_dun02", 22232, 22239, 12 );
+	}
+	else {	// Zone 1 (for_dun02) -> Zone 2 (for_dun01)
+		mapannounce "t_garden", "Forgotten Memories : The dimensional contamination phenomenon in Area 1 has calmed down, and a large-scale dimensional contamination phenomenon has occurred in Area 2.", bc_map, 0xFFDD;
+		mapannounce "for_dun02", "All dimensional contamination that occurred in this dungeon has been calmed down.", bc_map, 0xFFDD;
+		mapannounce "for_dun01", "Large-scale dimensional contamination is occurring in this dungeon...", bc_map, 0xFFDD;
+		
+		callsub( S_Spawn, "for_dun01", 22208, 22215, 6 );
+	}
+	end;
+
+S_Spawn:
+	.@map$ = getarg(0);
+	.@id_min = getarg(1);
+	.@id_max = getarg(2);
+	.@amount = getarg(3);
+
+	for ( .@i = .@id_min; .@i <= .@id_max; ++.@i )
+		monster .@map$,0,0,"--ja--",.@i,.@amount, "control_t_garden::OnMob" + .@i;
+	return;
+
+OnMob22210: callsub( S_Mob, "for_dun01", 22210 );
+OnMob22209: callsub( S_Mob, "for_dun01", 22209 );
+OnMob22208: callsub( S_Mob, "for_dun01", 22208 );
+OnMob22211: callsub( S_Mob, "for_dun01", 22211 );
+OnMob22214: callsub( S_Mob, "for_dun01", 22214 );
+OnMob22213: callsub( S_Mob, "for_dun01", 22213 );
+OnMob22212: callsub( S_Mob, "for_dun01", 22212 );
+OnMob22215: callsub( S_Mob, "for_dun01", 22215 );
+
+OnMob22234: callsub( S_Mob, "for_dun02", 22234 );
+OnMob22233: callsub( S_Mob, "for_dun02", 22233 );
+OnMob22232: callsub( S_Mob, "for_dun02", 22232 );
+OnMob22235: callsub( S_Mob, "for_dun02", 22235 );
+OnMob22238: callsub( S_Mob, "for_dun02", 22238 );
+OnMob22237: callsub( S_Mob, "for_dun02", 22237 );
+OnMob22236: callsub( S_Mob, "for_dun02", 22236 );
+OnMob22239: callsub( S_Mob, "for_dun02", 22239 );
+
+S_Mob:
+	monster getarg(0),0,0,"--ja--",getarg(1),1, "control_t_garden::OnMob" + getarg(1);
+	end;
+}

+ 2 - 2
npc/re/mobs/dungeons/slabw01.txt

@@ -5,9 +5,9 @@
 //===== Additional Comments: =================================
 //===== Additional Comments: =================================
 //= 1.0 First version.
 //= 1.0 First version.
 //      Venomous Chimera spawn timer is custom. [Capuche]
 //      Venomous Chimera spawn timer is custom. [Capuche]
+//= 1.1 Updated Venomous Chimera spawn timer. [Capuche]
 //============================================================
 //============================================================
 
 
 slabw01	monster	Human Chimera	3631,45
 slabw01	monster	Human Chimera	3631,45
 slabw01	monster	Material Chimera	3632,45
 slabw01	monster	Material Chimera	3632,45
-// unknown timer
-slabw01	monster	Venomous Chimera	3633,1,18000000,600000,0
+slabw01	boss_monster	Venomous Chimera	3633,1,3600000,600000,0

+ 1595 - 0
npc/re/quests/garden_of_time.txt

@@ -0,0 +1,1595 @@
+//===== rAthena Script =======================================
+//= Hall of Life
+//===== Description: =========================================
+//= [Walkthrough Conversion]
+//= Quest NPCs - Hall of Life
+//===== Changelog: ===========================================
+//= 1.0 Initial release [Atemo]
+//============================================================
+
+function	script	F_mesnavi	{
+	return "<NAVI>[" + getarg(0) + "]<INFO>" + getarg(1) + "," + getarg(2) + "," + getarg(3) + ",0,101,0</INFO></NAVI>";
+}
+
+// Warps
+xmas_fild01,158,246,2	script	Dimensional barrier#got1	GATE_SKYBLUE,2,2,{
+	// Fallthrough
+OnTouch:
+	warp "t_garden",116,47;
+	end;
+
+OnInit:
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "BaseLevel >= 250 && isbegin_quest(12592) == 0" );
+	end;
+}
+
+t_garden,111,36,2	script	Dimensional Barrier#got2	GATE_SKYBLUE,2,2,{
+	// Fallthrough
+OnTouch:
+	warp "xmas_fild01",150,240;
+	end;
+}
+
+// t_garden,118,66,0	script	#wp01	HIDDEN_WARP_NPC,3,1,{	// (NPC name is not unique)
+t_garden,118,66,0	script	#wp01_t_garden	HIDDEN_WARP_NPC,3,1,{
+	end;
+OnTouch:
+	specialeffect2 EF_FLOWERCAST;
+	setpcblock PCBLOCK_NPC, true;
+	sleep2 500;
+	setpcblock PCBLOCK_NPC, false;
+	if (BaseLevel < 250)
+		warp "xmas_fild01",150,240;
+	else
+		warp "t_garden",118,79;
+	end;
+}
+
+// t_garden,118,72,0	script	#wp02	HIDDEN_WARP_NPC,3,1,{	// (NPC name is not unique)
+t_garden,118,72,0	script	#wp02_t_garden	HIDDEN_WARP_NPC,3,1,{
+	end;
+OnTouch:
+	specialeffect2 EF_FLOWERCAST;
+	setpcblock PCBLOCK_NPC, true;
+	sleep2 500;
+	setpcblock PCBLOCK_NPC, false;
+	if (BaseLevel < 250)
+		warp "xmas_fild01",150,240;
+	else
+		warp "t_garden",118,61;
+	end;
+}
+
+
+// Quest starter
+t_garden,116,47,0	script	#life_wp11	HIDDEN_WARP_NPC,2,2,{
+	end;
+OnTouch:
+	if (BaseLevel < 250)
+		end;
+	if (isbegin_quest(12592) == 0) {
+		removespecialeffect 1145, AREA, "Oscar#life";
+		cloakoffnpcself( "Oscar#life" );
+		cloakoffnpcself( "Leticia#life" );
+		cloakoffnpcself( "Rigel#life" );
+		specialeffect 1145, AREA, "Oscar#life";
+		end;
+	}
+	end;
+}
+	
+t_garden,114,49,6	script(CLOAKED)	Leticia#life	4_4JOB_LETICIA,{
+	mes "^0000ffShe is not paying attention to you because she is explaining something to Oscar.^000007";
+	close;
+}
+
+t_garden,118,49,3	script(CLOAKED)	Rigel#life	4_CS_RIGEL,{
+	mes "^0000ffIt seems like they are focusing on the story of Oscar and Leticia.^000007";
+	close;
+}
+
+t_garden,119,46,2	script(CLOAKED)	Oscar#life	4_ED_OSCAR,{
+	if (BaseLevel < 250)
+		end;
+	if (isbegin_quest(12592) == 0) {
+		emotion ET_THROB;
+		mes "^0000ffOscar appears to be talking to someone.^000000";
+		next;
+		if (select( "Quit and step away", "Eavesdrop from the side." ) == 1) {
+			mes "^0000ffOf course, eavesdropping is a bit like that.^000000";
+			close;
+		}
+		cutin "OSCAR03.bmp",2;
+		mes "[Oscar]";
+		mes "So, is your claim that I happened to find a crack near Lutie and came in and found this garden?";
+		next;
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "That's right!";
+		next;
+		cutin "OSCAR03.bmp",2;
+		mes "[Oscar]";
+		mes "Why did you do that, Leticia?";
+		next;
+		cutin "4job_leticia_04.png",2;
+		mes "[Leticia]";
+		mes "Why! Doesn't this place look really useful? A nice garden and an unidentifiable mansion! This is perfect, Oscar!";
+		next;
+		cutin "OSCAR03.bmp",2;
+		mes "[Oscar]";
+		mes "You don't understand, Leticia. You found a crack, but I'm asking why you called me here without extinguishing it.";
+		next;
+		cutin "4job_leticia_05.png",2;
+		mes "[Leticia]";
+		mes "Well... that's right, it would be a waste to destroy it.";
+		next;
+		cutin "OSCAR03.bmp",2;
+		mes "[Oscar]";
+		mes "You didn't destroy it because it was a waste~ and what?";
+		next;
+		cutin "4job_leticia_02.png",2;
+		mes "[Leticia]";
+		mes "Oscar, you've been wandering around without a proper place to live. No matter how good a person you are, you shouldn't just volunteer like this!";
+		next;
+		cutin "OSCAR09.bmp",2;
+		mes "[Oscar]";
+		mes "Huh?";
+		next;
+		cutin "rigel_halfeyes02.png",2;
+		mes "[Rigel]";
+		mes "Leticia is begging you to stop acting like a homeless person, buy a decent house, and live like a constellation. It's not good to keep ignoring what others say.";
+		next;
+		cutin "OSCAR07.bmp",2;
+		mes "[Oscar]";
+		mes "Homeless..., am I not that bad? Are you looking at me like that, Leticia?";
+		next;
+		cutin "4job_leticia_02.png",2;
+		mes "[Leticia]";
+		mes "Even Betelgeuse, who came to this continent a long time ago, already has a decent home of his own! I think it's unreasonable for Oscar to wander around like this without a place to live!";
+		next;
+		cutin "OSCAR04.bmp",2;
+		mes "[Oscar]";
+		mes "Okay, I understand your intentions. I still have to think about how to handle this in the right way...";
+		next;
+		cutin "rigel05.png",2;
+		mes "[Rigel]";
+		mes "From what I've looked at, there are a few unstable dimensional passages, but they don't seem to be very dangerous. Leticia has a point.";
+		next;
+		cutin "rigel_halfeyes02.png",2;
+		mes "[Rigel]";
+		mes "I think I and Leticia could find an appropriate use for the unstable dimensional passages. What do you think, Leticia?";
+		next;
+		cutin "4job_leticia_05.png",2;
+		mes "[Leticia]";
+		mes "I agree, Rigel! I think the unstable area near the center of the garden can be stabilized by imposing restrictions in the form of a dungeon. I'll take care of that!";
+		next;
+		cutin "rigel_halfeyes02.png",2;
+		mes "[Rigel]";
+		mes "The flower garden to the north of the garden is unstable and connected to another dimension. I'll do some work there.";
+		next;
+		cutin "OSCAR05.bmp",2;
+		mes "[Oscar]";
+		mes "Wow, I didn't know these two would get along so well. It's not like they planned it in advance or anything, right?";
+		next;
+		cutin "rigel_halfeyes01.png",2;
+		mes "[Rigel]";
+		mes "That's not important, Oscar. Do you feel anything about the central mansion?";
+		next;
+		cutin "OSCAR01.bmp",2;
+		mes "[Oscar]";
+		mes "Oh, you mean 'that'? I feel it very well.";
+		next;
+		cutin "rigel_halfeyes02.png",2;
+		mes "[Rigel]";
+		mes "It seems like it's an issue involving ^0000fftime^000000, so I don't think Leticia or me can do anything about it. Oscar, you can do it, right?";
+		next;
+		cutin "OSCAR07.bmp",2;
+		mes "[Oscar]";
+		mes "Ugh... that's my responsibility, so it's right for me to go regardless of whether it works or not.";
+		next;
+		cutin "4job_leticia_05.png",2;
+		mes "[Leticia]";
+		mes "Then, let's go do some garden maintenance first. There's an adventurer who's eavesdropping nearby, so it would be perfect if we go together!";
+		next;
+		select( "Yes? Me too?" );
+		cutin "4job_leticia_04.png",2;
+		mes "[Leticia]";
+		mes "You're saying the obvious. If you've heard the story up to this point, you probably already know what's going on. Don't talk nonsense and just follow me into the garden.";
+		setquest 12592;
+		completequest 12592;
+		setquest 12593;
+		setquest 12594;
+		setquest 12618;
+		close2;
+		cutin "",255;
+		cloakonnpcself( "Oscar#life" );
+		cloakonnpcself( "Leticia#life" );
+		cloakonnpcself( "Rigel#life" );
+		end;
+	}
+	end;
+
+OnInit:
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "BaseLevel >= 250 && isbegin_quest(12592) == 0" );
+	end;
+}
+
+
+// A. Quests to access dungeons
+// t_garden,118,91,0	script	#wp01	HIDDEN_WARP_NPC,2,2,{	// (NPC name is not unique)
+t_garden,118,91,0	script	#wp01_t_garden_1	HIDDEN_WARP_NPC,2,2,{
+	end;
+OnTouch:
+	if (isbegin_quest(12592) == 2) {
+		cloakoffnpcself( "Leticia#life2" );	// note: always uncloaked at this point
+		end;
+	}
+	end;
+}
+
+t_garden,118,91,6	script(CLOAKED)	Leticia#life2	4_4JOB_LETICIA,{
+	if (isbegin_quest(12593) == 1) {
+		cutin "4job_leticia_02.png",2;
+		mes "[Leticia]";
+		mes "The flow of time inside that mansion is different from our current time. So, we don't know when Oscar will fully restore the mansion.";
+		next;
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "But we can't just bite our fingers. Moreover, from what the spirits who came here say, it seems like there is something else we need to do.";
+		next;
+		cutin "4job_leticia_05.png",2;
+		mes "[Leticia]";
+		mes "And I heard that the spirits that originally guarded this space were driven out by their compatriots who became fierce for some reason.";
+		next;
+		cutin "4job_leticia_04.png",2;
+		mes "[Leticia]";
+		mes "Perhaps due to the unstable energy flow, the attributes of nature were twisted and transformed and the spirits became fierce. They were told to rest for a while in the northwest of the garden.";
+		next;
+		cutin "4job_leticia_04.png",2;
+		mes "[Leticia]";
+		mes "According to their words, it seems that the cause is foreign spirits from the dimension connected to this place, so it would be better to reduce the number of those foreign things.";
+		next;
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "I'm going to need your help here. I need to gather energy flows to the east and west to create a gate, so let's move.";
+		completequest 12593;
+		setquest 12595;
+		setquest 12596;
+		close3;
+	}
+	if (isbegin_quest(12595) == 1 || isbegin_quest(12596) == 1) {
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "Not all exits are activated. Activate both the east and west exits and then come find me.";
+		close3;
+	}
+	if (isbegin_quest(12620) == 0) {
+		cutin "4job_leticia_01.png",2;
+		setpcblock PCBLOCK_NPC, true;
+		sleep2 500;
+		setpcblock PCBLOCK_NPC, false;
+		cutin "4job_leticia_05.png",2;
+		mes "[Leticia]";
+		mes "We gathered all the spirits that were asking for help around here and concentrated them in the northwest of the central square. They are really noisy.";
+		next;
+		cutin "4job_leticia_03.png",2;
+		mes "[Leticia]";
+		mes "They're probably just waiting for you to arrive. It's up to you whether you help them or not, but it wouldn't be a loss to help the spirits. I recommend going at least once.";
+		setquest 12620;
+		close3;
+	}
+	cutin "4job_leticia_01.png",2;
+	mes "[Leticia]";
+	mes "Have you tried talking to the spirits? There won't be any harm in becoming friends with them.";
+	close3;
+
+OnInit:
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(12593) == 1" );
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(12620) == 0 && isbegin_quest(12595) == 2 && isbegin_quest(12596) == 2" );
+	end;
+}
+
+t_garden,82,92,0	script	#life_wp2	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	switch( isbegin_quest(12595) ) {
+	case 0:
+		end;
+	case 1:
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "Okay, that's enough. It will open a passage to the place where the unholy energy is on the time seal seen there.";
+		next;
+		cutin "4job_leticia_02.png",2;
+		mes "[Leticia]";
+		mes "Are you ready? Then extend your hand forward and keep your eyes on the seal as if you are focusing the power I'm giving you onto the seal.";
+		// close2;
+		next;
+		select( "Reach out hand and watch the seal" );
+		setpcblock PCBLOCK_NPC, true;
+		cutin "",255;
+		specialeffect2 EF_BEGINSPELL_N3;
+		sleep2 2500;
+		specialeffect EF_LORD, AREA, "Passage of Time#1";
+		sleep2 1500;
+		specialeffect EF_BAKU, AREA, "Passage of Time#1";
+		sleep2 1000;
+		specialeffect EF_THUNDERSTORM2, AREA, "Passage of Time#1";
+		cloakoffnpcself( "Passage of Time#1" );
+		sleep2 1000;
+		setpcblock PCBLOCK_NPC, false;
+		if (isbegin_quest(12596) == 1) {
+			cutin "4job_leticia_04.png",2;
+			mes "[Leticia]";
+			mes "Now then, let's open the other one as well. Move to the site opposite this gate.";
+			completequest 12595;
+			close3;
+		}
+		cutin "4job_leticia_04.png",2;
+		mes "[Leticia]";
+		mes "It's simpler than you think, isn't it?. With this, we'll be able to stop strange guys from flooding the garden until Oscar completes the mansion, so it's a relief.";
+		next;
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "And since you've already helped me, from now on you'll have to work with me every day. It's no big deal. Reduce the number of unholy things in the dungeon under the passage created here.";
+		next;
+		select( "I think I've heard this before" );
+		cutin "4job_leticia_03.png",2;
+		mes "[Leticia]";
+		mes "Why are you muttering? Do you have any complaints?";
+		next;
+		select( "No." );
+		cutin "4job_leticia_05.png",2;
+		mes "[Leticia]";
+		mes "I think it's finished. Let's come to the central square for a moment and talk about the next thing.";
+		completequest 12595;
+		close3;
+	case 2:
+		cloakoffnpcself( "Passage of Time#1" );
+		end;
+	}
+	end;
+
+OnInit:
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(12595) == 1" );
+	end;
+}
+
+// t_garden,78,92,2	script(CLOAKED)	Passage of Time#1	GATE_SKYBLUE,2,2,{	// unknown OnTouch effect (NPC unreachable)
+t_garden,78,92,2	script(CLOAKED)	Passage of Time#1	GATE_SKYBLUE,{
+	if (isbegin_quest(12595) != 2)
+		end;
+	if (isbegin_quest(12596) != 2) {
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "Not all exits are activated. Activate both the east and west exits and then come find me.";
+		close3;
+	}
+	switch( select( "Forgotten memories, Zone 1, 6 o'clock", "Forgotten memories, Zone 1, Center", "Forgotten memories, Zone 1, 10 o'clock" ) ) {
+	case 1:
+		warp "for_dun01",159,35;
+		break;
+	case 2:
+		warp "for_dun01",101,136;
+		break;
+	case 3:
+		warp "for_dun01",62,266;
+		break;
+	}
+	end;
+}
+
+t_garden,151,92,0	script	#life_wp3	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	switch( isbegin_quest(12596) ) {
+	case 0:
+		end;
+	case 1:
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "Okay, that's enough. It will open a passage to the place where the unholy energy is on the time seal seen there.";
+		next;
+		cutin "4job_leticia_02.png",2;
+		mes "[Leticia]";
+		mes "Are you ready? Then extend your hand forward and keep your eyes on the seal as if you are focusing the power I'm giving you onto the seal.";
+		// close2;
+		next;
+		select( "Reach out hand and watch the seal" );
+		setpcblock PCBLOCK_NPC, true;
+		cutin "",255;
+		specialeffect2 EF_BEGINSPELL_N3;
+		sleep2 2000;
+		specialeffect EF_LORD, AREA, "Passage of Time#2";
+		sleep2 2000;
+		specialeffect EF_BAKU, AREA, "Passage of Time#2";
+		sleep2 1000;
+		specialeffect EF_THUNDERSTORM2, AREA, "Passage of Time#2";
+		cloakoffnpcself( "Passage of Time#2" );
+		sleep2 1000;
+		setpcblock PCBLOCK_NPC, false;
+		if (isbegin_quest(12595) == 1) {
+			cutin "4job_leticia_04.png",2;
+			mes "[Leticia]";
+			mes "Now then, let's open the other one as well. Move to the site opposite this gate.";
+			completequest 12596;
+			close3;
+		}
+		cutin "4job_leticia_04.png",2;
+		mes "[Leticia]";
+		mes "It's simpler than you think, isn't it?. With this, we'll be able to stop strange guys from flooding the garden until Oscar completes the mansion, so it's a relief.";
+		next;
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "And since you've already helped me, from now on you'll have to work with me every day. It's no big deal. Reduce the number of unholy things in the dungeon under the passage created here.";
+		next;
+		select( "I think I've heard this before" );
+		cutin "4job_leticia_03.png",2;
+		mes "[Leticia]";
+		mes "Why are you muttering? Do you have any complaints?";
+		next;
+		select( "No." );
+		cutin "4job_leticia_05.png",2;
+		mes "[Leticia]";
+		mes "I think it's finished. Let's come to the central square for a moment and talk about the next thing.";
+		completequest 12596;
+		close3;
+	case 2:
+		cloakoffnpcself( "Passage of Time#2" );
+		end;
+	}
+	end;
+
+OnInit:
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(12596) == 1" );
+	end;
+}
+
+// t_garden,157,92,2	script(CLOAKED)	Passage of Time#2	GATE_SKYBLUE,2,2,{	// unknown OnTouch effect (NPC unreachable)
+t_garden,157,92,2	script(CLOAKED)	Passage of Time#2	GATE_SKYBLUE,{
+	if (isbegin_quest(12596) != 2)
+		end;
+	if (isbegin_quest(12595) != 2) {
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "Not all exits are activated. Activate both the east and west exits and then come find me.";
+		close3;
+	}
+	switch( select( "Forgotten Memories, Zone 2, 7 o'clock", "Forgotten Memories, Zone 2, 1 o'clock", "Forgotten Memories, Zone 2, 5 o'clock" ) ) {
+	case 1:
+		warp "for_dun02",33,55;
+		break;
+	case 2:
+		warp "for_dun02",211,269;
+		break;
+	case 3:
+		warp "for_dun02",271,38;
+		break;
+	}
+	end;
+}
+
+
+for_dun01,100,146,2	script	Spatial coordinate probe#1	4_SYSTEM_BOX,{
+	mes "Would you like to go back to the Garden of Time?";
+	next;
+	if (select( "Cancel", "Return" ) == 1)
+		end;
+	warp "t_garden",83,92;
+	end;
+
+OnInit:
+	questinfo( QTYPE_CLICKME, QMARK_YELLOW, "isbegin_quest(12595) == 2" );
+	end;
+}
+for_dun01,128,282,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#2	4_SYSTEM_BOX
+for_dun01,55,142,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#3	4_SYSTEM_BOX
+for_dun01,262,167,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#4	4_SYSTEM_BOX
+for_dun01,204,67,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#5	4_SYSTEM_BOX
+for_dun01,57,270,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#6	4_SYSTEM_BOX
+for_dun01,65,34,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#7	4_SYSTEM_BOX
+for_dun01,146,27,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#8	4_SYSTEM_BOX
+for_dun01,154,139,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#9	4_SYSTEM_BOX
+for_dun01,124,203,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#10	4_SYSTEM_BOX
+for_dun01,267,265,2	duplicate(Spatial coordinate probe#1)	Spatial coordinate probe#11	4_SYSTEM_BOX
+
+
+for_dun02,190,147,2	script	Spatial coordinate probe#12	4_SYSTEM_BOX,{
+	mes "Would you like to go back to the Garden of Time?";
+	next;
+	if (select( "Cancel", "Return" ) == 1)
+		end;
+	warp "t_garden",152,92;
+	end;
+
+OnInit:
+	questinfo( QTYPE_CLICKME, QMARK_YELLOW, "isbegin_quest(12596) == 2" );
+	end;
+}
+for_dun02,143,149,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#13	4_SYSTEM_BOX
+for_dun02,276,29,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#14	4_SYSTEM_BOX
+for_dun02,106,34,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#15	4_SYSTEM_BOX
+for_dun02,216,271,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#16	4_SYSTEM_BOX
+for_dun02,64,268,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#17	4_SYSTEM_BOX
+for_dun02,18,170,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#18	4_SYSTEM_BOX
+for_dun02,16,92,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#19	4_SYSTEM_BOX
+for_dun02,29,52,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#20	4_SYSTEM_BOX
+for_dun02,276,255,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#21	4_SYSTEM_BOX
+for_dun02,283,197,2	duplicate(Spatial coordinate probe#12)	Spatial coordinate probe#22	4_SYSTEM_BOX
+
+
+// B. Event with Oscar
+t_garden,118,141,0	script	#life_wp4	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	if (isbegin_quest(12618) == 1) {
+		cloakoffnpcself( "Oscar#life2" );
+		end;
+	}
+	end;
+}
+
+// t_garden,118,142,3	script(CLOAKED)	Oscar#life2	4_ED_OSCAR,2,2,{	// unknown OnTouch effect
+t_garden,118,142,3	script(CLOAKED)	Oscar#life2	4_ED_OSCAR,{
+	if (isbegin_quest(12618) == 1) {
+		cutin "OSCAR01.bmp",2;
+		mes "[Oscar]";
+		mes "Ah " + strcharinfo(0) + ".";
+		next;
+		cutin "OSCAR09.bmp",2;
+		mes "[Oscar]";
+		mes "This is true. I'm really sorry for unintentionally getting you involved in our work.";
+		next;
+		select( "Are you going into the mansion?" );
+		cutin "OSCAR01.bmp",2;
+		mes "[Oscar]";
+		mes "I guess that's the way it is. This mansion is a space where multiple timelines are intricately intertwined, so I don't think anyone else can touch it.";
+		next;
+		select( "Is there anything I can do to help in the mansion?" );
+		cutin "OSCAR05.bmp",2;
+		mes "[Oscar]";
+		mes "" + strcharinfo(0) + " I've worked with you many times, so I'd like to ask you to come with me, but I don't think I can do that this time.";
+		next;
+		cutin "OSCAR09.bmp",2;
+		mes "[Oscar]";
+		mes "It seems like the speed of time inside this mansion is very different from the outside world. My guess is about... 1/1000? Maybe even more.";
+		next;
+		select( "That means..." );
+		cutin "OSCAR07.bmp",2;
+		mes "[Oscar]";
+		mes "This means that even if you only spend a few days inside the mansion, years or even decades may pass by in the outside world. It will probably be difficult for a human like " + strcharinfo(0) + " to endure it";
+		next;
+		cutin "OSCAR01.bmp",2;
+		mes "[Oscar]";
+		mes "There is a high probability that quite a long time will pass by the time the interior of the mansion is cleaned up. It must end quickly...";
+		next;
+		cloakoffnpcself( "Leticia#life3" );
+		cutin "4job_leticia_01.png",2;
+		mes "[Leticia]";
+		mes "Oh, are you going in now?";
+		next;
+		cutin "OSCAR01.bmp",2;
+		mes "[Oscar]";
+		mes "Yes, I have to go in. Leticia, I hope you don't cause any trouble and take good care of the garden until I come out after cleaning up the mansion.";
+		next;
+		cutin "4job_leticia_05.png",2;
+		mes "[Leticia]";
+		mes "Oh, don't worry about that. I'll make sure you're isolated from the real world.";
+		next;
+		cutin "OSCAR01.bmp",2;
+		mes "[Oscar]";
+		mes "Okay. Then, please take care of me. Oh, and " + strcharinfo(0) + ", if you have the time, I would appreciate it if you could help Leticia. She's so lazy...";
+		next;
+		cutin "4job_leticia_04.png",2;
+		mes "[Leticia]";
+		mes "I'll take care of the adventurer here, so let's leave it at that and go in.";
+		next;
+		cutin "OSCAR03.bmp",2;
+		mes "[Oscar]";
+		mes "Okay, I'll finish the work and come out as soon as possible. See you then.";
+		close2;
+		cutin "",255;
+		specialeffect EF_BEGINSPELL_N4;
+		setpcblock PCBLOCK_NPC, true;
+		sleep2 2000;
+		cloakonnpcself( "Oscar#life2" );
+		setpcblock PCBLOCK_NPC, false;
+		cutin "4job_leticia_02.png",2;
+		mes "[Leticia]";
+		mes "Well, I'm sure Oscar will take care of it... Don't just stand there and help out with Rigel and my work.";
+		close2;
+		cutin "",255;
+		cloakonnpcself( "Leticia#life3" );
+		completequest 12618;
+		end;
+	}
+	end;
+
+OnInit:
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(12618) == 1" );
+	end;
+}
+
+t_garden,115,139,7	duplicate(dummy_cloaked_npc)	Leticia#life3	4_4JOB_LETICIA
+
+
+// C. Instances
+// t_garden,166,217,0	script	#wp11	HIDDEN_WARP_NPC,2,2,{	// (NPC name is not unique)
+t_garden,166,217,0	script	#wp11_t_garden	HIDDEN_WARP_NPC,2,2,{
+	end;
+OnTouch:
+	if (isbegin_quest(12594) == 1) {
+		cloakoffnpcself( "Rigel#life2" );
+		end;
+	}
+	end;
+}
+
+t_garden,166,217,3	script(CLOAKED)	Rigel#life2	4_CS_RIGEL,{
+	if (isbegin_quest(12594) == 1) {
+		cutin "rigel01.png",2;
+		mes "[Rigel]";
+		mes "You're here " + strcharinfo(0) + ".";
+		mes "It would be very appropriate to be this far away from the mansion without disturbing Oscar, right?";
+		next;
+		select( "What are you going to do here?" );
+		cutin "rigel02.png",2;
+		mes "[Rigel]";
+		mes "From now on, we will build a prison. A prison to hold very dangerous and unstable prisoners.";
+		next;
+		select( "You're making a prison in the flower garden?" );
+		cutin "rigel01.png",2;
+		mes "[Rigel]";
+		mes "Anyway, this place will only serve as a passage, and the prison itself is connected to another dimension. I will leave them. I have no intention of ruining the flower garden.";
+		next;
+		mes "[Rigel]";
+		mes "We have created a prison access list a little further north. Only those registered on the list can enter the prison, so let's go and register first.";
+		close2;
+		completequest 12594;
+		setquest 12597;
+		cutin "",255;
+		end;
+	}
+	cutin "rigel01.png",2;
+	mes "[Rigel]";
+	mes "Let's start by looking for the sealing spirit stone I installed a little further north.";
+	close3;
+
+OnInit:
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(12594) == 1" );
+	end;
+}
+
+
+// t_garden,162,222,5	script	#lank_board	4_4JOB_PHANTOMBOOK1,{
+	// mes "--- Strategy ranking ---";
+	// mes "1st place - none";
+	// mes "2nd place - none";
+	// mes "3rd place - none";
+	// mes "4th place - none";
+	// mes "5th place - none";
+	// mes "-----------------";
+	// mes "¡Ø The strategy record is updated every 5 minutes.";
+	// mes "If recording does not occur immediately, please wait for a while and check.";
+	// close;
+// }
+
+// t_garden,166,235,0	script	#wp12	HIDDEN_WARP_NPC,3,3,{	// (NPC name is not unique)
+t_garden,166,235,0	script	#wp12_t_garden	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	switch( isbegin_quest(12597) ) {
+	case 0:
+		end;
+	case 1:
+		cloakoffnpcself( "Sealing Spirit Stone#life2" );
+		end;
+	case 2:
+		cloakoffnpcself( "Sealing Spirit Stone#life2" );
+		cloakoffnpcself( "Dimensional Prison#1" );
+		cloakoffnpcself( "Dimensional Prison#2" );
+		end;
+	}
+	end;
+}
+
+t_garden,166,235,3	script(CLOAKED)	Sealing Spirit Stone#life2	HEROS_OUT_ORB,{
+	switch( isbegin_quest(12597) ) {
+	case 0:
+		end;
+	case 1:
+		mes "[Sealing Spirit Stone]";
+		mes "^ff0000Unauthenticated user.^000000";
+		next;
+		cutin "rigel_halfeyes01.png",2;
+		mes "[Rigel]";
+		mes "Don't just stare blankly, extend your hand.";
+		mes "Focus your mind by placing your thumb on the bottom right of the unfolded spirit stone and the rest of your fingers on top. ";
+		next;
+		select( "Put your hand on the guide." );
+		setpcblock PCBLOCK_NPC, true;
+		cutin "",255;
+		specialeffect2 EF_BEGINSPELL_N5;
+		sleep2 2000;
+		specialeffect EF_LORD, AREA, "Dimension Prison#1";
+		sleep2 500;
+		specialeffect EF_LORD, AREA, "Dimension Prison#2";
+		sleep2 1500;
+		specialeffect EF_BAKU, AREA, "Dimension Prison#1";
+		sleep2 500;
+		specialeffect EF_BAKU, AREA, "Dimension Prison#2";
+		sleep2 500;
+		specialeffect EF_THUNDERSTORM2, AREA, "Dimension Prison#1";
+		sleep2 500;
+		setpcblock PCBLOCK_NPC, false;
+		specialeffect EF_THUNDERSTORM2, AREA, "Dimension Prison#2";
+		cloakoffnpcself( "Dimension Prison#1" );
+		cloakoffnpcself( "Dimension Prison#2" );
+		sleep2 1500;
+		cutin "rigel_halfeyes01.png",2;
+		mes "[Rigel]";
+		mes "It looks like it's registered well. Now you've completed the basic preparations to recognize the prison and enter and exit it. For any further questions, please refer to this guide.";
+		next;
+		select( "Who are you going to put in that prison?" );
+		cutin "rigel_annoying01.png",2;
+		mes "[Rigel]";
+		mes "^bb0000Doppelganger.^000000";
+		next;
+		cutin "rigel_halfeyes01.png",2;
+		mes "[Rigel]";
+		mes "Well, you might think it's just a doppelganger and a fuss, but the one you'll be imprisoning here is on a different level than the doppelganger you think of.";
+		next;
+		mes "[Rigel]";
+		mes "It's the worst kind of being that doesn't just mimic abilities or appearances, but devours the soul of the target being and turns into that being itself.";
+		next;
+		select( "Whose image do it take on now?" );
+		cutin "rigel_annoying01.png",2;
+		mes "[Rigel]";
+		mes "It's me.";
+		next;
+		select( "What does that mean?" );
+		cutin "rigel_halfeyes01.png",2;
+		mes "[Rigel]";
+		mes "This prisoner swallowed me, Rigel, from the 326th dimension and became a being that called itself the Constellation of Life.";
+		next;
+		mes "[Rigel]";
+		mes "When I ran to save myself there, it was already too late. I knew as soon as I saw the unconscious person who looked exactly like me. This wasn't me.";
+		next;
+		cutin "rigel_annoying01.png",2;
+		mes "[Rigel]";
+		mes "Although we succeeded in sealing the guy who couldn't use it power properly. It might succeed in breaking the seal someday.";
+		next;
+		select( "Why don't you take down the criminal yourself?" );
+		cutin "rigel01.png",2;
+		mes "[Rigel]";
+		mes "I don't know what the error is, but the world recognizes it as another constellation of life. If a constellation attacks the same constellation, it violates the rules of the dimension and immediately loses it powers.";
+		next;
+		mes "[Rigel]";
+		mes "And, if by any chance it takes over my existence, then it will be in an irreversible situation.";
+		next;
+		select( "Is there any possibility that the prisoner will take over our bodies?" );
+		cutin "rigel_close02.png",2;
+		mes "[Rigel]";
+		mes "This is truly one of the funniest jokes I've heard in hundreds of years.";
+		next;
+		cutin "rigel_halfeyes02.png",2;
+		mes "[Rigel]";
+		mes "Would you ever abandon the immortal body you worked so hard to occupy and return to your mortal body?";
+		next;
+		select( "Maybe if your life is threatened." );
+		cutin "rigel_halfeyes01.png",2;
+		mes "[Rigel]";
+		mes "Well, I don't agree with that opinion at all, but I'll ease your worries. It's surrounded by layers of seals I've placed on it.";
+		next;
+		mes "[Rigel]";
+		mes "Even if it wanted to take over your and it friends' bodies, it wouldn't be able to exert that kind of power.";
+		next;
+		cutin "rigel_close01.png",2;
+		mes "[Rigel]";
+		mes "It's a long story. Prison information will be posted separately at the prison entrance, so check it regularly.";
+		next;
+		mes "[Rigel]";
+		mes "I look forward to seeing you and your colleagues do a great job here.";
+		close2;
+		cutin "",255;
+		completequest 12597;
+		cloakonnpcself( "Rigel#life2" );
+		end;
+	case 2:
+		break;
+	}
+	mes "[Sealing Spirit Stone]";
+	mes "Guidelines for correct prison management. What would you like to see?";
+	next;
+	while(1) {
+		switch( select( "Stop viewing", "Reissue of the Constellation's protection", "Information on imprisoned prisoners", "Information on prison entry", "Information on barriers", "Information on traps", "Information on sanctuaries ", "Information on the underworld", "Information on dangerous omens", "Information on the resilience of prisoners" ) ) {
+		case 1:
+			end;
+		case 2:
+			if (countitem(420231) - isequippedcnt(420231) < 1) {
+				mes "[Sealing Spirit Stone]";
+				mes "Please check again whether it is registered in ^ff0000equipment set setting^000000 and whether it is already installed.";
+				mes " ";
+				mes "Even if you have two or more blessings, the record engraved in the adventurer's ^ff0000soul takes priority^000000, so we recommend that you dispose of any excess blessings at the store.";
+				next;
+				if (select( "Cancel", "Reissue" ) == 1)
+					continue;
+				mes "[Sealing Spirit Stone]";
+				mes "Based on the records engraved in the adventurer's soul";
+				mes "We have reissued a protection engraved with a barrier ^0000fflevel 1^000000.";
+				getitem2 420231,1,1,0,0,0,0,0,312453;	// MD_Hol_Protection
+				close;
+			}
+			mes "[Sealing Spirit Stone]";
+			mes "You have the protection issued in your inventory. Re-issuing it is only possible if you do not have the constellation's protection in your inventory.";
+			close;
+		case 3:
+			mes "[Prisoner Information Guide]";
+			mes "Based on this book, on the left is a lava lake where the guards who managed dimensional criminals are imprisoned. On the right is the Hall of Life where dimensional managers are imprisoned.";
+			mes " ";
+			mes "The guards were originally meant to monitor dimensional criminals, but at some point, they showed an intention to protect the dimensional criminals.";
+			next;
+			mes "[Prisoner Information Guide]";
+			mes "Accordingly, the Constellation of Life imprisoned the 4 divine prisoners, who were guards, in a dimension completely separate from the dimensional criminals.";
+			mes " ";
+			mes "The main prisoner, a dimensional criminal, is a doppelganger-type monster who stole the appearance and abilities of the 326th dimension's constellation of life. Currently, its level of danger has never been measured, so it is not recorded.";
+			next;
+			mes "[Prisoner Information Guide]";
+			mes "One thing is certain: the dimensional criminals have hijacked the bodies and powers of the dimensional life constellations.";
+			mes " ";
+			mes "Due to this series of events, not only the Constellation of Life but also the 4 Divine Beasts are vacant in the 326th dimension. Therefore, the user must manage this prison with two main goals.";
+			next;
+			mes "-First-";
+			mes "You must attack dimension criminals periodically to prevent them from hoarding power.";
+			mes " ";
+			mes "Even now, it is accumulating vast amounts of life energy, which could pose a serious danger to the dimensional world.";
+			next;
+			mes "-Second-";
+			mes "The level of power that dimensional criminals exert must be measured and recorded.";
+			mes " ";
+			mes "Relatedly, when entering a prison, you can equip yourself with the protection touched by the constellation and measure and record the level of risk based on the level of the barrier attached to it.";
+			next;
+			mes "-Third-";
+			mes "It may be of lesser importance, but it is necessary to visit the jailers' prisons periodically to weaken their power.";
+			mes " ";
+			mes "The currently imprisoned guards are a dangerous force potentially sympathizing with the escape of dimensional criminals. Periodically suppress them by force and confiscate the prison keys they are managing/producing.";
+			next;
+			mes "[Prisoner Information Guide]";
+			mes "This is information about prisoners held in prison. Do you need any additional information?";
+			break;
+		case 4:
+			mes "[Access information information]";
+			mes "The prison is divided into an area where the guards are confined and an area where the dimension criminals are confined.";
+			mes " ";
+			mes "First, you can enter the lava lake where the guards are imprisoned once a day. There is no additional seal, so as long as you stick to the once a day time, there will be no particular restrictions on entry.";
+			next;
+			mes "[Access information information]";
+			mes "The Hall of Life where dimensional criminals are imprisoned";
+			mes "Only accessible while holding " + mesitemlink(1001415) + ".";
+			mes " ";
+			mes "Remember that, with the exception of the one-hour dungeon time limit, you can enter as many times as you want as long as you have the key.";
+			next;
+			mes "[Access information information]";
+			mes "However, if you receive the reward once, you will not be able to receive the reward again in the Hall of Life for ^ff0000one week.^000000 Of course, even in that case, entry is free.";
+			mes " ";
+			mes "Do you need any additional information?";
+			break;
+		case 5:
+			mes "[Barrier information information]";
+			mes "The power of dimensional criminals is sealed by a barrier tightly bound by Rigel, the constellation of life.";
+			mes " ";
+			mes "Therefore, when you enter to manage the prison, the first dimensional criminal you encounter is the barrier adjusted so that only the lowest level of strength is exerted.";
+			next;
+			mes "[Barrier information information]";
+			mes "However, if you apply appropriate corrections to the dimensional criminal and make him submit, you will either receive appropriate ^ff0000compensation,^000000, or delay the reward and get a chance to unlock the next ^ff0000barrier ^000000level.";
+			next;
+			mes "[Barrier information information]";
+			mes "If you want a higher reward level, remember that it is advantageous to level up quickly by clearing barriers rather than selecting rewards.";
+			next;
+			mes "[Barrier information information]";
+			mes "However, it is not advantageous to simply raise the level of the barrier.";
+			mes " ";
+			mes "If you fail to correct a dimensional criminal, the level of barrier you can handle will be lowered by 1 level the next time you enter prison.^000000";
+			next;
+			mes "[Barrier information information]";
+			mes "I recommend that you do not pay undue attention to barriers that you cannot handle and that you strive for stable correction.";
+			mes " ";
+			mes "Do you need any additional information?";
+			break;
+		case 6:
+			mes "[Trap Information Guide]";
+			mes "The dimensional criminal used his power to cause time-moving traps to appear in his space to prevent outside intruders.";
+			mes " ";
+			mes "The danger of this trap varies depending on the level of the barrier, and its destructive power becomes more powerful the further away you are from the center of the prison.";
+			next;
+			mes "[Trap Information Guide]";
+			mes "Additionally, ^ff0000each time you or an ally is damaged by a trap, the Warp Criminal's attack power will become more powerful.^000000";
+			next;
+			mes "[Trap Information Guide]";
+			mes "If the prison is full of traps, you can reset the traps using the other side of the world. Please refer to the information on the other side of the world for this part.";
+			mes " ";
+			mes "Do you need any additional information?";
+			break;
+		case 7:
+			mes "[Sanctuary Information Guide]";
+			mes "Dimensional criminals can periodically establish a sanctuary around themselves that makes them immune to physical and magical attacks.";
+			mes " ";
+			mes "This appears to be a duplicate of an ability available to high-ranking constellations and cannot be disarmed by any means.";
+			next;
+			mes "[Sanctuary Information Guide]";
+			mes "However, if you pull a dimensional criminal who has declared sanctuary out of the sanctuary, the sanctuary will be canceled. If the dimensional criminal uses the sanctuary to go on a rampage, pull him out of the sanctuary.";
+			mes " ";
+			mes "Do you need any additional information?";
+			break;
+		case 8:
+			mes "[Information Guide to the Secret World]";
+			mes "When the number of traps in the prison exceeds a certain number, a portal to the other world will be created on the north side of the prison.";
+			mes " ";
+			mes "In the underworld, there are imperfect illusions of dimensional criminals, and those illusions are imperfectly connected to the dimensional criminals.";
+			next;
+			mes "[Information Guide to the Secret World]";
+			mes "The moment all the illusions of the other world are defeated, the dimensional criminals of the original world will receive a strong blow and fall into a groggy state for a certain period of time.";
+			mes " ";
+			mes "At this moment, traps within the prison are reset, all attack power built up by the warp criminal is returned to its original state, and all defenses of the warp criminal are drastically lowered for a brief period of time.";
+			next;
+			mes "[Information Guide to the Secret World]";
+			mes "However, the portal to the underworld should not be used by too many people.";
+			mes " ";
+			mes "This is because each time a person passes through the portal, the dimensional criminal's recovery per second increases by a certain amount, and if this number overlaps, he or she can recover health in an instant.";
+			next;
+			mes "[Information Guide to the Secret World]";
+			mes "Remember that in order to kill the illusions of the other world, it is advisable to have a small number of party members with strong attack power and mobility.";
+			mes " ";
+			mes "Do you need any additional information?";
+			break;
+		case 9:
+			mes "[Guide to dangerous omens]";
+			mes "If you see any unusual effects on the ground while correcting dimensional criminals, quickly leave the area.";
+			mes " ";
+			mes "This effect is a precursor to the dimensional offender's widespread and powerful influence.";
+			next;
+			mes "[Guide to dangerous omens]";
+			mes "The influence of a dimensional criminal can result in confinement effects, serious lacerations and frostbite, and sometimes even death.";
+			mes " ";
+			mes "Do not take your eyes off the ground even for a moment and be alert in all directions.";
+			mes " ";
+			mes "Do you need any additional information?";
+			break;
+		case 10:
+			mes "[Recovery information information]";
+			mes "Dimensional criminals have the ability to regenerate health in real time. Therefore, normal correction may not be possible unless a blow exceeds this recovery ability.";
+			mes " ";
+			mes "The moment the inner world is purified, the recovery rate decreases sharply during the time the dimensional criminal is in a groggy state.";
+			next;
+			mes "[Recovery information information]";
+			mes "However, do not forget that ^ff0000recovery also increases in proportion to the number of people who use the portal^000000 to purify the Underworld.";
+			mes "If too many portal users occur, normal correction may fail due to a rapid increase in resilience.";
+			mes " ";
+			mes "Do you need any additional information?";
+			break;
+		}
+		next;
+	}
+	end;
+
+OnInit:
+	questinfo( QTYPE_QUEST, QMARK_YELLOW, "isbegin_quest(12597) == 1" );
+	end;
+}
+
+
+// t_garden,158,235,2	script(CLOAKED)	Dimension Prison#1	GATE_SKYBLUE,2,2,{	// unknown OnTouch effect
+t_garden,158,235,2	script(CLOAKED)	Dimension Prison#1	GATE_SKYBLUE,{
+	if (isbegin_quest(12597) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "^ff0000It seems that there are too many types and weights of items. Please organize your inventory.^000000";
+		close;
+	}
+	if (getcharid(1) < 1) {
+		mes "^0000ffPlease organize a party of at least one person and proceed.^000000";
+		close;
+	}
+	// ...
+			end;
+	}
+
+// t_garden,173,235,2	script(CLOAKED)	Dimension Prison#2	GATE_SKYBLUE,2,2,{	// unknown OnTouch effect
+t_garden,173,235,2	script(CLOAKED)	Dimension Prison#2	GATE_SKYBLUE,{
+	if (isbegin_quest(12597) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "^ff0000It seems that there are too many types and weights of items. Please organize your inventory.^000000";
+		close;
+	}
+	// ...
+	end;
+}
+
+
+
+// Daily Quests
+// t_garden,105,118,0	script	#wp01	HIDDEN_WARP_NPC,6,5,{	// (NPC name is not unique)
+t_garden,105,118,0	script	#wp01_t_garden_2	HIDDEN_WARP_NPC,6,5,{
+	end;
+OnTouch:
+	.@state = isbegin_quest(12620);
+	if (.@state == 0)
+		end;
+	cloakoffnpcself( "Ardor#life2" );
+	cloakoffnpcself( "Diluvio#life2" );
+	cloakoffnpcself( "Procella#life2" );
+	cloakoffnpcself( "Terremotus#life2" );
+	cloakoffnpcself( "Serpens#life2" );
+
+	if (.@state == 1) {
+		mes "[Terremotus]";
+		mes "^777700Oh, the adventurer Leticia sent has finally arrived.";
+		next;
+		mes "[Ardor]";
+		mes "^aa0000Adventurer! Are you willing to fight? We don't need a weakling!";
+		next;
+		mes "[Diluvio]";
+		mes "^0000ffArdor! Have you forgotten what Leticia told you to be at least polite?";
+		next;
+		mes "[Procella]";
+		mes "^00cc00Diluvio is right. It would be good to show some courtesy to the humans who come to help us.";
+		next;
+		select( "I'm fine, please tell me what to do" );
+		mes "[Serpens]";
+		mes "^aa00aaWe are ancient spirits from a world connected to this garden. It is an instinct engraved in our spirit bodies to help each natural element remain harmonious.";
+		next;
+		mes "[Serpens]";
+		mes "^aa00aaHowever, after being swept away by a strange dimensional storm, the elements of the world connected to this garden began to run wild, and eventually began to turn into spirits.";
+		next;
+		mes "[Terremotus]";
+		mes "^777700If the elements continue to become elementals, eventually the material world that makes up this world will collapse. That must be prevented.";
+		next;
+		mes "[Diluvio]";
+		mes "^0000ffAdventurer, you must no longer allow the elements to turn into spirits. Use your power to send them back to nature.";
+		next;
+		mes "[Terremotus]";
+		mes "^777700This is not an act of destroying nature. It is a matter of returning the disappearing elements that have been transformed into spirits back to their original positions. Will you listen to our request?";
+		next;
+		select( "I will." );
+		mes "[Ardor]";
+		mes "^aa0000You're a good communicator! Okay then, I'll tell you what to do every day!^000000";
+		next;
+		mes "[Ardor]";
+		mes "^aa0000Let's place the sacred items prepared by the constellations across from us. In human language, it's called a vending machine.^000000";
+		next;
+		mes "[Ardor]";
+		mes "^aa0000The reward for helping us and the constellations' work here will be received through that sacred item.^000000";
+		next;
+		completequest 12620;
+		navigateto("t_garden",126,117);
+		end;
+	}
+	end;
+}
+
+t_garden,97,114,5	script(CLOAKED)	Diluvio#life2	4_EM_DILUVIO,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {	// Useless check ?
+		mes "I am unable to communicate with spirits because I have too many items or weights.";
+		close;
+	}
+	switch( checkquest(12598,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "^ff0000Today's request has already been received. You can't receive any more.^000000";
+		close;
+	case 2:
+		erasequest 12598;
+		break;
+	}
+	if (F_queststatus( HAVEQUEST,12633,12634,12635,12636 ) == -1) {
+		mes "^0000ffThere are still uncompleted quests. You cannot receive additional requests or reset until all requests are completed at the " + F_mesnavi("Spirit Vending Machine", "t_garden",128,122) + ".^000000";
+		close;
+	}
+	mes "[Diluvio]";
+	mes "My goal is to return the water spirits, who are gradually materializing within forgotten memories, back to their elements. I would like your help.";
+	next;
+	if (select( "I will help you next time.", "I will help you" ) == 1)
+		end;
+	mes "[Diluvio]";
+	mes "This is a list of requests for you. Thank you very much.";
+	close2;
+	.@quest_id[0] = rand(12633,12634);
+	.@quest_id[1] = rand(12635,12636);
+	setquest .@quest_id[0];
+	setquest .@quest_id[1];
+	setquest 12598;
+	open_quest_ui(.@quest_id[0]);
+	end;
+
+OnInit:
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(12620) == 2 && (checkquest(12598,PLAYTIME) == -1 || checkquest(12598,PLAYTIME) == 2) && F_queststatus( HAVEQUEST,12633,12634,12635,12636 ) == 0" );
+	end;
+}
+
+t_garden,100,117,5	script(CLOAKED)	Terremotus#life2	4_EM_TERREMOTUS,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "I am unable to communicate with spirits because I have too many items or weights.";
+		close;
+	}
+	switch( checkquest(12599,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "^ff0000Today's request has already been received. You can't receive any more.^000000";
+		close;
+	case 2:
+		erasequest 12599;
+		break;
+	}
+	if (F_queststatus( HAVEQUEST,12621,12622,12623,12624 ) == -1) {
+		mes "^0000ffThere are still uncompleted quests. You cannot receive additional requests or reset until all requests are completed at the " + F_mesnavi("Spirit Vending Machine", "t_garden",128,122) + ".^000000";
+		close;
+	}
+	mes "[Terremotus]";
+	mes "The elements of the earth must remain in their elemental state. If they continue to become elementals, eventually there will not be a single ounce of dirt left. Will you help me?";
+	next;
+	if (select( "I will help you next time.", "I will help you" ) == 1)
+		end;
+	mes "[Terremotus]";
+	mes "That's all I ask of you today. Take your time and take a look.";
+	close2;
+	.@quest_id[0] = rand(12621,12622);
+	.@quest_id[1] = rand(12623,12624);
+	setquest .@quest_id[0];
+	setquest .@quest_id[1];
+	setquest 12599;
+	open_quest_ui(.@quest_id[0]);
+	end;
+
+OnInit:
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(12620) == 2 && (checkquest(12599,PLAYTIME) == -1 || checkquest(12599,PLAYTIME) == 2) && F_queststatus( HAVEQUEST,12621,12622,12623,12624 ) == 0" );
+	end;
+}
+
+t_garden,103,120,5	script(CLOAKED)	Serpens#life2	4_EM_SERPENS,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "I am unable to communicate with spirits because I have too many items or weights.";
+		close;
+	}
+	switch( checkquest(12600,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "^ff0000Today's request has already been received. You can't receive any more.^000000";
+		close;
+	case 2:
+		erasequest 12600;
+		break;
+	}
+	if (F_queststatus( HAVEQUEST,12637,12638,12639,12640,12641,12642,12643 ) == -1) {
+		mes "^0000ffThere are still uncompleted quests. You cannot receive additional requests or reset until all requests are completed at the " + F_mesnavi("Spirit Vending Machine", "t_garden",128,122) + ".^000000";
+		close;
+	}
+	mes "[Serpens]";
+	mes "I can't stand to see healthy elements becoming corrupted as I can't turn them into spirits. I need your power to prevent them from falling into anger and becoming polluted.";
+	next;
+	if (select( "I will help you next time.", "I will help you" ) == 1)
+		end;
+	mes "[Serpens]";
+	mes "I'm sorry to ask you this kind of favor again today. Thank you very much.";
+	close2;
+	.@quest_id[0] = rand(12637,12638);
+	.@quest_id[1] = rand(12639,12643);
+	setquest .@quest_id[0];
+	setquest .@quest_id[1];
+	setquest 12600;
+	open_quest_ui(.@quest_id[0]);
+	end;
+
+OnInit:
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(12620) == 2 && (checkquest(12600,PLAYTIME) == -1 || checkquest(12600,PLAYTIME) == 2) && F_queststatus( HAVEQUEST,12637,12638,12639,12640,12641,12642,12643 ) == 0" );
+	end;
+}
+
+t_garden,106,123,5	script(CLOAKED)	Procella#life2	4_EM_PROCELLA,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "I am unable to communicate with spirits because I have too many items or weights.";
+		close;
+	}
+	switch( checkquest(12601,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "^ff0000Today's request has already been received. You can't receive any more.^000000";
+		close;
+	case 2:
+		erasequest 12601;
+		break;
+	}
+	if (F_queststatus( HAVEQUEST,12629,12630,12631,12632 ) == -1) {
+		mes "^0000ffThere are still uncompleted quests. You cannot receive additional requests or reset until all requests are completed at the " + F_mesnavi("Spirit Vending Machine", "t_garden",128,122) + ".^000000";
+		close;
+	}
+	mes "[Procella]";
+	mes "Wind means the source of life, the atmosphere. If the elements of wind continue to turn into spirits, all living things in this dimension will eventually die. I need someone's help.";
+	next;
+	if (select( "I will help you next time.", "I will help you" ) == 1)
+		end;
+	mes "[Procella]";
+	mes "I'm glad there is someone who can solve this problem. Please solve my request well.";
+	close2;
+	.@quest_id[0] = rand(12629,12630);
+	.@quest_id[1] = rand(12631,12632);
+	setquest .@quest_id[0];
+	setquest .@quest_id[1];
+	setquest 12601;
+	open_quest_ui(.@quest_id[0]);
+	end;
+
+OnInit:
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(12620) == 2 && (checkquest(12601,PLAYTIME) == -1 || checkquest(12601,PLAYTIME) == 2) && F_queststatus( HAVEQUEST,12629,12630,12631,12632 ) == 0" );
+	end;
+}
+
+t_garden,109,126,5	script(CLOAKED)	Ardor#life2	4_EM_ARDOR,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "I am unable to communicate with spirits because I have too many items or weights.";
+		close;
+	}
+	switch( checkquest(12602,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "^ff0000Today's request has already been received. You can't receive any more.^000000";
+		close;
+	case 2:
+		erasequest 12602;
+		break;
+	}
+	if (F_queststatus( HAVEQUEST,12625,12626,12627,12628 ) == -1) {
+		mes "^0000ffThere are still uncompleted quests. You cannot receive additional requests or reset until all requests are completed at the " + F_mesnavi("Spirit Vending Machine", "t_garden",128,122) + ".^000000";
+		close;
+	}
+	mes "[Ardor]";
+	mes "Flame that has become a spirit and moves and thinks on its own is dangerous in itself. Don't you think it's too dangerous to just sit there like this? I don't ask you any favors. Follow my instructions.";
+	next;
+	if (select( "I will help you next time.", "I will help you" ) == 1)
+		end;
+	mes "[Ardor]";
+	mes "It's something you have to do. You'd better do it as quickly as possible.";
+	close2;
+	.@quest_id[0] = rand(12625,12626);
+	.@quest_id[1] = rand(12627,12628);
+	setquest .@quest_id[0];
+	setquest .@quest_id[1];
+	setquest 12602;
+	open_quest_ui(.@quest_id[0]);
+	end;
+
+OnInit:
+	questinfo( QTYPE_DAILYQUEST, QMARK_YELLOW, "isbegin_quest(12620) == 2 && (checkquest(12602,PLAYTIME) == -1 || checkquest(12602,PLAYTIME) == 2) && F_queststatus( HAVEQUEST,12625,12626,12627,12628 ) == 0" );
+	end;
+}
+
+
+// Uncloak quest NPC rewards and exchange/enchants NPCs
+t_garden,126,123,0	script	#v_wp01	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	if (isbegin_quest(12620) != 2)
+		end;
+	cloakoffnpcself( "Subspace vending machine#1" );
+	cloakoffnpcself( "Subspace vending machine#2" );
+	cloakoffnpcself( "Subspace vending machine#3" );
+	cloakoffnpcself( "Spirit Complaint Terminal#1" );
+	end;
+}
+t_garden,130,119,0	duplicate(#v_wp01)	#v_wp02	HIDDEN_WARP_NPC,3,3
+t_garden,134,115,0	duplicate(#v_wp01)	#v_wp03	HIDDEN_WARP_NPC,4,4
+
+
+// Quest rewards
+t_garden,126,126,2	script(CLOAKED)	Spirit Complaint Terminal#1	4_VENDING_MACHINE2,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "I cannot communicate with the barrier because I have too many types or weights of items.";
+		close;
+	}
+	mes "[Spirit Complaint Terminal]";
+	mes "Conversation between spirits and humans. Seamless communication. We will listen to the voices of our customers. This is Kiosk 5000, a comprehensive information terminal that processes spirit complaints and compensation at the same time. How can we help you?";
+	next;
+	if (select( "Exit menu", "Spirit complaint processing" ) == 1) {
+		mes "[Spirit Complaint Terminal]";
+		mes "Goodbye.";
+		close;
+	}
+	mes "[Spirit Complaint Terminal]";
+	mes "We will automatically process all completed spirit requests that you have.";
+	next;
+	mes "[Spirit Complaint Terminal]";
+
+	.@count += callsub( S_Hunt,
+		12621,				// Quest ID
+		"Terremotus' Request 1",	// Quest name
+		1001464,			// Reward item ID
+		13890900,			// Base exp
+		0					// Job exp (unknown)
+	);
+	.@count += callsub( S_Hunt, 12622, "Terremotus' Request 2", 1001464, 13890900,0 );	// Energy_Of_Ground
+	.@count += callsub( S_Hunt, 12623, "Terremotus' Request 3", 1001464, 13890900,0 );
+	.@count += callsub( S_Hunt, 12624, "Terremotus' Request 4", 1001464, 13890900,0 );
+
+	.@count += callsub( S_Hunt, 12625, "Ardor's Request 1", 1001461, 13890900,0 );	// Energy_Of_Flame
+	.@count += callsub( S_Hunt, 12626, "Ardor's Request 2", 1001461, 13890900,0 );
+	.@count += callsub( S_Hunt, 12627, "Ardor's Request 3", 1001461, 13890900,0 );
+	.@count += callsub( S_Hunt, 12628, "Ardor's Request 4", 1001461, 13890900,0 );
+
+	.@count += callsub( S_Hunt, 12629, "Procella's Request 1", 1001463, 13890900,0 );	// Energy_Of_Wind
+	.@count += callsub( S_Hunt, 12630, "Procella's Request 2", 1001463, 13890900,0 );
+	.@count += callsub( S_Hunt, 12631, "Procella's Request 3", 1001463, 13890900,0 );
+	.@count += callsub( S_Hunt, 12632, "Procella's Request 4", 1001463, 13890900,0 );
+
+	.@count += callsub( S_Hunt, 12633, "Diluvio's Request 1", 1001462, 13890900,0 );	// Energy_Of_Water
+	.@count += callsub( S_Hunt, 12634, "Diluvio's Request 2", 1001462, 13890900,0 );
+	.@count += callsub( S_Hunt, 12635, "Diluvio's Request 3", 1001462, 13890900,0 );
+	.@count += callsub( S_Hunt, 12636, "Diluvio's Request 4", 1001462, 13890900,0 );
+
+	.@count += callsub( S_Hunt, 12637, "Serpens's Request 1", 1001465, 27176580,0 );	// Grace_Of_Spirit
+	.@count += callsub( S_Hunt, 12638, "Serpens's Request 2", 1001465, 27176580,0 );
+
+	.@count += callsub( S_Gathering,
+		12639,				// Quest ID
+		"Serpens's Request 3",	// Quest name
+		1001433,			// Required item ID
+		10,					// Required amount
+		1001461,			// Reward item ID
+		27176580,			// Base exp
+		0					// Job exp (unknown)
+	);
+	.@count += callsub( S_Gathering, 12640, "Serpens's Request 4", 1001434,10, 1001462, 27176580,0 );
+	.@count += callsub( S_Gathering, 12641, "Serpens's Request 5", 1001435,10, 1001463, 27176580,0 );
+	.@count += callsub( S_Gathering, 12642, "Serpens's Request 6", 1001436,10, 1001464, 27176580,0 );
+	.@count += callsub( S_Gathering, 12643, "Serpens's Request 7", 1001432,20, 1001465, 27176580,0 );
+
+	if (.@count == 0) {
+		mes "It appears that no special complaints have been handled. If you have handled a complaint related to spirits, please come back at any time. Thank you.";
+		close;
+	}
+	mes "------------";
+	mes "The above " + .@count + " complaints have been processed.";
+	close;
+
+S_Hunt:
+	if (checkquest(getarg(0),HUNTING) == 2) {
+		mes "^0000ff" + getarg(1) + " Completed^000000 - Compensation paid.";
+		erasequest getarg(0);
+		getitem getarg(2),1;
+		for ( .@i = 0; .@i < 10; ++.@i )
+			getexp getarg(3), getarg(4);
+		return 1;
+	}
+	return 0;
+	
+S_Gathering:
+	if (countitem(getarg(2)) >= getarg(3)) {
+		mes "^0000ff" + getarg(1) + " Completed^000000 - Compensation paid.";
+		erasequest getarg(0);
+		delitem getarg(2),getarg(3);
+		getitem getarg(4),1;
+		for ( .@i = 0; .@i < 10; ++.@i )
+			getexp getarg(5), getarg(6);
+		return 1;
+	}
+	return 0;
+
+OnInit:
+	setunittitle( getnpcid(0), "<Elemental Latest Model>" );
+
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12621,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12622,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12623,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12624,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12625,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12626,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12627,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12628,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12629,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12630,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12631,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12632,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12633,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12634,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12635,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12636,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12637,HUNTING) == 2" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "checkquest(12638,HUNTING) == 2" );
+
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(12639) == 1 && countitem(1001433) >= 10" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(12640) == 1 && countitem(1001434) >= 10" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(12641) == 1 && countitem(1001435) >= 10" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(12642) == 1 && countitem(1001436) >= 10" );
+	questinfo( QTYPE_QUEST2, QMARK_YELLOW, "isbegin_quest(12643) == 1 && countitem(1001432) >= 20" );
+	end;
+}
+
+
+// Exchange and enchants
+t_garden,129,123,2	script(CLOAKED)	Subspace vending machine#1	HEROS_IN_ORB_1,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "I cannot communicate with the barrier because I have too many types or weights of objects.";
+		close;
+	}
+	npctalk "Everything you want is here. What deal do you want?", "", bc_self;
+	switch( select( "Cancel", "Energy transaction by attribute", "Energy transaction by season", "Various consumable transaction" ) ) {
+	case 1:
+		end;
+	case 2:
+		callshop( "barter_t_garden_1" );
+		break;
+	case 3:
+		callshop( "barter_t_garden_2" );
+		break;
+	case 4:
+		callshop( "barter_t_garden_3" );
+		break;
+	}
+	end;
+
+OnInit:
+	setunittitle( getnpcid(0), "<Welcome to various goods trading>" );
+	end;
+}
+
+t_garden,132,120,2	script(CLOAKED)	Subspace vending machine#2	HEROS_IN_ORB_2,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "I cannot communicate with the barrier because I have too many types or weights of objects.";
+		close;
+	}
+	npctalk "This place specializes in equipment. What kind of deal do you want?", "", bc_self;
+	switch( select( "Cancel", "Purchase Circulation of Life Accessories", "Purchase Divine Beast's Cloak", "Upgrade Divine Beast's Cloak" ) ) {
+	case 1:
+		end;
+	case 2:
+		callshop( "barter_t_garden_4" );
+		end;
+	case 3:
+		callshop( "barter_t_garden_5" );
+		end;
+	case 4:
+		item_reform("Season_H_Upgrade");
+		end;
+	}
+	end;
+
+OnInit:
+	setunittitle( getnpcid(0), "<Clothing Upgrade Specialist>" );
+	end;
+}
+
+t_garden,135,117,2	script(CLOAKED)	Subspace vending machine#3	HEROS_IN_ORB_3,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "I cannot communicate with the barrier because I have too many types or weights of objects.";
+		close;
+	}
+	npctalk "We carefully enchant the equipment obtained from the Lake of Fire. Is there a menu you would like?", "", bc_self;
+	switch( select( "Divine Beast's Cloak - Spring", "Divine Beast's Cloak - Summer", "Divine Beast's Cloak - Fall", "Divine Beast's Cloak - Winter" ) ) {
+	case 1:
+		item_enchant(117);
+		break;
+	case 2:
+		item_enchant(119);
+		break;
+	case 3:
+		item_enchant(121);
+		break;
+	case 4:
+		item_enchant(123);
+		break;
+	}
+	end;
+
+OnInit:
+	setunittitle( getnpcid(0), "<Divine Cloak Enchantment>" );
+	end;
+}
+
+t_garden,138,114,2	script(CLOAKED)	Subspace vending machine#4	HEROS_IN_ORB_4,{
+	if (isbegin_quest(12620) != 2)
+		end;
+	if (checkweight(1201,1) == 0) {
+		mes "I cannot communicate with the barrier because I have too many types or weights of objects.";
+		close;
+	}
+	npctalk "We put great effort into enchanting circulating equipment. Is there a menu you would like?", "", bc_self;
+	switch( select( "Circle of Life Accessories", "Circle of Life-Spring", "Circle of Life-Summer", "Circle of Life-Autumn", "Circle of Life-Winter" ) ) {
+	case 1:
+		item_enchant(142);
+		break;
+	case 2:
+		item_enchant(118);
+		break;
+	case 3:
+		item_enchant(120);
+		break;
+	case 4:
+		item_enchant(122);
+		break;
+	case 5:
+		item_enchant(124);
+		break;
+	}
+	end;
+
+OnInit:
+	setunittitle( getnpcid(0), "<Circle of Life Ingent>" );
+	end;
+}
+
+
+// Storages
+-	shop	t_garden_shop	-1,501:-1
+
+t_garden,156,222,2	script	Functional Vending Machine#1	4_VENDING_MACHINE2,{
+	// switch( select( "Tool Dealer", "Storage 1 (100z)", "Storage 2 (100z)", "Storage 3 (100z)", "Use savepoint service" ) ) {
+	switch( select( "Tool Dealer", "Storage 1 (100z)", "", "", "Use savepoint service" ) ) {
+	case 1:
+		callshop( "t_garden_shop", 2 );
+		end;
+	case 2:
+		.@storage_num = 1;
+		break;
+	case 3:
+		.@storage_num = 2;
+		break;
+	case 4:
+		.@storage_num = 3;
+		break;
+	case 5:
+		npctalk "" + strcharinfo(0) + " your location has been safely saved.", "", bc_self;
+
+		.@num = atoi( strnpcinfo(2) );
+		if (.@num == 1)
+			savepoint "t_garden",156,220;
+		else if (.@num == 2)
+			savepoint "t_garden",97,135;
+		else if (.@num == 3)
+			savepoint "t_garden",90,115;
+		else if (.@num == 4)
+			savepoint "t_garden",137,106;
+		break;
+	}
+	if (Zeny < 100) {
+		npctalk "To use the Storage, please insert 100 zeny.", "", bc_self;
+		end;
+	}
+	Zeny -= 100;
+	npctalk "I will open storage number " + .@storage_num + ". Thank you for using it.", "", bc_self;
+	openstorage;
+	end;
+
+OnInit:
+	questinfo( QTYPE_CLICKME, QMARK_YELLOW, "isbegin_quest(12592) == 2" );
+	end;
+}
+t_garden,97,138,6	duplicate(Functional Vending Machine#1)	Functional Vending Machine#2	4_VENDING_MACHINE2
+t_garden,91,116,2	duplicate(Functional Vending Machine#1)	Functional Vending Machine#3	4_VENDING_MACHINE2
+t_garden,144,116,2	duplicate(Functional Vending Machine#1)	Functional Vending Machine#4	4_VENDING_MACHINE2

+ 14 - 8
npc/re/quests/quests_18.txt

@@ -12253,18 +12253,24 @@ rachel,70,135,4	script(CLOAKED)	Mejai#E18_7	4_M_DST_CHILD,{
 		mes "Grand opening over! Shall we now put our hearts into our work?";
 		mes "Grand opening over! Shall we now put our hearts into our work?";
 		next;
 		next;
 	}
 	}
-	setpcblock PCBLOCK_NPC, true;
-	if (checkquest(5937,PLAYTIME) != 2)
-		npctalk "Mejai: Hello. Let's do our best today too.", "Mejai#E18_7", bc_self;
-	else {
+	switch( checkquest(5937,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		setpcblock PCBLOCK_NPC, true;
 		npctalk "Mejai: Come on! Today's work is done.", "Mejai#E18_7", bc_self;
 		npctalk "Mejai: Come on! Today's work is done.", "Mejai#E18_7", bc_self;
 		sleep2 1000;
 		sleep2 1000;
 		setpcblock PCBLOCK_NPC, false;
 		setpcblock PCBLOCK_NPC, false;
 		npctalk "Mejai: Go home and be faithful to your family. It's not like this is the only thing you have to do.", "Mejai#E18_7", bc_self;
 		npctalk "Mejai: Go home and be faithful to your family. It's not like this is the only thing you have to do.", "Mejai#E18_7", bc_self;
 		end;
 		end;
+	case 2:
+		setpcblock PCBLOCK_NPC, true;
+		npctalk "Mejai: Hello. Let's do our best today too.", "Mejai#E18_7", bc_self;
+		sleep2 1000;
+		setpcblock PCBLOCK_NPC, false;
+		break;
 	}
 	}
-	sleep2 1000;
-	setpcblock PCBLOCK_NPC, false;
 	switch( select( "I'm currently busy..", "Harvesting Half Flowers", "Delivering Half Flowers" ) ) {
 	switch( select( "I'm currently busy..", "Harvesting Half Flowers", "Delivering Half Flowers" ) ) {
 	case 1:
 	case 1:
 		npctalk "Mejai: It seems you're busy with something? Please come see me when you're free.", "Mejai#E18_7", bc_self;
 		npctalk "Mejai: It seems you're busy with something? Please come see me when you're free.", "Mejai#E18_7", bc_self;
@@ -13012,7 +13018,7 @@ wolfvill,164,137,3	script	Emmet#emet	4_EP18_GW_WOMAN01,{
 		mes "I mean, the Amethyst Fragment.";
 		mes "I mean, the Amethyst Fragment.";
 		mes "Please select the part you want to enchant.";
 		mes "Please select the part you want to enchant.";
 		next;
 		next;
-		switch( select( "Armor", "Coat", "Shoes", "Right(R) Accessory", "Left(L) Accessory" ) ) {
+		switch( select( "Armor", "Garment", "Shoes", "Right(R) Accessory", "Left(L) Accessory" ) ) {
 		case 1:
 		case 1:
 			mes "[Emmet]";
 			mes "[Emmet]";
 			mes "You're enchanting the armor, I see.";
 			mes "You're enchanting the armor, I see.";
@@ -13021,7 +13027,7 @@ wolfvill,164,137,3	script	Emmet#emet	4_EP18_GW_WOMAN01,{
 			end;
 			end;
 		case 2:
 		case 2:
 			mes "[Emmet]";
 			mes "[Emmet]";
-			mes "You're enchanting the footwear, I see.";
+			mes "You're enchanting the garment, I see.";
 			close2;
 			close2;
 			item_enchant(2);
 			item_enchant(2);
 			end;
 			end;

+ 1 - 0
npc/re/scripts_athena.conf

@@ -227,6 +227,7 @@ npc: npc/re/quests/seals/megingard_seal.txt
 // --------------------------------------------------------------
 // --------------------------------------------------------------
 npc: npc/re/quests/cooking_quest.txt
 npc: npc/re/quests/cooking_quest.txt
 //npc: npc/re/quests/cupet.txt
 //npc: npc/re/quests/cupet.txt
+npc: npc/re/quests/garden_of_time.txt
 npc: npc/re/quests/HelpMeShorty.txt
 npc: npc/re/quests/HelpMeShorty.txt
 npc: npc/re/quests/homun_s.txt
 npc: npc/re/quests/homun_s.txt
 npc: npc/re/quests/illusion_investigation.txt
 npc: npc/re/quests/illusion_investigation.txt

+ 1 - 0
npc/re/scripts_monsters.conf

@@ -30,6 +30,7 @@ npc: npc/re/mobs/dungeons/dew_dun.txt
 npc: npc/re/mobs/dungeons/dic_dun.txt
 npc: npc/re/mobs/dungeons/dic_dun.txt
 npc: npc/re/mobs/dungeons/ecl_tdun.txt
 npc: npc/re/mobs/dungeons/ecl_tdun.txt
 npc: npc/re/mobs/dungeons/ein_dun.txt
 npc: npc/re/mobs/dungeons/ein_dun.txt
+npc: npc/re/mobs/dungeons/for_dun.txt
 npc: npc/re/mobs/dungeons/gef_dun.txt
 npc: npc/re/mobs/dungeons/gef_dun.txt
 npc: npc/re/mobs/dungeons/gefenia.txt
 npc: npc/re/mobs/dungeons/gefenia.txt
 npc: npc/re/mobs/dungeons/glastheim.txt
 npc: npc/re/mobs/dungeons/glastheim.txt

+ 5 - 0
npc/test/ci/8886.txt

@@ -0,0 +1,5 @@
+-	script	8886#ci	-1,{
+OnInit:
+	atcommand "@broadcast Test";
+	end;
+}

+ 27 - 0
rAthena.slnLaunch

@@ -0,0 +1,27 @@
+[
+  {
+    "Name": "All Servers",
+    "Projects": [
+      {
+        "Path": "src\\login\\login-server.vcxproj",
+        "Action": "Start",
+        "DebugTarget": "Local Windows Debugger"
+      },
+      {
+        "Path": "src\\char\\char-server.vcxproj",
+        "Action": "Start",
+        "DebugTarget": "Local Windows Debugger"
+      },
+      {
+        "Path": "src\\map\\map-server.vcxproj",
+        "Action": "Start",
+        "DebugTarget": "Local Windows Debugger"
+      },
+      {
+        "Path": "src\\web\\web-server.vcxproj",
+        "Action": "Start",
+        "DebugTarget": "Local Windows Debugger"
+      }
+    ]
+  }
+]

+ 1 - 1
sql-files/item_db_etc.sql

@@ -1916,7 +1916,7 @@ REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7770,'Sweet_Rice','Sweet Rice','Etc',10);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7770,'Sweet_Rice','Sweet Rice','Etc',10);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7771,'Lotus_Leaf','Lotus Leaf','Etc',10);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7771,'Lotus_Leaf','Lotus Leaf','Etc',10);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7772,'String','String','Etc',10);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7772,'String','String','Etc',10);
-REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7773,'War_Badge','Wat Badge','Etc',100,true,true,true,true,true,true,true);
+REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7773,'War_Badge','War Badge','Etc',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7774,'Chung_E_Ticket','Green Maiden Ticket','Etc',10);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7774,'Chung_E_Ticket','Green Maiden Ticket','Etc',10);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7775,'Spring_Rabbit_Ticket','Spring Rabbit Ticket','Etc',10);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7775,'Spring_Rabbit_Ticket','Spring Rabbit Ticket','Etc',10);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7776,'Max_Weight_Up_Scroll','Gym Pass','Etc',10,100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7776,'Max_Weight_Up_Scroll','Gym Pass','Etc',10,100,true,true,true,true,true,true,true);

+ 1 - 1
sql-files/item_db_re_etc.sql

@@ -2909,7 +2909,7 @@ REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VAL
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7770,'Sweet_Rice','Sweet Rice','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7770,'Sweet_Rice','Sweet Rice','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7771,'Lotus_Leaf','Lotus Leaf','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7771,'Lotus_Leaf','Lotus Leaf','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7772,'String','String','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7772,'String','String','Etc',10);
-REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7773,'War_Badge','Wat Badge','Etc',100,true,true,true,true,true,true,true);
+REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nocart`,`trade_nostorage`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7773,'War_Badge','War Badge','Etc',100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7774,'Chung_E_Ticket','Green Maiden Ticket','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`) VALUES (7774,'Chung_E_Ticket','Green Maiden Ticket','Etc',10);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7775,'Spring_Rabbit_Ticket','Spring Rabbit Ticket','Etc',10,100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7775,'Spring_Rabbit_Ticket','Spring Rabbit Ticket','Etc',10,100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7776,'Max_Weight_Up_Scroll','Gym Pass','Etc',10,100,true,true,true,true,true,true,true);
 REPLACE INTO `item_db_re` (`id`,`name_aegis`,`name_english`,`type`,`weight`,`trade_override`,`trade_nodrop`,`trade_notrade`,`trade_nosell`,`trade_nocart`,`trade_noguildstorage`,`trade_nomail`,`trade_noauction`) VALUES (7776,'Max_Weight_Up_Scroll','Gym Pass','Etc',10,100,true,true,true,true,true,true,true);

+ 25 - 2
sql-files/main.sql

@@ -527,6 +527,7 @@ CREATE TABLE IF NOT EXISTS `guild_expulsion` (
   `account_id` int(11) unsigned NOT NULL default '0',
   `account_id` int(11) unsigned NOT NULL default '0',
   `name` varchar(24) NOT NULL default '',
   `name` varchar(24) NOT NULL default '',
   `mes` varchar(40) NOT NULL default '',
   `mes` varchar(40) NOT NULL default '',
+  `char_id` int(11) unsigned NOT NULL default '0',
   PRIMARY KEY  (`guild_id`,`name`)
   PRIMARY KEY  (`guild_id`,`name`)
 ) ENGINE=MyISAM;
 ) ENGINE=MyISAM;
 
 
@@ -671,8 +672,8 @@ CREATE TABLE IF NOT EXISTS `homunculus` (
   `luk` smallint(4) unsigned NOT NULL default '0',
   `luk` smallint(4) unsigned NOT NULL default '0',
   `hp` int(11) unsigned NOT NULL default '0',
   `hp` int(11) unsigned NOT NULL default '0',
   `max_hp` int(11) unsigned NOT NULL default '0',
   `max_hp` int(11) unsigned NOT NULL default '0',
-  `sp` int(11) NOT NULL default '0',
-  `max_sp` int(11) NOT NULL default '0',
+  `sp` int(11) unsigned NOT NULL default '0',
+  `max_sp` int(11) unsigned NOT NULL default '0',
   `skill_point` smallint(4) unsigned NOT NULL default '0',
   `skill_point` smallint(4) unsigned NOT NULL default '0',
   `alive` tinyint(2) NOT NULL default '1',
   `alive` tinyint(2) NOT NULL default '1',
   `rename_flag` tinyint(2) NOT NULL default '0',
   `rename_flag` tinyint(2) NOT NULL default '0',
@@ -1054,6 +1055,28 @@ CREATE TABLE IF NOT EXISTS `skill_homunculus` (
   PRIMARY KEY  (`homun_id`,`id`)
   PRIMARY KEY  (`homun_id`,`id`)
 ) ENGINE=MyISAM;
 ) ENGINE=MyISAM;
 
 
+--
+-- Table structure for table `skillcooldown_homunculus`
+--
+
+CREATE TABLE IF NOT EXISTS `skillcooldown_homunculus` (
+  `homun_id` int(11) NOT NULL,
+  `skill` smallint(11) unsigned NOT NULL DEFAULT '0',
+  `tick` bigint(20) NOT NULL,
+  PRIMARY KEY (`homun_id`)
+) ENGINE=MyISAM;
+
+--
+-- Table structure for table `skillcooldown_mercenary`
+--
+
+CREATE TABLE IF NOT EXISTS `skillcooldown_mercenary` (
+  `mer_id` int(11) NOT NULL,
+  `skill` smallint(11) unsigned NOT NULL DEFAULT '0',
+  `tick` bigint(20) NOT NULL,
+  PRIMARY KEY (`mer_id`)
+) ENGINE=MyISAM;
+
 --
 --
 -- Table structure for table `storage`
 -- Table structure for table `storage`
 --
 --

+ 2 - 0
sql-files/mob_db.sql

@@ -65,6 +65,8 @@ CREATE TABLE `mob_db` (
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_ep16_def` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_edda_arunafeltz` tinyint(1) unsigned DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,

+ 2 - 0
sql-files/mob_db2.sql

@@ -65,6 +65,8 @@ CREATE TABLE `mob_db2` (
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_ep16_def` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_edda_arunafeltz` tinyint(1) unsigned DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,

+ 2 - 0
sql-files/mob_db2_re.sql

@@ -67,6 +67,8 @@ CREATE TABLE `mob_db2_re` (
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_ep16_def` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_edda_arunafeltz` tinyint(1) unsigned DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,

+ 2 - 0
sql-files/mob_db_re.sql

@@ -67,6 +67,8 @@ CREATE TABLE `mob_db_re` (
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_ep16_def` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_edda_arunafeltz` tinyint(1) unsigned DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,

+ 1 - 1
sql-files/upgrades/upgrade_20220222_logs.sql

@@ -1,5 +1,5 @@
 ALTER TABLE `picklog`
 ALTER TABLE `picklog`
-	MODIFY `type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','$','F','Y','Z','Q','H','J') NOT NULL default 'P'
+	MODIFY `type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','$','F','Y','Z','Q','H','J', 'W') NOT NULL default 'P'
 ;
 ;
 
 
 ALTER TABLE `zenylog`
 ALTER TABLE `zenylog`

+ 1 - 0
sql-files/upgrades/upgrade_20240914.sql

@@ -0,0 +1 @@
+ALTER TABLE `guild_expulsion` ADD COLUMN `char_id` int(11) unsigned NOT NULL default '0';

+ 3 - 0
sql-files/upgrades/upgrade_20241005.sql

@@ -0,0 +1,3 @@
+ALTER TABLE `homunculus`
+	CHANGE COLUMN `sp` `sp` INT(11) UNSIGNED NOT NULL DEFAULT '0',
+	CHANGE COLUMN `max_sp` `max_sp` INT(11) UNSIGNED NOT NULL DEFAULT '0';

+ 8 - 0
sql-files/upgrades/upgrade_20241026.sql

@@ -0,0 +1,8 @@
+ALTER TABLE `mob_db`
+	ADD COLUMN `racegroup_edda_arunafeltz` tinyint(1) unsigned DEFAULT NULL;
+ALTER TABLE `mob_db2`
+	ADD COLUMN `racegroup_edda_arunafeltz` tinyint(1) unsigned DEFAULT NULL;
+ALTER TABLE `mob_db_re`
+	ADD COLUMN `racegroup_edda_arunafeltz` tinyint(1) unsigned DEFAULT NULL;
+ALTER TABLE `mob_db2_re`
+	ADD COLUMN `racegroup_edda_arunafeltz` tinyint(1) unsigned DEFAULT NULL;

+ 13 - 0
sql-files/upgrades/upgrade_20241216.sql

@@ -0,0 +1,13 @@
+CREATE TABLE IF NOT EXISTS `skillcooldown_homunculus` (
+  `homun_id` int(11) NOT NULL,
+  `skill` smallint(11) unsigned NOT NULL DEFAULT '0',
+  `tick` bigint(20) NOT NULL,
+  PRIMARY KEY (`homun_id`)
+) ENGINE=MyISAM;
+
+CREATE TABLE IF NOT EXISTS `skillcooldown_mercenary` (
+  `mer_id` int(11) NOT NULL,
+  `skill` smallint(11) unsigned NOT NULL DEFAULT '0',
+  `tick` bigint(20) NOT NULL,
+  PRIMARY KEY (`mer_id`)
+) ENGINE=MyISAM;

+ 2 - 2
src/char/CMakeLists.txt

@@ -14,8 +14,8 @@ file(GLOB CHAR_SOURCES_CXX ${CHAR_SOURCE_DIR}/*.cpp)
 set(CHAR_SOURCES ${CHAR_SOURCES_C} ${CHAR_SOURCES_CXX})
 set(CHAR_SOURCES ${CHAR_SOURCES_C} ${CHAR_SOURCES_CXX})
 #message( STATUS "CHAR_SOURCES="${CHAR_SOURCES})
 #message( STATUS "CHAR_SOURCES="${CHAR_SOURCES})
 set( DEPENDENCIES common )
 set( DEPENDENCIES common )
-set( LIBRARIES ${GLOBAL_LIBRARIES} )
-set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS} ${RA_INCLUDE_DIRS} )
+set( LIBRARIES ${GLOBAL_LIBRARIES} ${MYSQL_LIBRARIES} )
+set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS} ${RA_INCLUDE_DIRS} ${MYSQL_INCLUDE_DIRS} )
 set( DEFINITIONS "${GLOBAL_DEFINITIONS} ${COMMON_BASE_DEFINITIONS}" )
 set( DEFINITIONS "${GLOBAL_DEFINITIONS} ${COMMON_BASE_DEFINITIONS}" )
 set( SOURCE_FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} ${CHAR_HEADERS} ${CHAR_SOURCES} )
 set( SOURCE_FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} ${CHAR_HEADERS} ${CHAR_SOURCES} )
 source_group( common FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} )
 source_group( common FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} )

Some files were not shown because too many files changed in this diff