Bladeren bron

Merge branch 'master' into cleanup/storages_optimization

aleos89 8 jaren geleden
bovenliggende
commit
bd36b294ad
100 gewijzigde bestanden met toevoegingen van 2453 en 1248 verwijderingen
  1. 1 0
      .gitignore
  2. 2 5
      README.md
  3. 1 4
      README.txt
  4. 122 0
      appveyor.yml
  5. 5 0
      conf/battle/gm.conf
  6. 4 0
      conf/battle/monster.conf
  7. 8 10
      conf/battle/player.conf
  8. 4 1
      conf/char_athena.conf
  9. 1 1
      conf/msg_conf/map_msg.conf
  10. 1 1
      conf/msg_conf/map_msg_chn.conf
  11. 1 1
      conf/msg_conf/map_msg_frn.conf
  12. 1 1
      conf/msg_conf/map_msg_grm.conf
  13. 1 1
      conf/msg_conf/map_msg_idn.conf
  14. 1 1
      conf/msg_conf/map_msg_por.conf
  15. 1 1
      conf/msg_conf/map_msg_rus.conf
  16. 1 1
      conf/msg_conf/map_msg_spn.conf
  17. 1 1
      conf/msg_conf/map_msg_tha.conf
  18. 264 6
      db/const.txt
  19. 4 0
      db/import-tmpl/item_randomopt_db.txt
  20. 27 0
      db/import-tmpl/job_noenter_map.txt
  21. 1 1
      db/import-tmpl/mob_race2_db.txt
  22. 7 4
      db/import-tmpl/skill_db.txt
  23. 1 1
      db/import-tmpl/skill_tree.txt
  24. 1 0
      db/item_nouse.txt
  25. 3 0
      db/packet_db.txt
  26. 1 1
      db/pre-re/item_combo_db.txt
  27. 16 16
      db/pre-re/item_db.txt
  28. 4 0
      db/pre-re/item_randomopt_db.txt
  29. 27 0
      db/pre-re/job_noenter_map.txt
  30. 10 10
      db/pre-re/mob_race2_db.txt
  31. 1 1
      db/pre-re/skill_cast_db.txt
  32. 6 6
      db/pre-re/skill_db.txt
  33. 1 1
      db/pre-re/skill_require_db.txt
  34. 29 29
      db/pre-re/skill_tree.txt
  35. 2 3
      db/pre-re/skill_unit_db.txt
  36. 1 0
      db/re/instance_db.txt
  37. 41 10
      db/re/item_combo_db.txt
  38. 322 292
      db/re/item_db.txt
  39. 66 1
      db/re/item_flag.txt
  40. 21 0
      db/re/item_misc.txt
  41. 504 504
      db/re/item_package.txt
  42. 200 0
      db/re/item_randomopt_db.txt
  43. 32 2
      db/re/item_trade.txt
  44. 27 0
      db/re/job_noenter_map.txt
  45. 124 11
      db/re/mob_db.txt
  46. 15 11
      db/re/mob_race2_db.txt
  47. 6 0
      db/re/mob_skill_db.txt
  48. 18 3
      db/re/quest_db.txt
  49. 1 1
      db/re/skill_cast_db.txt
  50. 8 8
      db/re/skill_db.txt
  51. 1 1
      db/re/skill_require_db.txt
  52. 29 29
      db/re/skill_tree.txt
  53. 2 3
      db/re/skill_unit_db.txt
  54. 7 3
      doc/item_bonus.txt
  55. 101 22
      doc/script_commands.txt
  56. 4 4
      npc/battleground/flavius/flavius_enter.txt
  57. 4 4
      npc/battleground/tierra/tierra_enter.txt
  58. 0 4
      npc/custom/battleground/unofficial/bg_common.txt
  59. 2 2
      npc/custom/battleground/unofficial/bg_flavius_01.txt
  60. 2 2
      npc/custom/battleground/unofficial/bg_flavius_02.txt
  61. 2 2
      npc/custom/battleground/unofficial/bg_kvm01.txt
  62. 2 2
      npc/custom/battleground/unofficial/bg_kvm02.txt
  63. 2 2
      npc/custom/battleground/unofficial/bg_kvm03.txt
  64. 3 3
      npc/custom/battleground/unofficial/bg_tierra_01.txt
  65. 3 3
      npc/custom/battleground/unofficial/bg_tierra_02.txt
  66. 1 1
      npc/custom/breeder.txt
  67. 1 1
      npc/custom/events/holiday/hallow06.txt
  68. 4 4
      npc/custom/jobmaster.txt
  69. 1 1
      npc/custom/platinum_skills.txt
  70. 6 4
      npc/custom/quests/hunting_missions.txt
  71. 1 1
      npc/custom/quests/quest_shop.txt
  72. 77 15
      npc/custom/quests/valhallen.txt
  73. 2 2
      npc/custom/woe_controller.txt
  74. 0 1
      npc/events/MemorialDay_2008.txt
  75. 0 18
      npc/events/christmas_2005.txt
  76. 0 1
      npc/events/halloween_2006.txt
  77. 32 29
      npc/instances/EndlessTower.txt
  78. 12 3
      npc/instances/SealedShrine.txt
  79. 2 0
      npc/jobs/2-1/assassin.txt
  80. 47 46
      npc/jobs/2-2a/Creator.txt
  81. 5 5
      npc/jobs/novice/supernovice.txt
  82. 3 2
      npc/merchants/ammo_boxes.txt
  83. 3 2
      npc/merchants/ammo_dealer.txt
  84. 1 1
      npc/merchants/clothes_dyer.txt
  85. 1 1
      npc/merchants/socket_enchant.txt
  86. 2 2
      npc/merchants/socket_enchant2.txt
  87. 25 0
      npc/other/CashShop_Functions.txt
  88. 44 25
      npc/other/Global_Functions.txt
  89. 1 1
      npc/other/arena/arena_aco.txt
  90. 26 5
      npc/pre-re/jobs/novice/novice.txt
  91. 4 4
      npc/quests/dandelion_request.txt
  92. 5 5
      npc/quests/doomed_swords.txt
  93. 15 15
      npc/quests/first_class/tu_ma_th01.txt
  94. 1 1
      npc/quests/first_class/tu_magician01.txt
  95. 2 2
      npc/quests/first_class/tu_sword.txt
  96. 2 5
      npc/quests/juice_maker.txt
  97. 1 1
      npc/quests/newgears/2004_headgears.txt
  98. 0 1
      npc/quests/obb_quest.txt
  99. 6 4
      npc/quests/quests_13_1.txt
  100. 9 2
      npc/quests/quests_13_2.txt

+ 1 - 0
.gitignore

@@ -101,6 +101,7 @@ Thumbs.db
 # /vcproj-14/
 .vs
 *.VC.db
+*.VC.opendb
 /vcproj-14/char-server
 /vcproj-14/login-server
 /vcproj-14/mapcache

+ 2 - 5
README.md

@@ -1,7 +1,7 @@
 rAthena
 =======
 
-Build Status: [![Build Status](https://travis-ci.org/rathena/rathena.png?branch=master)](https://travis-ci.org/rathena/rathena)
+Build Status: [![Build Status](https://travis-ci.org/rathena/rathena.png?branch=master)](https://travis-ci.org/rathena/rathena) [![Build status](https://ci.appveyor.com/api/projects/status/8574b8nlwd57loda/branch/master?svg=true)](https://ci.appveyor.com/project/rAthenaAPI/rathena/branch/master)
 
 Table of Contents
 ---------
@@ -65,10 +65,7 @@ relevant to your Operation System, please refer to the Wiki (links at the end of
 	* Type:
 		* (For CentOS)
 
-				yum install gcc make mysql mysql-devel mysql-server pcre-devel zlib-devel
-				rpm -Uvhhttp://repo.webtatic.com/yum/centos/5/latest.rpm
-				yum install --enablerepo=webtatic git-all
-				yum install --enablerepo=webtatic --disableexcludes=main git-all
+				yum install gcc make mysql mysql-devel mysql-server pcre-devel zlib-devel git
 		* (For Debian)
 
 				apt-get install git make gcc libmysqlclient-dev zlib1g-dev libpcre3-dev

+ 1 - 4
README.txt

@@ -77,10 +77,7 @@ Windows
 Linux
 	* Type:
 	(For CentOS)
-		yum install gcc make mysql mysql-devel mysql-server pcre-devel zlib-devel
-		rpm -Uvhhttp://repo.webtatic.com/yum/centos/5/latest.rpm
-		yum install --enablerepo=webtatic git-all
-		yum install --enablerepo=webtatic --disableexcludes=main git-all
+		yum install gcc make mysql mysql-devel mysql-server pcre-devel zlib-devel git
 	(For Debian)
 		apt-get install git make gcc libmysqlclient-dev zlib1g-dev libpcre3-dev
 	* Type:

+ 122 - 0
appveyor.yml

@@ -0,0 +1,122 @@
+image: Visual Studio 2015
+# This is the default location, but we put it here for safety reasons, since we use it in our test script
+clone_folder: c:\projects\rathena
+# We do not need the git history for our integration tests
+clone_depth: 50
+version: '{branch}-{build}'
+pull_requests:
+  do_not_increment_build_number: true
+environment:
+  matrix:
+  - VisualStudioVersion: 10.0
+    Solution: rAthena-10.sln
+  - VisualStudioVersion: 11.0
+    Solution: rAthena-12.sln
+  - VisualStudioVersion: 12.0
+    Solution: rAthena-13.sln
+  - VisualStudioVersion: 14.0
+    Solution: rAthena-14.sln
+  - VisualStudioVersion: 10.0
+    Solution: rAthena-10.sln
+    Defines: PRERE
+  - VisualStudioVersion: 11.0
+    Solution: rAthena-12.sln
+    Defines: PRERE
+  - VisualStudioVersion: 12.0
+    Solution: rAthena-13.sln
+    Defines: PRERE
+  - VisualStudioVersion: 14.0
+    Solution: rAthena-14.sln
+    Defines: PRERE
+platform:
+  - Win32
+configuration:
+  - Debug
+# Disable Release for now, since do not want to have any optimization and have access to debug infos on crash
+#  - Release
+matrix:
+  fast_finish: true
+build_script:
+- cmd: msbuild %Solution% /p:DefineConstants=%Defines%
+services: mysql
+test_script:
+- cmd: >-
+    rem Set up the environment variables we need
+    
+    set DB_HOST=127.0.0.1
+    
+    set DB_ROOT=root
+    
+    set DB_ROOTPW=Password12!
+    
+    set DB_USER=ragnarok
+    
+    set DB_USERPW=ragnarok
+    
+    set DB_NAME=ragnarok
+    
+    set MYSQL="C:\Program Files\MySql\MySQL Server 5.7\bin\mysql.exe"
+    
+    rem Setting creation
+    
+    cd C:\projects\rathena
+    
+    echo map_server_ip: %DB_HOST%>> conf\import\inter_conf.txt
+    
+    echo map_server_id: %DB_USER%>> conf\import\inter_conf.txt
+    
+    echo map_server_pw: %DB_PASS%>> conf\import\inter_conf.txt
+    
+    echo map_server_db: %DB_NAME%>> conf\import\inter_conf.txt
+    
+    echo log_db_ip: %DB_HOST%>> conf\import\inter_conf.txt
+    
+    echo log_db_id: %DB_USER%>> conf\import\inter_conf.txt
+    
+    echo log_db_pw: %DB_USERPW%>> conf\import\inter_conf.txt
+    
+    echo log_db_db: %DB_NAME%>> conf\import\inter_conf.txt
+    
+    rem MySQL database setup
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% -e "CREATE DATABASE %DB_NAME%;"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\main.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\logs.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_cash_db.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_cash_db2.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_db.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_db2.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_db_re.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_db2_re.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_db.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_db2.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_db_re.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_db2_re.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_skill_db.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_skill_db2.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_skill_db_re.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_skill_db2_re.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\roulette_default_data.sql"
+    
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% -e "GRANT ALL ON *.* TO '%DB_USER%'@'%DB_HOST%' IDENTIFIED BY '%DB_USERPW%';"
+    
+    rem Start the map server
+    
+    map-server.exe --run-once

+ 5 - 0
conf/battle/gm.conf

@@ -27,3 +27,8 @@ ban_hack_trade: 5
 // modifies @iteminfo to not display the minimum item drop rate (since it can't tell the mob level)
 // modifies @whodrops to display the users' real drop rate as per renewal_drop formula
 atcommand_mobinfo_type: 1
+
+// Should atcommands trigger level up events for NPCs? (Note 1)
+// This option is for @baselevelup and @joblevelup
+// Default: no
+atcommand_levelup_events: no

+ 4 - 0
conf/battle/monster.conf

@@ -228,6 +228,10 @@ mob_slave_keep_target: yes
 // See http://irowiki.org/wiki/MVP#Gravestone
 mvp_tomb_enabled: yes
 
+// Delay before the MVP tomb is spawned.
+// Default: 9 seconds
+mvp_tomb_delay: 9000
+
 // Whether or not the size of specially summoned mobs influences experience, drop rates,
 // and stats. The rates will be doubled for large mobs, and halved for small ones.
 // This is only invoked under the 'monster' command, @monsterbig, and @monstersmall. (Note 1)

+ 8 - 10
conf/battle/player.conf

@@ -180,17 +180,15 @@ vip_base_exp_increase: 50
 // Default: 50
 vip_job_exp_increase: 50
 
-// Experience penalty rate multiplier for non-VIP accounts.
-// Multiplies the 'death_penalty_base' and 'death_penalty_job' settings in 'conf/battle/exp.conf'.
-// Default: 3 (3*100 = 3% penalty)
-vip_exp_penalty_base_normal: 3
-vip_exp_penalty_job_normal: 3
-
 // Experience penalty rate multiplier for VIP accounts.
-// Multiplies the 'death_penalty_base' and 'death_penalty_job' settings in 'conf/battle/exp.conf'.
-// Default: 1 (1*100 = 1% penalty)
-vip_exp_penalty_base: 1
-vip_exp_penalty_job: 1
+// Default: 100 (100 = 1% penalty)
+vip_exp_penalty_base: 100
+vip_exp_penalty_job: 100
+
+// Zeny penalty for VIP accounts.
+// Zeny loss only happens if the player dies from another player.
+// Default: 0 (100 = 1% penalty)
+vip_zeny_penalty: 0
 
 // Battle Manual experience increase. Setting to 0 will disable.
 // - Regular/Thick Battle Manual: 50+(50/X) = 75%

+ 4 - 1
conf/char_athena.conf

@@ -172,11 +172,14 @@ char_del_delay: 86400
 
 // Restrict character deletion by email address or birthdate.
 // This restricts players from changing the langtype and deleting characters.
-// For birthdate, the client must be 20100803 or newer.
 // Defaults based on client date.
 // 1: Email address
 // 2: Birthdate
 // 3: Email address or Birthdate
+// IMPORTANT!
+// - This config only works for clients that send 0x0068 or 0x01fb for delete request.
+// - Use langtype 1 for newer clients (2013+), to use 0x01fb.
+// - Clients that are not using 0x0068 or 0x01fb, only use birthdate (YYMMDD) as default.
 char_del_option: 2
 
 // What folder the DB files are in (item_db.txt, etc.)

+ 1 - 1
conf/msg_conf/map_msg.conf

@@ -279,7 +279,7 @@
 266: Some of your items cannot be vended and were removed from the shop.
 267: '%s' designated maps reset.
 268: Reloaded the Message of the Day.
-269: Displaying first %d out of %d matches
+269: Displaying first %d matches
 //@me output format
 270: * :%s %s: *
 271: You can't drop items on this map.

+ 1 - 1
conf/msg_conf/map_msg_chn.conf

@@ -283,7 +283,7 @@
 266: 你的某些物品不能被出售,它將從你的商店中被取消掉
 267: '%s' 該地圖被重置
 268: 重新載入今天的訊息
-269: 顯示 %d 分之 %d 關聯
+269: 顯示 %d 關聯
 //@me output format
 270: * :%s %s: *
 271: 在這張地圖你無法丟棄物品

+ 1 - 1
conf/msg_conf/map_msg_frn.conf

@@ -283,7 +283,7 @@
 266: Certains de vos objets ne peuvent pas être vendus et ont été supprimés du magasin.
 267: Carte '%s' réinitialisée.
 268: Re-lancement du message du jour.
-269: Affichage des premiers %d parmis %d trouvés
+269: Affichage des %d premiers résultats trouvés
 //@me output format
 270: * :%s %s: *
 271: Vous ne pouvez pas déposer d'objets sur cette carte.

+ 1 - 1
conf/msg_conf/map_msg_grm.conf

@@ -282,7 +282,7 @@
 266: Manche Items können nicht verkauft werden und werden aus dem Shop entfernt.
 267: '%s' bezeichnetete Maps resettet.
 268: Läd die Nachrichten vom Tag neu.
-269: Zeigt erst %d von %d treffern
+269: Zeigt die ersten %d Treffer an
 //@me output format
 270: * :%s %s: *
 271: Du kannst auf dieser Map keine Items droppen.

+ 1 - 1
conf/msg_conf/map_msg_idn.conf

@@ -279,7 +279,7 @@
 266: Beberapa item tidak dapat ditransaksikan dan telah dikeluarkan dari toko.
 267: '%s' map yang dipilih sudah diatur ulang.
 268: 'Pesan Hari Ini' sudah dimuat ulang.
-269: Menampilkan hasil %d dari %d
+269: Menampilkan hasil %d
 //@me format keluaran
 270: * :%s %s: *
 271: Kamu tidak bisa membuang item di map ini.

+ 1 - 1
conf/msg_conf/map_msg_por.conf

@@ -288,7 +288,7 @@
 266: Alguns de seus itens não podem ser vendidos e foram removidos de sua venda.
 267: '%s' mapas designados redefinidos.
 268: Recarregada Mensagem do Dia.
-269: Exibindo o primeiro %d de %d resultados
+269: Exibindo o primeiro %d resultados
 //Formato de saída do @me
 270: * :%s %s: *
 271: Você não pode derrubar itens neste mapa

+ 1 - 1
conf/msg_conf/map_msg_rus.conf

@@ -281,7 +281,7 @@
 266: Некоторые из ваших товаров не могут быть проданы, поэтому они удалены из магазина.
 267: '%s' обозначеных карт сброшено.
 268: Сообщение дня перезагружено.
-269: Показаны первые %d из %d результатов
+269: Показаны первые %d результатов
 // Сообщение команды @me
 270: * :%s %s: *
 271: Вы не можете выбрасывать предметы на этой локации.

+ 1 - 1
conf/msg_conf/map_msg_spn.conf

@@ -283,7 +283,7 @@
 266: Algunos de tus objetos se han retirado de la tienda porque no pueden venderse.
 267: Se han reiniciado los mapas designados a '%s'.
 268: Has actualizado el mensaje del día.
-269: Se muestran %d de un total de %d resultados.
+269: Se muestran %d resultados
 //Formato de @me
 270: * :%s %s: *
 271: No puedes tirar objetos al suelo en este mapa.

+ 1 - 1
conf/msg_conf/map_msg_tha.conf

@@ -283,7 +283,7 @@
 266: ÁÕºÒ§ Item ¢Í§¤Ø³äÁèÊÒÁÒö¹ÓÁÒµÑé§ÃéÒ¹¢Ò¢ͧä´é ¡ÃسҹÓÍÍ¡¨Ò¡ÃÒ¡ÒõÑé§ÃéÒ¹.
 267: '%s' designated maps reset.
 268: ¢éͤÇÒÁ»ÃШÓÇѹ ä´é¶Ù¡âËÅ´ãËÁèàÃÕºÃéÍÂáÅéÇ.
-269: áÊ´§¼Å¡Òäé¹ËÒ %d Íѹ´Ñºáá¨Ò¡·Ñé§ËÁ´ %d ·Õ辺
+269: áÊ´§¼Å¡Òäé¹ËÒ %d ·Õ辺
 //@me output format
 270: * :%s %s: *
 271: ¤Ø³äÁèÊÒÁÒöâ¹ item ŧ¾×é¹ã¹á¼¹·Õè¹Õéä´é.

+ 264 - 6
db/const.txt

@@ -467,6 +467,24 @@ IG_Chronosian_Lucky_Egg	449
 IG_Sanctuary_Lucky_Egg	450
 IG_Cyborg_Lucky_Egg	451
 IG_Undine_Lucky_Egg	452
+IG_God_Material_Box	453
+IG_Sealed_Mind_Box	454
+IG_Frozen_Egg_Costume	455
+IG_Headgear_Costume_Scroll	456
+IG_Flower_Blossom_Scroll	457
+IG_Seaside_Costume_Scroll	458
+IG_Smithy_Lucky_Egg	459
+IG_Ganymede_Lucky_Egg	460
+IG_LastAngel_LuckyScroll	461
+IG_Valkyrie_Lucky_Egg	462
+IG_Splash_Rainbow_Lucky_Egg	463
+IG_Shapeshifter_Costume	464
+IG_Almighty_Lucky_Egg	465
+IG_Burning_Feather_Costume_Scroll	466
+IG_Animal_Costume_Scroll	467
+IG_Midgard_Lucky_Scroll	468
+IG_Blessing_Scarlet_Egg	469
+IG_Mystical_Costume_Scroll	470
 
 EF_NONE	-1
 EF_HIT1	0
@@ -1568,6 +1586,252 @@ EF_TIME_ACCESSORY	1095
 EF_SPRITEMABLE	1096
 EF_TUNAPARTY	1097
 
+HAT_EF_BLOSSOM_FLUTTERING	1
+HAT_EF_MERMAID_LONGING	2
+HAT_EF_RL_BANISHING_BUSTER	3
+HAT_EF_LJOSALFAR	4
+HAT_EF_CLOCKING	5
+HAT_EF_SNOW	6
+HAT_EF_MAKEBLUR	7
+HAT_EF_SLEEPATTACK	8
+HAT_EF_GUMGANG	9
+HAT_EF_TALK_FROSTJOKE	10
+HAT_EF_DEMONSTRATION	11
+HAT_EF_FLUTTER_BUTTERFLY	12
+HAT_EF_ANGEL_FLUTTERING	13
+HAT_EF_BLESSING_OF_ANGELS	14
+HAT_EF_ELECTRIC	15
+HAT_EF_GREEN_FLOOR	16
+HAT_EF_SHRINK	17
+HAT_EF_VALHALLA_IDOL	18
+HAT_EF_ANGEL_STAIRS	19
+HAT_EF_GLOW_OF_NEW_YEAR	20
+HAT_EF_BOTTOM_FORTUNEKISS	21
+HAT_EF_PINKBODY	22
+HAT_EF_DOUBLEGUMGANG	23
+HAT_EF_GIANTBODY	24
+HAT_EF_GREEN99_6	25
+HAT_EF_CIRCLEPOWER	26
+HAT_EF_BOTTOM_BLOODYLUST	27
+HAT_EF_WATER_BELOW	28
+HAT_EF_LEVEL99_150	29
+HAT_EF_YELLOWFLY3	30
+HAT_EF_KAGEMUSYA	31
+HAT_EF_CHERRYBLOSSOM	32
+HAT_EF_STRANGELIGHTS	33
+HAT_EF_WL_TELEKINESIS_INTENSE	34
+HAT_EF_AB_OFFERTORIUM_RING	35
+HAT_EF_WHITEBODY2	36
+HAT_EF_SAKURA	37
+HAT_EF_CLOUD2	38
+HAT_EF_FEATHER_FLUTTERING	39
+HAT_EF_CAMELLIA_HAIR_PIN	40
+HAT_EF_JP_EV_EFFECT01	41
+HAT_EF_JP_EV_EFFECT02	42
+HAT_EF_JP_EV_EFFECT03	43
+HAT_EF_FLORAL_WALTZ	44
+HAT_EF_MAGICAL_FEATHER	45
+HAT_EF_HAT_EFFECT	46
+HAT_EF_BAKURETSU_HADOU	47
+HAT_EF_GOLD_SHOWER	48
+HAT_EF_WHITEBODY	49
+HAT_EF_WATER_BELOW2	50
+HAT_EF_FIREWORK  51
+
+RDMOPT_VAR_MAXHPAMOUNT	1
+RDMOPT_VAR_MAXSPAMOUNT	2
+RDMOPT_VAR_STRAMOUNT	3
+RDMOPT_VAR_AGIAMOUNT	4
+RDMOPT_VAR_VITAMOUNT	5
+RDMOPT_VAR_INTAMOUNT	6
+RDMOPT_VAR_DEXAMOUNT	7
+RDMOPT_VAR_LUKAMOUNT	8
+RDMOPT_VAR_MAXHPPERCENT	9
+RDMOPT_VAR_MAXSPPERCENT	10
+RDMOPT_VAR_HPACCELERATION	11
+RDMOPT_VAR_SPACCELERATION	12
+RDMOPT_VAR_ATKPERCENT	13
+RDMOPT_VAR_MAGICATKPERCENT	14
+RDMOPT_VAR_PLUSASPD	15
+RDMOPT_VAR_PLUSASPDPERCENT	16
+RDMOPT_VAR_ATTPOWER	17
+RDMOPT_VAR_HITSUCCESSVALUE	18
+RDMOPT_VAR_ATTMPOWER	19
+RDMOPT_VAR_ITEMDEFPOWER	20
+RDMOPT_VAR_MDEFPOWER	21
+RDMOPT_VAR_AVOIDSUCCESSVALUE	22
+RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE	23
+RDMOPT_VAR_CRITICALSUCCESSVALUE	24
+RDMOPT_ATTR_TOLERACE_NOTHING	25
+RDMOPT_ATTR_TOLERACE_WATER	26
+RDMOPT_ATTR_TOLERACE_GROUND	27
+RDMOPT_ATTR_TOLERACE_FIRE	28
+RDMOPT_ATTR_TOLERACE_WIND	29
+RDMOPT_ATTR_TOLERACE_POISON	30
+RDMOPT_ATTR_TOLERACE_SAINT	31
+RDMOPT_ATTR_TOLERACE_DARKNESS	32
+RDMOPT_ATTR_TOLERACE_TELEKINESIS	33
+RDMOPT_ATTR_TOLERACE_UNDEAD	34
+RDMOPT_ATTR_TOLERACE_ALL	35
+RDMOPT_DAMAGE_PROPERTY_NOTHING_USER	36
+RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET	37
+RDMOPT_DAMAGE_PROPERTY_WATER_USER	38
+RDMOPT_DAMAGE_PROPERTY_WATER_TARGET	39
+RDMOPT_DAMAGE_PROPERTY_GROUND_USER	40
+RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET	41
+RDMOPT_DAMAGE_PROPERTY_FIRE_USER	42
+RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET	43
+RDMOPT_DAMAGE_PROPERTY_WIND_USER	44
+RDMOPT_DAMAGE_PROPERTY_WIND_TARGET	45
+RDMOPT_DAMAGE_PROPERTY_POISON_USER	46
+RDMOPT_DAMAGE_PROPERTY_POISON_TARGET	47
+RDMOPT_DAMAGE_PROPERTY_SAINT_USER	48
+RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET	49
+RDMOPT_DAMAGE_PROPERTY_DARKNESS_USER	50
+RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET	51
+RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_USER	52
+RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET	53
+RDMOPT_DAMAGE_PROPERTY_UNDEAD_USER	54
+RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET	55
+RDMOPT_MDAMAGE_PROPERTY_NOTHING_USER	56
+RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET	57
+RDMOPT_MDAMAGE_PROPERTY_WATER_USER	58
+RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET	59
+RDMOPT_MDAMAGE_PROPERTY_GROUND_USER	60
+RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET	61
+RDMOPT_MDAMAGE_PROPERTY_FIRE_USER	62
+RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET	63
+RDMOPT_MDAMAGE_PROPERTY_WIND_USER	64
+RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET	65
+RDMOPT_MDAMAGE_PROPERTY_POISON_USER	66
+RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET	67
+RDMOPT_MDAMAGE_PROPERTY_SAINT_USER	68
+RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET	69
+RDMOPT_MDAMAGE_PROPERTY_DARKNESS_USER	70
+RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET	71
+RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER	72
+RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET	73
+RDMOPT_MDAMAGE_PROPERTY_UNDEAD_USER	74
+RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET	75
+RDMOPT_BODY_ATTR_NOTHING	76
+RDMOPT_BODY_ATTR_WATER	77
+RDMOPT_BODY_ATTR_GROUND	78
+RDMOPT_BODY_ATTR_FIRE	79
+RDMOPT_BODY_ATTR_WIND	80
+RDMOPT_BODY_ATTR_POISON	81
+RDMOPT_BODY_ATTR_SAINT	82
+RDMOPT_BODY_ATTR_DARKNESS	83
+RDMOPT_BODY_ATTR_TELEKINESIS	84
+RDMOPT_BODY_ATTR_UNDEAD	85
+RDMOPT_BODY_ATTR_ALL	86
+RDMOPT_RACE_TOLERACE_NOTHING	87
+RDMOPT_RACE_TOLERACE_UNDEAD	88
+RDMOPT_RACE_TOLERACE_ANIMAL	89
+RDMOPT_RACE_TOLERACE_PLANT	90
+RDMOPT_RACE_TOLERACE_INSECT	91
+RDMOPT_RACE_TOLERACE_FISHS	92
+RDMOPT_RACE_TOLERACE_DEVIL	93
+RDMOPT_RACE_TOLERACE_HUMAN	94
+RDMOPT_RACE_TOLERACE_ANGEL	95
+RDMOPT_RACE_TOLERACE_DRAGON	96
+RDMOPT_RACE_DAMAGE_NOTHING	97
+RDMOPT_RACE_DAMAGE_UNDEAD	98
+RDMOPT_RACE_DAMAGE_ANIMAL	99
+RDMOPT_RACE_DAMAGE_PLANT	100
+RDMOPT_RACE_DAMAGE_INSECT	101
+RDMOPT_RACE_DAMAGE_FISHS	102
+RDMOPT_RACE_DAMAGE_DEVIL	103
+RDMOPT_RACE_DAMAGE_HUMAN	104
+RDMOPT_RACE_DAMAGE_ANGEL	105
+RDMOPT_RACE_DAMAGE_DRAGON	106
+RDMOPT_RACE_MDAMAGE_NOTHING	107
+RDMOPT_RACE_MDAMAGE_UNDEAD	108
+RDMOPT_RACE_MDAMAGE_ANIMAL	109
+RDMOPT_RACE_MDAMAGE_PLANT	110
+RDMOPT_RACE_MDAMAGE_INSECT	111
+RDMOPT_RACE_MDAMAGE_FISHS	112
+RDMOPT_RACE_MDAMAGE_DEVIL	113
+RDMOPT_RACE_MDAMAGE_HUMAN	114
+RDMOPT_RACE_MDAMAGE_ANGEL	115
+RDMOPT_RACE_MDAMAGE_DRAGON	116
+RDMOPT_RACE_CRI_PERCENT_NOTHING	117
+RDMOPT_RACE_CRI_PERCENT_UNDEAD	118
+RDMOPT_RACE_CRI_PERCENT_ANIMAL	119
+RDMOPT_RACE_CRI_PERCENT_PLANT	120
+RDMOPT_RACE_CRI_PERCENT_INSECT	121
+RDMOPT_RACE_CRI_PERCENT_FISHS	122
+RDMOPT_RACE_CRI_PERCENT_DEVIL	123
+RDMOPT_RACE_CRI_PERCENT_HUMAN	124
+RDMOPT_RACE_CRI_PERCENT_ANGEL	125
+RDMOPT_RACE_CRI_PERCENT_DRAGON	126
+RDMOPT_RACE_IGNORE_DEF_PERCENT_NOTHING	127
+RDMOPT_RACE_IGNORE_DEF_PERCENT_UNDEAD	128
+RDMOPT_RACE_IGNORE_DEF_PERCENT_ANIMAL	129
+RDMOPT_RACE_IGNORE_DEF_PERCENT_PLANT	130
+RDMOPT_RACE_IGNORE_DEF_PERCENT_INSECT	131
+RDMOPT_RACE_IGNORE_DEF_PERCENT_FISHS	132
+RDMOPT_RACE_IGNORE_DEF_PERCENT_DEVIL	133
+RDMOPT_RACE_IGNORE_DEF_PERCENT_HUMAN	134
+RDMOPT_RACE_IGNORE_DEF_PERCENT_ANGEL	135
+RDMOPT_RACE_IGNORE_DEF_PERCENT_DRAGON	136
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_NOTHING	137
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_UNDEAD	138
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANIMAL	139
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLANT	140
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_INSECT	141
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_FISHS	142
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_DEVIL	143
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_HUMAN	144
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANGEL	145
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_DRAGON	146
+RDMOPT_CLASS_DAMAGE_NORMAL_TARGET	147
+RDMOPT_CLASS_DAMAGE_BOSS_TARGET	148
+RDMOPT_CLASS_DAMAGE_NORMAL_USER	149
+RDMOPT_CLASS_DAMAGE_BOSS_USER	150
+RDMOPT_CLASS_MDAMAGE_NORMAL	151
+RDMOPT_CLASS_MDAMAGE_BOSS	152
+RDMOPT_CLASS_IGNORE_DEF_PERCENT_NORMAL	153
+RDMOPT_CLASS_IGNORE_DEF_PERCENT_BOSS	154
+RDMOPT_CLASS_IGNORE_MDEF_PERCENT_NORMAL	155
+RDMOPT_CLASS_IGNORE_MDEF_PERCENT_BOSS	156
+RDMOPT_DAMAGE_SIZE_SMALL_TARGET	157
+RDMOPT_DAMAGE_SIZE_MIDIUM_TARGET	158
+RDMOPT_DAMAGE_SIZE_LARGE_TARGET	159
+RDMOPT_DAMAGE_SIZE_SMALL_USER	160
+RDMOPT_DAMAGE_SIZE_MIDIUM_USER	161
+RDMOPT_DAMAGE_SIZE_LARGE_USER	162
+RDMOPT_DAMAGE_SIZE_PERFECT	163
+RDMOPT_DAMAGE_CRI_TARGET	164
+RDMOPT_DAMAGE_CRI_USER	165
+RDMOPT_RANGE_ATTACK_DAMAGE_TARGET	166
+RDMOPT_RANGE_ATTACK_DAMAGE_USER	167
+RDMOPT_HEAL_VALUE	168
+RDMOPT_HEAL_MODIFY_PERCENT	169
+RDMOPT_DEC_SPELL_CAST_TIME	170
+RDMOPT_DEC_SPELL_DELAY_TIME	171
+RDMOPT_DEC_SP_CONSUMPTION	172
+RDMOPT_HP_DRAIN	173
+RDMOPT_SP_DRAIN	174
+RDMOPT_WEAPON_ATTR_NOTHING	175
+RDMOPT_WEAPON_ATTR_WATER	176
+RDMOPT_WEAPON_ATTR_GROUND	177
+RDMOPT_WEAPON_ATTR_FIRE	178
+RDMOPT_WEAPON_ATTR_WIND	179
+RDMOPT_WEAPON_ATTR_POISON	180
+RDMOPT_WEAPON_ATTR_SAINT	181
+RDMOPT_WEAPON_ATTR_DARKNESS	182
+RDMOPT_WEAPON_ATTR_TELEKINESIS	183
+RDMOPT_WEAPON_ATTR_UNDEAD	184
+RDMOPT_WEAPON_INDESTRUCTIBLE	185
+RDMOPT_BODY_INDESTRUCTIBLE	186
+RDMOPT_MDAMAGE_SIZE_SMALL_TARGET	187
+RDMOPT_MDAMAGE_SIZE_MIDIUM_TARGET	188
+RDMOPT_MDAMAGE_SIZE_LARGE_TARGET	189
+RDMOPT_MDAMAGE_SIZE_SMALL_USER	190
+RDMOPT_MDAMAGE_SIZE_MIDIUM_USER	191
+RDMOPT_MDAMAGE_SIZE_LARGE_USER	192
+//RDMOPT_ATTR_TOLERACE_ALL	193
+
 WARPNPC	45
 1_ETC_01	46
 1_M_01	47
@@ -2455,9 +2719,3 @@ THANATOS_KEEP	10009
 4_F_REBELLION2	10201
 4_F_REBELLION3	10202
 4_M_ILYA	10203
-
-MOBG_Branch_Of_Dead_Tree	0
-MOBG_Poring_Box	1
-MOBG_Bloody_Dead_Branch	2
-MOBG_Red_Pouch_Of_Surprise	3
-MOBG_ClassChange	4

+ 4 - 0
db/import-tmpl/item_randomopt_db.txt

@@ -0,0 +1,4 @@
+// Items Random Option Database	
+//
+// Structure of Database:
+// ID,{ Bonus Script }

+ 27 - 0
db/import-tmpl/job_noenter_map.txt

@@ -0,0 +1,27 @@
+// Defines Job(s) that are restricted to enter map (by flag/zones)
+//
+// Structure of Database:
+// JobID,FlagZone,GroupLevelBypass
+//
+// JobID: See JOB_* constants or use job number
+//
+// Legend for 'Flag' field (bitmask):
+// 1    - restricted in normal maps
+// 2    - restricted in PVP
+// 4    - restricted in GVG
+// 8    - restricted in Battlegrounds
+// Restricted zones - configured by 'restricted <number>' mapflag
+// 32   - restricted in zone 1
+// 64   - restricted in zone 2
+// 128  - restricted in zone 3
+// 256  - restricted in zone 4
+// 512  - restricted in zone 5
+// 1024 - restricted in zone 6
+// 2048 - restricted in zone 7
+// 4096 - restricted in zone 8
+//
+// GroupLevelBypass: Group Level (groups.conf) to ignore the restriction
+//
+// NOTES:
+// - Restriction will be overwritten for multiple defines with the same Job ID
+// - The flag is used by 'jobcanentermap' script.

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

@@ -1,5 +1,5 @@
 // Monster Racial Groups Database
 //
 // Structure of Database:
-// Race2ID,MobID1,MobID2,MobID3,...,MobID9
+// Race2ID,MobID1,MobID2,MobID3,...,MobID100
 

+ 7 - 4
db/import-tmpl/skill_db.txt

@@ -36,23 +36,24 @@
 //    0x00400 - usable only on party-members (and enemies if skill is offensive)
 //    0x00800 - usable only on guild-mates (and enemies if skill is offensive)
 //    0x01000 - disable usage on enemies (for non-offensive skills).
-//    0x02000 - free
+//    0x02000 - available skill for SC_AUTOSHADOWSPELL
 //    0x04000 - chorus skill
 //    0x08000 - skill that ignore bg reduction
 //    0x10000 - skill that ignore gvg reduction
 //    0x20000 - makes 'self'/'place' skill cannot be casted/placed when near NPC (see 'db/skill_nonearnpc_db.txt' for more options)
+//    0x40000 - skill that can hit trap-type skill (inf2 has 0x00080)
 // 13 maxcount: max amount of skill instances to place on the ground when
 //    player_land_skill_limit/monster_land_skill_limit is enabled. For skills
 //    that attack using a path, this is the path length to be used.
 // 14 attack type (none, weapon, magic, misc)
 // 15 Blowcount (amount of tiles skill knockbacks)
 // 16 inf3 (skill information 3):
-//    0x00001 - skill ignores land protector (e.g. arrow shower)
-//    0x00002 - skill that doesn't end camouflage
+//    0x00001 - skill ignores land protector
+//    0x00002 - free
 //    0x00004 - usable skills while hiding
 //    0x00008 - skill that can be use while in dancing state
 //    0x00010 - skill that could hit emperium
-//    0x00020 - skill blocked by statis
+//    0x00020 - skill ignores SC_STASIS
 //    0x00040 - skill blocked by kagehumi
 //    0x00080 - skill range affected by AC_VULTURE
 //    0x00100 - skill range affected by GS_SNAKEEYE
@@ -65,6 +66,8 @@
 //    0x08000 - skill that can be used to target while under SC__MANHOLE effect
 //    0x10000 - skill that affects hidden targets
 //    0x20000 - skill that affects SC_GLOOMYDAY_SK
+//    0x40000 - skill that is affected by SC_DANCEWITHWUG
+//    0x80000 - skill blocked by RA_WUGBITE
 // 17 Name
 // 18 Description
 

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

@@ -1,2 +1,2 @@
-//JobNo,Skill-ID,MaxLV{,JobLV},Prerequisite Skill-ID-1,Prerequisite Skill-ID-1-Lv,PrereqSkill-ID-2,PrereqSkill-ID-2-Lv,PrereqSkill-ID-3,PrereqSkill-ID-3-Lv,PrereqSkill-ID-4,PrereqSkill-ID-4-Lv,PrereqSkill-ID-5,PrereqSkill-ID-5-Lv//CLASS_SKILLNAME#Skill Name#
+//JobNo,Skill-ID,MaxLv{,BaseLvReq,JobLvReq},Prerequisite Skill-ID-1,Prerequisite Skill-ID-1-Lv,PrereqSkill-ID-2,PrereqSkill-ID-2-Lv,PrereqSkill-ID-3,PrereqSkill-ID-3-Lv,PrereqSkill-ID-4,PrereqSkill-ID-4-Lv,PrereqSkill-ID-5,PrereqSkill-ID-5-Lv//CLASS_SKILLNAME#Skill Name#
 

+ 1 - 0
db/item_nouse.txt

@@ -11,6 +11,7 @@
 // Group ID Override:
 //	Group ID necessary to override this setting.
 
+606,1,100	// Aloebera
 619,1,100	// Unripe_Apple
 620,1,100	// Orange_Juice
 621,1,100	// Bitter_Herb

+ 3 - 0
db/packet_db.txt

@@ -2468,6 +2468,9 @@ packet_keys: 0x62C86D09,0x75944F17,0x112C133D // [YomRawr]
 0x0817,5,hommenu,2:4
 0x0923,36,storagepassword,2:4:20
 
+// New Packets
+0xA3B,-1		// ZC_HAT_EFFECT
+
 // RODEX Mail system
 0x09E7,3		// ZC_NOTIFY_UNREADMAIL
 0x09E8,11,dull,0	// CZ_OPEN_MAILBOX

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

@@ -66,7 +66,7 @@
 2357:2421:2524:5171,{ bonus bAllStats,1; }
 2358:5153,{ bonus bLuk,6; bonus bFlee,5; bonus bInt,2; }
 2359:2654,{ bonus bUseSPrate,-20; bonus bMaxHP,300; }
-//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
+2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FROSTNOVA",10; }
 2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
 2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
 2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }

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

@@ -1340,7 +1340,7 @@
 2425,Black_Leather_Boots,Black Leather Boots,4,20,,500,,4,,0,0xFFFFFFFE,2,2,64,,55,1,0,{ bonus bAgi,1; if(getrefine()>=9) bonus bAgi,2; },{},{}
 2426,Shadow_Walk,Shadow Walk,4,20,,2000,,0,,0,0xFFFFFFFE,2,2,64,,75,1,0,{ bonus bMdef,10; if(getskilllv("AS_CLOAKING")<2){ bonus5 bAutoSpellWhenHit,"AS_CLOAKING",2,100,BF_MAGIC,0; } else bonus5 bAutoSpellWhenHit,"AS_CLOAKING",getskilllv("AS_CLOAKING"),100,BF_MAGIC,0; },{},{}
 2427,Golden_Shoes,Golden Shoes,4,20,,300,,4,,0,0xFFFFFFFF,7,2,64,,0,0,0,{ bonus bMdef,4; },{},{}
-//2428,Freyja_Boots,Freyja Boots,4,0,,300,,10,,0,0xFFFFFFFE,7,2,64,,0,0,0,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; },{},{}
+2428,Freyja_Boots,Freyja Boots,4,0,,300,,10,,0,0xFFFFFFFE,7,2,64,,0,0,0,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; },{},{}
 2429,Iron_Boots01,Iron Boots,4,0,,1500,,5,,0,0x000E5CEA,7,2,64,,0,1,0,{},{},{}
 2430,Iron_Boots02,Iron Boots,4,0,,800,,5,,0,0xFFFFFFFF,7,2,64,,0,1,0,{},{},{}
 2431,Valley_Shoes,Valley Shoes,4,20,,0,,10,,0,0xFFFFFFFF,7,2,64,,0,0,0,{ bonus bMaxHPRate,7; bonus bMaxSPRate,7; },{},{}
@@ -1397,7 +1397,7 @@
 2530,Rider_Insignia_,Rider Insignia,4,20,,500,,4,,1,0xFFFFFFFE,2,2,4,,55,1,0,{ bonus bAgi,2; },{},{}
 2531,Ulfhedinn,Ulfhedinn,4,20,,700,,3,,1,0x000654E2,2,2,4,,70,1,0,{ bonus3 bAutoSpellWhenHit,"NPC_STONESKIN",6,20; },{},{}
 2532,Mithril_Magic_Cape,Mithril Magic Cape,4,20,,400,,3,,1,0x00098B1C,2,2,4,,70,1,0,{ bonus bMdef,3; bonus5 bAutoSpellWhenHit,"NPC_ANTIMAGIC",6,200,BF_MAGIC,0; },{},{}
-//2533,Freyja_Cape,Freyja Cape,4,0,,200,,10,,0,0xFFFFFFFE,7,2,4,,0,0,0,{ bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; },{},{}
+2533,Freyja_Cape,Freyja Cape,4,0,,200,,10,,0,0xFFFFFFFE,7,2,4,,0,0,0,{ bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; },{},{}
 2534,Ruffler,Ruffler,4,20,,0,,10,,0,0xFFFFFFFF,7,2,4,,0,0,0,{ bonus2 bSubEle,Ele_Neutral,17; bonus bFlee,17; },{},{}
 2535,Cloak_Of_Survival_C,Cloak Of Survival,4,1,,0,,5,,0,0x00810204,7,2,4,,0,0,0,{ bonus bVit,10; bonus bMdef,10; },{},{}
 2536,Skin_Of_Ventus,Skin of Ventus,4,20,,250,,2,,1,0xFFFFFFFE,7,2,4,,60,1,0,{ bonus bMdef,2; bonus bMaxHP,200; bonus bFlee,10; },{},{}
@@ -4552,7 +4552,7 @@
 11530,Jujube,Jujube,0,10,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal 30,0; },{},{}
 11531,Coffee,Coffee,0,10,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal 0,10; },{},{}
 11701,Girl_Bunch_Of_Flower_,Girl's Bouquet,0,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(105,145),0; },{},{}
-11702,Moon_Cookie,Moon Cookie,0,0,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ },{},{}
+11702,Moon_Cookie,Moon Cookie,0,0,,300,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 11703,Mysterious_Blood,Mystery Blood,0,0,,30,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal 0,rand(25,35); },{},{}
 11704,KETUPAT_F,Ketupat,0,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(70,90),0; },{},{}
 11705,Special_White_Potion,Children's Potion,0,1,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(425,425),0; },{},{}
@@ -4957,11 +4957,11 @@
 12393,Repair_B,Repair B,2,500,,140,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(300,400),0; } },{},{}
 12394,Repair_C,Repair C,2,1100,,180,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(400,500),0; } },{},{}
 12395,Tantanmen,Tantan Noodle,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1519; },{},{}
-12396,Fools_Day_Box,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ .@rnd = rand(1,10); if(.@rnd==1) itemskill "AL_TELEPORT",1; else if(.@rnd==2) itemskill "AL_TELEPORT",3; else if(.@rnd==3) percentheal 50,0; else if(.@rnd==4) percentheal 0,50; else if(.@rnd==5) end; else if(.@rnd==6) getitem 512,1; else if(.@rnd==7) itemskill "ALL_REVERSEORCISH",1; else if(.@rnd==8) specialeffect2 247; else if(.@rnd==9) specialeffect2 338; else specialeffect2 10; },{},{}
-12397,Fools_Day_Box2,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ .@rnd = rand(1,10); if(.@rnd==1) itemskill "TF_DETOXIFY",1; else if(.@rnd==2) itemskill "TF_PICKSTONE",1; else if(.@rnd==3) itemskill "BA_FROSTJOKER",1; else if(.@rnd==4) itemskill "DC_SCREAM",1; else if(.@rnd==5) end; else if(.@rnd==6) getitem 909,1; else if(.@rnd==7) itemskill "AL_RUWACH",1; else if(.@rnd==8) specialeffect2 328; else if(.@rnd==9) specialeffect2 68; else specialeffect2 196; },{},{}
+12396,Fools_Day_Box,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ .@rnd = rand(1,10); if(.@rnd==1) itemskill "AL_TELEPORT",1; else if(.@rnd==2) itemskill "AL_TELEPORT",3; else if(.@rnd==3) percentheal 50,0; else if(.@rnd==4) percentheal 0,50; else if(.@rnd==5) end; else if(.@rnd==6) getitem 512,1; else if(.@rnd==7) itemskill "ALL_REVERSEORCISH",1; else if(.@rnd==8) specialeffect2 EF_MAPPILLAR2; else if(.@rnd==9) specialeffect2 EF_ANGEL2; else specialeffect2 EF_COIN; },{},{}
+12397,Fools_Day_Box2,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ .@rnd = rand(1,10); if(.@rnd==1) itemskill "TF_DETOXIFY",1; else if(.@rnd==2) itemskill "TF_PICKSTONE",1; else if(.@rnd==3) itemskill "BA_FROSTJOKER",1; else if(.@rnd==4) itemskill "DC_SCREAM",1; else if(.@rnd==5) end; else if(.@rnd==6) getitem 909,1; else if(.@rnd==7) itemskill "AL_RUWACH",1; else if(.@rnd==8) specialeffect2 EF_BEGINASURA; else if(.@rnd==9) specialeffect2 EF_MVP; else specialeffect2 EF_CURSEATTACK; },{},{}
 12398,PCBang_Gift_Box,PCBang Gift Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12399,Castle_Treasure_Box,Castle Treasure Box,2,20,,1000,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-12400,Water_Of_Blessing_,Water Of Blessing ,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
+12400,Water_Of_Blessing_,Water Of Blessing,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12401,Rune_Kn_Test_Int,Rune Kn Test Int,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCINT,300000,40; },{},{}
 12402,29Fruit,29Fruit,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 5,5; },{},{}
 12403,Lucky_Egg2,Lucky Egg2,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
@@ -4982,7 +4982,7 @@
 12418,Full_SwingK,Full SwingK,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_FULL_SWING_K,500000,50; },{},{}
 12419,Mana_Plus,Mana Plus,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MANA_PLUS,500000,50; },{},{}
 12420,Stamina_Up_M,Stamina Up M,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MUSTLE_M,500000,5; },{},{}
-12421,Falmons_F,Falmons F,3,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_LIFE_FORCE_F,500000,5; },{},{}
+12421,Falmons_F,Falmons F,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_LIFE_FORCE_F,500000,5; },{},{}
 12422,HP_Increase_Potion_(Small),HP Increase Potion (Small),2,100,,20,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_PROMOTE_HEALTH_RESERCH,500000,1,1; percentheal 1,0; },{},{}
 12423,HP_Increase_Potion_(Medium),HP Increase Potion (Medium),2,100,,40,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_PROMOTE_HEALTH_RESERCH,500000,1,2; percentheal 2,0; },{},{}
 12424,HP_Increase_Potion_(Large),HP Increase Potion (Large),2,100,,80,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_PROMOTE_HEALTH_RESERCH,500000,1,3; percentheal 5,0; },{},{}
@@ -5290,9 +5290,9 @@
 12965,Emergency_Box1,Emergency Level 1 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12968,1; },{},{}
 12966,Emergency_Box2,Emergency Level 2 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12969,1; },{},{}
 12967,Emergency_Box3,Emergency Level 3 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12970,1; },{},{}
-12968,Emergency_Scroll1,Emergency Level 1 Scroll,11,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "GD_ITEMEMERGENCYCALL",1; },{},{}
-12969,Emergency_Scroll2,Emergency Level 2 Scroll,11,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "GD_ITEMEMERGENCYCALL",2; },{},{}
-12970,Emergency_Scroll3,Emergency Level 3 Scroll,11,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "GD_ITEMEMERGENCYCALL",3; },{},{}
+12968,Emergency_Scroll1,Emergency Level 1 Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ unitskilluseid getcharid(3),"GD_ITEMEMERGENCYCALL",1; },{},{}
+12969,Emergency_Scroll2,Emergency Level 2 Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ unitskilluseid getcharid(3),"GD_ITEMEMERGENCYCALL",2; },{},{}
+12970,Emergency_Scroll3,Emergency Level 3 Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ unitskilluseid getcharid(3),"GD_ITEMEMERGENCYCALL",3; },{},{}
 12971,Teleport_Box1,Teleport Scroll Box 1,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12977,10; },{},{}
 12972,Teleport_Box2,Teleport Scroll Box 2,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12978,10; },{},{}
 12973,Teleport_Box3,Teleport Scroll Box 3,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12979,10; },{},{}
@@ -6364,13 +6364,13 @@
 14531,Accuracy_30_Scroll,Concentration Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCHIT,1800000,30; },{},{}
 14532,Battle_Manual25,Field Manual 25%,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_EXPBOOST,1800000,25; },{},{}
 14533,Battle_Manual100,Field Manual 100%,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_EXPBOOST,1800000,100; },{},{}
-14534,Small_Life_Potion,Small Life Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 320; sc_start4 SC_S_LIFEPOTION,600000,-5,5,0,0; },{},{}
-14535,Med_Life_Potion,Medium Life Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 320; sc_start4 SC_L_LIFEPOTION,600000,-7,4,0,0; },{},{}
-14536,Abrasive,Abrasive,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 182; sc_start SC_INCCRI,300000,30; },{},{}
-14537,Regeneration_Potion,Regeneration Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 348; sc_start SC_INCHEALRATE,1800000,20; },{},{}
+14534,Small_Life_Potion,Small Life Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_HEAL3; sc_start4 SC_S_LIFEPOTION,600000,-5,5,0,0; },{},{}
+14535,Med_Life_Potion,Medium Life Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_HEAL3; sc_start4 SC_L_LIFEPOTION,600000,-7,4,0,0; },{},{}
+14536,Abrasive,Abrasive,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; sc_start SC_INCCRI,300000,30; },{},{}
+14537,Regeneration_Potion,Regeneration Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_LIGHTSPHERE; sc_start SC_INCHEALRATE,1800000,20; },{},{}
 14538,Glass_Of_Illusion,Glass of Illusion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_STEAL; sc_start SC_INCFLEE2,60000,20; },{},{}
 14539,Shadow_Armor_S,Shadow Armor Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_CLOAKING; sc_start4 SC_ELEMENTALCHANGE,1800000,1,Ele_Dark,1,0; },{},{}
-14540,Holy_Armor_S,Holy Armor Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 91; sc_start4 SC_ELEMENTALCHANGE,1800000,1,Ele_Holy,1,0; },{},{}
+14540,Holy_Armor_S,Holy Armor Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_BENEDICTIO; sc_start4 SC_ELEMENTALCHANGE,1800000,1,Ele_Holy,1,0; },{},{}
 14541,S_Def_Potion,Small Defense Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_GUARD; sc_start SC_DEF_RATE,60000,3; },{},{}
 14542,B_Def_Potion,Big Defense Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_GUARD; sc_start SC_DEF_RATE,180000,3; },{},{}
 14543,S_Mdef_Potion,Small Magic Defense Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_SPELLBREAKER; sc_start SC_MDEF_RATE,60000,3; },{},{}
@@ -6561,7 +6561,7 @@
 //
 18595,Horn_Of_Ancient,Horn of Ancient,4,40,,200,,8,,1,0xFFFFFFFF,7,2,256,,50,1,757,{ autobonus "{ bonus bBaseAtk,100; }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
 18596,Sprout_Hat,Sprout Hat,4,20,,200,,4,,0,0xFFFFFFFF,7,2,256,,70,1,758,{ skill "WZ_HEAVENDRIVE",3; },{},{}
-18597,Mercury_Riser,Mercury Riser,4,40,,200,,10,,1,0xFFFFFFFF,7,2,256,,0,,759,{ bonus bAspdRate,3; bonus bCritical,3; if(getrefine() >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(getrefine() >= 9) { bonus bAspdRate,2; bonus bCritical,2; }},{},{}
+18597,Mercury_Riser,Mercury Riser,4,40,,200,,10,,1,0xFFFFFFFF,7,2,256,,0,1,759,{ bonus bAspdRate,3; bonus bCritical,3; if(getrefine() >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(getrefine() >= 9) { bonus bAspdRate,2; bonus bCritical,2; }},{},{}
 //
 18600,Cat_Ear_Beret,Cat Ear Beret,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,761,{ bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); bonus2 bAddRace,RC_Player,(getrefine() - 5); bonus2 bSubRace,RC_Player,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; } },{},{}
 //

+ 4 - 0
db/pre-re/item_randomopt_db.txt

@@ -0,0 +1,4 @@
+// Items Random Option Database	
+//
+// Structure of Database:
+// ID,{ Bonus Script }

+ 27 - 0
db/pre-re/job_noenter_map.txt

@@ -0,0 +1,27 @@
+// Defines Job(s) that are restricted to enter map (by flag/zones)
+//
+// Structure of Database:
+// JobID,FlagZone,GroupLevelBypass
+//
+// JobID: See JOB_* constants or use job number
+//
+// Legend for 'Flag' field (bitmask):
+// 1    - restricted in normal maps
+// 2    - restricted in PVP
+// 4    - restricted in GVG
+// 8    - restricted in Battlegrounds
+// Restricted zones - configured by 'restricted <number>' mapflag
+// 32   - restricted in zone 1
+// 64   - restricted in zone 2
+// 128  - restricted in zone 3
+// 256  - restricted in zone 4
+// 512  - restricted in zone 5
+// 1024 - restricted in zone 6
+// 2048 - restricted in zone 7
+// 4096 - restricted in zone 8
+//
+// GroupLevelBypass: Group Level (groups.conf) to ignore the restriction
+//
+// NOTES:
+// - Restriction will be overwritten for multiple defines with the same Job ID
+// - The flag is used by 'jobcanentermap' script.

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

@@ -1,23 +1,23 @@
 // Monster Racial Groups Database
 //
 // Structure of Database:
-// Race2ID,MobID1,MobID2,MobID3,...,MobID50
+// Race2ID,MobID1,MobID2,MobID3,...,MobID100
 
 // Goblins
-1,1122,1123,1124,1125,1126,1258,1299
+RC2_GOBLIN,1122,1123,1124,1125,1126,1258,1299
 // Kobolds
-2,1133,1134,1135,1282,1296
+RC2_KOBOLD,1133,1134,1135,1282,1296
 // Orcs
-3,1023,1152,1153,1189,1213,1273
+RC2_ORC,1023,1152,1153,1189,1213,1273
 // Golems
-4,1040,1278,1366,1497,2024
+RC2_GOLEM,1040,1278,1366,1497,2024
 // Guardians
-5,1285,1286,1287,2081
+RC2_GUARDIAN,1285,1286,1287,2081
 // Ninja Classes (Pirate's_Pride)
-6,1315,1364,1401,1560
+RC2_NINJA,1315,1364,1401,1560
 // GvG
-7,1143,1905,1906,1907
+RC2_GVG,1143,1905,1906,1907
 // Battlefield
-8,1906,1909,1914,1915
+RC2_BATTLEFIELD,1906,1909,1914,1915
 // Treasure Chests
-9,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1938,1939,1940,1941,1942,1943,1944,1945,1946
+RC2_TREASURE,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1938,1939,1940,1941,1942,1943,1944,1945,1946

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

@@ -1534,7 +1534,7 @@
 //-- SO_STRIKING
 2451,1000,1000,0,60000,0,2000
 //-- SO_WARMER
-2452,2200:2400:2600:2800:3000,1000,0,40000:45000:50000:55000:60000,30000,35000:40000:45000:50000:55000
+2452,2200:2400:2600:2800:3000,1000,0,40000:45000:50000:55000:60000,0,35000:40000:45000:50000:55000
 //-- SO_VACUUM_EXTREME
 2453,1000:1500:2000:2500:3000,1000,0,4000:6000:8000:10000:12000,2000,5000
 //-- SO_VARETYR_SPEAR

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

@@ -49,7 +49,7 @@
 // 15 Blowcount (amount of tiles skill knockbacks)
 // 16 inf3 (skill information 3):
 //    0x00001 - skill ignores land protector
-//    0x00002 - skill that doesn't end camouflage
+//    0x00002 - free
 //    0x00004 - usable skills while hiding
 //    0x00008 - skill that can be use while in dancing state
 //    0x00010 - skill that could hit emperium
@@ -778,7 +778,7 @@
 
 //****
 // Additional NPC Skills (Episode 11.3)
-653,0,8,4,0,0x26,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x40002,0,magic,0,0x1,	NPC_EARTHQUAKE,Earthquake
+653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x40002,0,magic,0,0x0,	NPC_EARTHQUAKE,Earthquake
 654,6,6,1,3,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_FIREBREATH,Fire Breath
 655,6,6,1,1,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_ICEBREATH,Ice Breath
 656,6,6,1,4,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_THUNDERBREATH,Thunder Breath
@@ -876,7 +876,7 @@
 1006,0,6,4,3,0,1,1,1,yes,0,0x40001,0,magic,3,0x0,	WZ_SIGHTBLASTER,Sight Blaster
 1007,0,6,4,0,0x1,0,1,0,no,0,0x1,0,none,0,0x0,	SA_CREATECON,Create Elemental Converter
 1008,9,6,1,1,0x1,0,1,1,yes,0,0x1,0,magic,0,0x0,	SA_ELEMENTWATER,Elemental Change Water
-1009,-9,6,1,0,0,0,1,1,no,0,0x1,0,weapon,3,0x0,	HT_PHANTASMIC,Phantasmic Arrow
+1009,-9,6,1,-1,0,0,1,1,no,0,0x1,0,weapon,3,0x0,	HT_PHANTASMIC,Phantasmic Arrow
 1010,9,6,1,0,0x1,0,1,0,no,0,0x1,0,misc,0,0x0,	BA_PANGVOICE,Pang Voice
 1011,9,6,1,0,0x1,0,1,0,no,0,0x1,0,misc,0,0x0,	DC_WINKCHARM,Wink of Charm
 1012,0,0,0,0,0,0,1,0,no,0,0x1,0,weapon,0,0x4000,	BS_UNFAIRLYTRICK,Unfair Trick
@@ -909,7 +909,7 @@
 2017,0,6,4,-1,0x2,3,1,1,no,0,0x40000,0,weapon,7,0x0,	RK_STORMBLAST,Storm Blast
 2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,0x0,	RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
 2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_ABUNDANCE,Abundance
-2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RK_PHANTOMTHRUST,Phantom Thrust
+2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0x400,0,weapon,0,0x0,	RK_PHANTOMTHRUST,Phantom Thrust
 
 //****
 // WL Warlock
@@ -983,7 +983,7 @@
 2049,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AB_EUCHARISTICA,Eucharistica
 2050,11,6,16,6,0x1,0,1,1,yes,0,0,0,magic,0,0x0,	AB_RENOVATIO,Renovatio
 2051,11,6,16,6,0x21,0,5,1,yes,0,0,0,magic,0,0x0,	AB_HIGHNESSHEAL,Highness Heal //CHECK Info shows this has magic attack.
-2052,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x10020,	AB_CLEARANCE,Clearance //CHECK Also shows this as a magic attack. Why?
+2052,11,6,1,0,0x1,0,5,1,yes,0,0x400,0,magic,0,0x10020,	AB_CLEARANCE,Clearance
 2053,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	AB_EXPIATIO,Expiatio //CHECK Does this also give the buff to party members?
 2054,0,6,4,6,0x1,0,10,1,yes,0,0,0,none,0,0x0,	AB_DUPLELIGHT,Duple Light //CHECK Had issues adding a skill level check to make the % go higher with the skills level. Will do later.
 2055,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,	AB_DUPLELIGHT_MELEE,Duple Light Melee
@@ -1008,7 +1008,7 @@
 2244,9,6,1,0,0x98,0,5,1,no,0,0,0,weapon,0,0x40080,	RA_WUGBITE,Warg Bite
 2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RA_TOOTHOFWUG,Tooth of Warg
 2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0x40000,0,weapon,0,0x0,	RA_SENSITIVEKEEN,Sensitive Keen
-2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x80042,		RA_CAMOUFLAGE,Camouflage
+2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x80040,		RA_CAMOUFLAGE,Camouflage
 2248,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		RA_RESEARCHTRAP,Research Trap
 2249,3,6,2,3,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000,	RA_MAGENTATRAP,Magenta Trap
 2250,3,6,2,1,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000,	RA_COBALTTRAP,Cobalt Trap

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

@@ -1035,7 +1035,7 @@
 8232,0,0,4:5:6:7:8:9:10:11:12:13,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0		//MER_PROVOKE
 8233,0,0,5,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//MER_AUTOBERSERK
 8234,0,0,15:17:19:21:23:25:27:29:31:33,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MER_DECAGI
-8235,0,0,10,100,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//MER_SCAPEGOAT
+8235,0,0,5,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//MER_SCAPEGOAT
 8236,0,0,20:20:20:20:20:18:16:14:12:10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MER_LEXDIVINA
 8237,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//MER_ESTIMATION
 8238,0,0,20:20:20:25:25:25:30:30:30:35,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MER_KYRIE

+ 29 - 29
db/pre-re/skill_tree.txt

@@ -1,4 +1,4 @@
-//JobNo,Skill-ID,MaxLV{,JobLV},Prerequisite Skill-ID-1,Prerequisite Skill-ID-1-Lv,PrereqSkill-ID-2,PrereqSkill-ID-2-Lv,PrereqSkill-ID-3,PrereqSkill-ID-3-Lv,PrereqSkill-ID-4,PrereqSkill-ID-4-Lv,PrereqSkill-ID-5,PrereqSkill-ID-5-Lv//CLASS_SKILLNAME#Skill Name#
+//JobNo,Skill-ID,MaxLv{,BaseLvReq,JobLvReq},Prerequisite Skill-ID-1,Prerequisite Skill-ID-1-Lv,PrereqSkill-ID-2,PrereqSkill-ID-2-Lv,PrereqSkill-ID-3,PrereqSkill-ID-3-Lv,PrereqSkill-ID-4,PrereqSkill-ID-4-Lv,PrereqSkill-ID-5,PrereqSkill-ID-5-Lv//CLASS_SKILLNAME#Skill Name#
 //Novice
 0,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 0,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -80,7 +80,7 @@
 5,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
 5,155,1,0,0,0,0,0,0,0,0,0,0 //MC_LOUD#Crazy Uproar#
 5,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
-5,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+5,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 5,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Thief
 6,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -231,7 +231,7 @@
 10,1013,1,0,0,0,0,0,0,0,0,0,0 //BS_GREED#Greed#
 10,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 10,459,1,111,5,0,0,0,0,0,0,0,0	//BS_ADRENALINE2#Full Adrenaline Rush#
-10,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+10,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 10,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Hunter
 11,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -496,7 +496,7 @@
 18,496,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT1#Twilight Alchemy 1#
 18,497,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT2#Twilight Alchemy 2#
 18,498,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT3#Twilight Alchemy 3#
-18,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+18,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 18,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Bard
 19,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -594,8 +594,8 @@
 //WeddingClass
 22,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 22,334,1,0,0,0,0,0,0,0,0,0,0 //WE_MALE#I Will Protect You#
-22,335,5,0,0,0,0,0,0,0,0,0,0 //WE_FEMALE#I Look up to You#
-22,336,5,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARTNER#I miss You#
+22,335,1,0,0,0,0,0,0,0,0,0,0 //WE_FEMALE#I Look up to You#
+22,336,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARTNER#I miss You#
 22,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 //SuperNovice
 23,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -650,7 +650,7 @@
 23,52,10,0,0,0,0,0,0,0,0,0,0 //TF_POISON#Envenom#
 23,53,1,52,3,0,0,0,0,0,0,0,0 //TF_DETOXIFY#Detoxify#
 23,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
-23,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+23,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 23,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Gunslinger
 24,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -786,7 +786,7 @@
 4006,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
 4006,155,1,0,0,0,0,0,0,0,0,0,0 //MC_LOUD#Crazy Uproar#
 4006,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
-4006,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4006,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4006,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //ThiefHigh
 4007,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -962,7 +962,7 @@
 4011,486,5,113,5,0,0,0,0,0,0,0,0 //WS_OVERTHRUSTMAX#Maximum Power Thrust#
 4011,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 4011,459,1,111,5,0,0,0,0,0,0,0,0	//BS_ADRENALINE2#Full Adrenaline Rush#
-4011,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4011,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4011,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Sniper
 4012,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -1270,7 +1270,7 @@
 4019,496,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT1#Twilight Alchemy 1#
 4019,497,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT2#Twilight Alchemy 2#
 4019,498,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT3#Twilight Alchemy 3#
-4019,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4019,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4019,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Clown
 4020,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -1302,7 +1302,7 @@
 4020,313,5,321,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4020,1010,1,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#Pang Voice#
 4020,394,10,47,5,316,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow#
-4020,395,5,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
+4020,395,1,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
 4020,396,1,45,5,315,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control#
 4020,487,5,315,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom#
 4020,488,5,45,10,315,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod#
@@ -1338,7 +1338,7 @@
 4021,313,5,329,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4021,1011,1,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#Wink of Charm#
 4021,394,10,47,5,324,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow#
-4021,395,5,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
+4021,395,1,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
 4021,396,1,45,5,323,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control#
 4021,487,5,323,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom#
 4021,488,5,45,10,323,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod#
@@ -1468,7 +1468,7 @@
 4028,155,1,0,0,0,0,0,0,0,0,0,0 //MC_LOUD#Crazy Uproar#
 4028,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4028,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
-4028,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4028,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4028,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Thief
 4029,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -1623,7 +1623,7 @@
 4033,1012,1,0,0,0,0,0,0,0,0,0,0 //BS_UNFAIRLYTRICK#Unfair Trick#
 4033,1013,1,0,0,0,0,0,0,0,0,0,0 //BS_GREED#Greed#
 4033,459,1,111,5,0,0,0,0,0,0,0,0	//BS_ADRENALINE2#Full Adrenaline Rush#
-4033,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4033,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4033,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Hunter
 4034,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -1896,7 +1896,7 @@
 4041,496,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT1#Twilight Alchemy 1#
 4041,497,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT2#Twilight Alchemy 2#
 4041,498,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT3#Twilight Alchemy 3#
-4041,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4041,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4041,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Bard
 4042,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -2048,7 +2048,7 @@
 4045,53,1,52,3,0,0,0,0,0,0,0,0 //TF_DETOXIFY#Detoxify#
 4045,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4045,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
-4045,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4045,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4045,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Taekwon
 4046,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -2656,7 +2656,7 @@
 4058,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4058,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4058,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4058,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4058,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4058,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Guillotine Cross (Regular)
 4059,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -3008,7 +3008,7 @@
 4064,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4064,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4064,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4064,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4064,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4064,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Guillotine Cross (Trans)
 4065,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -3412,7 +3412,7 @@
 4071,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
 4071,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
 4071,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4071,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4071,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4071,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Shadow Chaser (Regular)
 4072,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -3639,7 +3639,7 @@
 4075,313,5,321,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4075,1010,1,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#Pang Voice#
 4075,394,10,47,5,316,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow#
-4075,395,5,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
+4075,395,1,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
 4075,396,1,45,5,315,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control#
 4075,487,5,315,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom#
 4075,488,5,45,10,315,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod#
@@ -3701,7 +3701,7 @@
 4076,313,5,329,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4076,1011,1,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#Wink of Charm#
 4076,394,10,47,5,324,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow#
-4076,395,5,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
+4076,395,1,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
 4076,396,1,45,5,323,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control#
 4076,487,5,323,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom#
 4076,488,5,45,10,323,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod#
@@ -3856,7 +3856,7 @@
 4078,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
 4078,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug# 
 4078,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4078,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4078,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4078,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Shadow Chaser (Trans)
 4079,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -4299,7 +4299,7 @@
 4086,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4086,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4086,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4086,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4086,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4086,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Mechanic (Mado) (Trans)
 4087,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -4375,7 +4375,7 @@
 4087,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4087,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4087,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4087,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4087,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4087,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Rune Knight
 4096,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -4660,7 +4660,7 @@
 4100,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4100,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4100,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4100,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4100,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4100,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Guillotine Cross
 4101,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -5066,7 +5066,7 @@
 4107,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
 4107,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
 4107,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4107,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4107,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4107,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Shadow Chaser
 4108,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -5347,7 +5347,7 @@
 4112,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4112,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4112,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4112,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4112,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4112,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Super Novice (Expanded)
 4190,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -5431,7 +5431,7 @@
 4190,261,5,259,2,0,0,0,0,0,0,0,0 //MO_CALLSPIRITS#Summon Spirit Sphere#
 4190,262,1,261,5,0,0,0,0,0,0,0,0 //MO_ABSORBSPIRITS#Absorb Spirit Sphere#
 4190,365,1,9,1,0,0,0,0,0,0,0,0 //HW_MAGICCRASHER#Stave Crasher#
-4190,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4190,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4190,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Super Baby (Expanded)
 4191,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -5516,7 +5516,7 @@
 4191,261,5,259,2,0,0,0,0,0,0,0,0 //MO_CALLSPIRITS#Summon Spirit Sphere#
 4191,262,1,261,5,0,0,0,0,0,0,0,0 //MO_ABSORBSPIRITS#Absorb Spirit Sphere#
 4191,365,1,9,1,0,0,0,0,0,0,0,0 //HW_MAGICCRASHER#Stave Crasher#
-4191,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4191,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4191,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Kagerou
 4211,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#

+ 2 - 3
db/pre-re/skill_unit_db.txt

@@ -105,7 +105,6 @@
 538,0xbb,    ,  1:1:1:2:2:2:3:3:3:4,0,-1,all,0x8010	//NJ_SUITON
 539,0x86,    ,  3, 0,1000,enemy, 0x010	//NJ_HYOUSYOURAKU
 541,0x86,    ,  2:2:3:3:4, 0,1000,enemy, 0x010	//NJ_RAIGEKISAI
-653,0xc6,    ,  0, 5:7:9:11:13:5:7:9:11:13, 300,enemy, 0x010	//NPC_EARTHQUAKE
 670,0xc7,    ,  1, 5:5:5:5:5:5:5:5:5:13,1000,all,0x008	//NPC_EVILLAND
 
 //706,0xfd,    ,  0, 0,1000,all, 0x000	//NPC_VENOMFOG
@@ -148,8 +147,8 @@
 2446,0x86,    ,  0, 3:3:3:4:4,1000,enemy, 0x018	//SO_EARTHGRAVE
 2447,0x86,    ,  0, 3:3:3:4:4,1000,enemy, 0x018	//SO_DIAMONDDUST
 2449,0xdf,    ,  0, 3:3:4:4:5,500,enemy,  0x018	//SO_PSYCHIC_WAVE
-2450,0xe0,    ,  0, 3, 500,enemy, 0x8010	//SO_CLOUD_KILL
-2452,0xe4,    ,  0, 3,3000,all,   0x8010	//SO_WARMER
+2450,0xe0,    ,  3, 0,  -1,enemy, 0xA010	//SO_CLOUD_KILL
+2452,0xe4,    ,  3, 0,  -1,all,   0xA010	//SO_WARMER
 2453,0xeb,    ,  0, 1:1:2:2:3,500,enemy,0x8010	//SO_VACUUM_EXTREME
 2465,0xf1,    ,  0, 1,1000,all,   0x010	//SO_FIRE_INSIGNIA
 2466,0xf2,    ,  0, 1,1000,all,   0x010	//SO_WATER_INSIGNIA

+ 1 - 0
db/re/instance_db.txt

@@ -18,3 +18,4 @@
 11,Wolfchev's Laboratory,14400,300,1@lhz,45,148
 12,Old Glast Heim,3600,300,1@gl_k,150,20,2@gl_k
 13,Eclage Interior,1200,300,1@ecl,60,50
+14,Sara's Memories,3600,300,1@sara,250,155

+ 41 - 10
db/re/item_combo_db.txt

@@ -30,6 +30,8 @@
 1480:2527,{ bonus2 bAddRace,RC_Dragon,5; }
 1480:2527:5467,{ bonus2 bAddRace,RC_Dragon,25; }
 1490:19021,{ bonus2 bSkillAtk,"LK_SPIRALPIERCE",getequiprefinerycnt(EQI_HAND_R)*5; bonus4 bAutoSpellOnSkill,"LK_JOINTBEAT","LK_SPIRALPIERCE",max(getskilllv("LK_SPIRALPIERCE"),1),50+(getskilllv("LK_JOINTBEAT")*10); /* Confirm: Success rate */ }
+15141:19033,{ bonus bMaxSP,100; bonus bNoCastCancel,1; }
+15141:20779:22075,{ .@r = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES); bonus bMaxHP,1000; bonus bHealPower,min(5+.@r,30); bonus bHealPower2,min(5+.@r,30); }
 1535:4361,{ bonus bBreakArmorRate,900; bonus bBreakWeaponRate,900; }
 1559:5467,{ bonus bAspd,1; bonus bFlee2,3; }
 1572:2716:2717,{ bonus bInt,5; bonus bMaxHP,700; bonus bAspdRate,5; }
@@ -117,6 +119,7 @@
 2183:15068,{ bonus2 bSubEle,Ele_Neutral,5; }
 2183:15068:18776:20710:22015,{ bonus bMaxHP,900; bonus bMaxSP,100; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",1,30; }
 2183:22015,{ bonus bAllStats,2; }
+2195:20753,{ bonus2 bAddEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_L); bonus2 bSubRace,RC_Formless,getequiprefinerycnt(EQI_GARMENT); }
 2198:5966,{ .@r = getequiprefinerycnt(EQI_HAND_L); if (.@r > 7) bonus2 bSkillCooldown,"WL_COMET",-20000+(.@r > 9 ? -20000 : 0); }
 2241:5136,{ bonus bMaxHP,700; bonus bMaxSP,50; bonus4 bAutoSpellWhenHit,"AL_INCAGI",10,30,1; }
 2268:18573,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if(.@r > 6) { bonus bMaxHPrate,((.@r-5)/2)*2; bonus bHit,(.@r-5)/2; } }
@@ -147,7 +150,7 @@
 2358:5153,{ bonus bLuk,6; bonus bFlee,5; bonus bInt,2; }
 2359:2654,{ bonus bUseSPrate,-20; bonus bMaxHP,300; }
 2365:2881,{ bonus bDelayRate,-15; }
-//2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FIREPILLAR",10; }
+2369:2428:2533:5306,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,20; bonus2 bResEff,Eff_Freeze,10000; skill "WZ_FROSTNOVA",10; }
 2371:2522,{ bonus bAgi,5; bonus bFlee,10; }
 2371:2523,{ bonus bAgi,5; bonus bFlee,10; }
 2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; }
@@ -202,7 +205,7 @@
 2527:5467:13030,{ bonus2 bAddRace,RC_Dragon,25; }
 2527:13001,{ bonus2 bAddRace,RC_Dragon,5; }
 2527:13030,{ bonus2 bAddRace,RC_Dragon,5; }
-2597:28342,{ bonus bCritAtkRate,5; bonus bCritical,10; .@r = getequiprefinerycnt(EQI_COSTUME_HEAD_TOP); if (.@r > 7) bonus bCritAtkRate,4; else if (.@r > 5) bonus bCritAtkRate,3; }
+2597:28342,{ bonus bCritAtkRate,5; bonus bCritical,10; .@r = getequiprefinerycnt(EQI_GARMENT); if (.@r > 7) bonus bCritAtkRate,4; else if (.@r > 5) bonus bCritAtkRate,3; }
 //2598:Ramor Shield,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSubRace,RC_Undead,.@r; bonus2 bSubRace,RC_DemiHuman,.@r; }
 2607:2677,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
 2607:2711,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; }
@@ -225,6 +228,9 @@
 2701:2881,{ bonus bMatkRate,20; }
 2702:2874,{ bonus bAspd,1; }
 2702:22064,{ if (readparam(bAgi) > 120) bonus bAspd,2; /* Confirm: Bonus value */ }
+27013:27012,{ bonus bNoMadoFuel,1; }
+27015:27016,{ bonus bCritAtkRate,10; }
+27018:27019,{ autobonus "{ bonus bAspd,5; }",30,5000; }
 2720:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
 2720:2773,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
 2720:2774,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
@@ -368,6 +374,8 @@
 4682:4694,{ autobonus "{ active_transform 3244,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; }
 4683:4695,{ autobonus "{ active_transform 3246,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; }
 5040:5442,{ bonus bAspdRate,3; bonus bVariableCastrate,3; }
+4697:27012,{ bonus bNoMadoFuel,1; }
+4699:27012,{ bonus bNoMadoFuel,1; }
 5040:18673,{ bonus bSPrecovRate,3; }
 5041:18538,{ bonus2 bSubRace,RC_Angel,9; }
 5043:18656,{ bonus bFlee,10; bonus2 bAddEff,Eff_Stun,1000; }
@@ -393,6 +401,7 @@
 5475:18656,{ bonus bBaseAtk,30; bonus bMatk,30; bonus2 bAddMonsterDropItem,529,400; bonus2 bAddMonsterDropItem,530,400; bonus2 bAddMonsterDropItem,538,400; bonus2 bAddMonsterDropItem,12192,400;}
 5498:5521,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if(.@r>=7) bonus bCritAtkRate,10; if(.@r>=9) bonus bAspd,1; }
 5548:5766,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bBaseAtk,min(.@r,10); bonus bMatk,min(.@r,10); }
+5917:1525,{ bonus bLongAtkDef,10; }
 5920:18542,{ bonus bHealPower,2*getequiprefinerycnt(EQI_HEAD_TOP); }
 //9024:18832,{ bonus3 bAutoSpell,"BS_ADRENALINE",2,(GetPetRelationship >= 3)?15:10; }
 13027:15044,{ .@r = max(getequiprefinerycnt(EQI_ARMOR),1); bonus3 bAddMonsterDropItem,929,RC_DemiHuman,70*.@r; bonus3 bAddMonsterDropItem,970,RC_DemiHuman,50*.@r; bonus3 bAddMonsterDropItem,929,RC_Player,70*.@r; bonus3 bAddMonsterDropItem,970,RC_Player,50*.@r; bonus3 bAddMonsterDropItem,929,RC_Brute,70*.@r; bonus3 bAddMonsterDropItem,970,RC_Brute,50*.@r; }
@@ -417,16 +426,33 @@
 15156:20790:22085:28380:28418,{ bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus2 bSkillAtk,"SU_CN_METEOR",200; }
 15156:20790:22085:28380:28421,{ bonus bMaxHPrate,30; bonus bMaxSPrate,9; bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",200; }
 15156:20790:22085:28381:28415,{ bonus bMaxHPrate,25; bonus bMaxSPrate,15; bonus bHealPower,30; skill "AL_HEAL",9,1; }
+18137:1752,{ bonus bLongAtkRate,25; }
+18137:1752:19048,{ bonus bLongAtkRate,20; bonus2 bSubEle,Ele_Fire,-10; if (getequiprefinerycnt(EQI_HAND_R) >= 10) bonus bAspd,1; }
+18137:19019,{ bonus bLongAtkRate,45; }
+18138:1754,{ bonus bLongAtkRate,25; }
+18138:1754:19048,{ bonus bLongAtkRate,20; bonus2 bSubEle,Ele_Fire,-10; if (getequiprefinerycnt(EQI_HAND_R) >= 10) bonus2 bResEff,Eff_Freeze,-1000; /* Confirm: Resistance reduction */ }
+18138:19019,{ bonus bLongAtkRate,45; }
+18139:1756,{ bonus bLongAtkRate,25; bonus2 bAddEff,Eff_Stone,1000; }
+18139:1756:19048,{ bonus bLongAtkRate,20; bonus2 bSubEle,Ele_Fire,-10; if (getequiprefinerycnt(EQI_HAND_R) >= 10) bonus2 bResEff,Eff_Stone,-1000; /* Confirm: Resistance reduction */ }
+18139:19019,{ bonus bLongAtkRate,45; }
+18140:1755,{ bonus bLongAtkRate,25; bonus3 bAutoSpell,"NJ_HUUJIN",5,100; if(readparam(bInt)>39) bonus3 bAutoSpell,"NJ_HUUJIN",5,200; }
+18140:1755:19048,{ bonus bLongAtkRate,20; bonus2 bSubEle,Ele_Fire,-10; /* if (getequiprefinerycnt(EQI_HAND_R) >= 10)  TO DO: Disable autocast Wind Blade */ }
+18140:19019,{ bonus bLongAtkRate,45; }
 18507:18539,{ bonus bUseSPrate,-3; }
 18559:18560,{ bonus bCritAtkRate,5; }
 18776:20710,{ bonus bBaseAtk,10; }
 18776:22015,{ bonus bMatk,20; }
 18823:28372,{ bonus2 bSkillAtk,"CR_GRANDCROSS",BaseLevel; bonus2 bVariableCastrate,"CR_GRANDCROSS",-BaseLevel*2; bonus2 bSkillAtk,"CR_GRANDCROSS",BaseLevel/30; bonus2 bSkillUseSP,"CR_GRANDCROSS",-(BaseLevel/30)*10; }
+18867:1720,{ bonus bLongAtkRate,3+(getequiprefinerycnt(EQI_HAND_R) > 6 ? 5:0); }
 18997:28326:28327,{ bonus bSpeedRate,10; bonus bBaseAtk,50; bonus bMatk,50; if(getequiprefinerycnt(EQI_HEAD_TOP)>=9){ bonus bMaxHPrate,10; bonus bMaxSPrate,50; } }
 19026:20756,{ .@r = getequiprefinerycnt(EQI_GARMENT); bonus2 bSPGainRace,RC_Fish,10; bonus3 bAddMonsterDropItem,551,RC_Fish,(5+.@r); bonus2 bAddItemHealRate,551,5; bonus bHPrecovRate,(5+.@r); }
 19026:22059,{ bonus2 bCriticalAddRace,RC_Fish,(10+getequiprefinerycnt(EQI_SHOES)); }
 19038:19039,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP)+getequiprefinerycnt(EQI_HEAD_MID); if((.@r==7)||(.@r==8)){ bonus bCritical,12; bonus bHit,12; } if(.@r>=9){ bonus bMaxHP,1200; bonus bMaxSP,120; } }
 20135:20136,{ bonus bAllStats,12; }
+20797:2339,{ bonus bInt,15; bonus bMaxHPrate,5; bonus bMaxSPrate,5; if (getequiprefinerycnt(EQI_ARMOR) > 6) bonus bNoCastCancel,1; }
+20797:4174,{ bonus2 bSubEle,Ele_All,50; bonus2 bSubEle,Ele_Neutral,-50; }
+22069:2195,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bAddEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_L); }
+22069:20753,{ bonus2 bAddEle,Ele_Neutral,5; .@r = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r; bonus bMaxSPrate,.@r; }
 24012:24013:24014:24015:24016:24017,{ bonus bAllStats,9; }
 24018:24019:24020,{ if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) + getequiprefinerycnt(EQI_SHADOW_WEAPON) >= 23) { bonus bAtkRate,1; } }
 24021:24022:24023,{ if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) + getequiprefinerycnt(EQI_SHADOW_WEAPON) >= 23) { bonus bMatkRate,1; } }
@@ -457,14 +483,14 @@
 24078:24079:24080,{ bonus2 bSPDrainRate,10,1+(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)/10); }
 24081:24082:24083,{ bonus2 bHPDrainRate,40,2+(getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)/5); }
 24084:24085:24086:24087:24088:24089,{ bonus bAllStats,1; .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); if (.@r >= 45) { bonus bNoGemStone,1; } bonus bUseSPrate,100-.@r; }
-24090:24091:24092,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Stone,100; }
-24090:24093:24094,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Sleep,100; }
-24090:24095:24096,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Silence,100; }
-24090:24097:24098,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Blind,100; }
-24090:24099:24100:24101,{ bonus bDef,4; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 30) bonus2 bResEff,Eff_Freeze,100; }
-24090:24102:24103,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 20) bonus2 bResEff,Eff_Bleeding,100; }
-24090:24104:24105:24106,{ bonus bDef,4; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 30) bonus2 bResEff,Eff_Stun,100; }
-24090:24107:24108,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 20) bonus2 bResEff,Eff_Curse,100; }
+24090:24091:24092,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Stone,10000; }
+24090:24093:24094,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Sleep,10000; }
+24090:24095:24096,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Silence,10000; }
+24090:24097:24098,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Blind,10000; }
+24090:24099:24100:24101,{ bonus bDef,4; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 30) bonus2 bResEff,Eff_Freeze,10000; }
+24090:24102:24103,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 20) bonus2 bResEff,Eff_Bleeding,10000; }
+24090:24104:24105:24106,{ bonus bDef,4; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 30) bonus2 bResEff,Eff_Stun,10000; }
+24090:24107:24108,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 20) bonus2 bResEff,Eff_Curse,10000; }
 24109:24110,{ bonus bNoCastCancel2,1; bonus bVariableCastrate,40-(getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)); }
 //The above should be 24109:24110/*:Caster Shadow Pendant*/,{ bonus bFixedCastrate,-(getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R)); }
 24111:24112:24113,{ bonus bNoCastCancel,1; bonus bUseSPrate,40-getequiprefinerycnt(EQI_SHADOW_SHIELD)-getequiprefinerycnt(EQI_SHADOW_ARMOR)-getequiprefinerycnt(EQI_SHADOW_SHOES); }
@@ -520,3 +546,8 @@
 28315:28317,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
 28316:28318,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
 28326:28327,{ bonus bInt,8; bonus bStr,8; }
+28358:18521,{ skill "AS_CLOAKING",1; }
+28906:2998,{ bonus bLongAtkRate,10; }
+28907:2998,{ bonus bSpeedRate,25; }
+28908:2998,{ bonus bDelayrate,-10; }
+28909:2998,{ bonus bUseSPrate,-10; bonus bMaxSPrate,10; }

File diff suppressed because it is too large
+ 322 - 292
db/re/item_db.txt


+ 66 - 1
db/re/item_flag.txt

@@ -262,8 +262,10 @@
 14667,2 //Yong_Kwang_Scroll
 14699,2 //Memorial_Garuda_Lucky_Egg
 14701,2 //Rune_Midgard_Imortal_Lucky_Egg
+14735,2 //Shapeshifter_Costume
 14741,2 //Midgard_Celebration_Lucky_Egg
 14753,2 //Hero_Midgard_Egg
+14805,2 //Almighty_Lucky_Egg
 16245,2 //Tw_April_Scroll
 16257,2 //Buddah_Scroll
 16304,2 //Evil_Incarnation
@@ -381,18 +383,25 @@
 17307,2 //Midgard_Egg
 17317,2 //Sweet_Midgard_Egg
 17320,2 //Birthday_IdRO10th_Scroll
-17326,2 //Requiem_Egg,Requiem Egg
+17326,2 //Requiem_Egg
 17337,2 //Holy_Spirit_Egg
 17431,2 //Miracle_Lucky_Egg
 17435,2 //Legend_Hero_Lucky_Egg
 17447,2 //Blessing_Midgard_Lucky_Egg
+17461,2 //Frozen_Egg_Costume
 17464,2 //Winter_Midgard_Egg
+17470,2 //Headgear_Costume_Scroll
 17471,2 //Spring_Festival_Lucky_Egg
 17479,2 //Midgard_Festival_Egg
+17481,2 //Flower_Blossom_Scroll
 17482,2 //Solaris_Festival_Scroll
 17490,2 //Time_Travel_Lucky_Egg
+17493,2 //Burning_Feather_Costume_Scroll
 17494,2 //Rise_Midgard_Lucky_Egg
+17497,2 //Seaside_Costume_Scroll
+17517,2 //Animal_Costume_Scroll
 17519,2 //Epic_Heroes_Scroll
+17523,2 //Mystical_Costume_Scroll
 17526,2 //Majestic_Lucky_Egg
 17532,2 //Blessing_Lucky_Egg
 17552,2 //Garnet_Lucky_Egg
@@ -400,6 +409,17 @@
 17584,2 //Venus_Lucky_Egg
 17588,2 //Amora_Lucky_Egg
 17598,2 //Sograt_Lucky_Scroll
+17607,2 //Sanctuary_Lucky_Egg
+17613,2 //Chronosian_Lucky_Egg
+17628,2 //Cyborg_Lucky_Egg
+17633,2 //Undine_Lucky_Egg
+17648,2 //Smithy_Lucky_Egg
+17659,2 //Ganymede_Lucky_Egg
+17665,2 //LastAngel_LuckyScroll
+17671,2 //Valkyrie_Lucky_Egg
+17674,2 //Splash_Rainbow_Lucky_Egg
+17681,2 //Midgard_Lucky_Scroll
+17692,2 //Blessing_Scarlet_Egg
 22514,2 //Candy_Holder
 22558,2 //Lucky_Bag
 22669,2 //HALLOWEEN_G_BOX
@@ -1321,6 +1341,12 @@
 14497,4 //Pisces_Diadem_Box
 14498,4 //Pisces_Crown_Box
 14499,4 //Peacock_Feather_Box
+14699,4 //Memorial_Garuda_Lucky_Egg
+14701,4 //Rune_Midgard_Imortal_Lucky_Egg
+14735,4 //Shapeshifter_Costume
+14741,4 //Midgard_Celebration_Lucky_Egg
+14753,4 //Hero_Midgard_Egg
+14805,4 //Almighty_Lucky_Egg
 16131,4 //Lady_Tanee_Doll_Box
 16132,4 //Lunatic_Hat_Box
 16133,4 //G_Staff_Of_Light_Box
@@ -1690,6 +1716,45 @@
 17273,4 //INT_Biscuit_Stick_Box
 17274,4 //DEX_Biscuit_Stick_Box
 17275,4 //LUK_Biscuit_Stick_Box
+17307,4 //Midgard_Egg
+17317,4 //Sweet_Midgard_Egg
+17320,4 //Birthday_IdRO10th_Scroll
+17337,4 //Holy_Spirit_Egg
+17431,4 //Miracle_Lucky_Egg
+17435,4 //Legend_Hero_Lucky_Egg
+17447,4 //Blessing_Midgard_Lucky_Egg
+17461,4 //Frozen_Egg_Costume
+17464,4 //Winter_Midgard_Egg
+17470,4 //Headgear_Costume_Scroll
+17471,4 //Spring_Festival_Lucky_Egg
+17479,4 //Midgard_Festival_Egg
+17481,4 //Flower_Blossom_Scroll
+17482,4 //Solaris_Festival_Scroll
+17490,4 //Time_Travel_Lucky_Egg
+17493,4 //Burning_Feather_Costume_Scroll
+17494,4 //Rise_Midgard_Lucky_Egg
+17497,4 //Seaside_Costume_Scroll
+17517,4 //Animal_Costume_Scroll
+17519,4 //Epic_Heroes_Scroll
+17523,4 //Mystical_Costume_Scroll
+17526,4 //Majestic_Lucky_Egg
+17532,4 //Blessing_Lucky_Egg
+17552,4 //Garnet_Lucky_Egg
+17572,4 //Erzulie_Lucky_Egg
+17584,4 //Venus_Lucky_Egg
+17588,4 //Amora_Lucky_Egg
+17598,4 //Sograt_Lucky_Scroll
+17607,4 //Sanctuary_Lucky_Egg
+17613,4 //Chronosian_Lucky_Egg
+17628,4 //Cyborg_Lucky_Egg
+17633,4 //Undine_Lucky_Egg
+17648,4 //Smithy_Lucky_Egg
+17659,4 //Ganymede_Lucky_Egg
+17665,4 //LastAngel_LuckyScroll
+17671,4 //Valkyrie_Lucky_Egg
+17674,4 //Splash_Rainbow_Lucky_Egg
+17681,4 //Midgard_Lucky_Scroll
+17692,4 //Blessing_Scarlet_Egg
 //17297,4 //B_Halter_Box_1year
 //17318,4 //10_Anniv_Package
 //17319,4 //10_Anniv_Collection

+ 21 - 0
db/re/item_misc.txt

@@ -1264,3 +1264,24 @@ IG_Holy_Egg_2,608,2	//Seed_Of_Yggdrasil
 IG_Holy_Egg_2,610,15	//Leaf_Of_Yggdrasil
 IG_Holy_Egg_2,616,5	//Old_Card_Album
 IG_Holy_Egg_2,5198,1	//Drooping_Bunny
+//God Material Box
+IG_God_Material_Box,7073,5 //Jewel_Of_Prayer
+IG_God_Material_Box,7074,5 //Iron_Glove
+IG_God_Material_Box,7075,5 //Iron_Maiden
+IG_God_Material_Box,7076,5 //Mystery_Wheel
+IG_God_Material_Box,7077,5 //Silver_Fancy
+IG_God_Material_Box,7078,5 //Anger_Of_Valkurye
+IG_God_Material_Box,7079,5 //Feather_Of_Angel
+IG_God_Material_Box,7080,5 //Foot_Step_Of_Cat
+IG_God_Material_Box,7081,5 ///Beard_Of_Women
+IG_God_Material_Box,7082,5 //Root_Of_Stone
+IG_God_Material_Box,7083,5 //Soul_Of_Fish
+IG_God_Material_Box,7084,5 //Saliva_Of_Bird
+IG_God_Material_Box,7085,5 //Tendon_Of_Bear
+IG_God_Material_Box,7086,5 //Symbol_Of_Sun
+IG_God_Material_Box,7087,5 //Breath_Of_Soul
+IG_God_Material_Box,7088,5 //Crystal_Of_Snow
+IG_God_Material_Box,7089,5 //Indication_Of_Tempest
+IG_God_Material_Box,7090,5 //Slilince_Wave
+IG_God_Material_Box,7091,5 //Rough_Billows
+IG_God_Material_Box,7092,5 //Air_Stream

File diff suppressed because it is too large
+ 504 - 504
db/re/item_package.txt


+ 200 - 0
db/re/item_randomopt_db.txt

@@ -0,0 +1,200 @@
+// Items Random Option Database	
+//
+// Structure of Database:
+// ID,{ Bonus Script }
+RDMOPT_VAR_MAXHPAMOUNT,{ bonus bMaxHP,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_MAXSPAMOUNT,{ bonus bMaxSP,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_STRAMOUNT,{ bonus bStr,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_AGIAMOUNT,{ bonus bAgi,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_VITAMOUNT,{ bonus bVit,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_INTAMOUNT,{ bonus bInt,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_DEXAMOUNT,{ bonus bDex,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_LUKAMOUNT,{ bonus bLuk,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_MAXHPPERCENT,{ bonus bMaxHPrate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_MAXSPPERCENT,{ bonus bMaxSPrate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_HPACCELERATION,{ bonus bHPrecovRate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_SPACCELERATION,{ bonus bSPrecovRate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_ATKPERCENT,{ bonus bAtkRate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_MAGICATKPERCENT,{ bonus bMatkRate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_PLUSASPD,{ bonus bAspd,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_PLUSASPDPERCENT,{ bonus bAspdRate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_ATTPOWER,{ bonus bAtk,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_HITSUCCESSVALUE,{ bonus bHit,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_ATTMPOWER,{ bonus bMatk,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_ITEMDEFPOWER,{ bonus bDef,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_MDEFPOWER,{ bonus bMdef,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_AVOIDSUCCESSVALUE,{ bonus bFlee,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_PLUSAVOIDSUCCESSVALUE,{ bonus bFlee2,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_VAR_CRITICALSUCCESSVALUE,{ bonus bCritical,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_NOTHING,{ bonus2 bSubEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_WATER,{ bonus2 bSubEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_GROUND,{ bonus2 bSubEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_FIRE,{ bonus2 bSubEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_WIND,{ bonus2 bSubEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_POISON,{ bonus2 bSubEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_SAINT,{ bonus2 bSubEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_DARKNESS,{ bonus2 bSubEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_TELEKINESIS,{ bonus2 bSubEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_UNDEAD,{ bonus2 bSubEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_ATTR_TOLERACE_ALL,{ bonus2 bSubEle,Ele_All,getrandomoptinfo(ROA_VALUE); }
+// TODO: Confirm if damage reduction is implemented correctly.
+// kRO desc : <ELEMENT> 몬스터로부터 받는 물리 데미지 %d%% 감소.
+RDMOPT_DAMAGE_PROPERTY_NOTHING_USER,{ bonus3 bSubEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET,{ bonus2 bAddEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_PROPERTY_WATER_USER,{ bonus3 bSubEle,Ele_Water,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_WATER_TARGET,{ bonus2 bAddEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_PROPERTY_GROUND_USER,{ bonus3 bSubEle,Ele_Earth,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET,{ bonus2 bAddEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_PROPERTY_FIRE_USER,{ bonus3 bSubEle,Ele_Fire,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET,{ bonus2 bAddEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_PROPERTY_WIND_USER,{ bonus3 bSubEle,Ele_Wind,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_WIND_TARGET,{ bonus2 bAddEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_PROPERTY_POISON_USER,{ bonus3 bSubEle,Ele_Poison,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_POISON_TARGET,{ bonus2 bAddEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_PROPERTY_SAINT_USER,{ bonus3 bSubEle,Ele_Holy,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET,{ bonus2 bAddEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_PROPERTY_DARKNESS_USER,{ bonus3 bSubEle,Ele_Dark,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET,{ bonus2 bAddEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus3 bSubEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET,{ bonus2 bAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_PROPERTY_UNDEAD_USER,{ bonus3 bSubEle,Ele_Undead,getrandomoptinfo(ROA_VALUE),BF_NORMAL; }
+RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET,{ bonus2 bAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_NOTHING_USER,{ bonus3 bSubEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_NOTHING_TARGET,{ bonus2 bMagicAddEle,Ele_Neutral,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_WATER_USER,{ bonus3 bSubEle,Ele_Water,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_WATER_TARGET,{ bonus2 bMagicAddEle,Ele_Water,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_GROUND_USER,{ bonus3 bSubEle,Ele_Earth,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_GROUND_TARGET,{ bonus2 bMagicAddEle,Ele_Earth,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_FIRE_USER,{ bonus3 bSubEle,Ele_Fire,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_FIRE_TARGET,{ bonus2 bMagicAddEle,Ele_Fire,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_WIND_USER,{ bonus3 bSubEle,Ele_Wind,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_WIND_TARGET,{ bonus2 bMagicAddEle,Ele_Wind,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_POISON_USER,{ bonus3 bSubEle,Ele_Poison,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_POISON_TARGET,{ bonus2 bMagicAddEle,Ele_Poison,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_SAINT_USER,{ bonus3 bSubEle,Ele_Holy,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_SAINT_TARGET,{ bonus2 bMagicAddEle,Ele_Holy,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_DARKNESS_USER,{ bonus3 bSubEle,Ele_Dark,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_DARKNESS_TARGET,{ bonus2 bMagicAddEle,Ele_Dark,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_USER,{ bonus3 bSubEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_TELEKINESIS_TARGET,{ bonus2 bMagicAddEle,Ele_Ghost,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_PROPERTY_UNDEAD_USER,{ bonus3 bSubEle,Ele_Undead,getrandomoptinfo(ROA_VALUE),BF_MAGIC; }
+RDMOPT_MDAMAGE_PROPERTY_UNDEAD_TARGET,{ bonus2 bMagicAddEle,Ele_Undead,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_BODY_ATTR_NOTHING,{ bonus bDefEle,Ele_Neutral; }
+RDMOPT_BODY_ATTR_WATER,{ bonus bDefEle,Ele_Water; }
+RDMOPT_BODY_ATTR_GROUND,{ bonus bDefEle,Ele_Earth; }
+RDMOPT_BODY_ATTR_FIRE,{ bonus bDefEle,Ele_Fire; }
+RDMOPT_BODY_ATTR_WIND,{ bonus bDefEle,Ele_Wind; }
+RDMOPT_BODY_ATTR_POISON,{ bonus bDefEle,Ele_Poison; }
+RDMOPT_BODY_ATTR_SAINT,{ bonus bDefEle,Ele_Holy; }
+RDMOPT_BODY_ATTR_DARKNESS,{ bonus bDefEle,Ele_Dark; }
+RDMOPT_BODY_ATTR_TELEKINESIS,{ bonus bDefEle,Ele_Ghost; }
+RDMOPT_BODY_ATTR_UNDEAD,{ bonus bDefEle,Ele_Undead; }
+//RDMOPT_BODY_ATTR_ALL,{ /* Needs more info */ }
+RDMOPT_RACE_TOLERACE_NOTHING,{ bonus2 bSubRace,RC_Formless,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_UNDEAD,{ bonus2 bSubRace,RC_Undead,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_ANIMAL,{ bonus2 bSubRace,RC_Brute,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_PLANT,{ bonus2 bSubRace,RC_Plant,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_INSECT,{ bonus2 bSubRace,RC_Insect,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_FISHS,{ bonus2 bSubRace,RC_Fish,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_DEVIL,{ bonus2 bSubRace,RC_Demon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_HUMAN,{ bonus2 bSubRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bSubRace,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_ANGEL,{ bonus2 bSubRace,RC_Angel,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_TOLERACE_DRAGON,{ bonus2 bSubRace,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_NOTHING,{ bonus2 bAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_UNDEAD,{ bonus2 bAddRace,RC_Undead,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_ANIMAL,{ bonus2 bAddRace,RC_Brute,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_PLANT,{ bonus2 bAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_INSECT,{ bonus2 bAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_FISHS,{ bonus2 bAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_DEVIL,{ bonus2 bAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_HUMAN,{ bonus2 bAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bAddRace,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_ANGEL,{ bonus2 bAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_DAMAGE_DRAGON,{ bonus2 bAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_NOTHING,{ bonus2 bMagicAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_UNDEAD,{ bonus2 bMagicAddRace,RC_Undead,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_ANIMAL,{ bonus2 bMagicAddRace,RC_Brute,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_PLANT,{ bonus2 bMagicAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_INSECT,{ bonus2 bMagicAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_FISHS,{ bonus2 bMagicAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_DEVIL,{ bonus2 bMagicAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_HUMAN,{ bonus2 bMagicAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bMagicAddRace,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_ANGEL,{ bonus2 bMagicAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_MDAMAGE_DRAGON,{ bonus2 bMagicAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_CRI_PERCENT_NOTHING,{ bonus2 bCriticalAddRace,RC_Formless,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_UNDEAD,{ bonus2 bCriticalAddRace,RC_Undead,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_ANIMAL,{ bonus2 bCriticalAddRace,RC_Brute,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_PLANT,{ bonus2 bCriticalAddRace,RC_Plant,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_INSECT,{ bonus2 bCriticalAddRace,RC_Insect,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_FISHS,{ bonus2 bCriticalAddRace,RC_Fish,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_DEVIL,{ bonus2 bCriticalAddRace,RC_Demon,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_HUMAN,{ bonus2 bCriticalAddRace,RC_DemiHuman,getrandomoptinfo(ROA_VALUE)/10; bonus2 bCriticalAddRace,RC_Player,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_ANGEL,{ bonus2 bCriticalAddRace,RC_Angel,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_CRI_PERCENT_DRAGON,{ bonus2 bCriticalAddRace,RC_Dragon,getrandomoptinfo(ROA_VALUE)/10; }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_NOTHING,{ bonus2 bIgnoreDefRaceRate,RC_Formless,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_UNDEAD,{ bonus2 bIgnoreDefRaceRate,RC_Undead,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_ANIMAL,{ bonus2 bIgnoreDefRaceRate,RC_Brute,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_PLANT,{ bonus2 bIgnoreDefRaceRate,RC_Plant,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_INSECT,{ bonus2 bIgnoreDefRaceRate,RC_Insect,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_FISHS,{ bonus2 bIgnoreDefRaceRate,RC_Fish,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_DEVIL,{ bonus2 bIgnoreDefRaceRate,RC_Demon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_HUMAN,{ bonus2 bIgnoreDefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bIgnoreDefRaceRate,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_ANGEL,{ bonus2 bIgnoreDefRaceRate,RC_Angel,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_DEF_PERCENT_DRAGON,{ bonus2 bIgnoreDefRaceRate,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_NOTHING,{ bonus2 bIgnoreMdefRaceRate,RC_Formless,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_UNDEAD,{ bonus2 bIgnoreMdefRaceRate,RC_Undead,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANIMAL,{ bonus2 bIgnoreMdefRaceRate,RC_Brute,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_PLANT,{ bonus2 bIgnoreMdefRaceRate,RC_Plant,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_INSECT,{ bonus2 bIgnoreMdefRaceRate,RC_Insect,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_FISHS,{ bonus2 bIgnoreMdefRaceRate,RC_Fish,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_DEVIL,{ bonus2 bIgnoreMdefRaceRate,RC_Demon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_HUMAN,{ bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,getrandomoptinfo(ROA_VALUE); bonus2 bIgnoreMdefRaceRate,RC_Player,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_ANGEL,{ bonus2 bIgnoreMdefRaceRate,RC_Angel,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RACE_IGNORE_MDEF_PERCENT_DRAGON,{ bonus2 bIgnoreMdefRaceRate,RC_Dragon,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_DAMAGE_NORMAL_TARGET,{ bonus2 bAddClass,Class_Normal,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_DAMAGE_BOSS_TARGET,{ bonus2 bAddClass,Class_Boss,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_DAMAGE_NORMAL_USER,{ bonus2 bSubClass,Class_Normal,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_DAMAGE_BOSS_USER,{ bonus2 bSubClass,Class_Boss,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_MDAMAGE_NORMAL,{ bonus2 bMagicAddClass,Class_Normal,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_MDAMAGE_BOSS,{ bonus2 bMagicAddClass,Class_Boss,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_IGNORE_DEF_PERCENT_NORMAL,{ bonus2 bIgnoreDefClassRate,Class_Normal,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_IGNORE_DEF_PERCENT_BOSS,{ bonus2 bIgnoreDefClassRate,Class_Boss,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_IGNORE_MDEF_PERCENT_NORMAL,{ bonus2 bIgnoreMdefClassRate,Class_Normal,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_CLASS_IGNORE_MDEF_PERCENT_BOSS,{ bonus2 bIgnoreMdefClassRate,Class_Boss,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_SIZE_SMALL_TARGET,{ bonus2 bAddSize,Size_Small,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_SIZE_MIDIUM_TARGET,{ bonus2 bAddSize,Size_Medium,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_SIZE_LARGE_TARGET,{ bonus2 bAddSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_SIZE_SMALL_USER,{ bonus2 bSubSize,Size_Small,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_SIZE_MIDIUM_USER,{ bonus2 bSubSize,Size_Medium,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_SIZE_LARGE_USER,{ bonus2 bSubSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_SIZE_PERFECT,{ bonus bNoSizeFix,1; }
+RDMOPT_DAMAGE_CRI_TARGET,{ bonus bCritAtkRate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DAMAGE_CRI_USER,{ bonus bCriticalDef,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RANGE_ATTACK_DAMAGE_TARGET,{ bonus bLongAtkRate,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_RANGE_ATTACK_DAMAGE_USER,{ bonus bLongAtkDef,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_HEAL_VALUE,{ bonus bHealPower,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_HEAL_MODIFY_PERCENT,{ bonus bHealPower2,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_DEC_SPELL_CAST_TIME,{ bonus bVariableCastrate,-(getrandomoptinfo(ROA_VALUE));}
+RDMOPT_DEC_SPELL_DELAY_TIME,{ bonus bDelayrate,-(getrandomoptinfo(ROA_VALUE)); }
+RDMOPT_DEC_SP_CONSUMPTION,{ bonus bUseSPrate,-(getrandomoptinfo(ROA_VALUE)); }
+//RDMOPT_HP_DRAIN,{ /* Needs more info */ }
+//RDMOPT_SP_DRAIN,{ /* Needs more info */ }
+RDMOPT_WEAPON_ATTR_NOTHING,{ bonus bAtkEle,Ele_Neutral; }
+RDMOPT_WEAPON_ATTR_WATER,{ bonus bAtkEle,Ele_Water; }
+RDMOPT_WEAPON_ATTR_GROUND,{ bonus bAtkEle,Ele_Earth; }
+RDMOPT_WEAPON_ATTR_FIRE,{ bonus bAtkEle,Ele_Fire; }
+RDMOPT_WEAPON_ATTR_WIND,{ bonus bAtkEle,Ele_Wind; }
+RDMOPT_WEAPON_ATTR_POISON,{ bonus bAtkEle,Ele_Poison; }
+RDMOPT_WEAPON_ATTR_SAINT,{ bonus bAtkEle,Ele_Holy; }
+RDMOPT_WEAPON_ATTR_DARKNESS,{ bonus bAtkEle,Ele_Dark; }
+RDMOPT_WEAPON_ATTR_TELEKINESIS,{ bonus bAtkEle,Ele_Ghost; }
+RDMOPT_WEAPON_ATTR_UNDEAD,{ bonus bAtkEle,Ele_Undead; }
+RDMOPT_WEAPON_INDESTRUCTIBLE,{ bonus bUnbreakableWeapon,1; }
+RDMOPT_BODY_INDESTRUCTIBLE,{ bonus bUnbreakableArmor,1; }
+RDMOPT_MDAMAGE_SIZE_SMALL_TARGET,{ bonus2 bMagicAddSize,Size_Small,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_SIZE_MIDIUM_TARGET,{ bonus2 bMagicAddSize,Size_Medium,getrandomoptinfo(ROA_VALUE); }
+RDMOPT_MDAMAGE_SIZE_LARGE_TARGET,{ bonus2 bMagicAddSize,Size_Large,getrandomoptinfo(ROA_VALUE); }
+//RDMOPT_MDAMAGE_SIZE_SMALL_USER,{}
+//RDMOPT_MDAMAGE_SIZE_MIDIUM_USER,{}
+//RDMOPT_MDAMAGE_SIZE_LARGE_USER,{}
+//redefined?
+//RDMOPT_ATTR_TOLERACE_ALL,{}

+ 32 - 2
db/re/item_trade.txt

@@ -2808,11 +2808,13 @@
 14731,475,100	// Teleport_Shadow_Box
 14732,475,100	// Steal_Shadow_Box
 14733,475,100	// Sealed_Pharaoh_Scroll
+14735,475,100	// Shapeshifter_Costume
 14739,475,100	// Sealed_General_Egnigem_Cenia_Scroll
 14740,475,100	// Sealed_Vesper_Scroll
 14758,475,100	// Safe_To_Smelting_Scroll
 14765,475,100	// Limited_Edition_JOB_Battle_Manual
 14766,475,100	// Limited_Power_Booster
+14805,475,100	// Almighty_Lucky_Egg
 15001,507,100	// Odin's_Blessing_I
 15002,507,100	// Rune_Plate
 15007,467,100	// Time_Keepr_Robe
@@ -2828,7 +2830,7 @@
 15064,499,100	// TE_Woe_Mage_Coat
 15067,507,100	// Rune_Suit
 15116,467,100	// Armor_Of_Airship
-15141,467,100	// Ancient_Armor_Of_The_Goddess
+15141,467,100	// Rift_Ancient_Armor
 16002,507,100	// Stunner_C
 16004,499,100	// P_Mace1
 16005,499,100	// P_Mace2
@@ -3554,23 +3556,28 @@
 17455,475,100	// Premium_Battle_Manual_Box
 17456,475,100	// Support_Package_II
 17457,475,100	// Support_Package_II(10)
+17461,475,100	// Frozen_Egg_Costume
 17465,475,100	// Refinement_Ore_Box_VI
 17466,475,100	// Refinement_Ore_Box_VI(10)
 17467,475,100	// (Limited)_Token_of_Ziegfried_Box(50)
 17468,475,100	// Neuralizer_II_Box_3
 17469,475,100	// Neuralizer_I_Box
+17470,475,100	// Headgear_Costume_Scroll
 17472,475,100	// Support_Package_III
 17473,475,100	// Support_Package_III(10)
 17474,475,100	// Infinite_Giant_Fly_Wing_Box_V
 17475,475,100	// (Limited)Gym_Membership_Card_Box(10)
 17477,475,100	// Unlimited_Box_II
 17478,475,100	// Unlimited_Box_II(10)
+17481,475,100	// Flower_Blossom_Scroll
 17483,475,100	// Three_Master_Package_III
 17484,475,100	// Three_Master_Package_III(10)
 17491,475,100	// Refinement_Ore_Box_VII
 17492,475,100	// Refinement_Ore_Box_VII(10)
+17493,475,100	// Burning_Feather_Costume_Scroll
 17495,475,100	// Lucky_Silvervine_Fruit_Box_III10
 17496,475,100	// Lucky_Silvervine_Fruit_Box_III110
+17497,475,100	// Seaside_Costume_Scroll
 17498,475,100	// Three_Master_Package_IV
 17499,475,100	// Three_Master_Package_IV(10)
 17501,475,100	// Support_Package_IV
@@ -3584,9 +3591,11 @@
 17513,475,100	// (Limited)Purified_Oridecon_Box(30)
 17515,475,100	// Unlimited_Box_III
 17516,475,100	// Unlimited_Box_III(10)
+17517,475,100	// Animal_Costume_Scroll
 17520,475,100	// Limited_Edition_Manual_Box
 17521,475,100	// Three_Master_Package_V
 17522,475,100	// Three_Master_Package_V(10)
+17523,475,100	// Mystical_Costume_Scroll
 17524,475,100	// Limited_Power_Booster_Box
 17525,475,100	// Limited_Power_Booster_Box(100)
 17527,475,100	// Actinidia_Cat_Fruit_Box(200)
@@ -3599,11 +3608,20 @@
 17567,475,100	// Event_Almighty_Box
 17568,475,100	// Event_Almighty_Box(100)
 17569,475,100	// Dungeon_1_hour_Ticket_Box
+17648,475,100	// Smithy_Lucky_Egg
+17659,475,100	// Ganymede_Lucky_Egg
+17665,475,100	// LastAngel_LuckyScroll
+17671,475,100	// Valkyrie_Lucky_Egg
+17674,475,100	// Splash_Rainbow_Lucky_Egg
+17681,475,100	// Midgard_Lucky_Scroll
+17692,475,100	// Blessing_Scarlet_Egg
 //17570,475,100	//
 //17573,475,100	//
 //17574,475,100	//
 //17582,475,100	//
 //17583,475,100	//
+17681,475,100	// Midgard_Lucky_Scroll
+17692,475,100	// Blessing_Scarlet_Egg
 18100,507,100	// Shooting_Star_C
 18106,499,100	// P_Bow3
 18107,507,100	// Malang_Snow_Crab
@@ -3648,7 +3666,7 @@
 18982,475,100	// Old_Circlet_Of_Bones
 18983,475,100	// Old_Protect_Of_Crown
 18984,475,100	// Old_Camouflage_Rabbit_Hood
-19033,467,100	// Ancient_Decoration_Of_The_Goddess
+19033,467,100	// Rift_Ancient_Decoration
 19051,475,100	// Warrior_Moon_Cat
 19052,507,100	// Sigruns_Wing
 19053,475,100	// Fighter_Moon_Cat
@@ -3696,11 +3714,13 @@
 //20704,499,100	//
 //20709,507,100	//
 20743,467,100	// Cloak_Of_Airship
+20779,467,100	// Rift_Manteau
 21005,499,100	// Metal_Two_Hand_Sword
 //21006,499,100	//
 21014,467,100	// Infinity_Two-Handed_Sword
 //22012,507,100	//
 22046,467,100	// Boots_Of_Airship
+22075,467,100	// Rift_Shoes
 22508,507,100	// Para_Team_Mark_
 22510,475,100	// King_Wolf_Scroll
 //22511,467,100	//
@@ -3837,6 +3857,16 @@
 //22950,475,100	//
 //22951,475,100	//
 //22952,475,100	//
+25132,499,100	// Pumpkin_Deco
+25133,499,100	// Dried_White_Stem
+25143,499,100	// Gift_Stuffed_Doll
+25144,499,100	// Bridge_Postured_Doll
+25145,499,100	// Burnt_Spector_Doll
+25146,499,100	// Cold_Blooded_Queen_Doll
+25147,499,100	// Well_Eatenl_Rabbit_Doll
+25148,499,100	// Cute_Starved_Demon_Doll
+25149,499,100	// Doll_With_Warm_Scarf
+25150,499,100	// Hugging_Alice_Pilow
 26100,435,100	// Paradise_Foxtail_Staff_II
 26101,435,100	// Paradise_Foxtail_Staff_III
 28105,467,100	// Infinity_Axe

+ 27 - 0
db/re/job_noenter_map.txt

@@ -0,0 +1,27 @@
+// Defines Job(s) that are restricted to enter map (by flag/zones)
+//
+// Structure of Database:
+// JobID,FlagZone,GroupLevelBypass
+//
+// JobID: See JOB_* constants or use job number
+//
+// Legend for 'Flag' field (bitmask):
+// 1    - restricted in normal maps
+// 2    - restricted in PVP
+// 4    - restricted in GVG
+// 8    - restricted in Battlegrounds
+// Restricted zones - configured by 'restricted <number>' mapflag
+// 32   - restricted in zone 1
+// 64   - restricted in zone 2
+// 128  - restricted in zone 3
+// 256  - restricted in zone 4
+// 512  - restricted in zone 5
+// 1024 - restricted in zone 6
+// 2048 - restricted in zone 7
+// 4096 - restricted in zone 8
+//
+// GroupLevelBypass: Group Level (groups.conf) to ignore the restriction
+//
+// NOTES:
+// - Restriction will be overwritten for multiple defines with the same Job ID
+// - The flag is used by 'jobcanentermap' script.

+ 124 - 11
db/re/mob_db.txt

@@ -1280,9 +1280,9 @@
 2157,G_BANASPATY,Banaspaty,Banaspaty,85,4680,0,0,0,1,200,382,63,89,1,78,35,77,79,20,10,12,0,0,63,0x6203695,220,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
 // Homunculus S Summons
-2158,S_HORNET,Hornet,Hornet,1,60,1,27,20,1,8,9,2,5,6,1,1,0,6,5,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2159,S_GIANT_HORNET,Giant Hornet,Giant Hornet,1,60,1,27,20,1,8,9,2,5,6,1,1,0,6,5,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2160,S_LUCIOLA_VESPA,Luciola Vespa,Luciola Vespa,1,60,1,27,20,1,8,9,2,5,6,1,1,0,6,5,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+2158,S_HORNET,Hornet,Hornet,95,5000,1,0,0,1,381,494,7,1,62,54,54,65,76,55,10,12,0,4,24,0x2001081,150,1292,792,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+2159,S_GIANT_HORNET,Giant Hornet,Giant Hornet,110,11960,0,0,0,1,456,579,80,43,117,65,67,72,77,34,10,12,0,4,24,0x2001081,155,1292,792,340,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+2160,S_LUCIOLA_VESPA,Luciola Vespa,Luciola Vespa,130,16466,1,0,0,1,677,831,59,55,88,89,55,32,119,59,10,12,1,4,24,0x2001081,110,1000,864,432,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
 // Nightmare Scaraba Hole
 2161,I_HORN_SCARABA,Gold One-Horn Scaraba,Gold One-Horn Scaraba,130,204400,0,15660,12033,1,1266,1448,135,20,1,109,55,121,121,33,10,12,0,4,22,0x2003695,150,76,384,288,0,0,0,0,0,0,0,6324,10000,1433,4,12735,20,7939,20,993,4,0,0,0,0,0,0,0,0,4508,1
@@ -1696,11 +1696,11 @@
 //2539,HIDDEN_MOB5
 //2540,FACEWORM_EGG
 //2541,FACEWORM_LARVA
-//2542,IRENE_ELDER
-//2543,PAYONSOLDIER
-//2544,PAYONSOLDIER2
-//2545,GUARDDOG
-//2546,GUARDDOG2
+2542,IRENE_ELDER,Irene Elder,Doyen Irene,101,433110,1,11360,27032,1,1749,2281,145,73,82,36,55,100,182,88,10,12,1,7,20,102774421,170,73,384,288,0,0,0,0,0,0,0,12072,100,12082,100,12087,100,12077,100,12092,100,12097,100,7481,1,12129,1,0,0,0,0
+2543,PAYONSOLDIER,1st Payon Soldier,1st Payon Soldier,101,20099,1,1083,2688,1,545,596,66,36,20,46,35,35,64,30,10,12,1,7,20,0x3095,225,73,348,288,0,0,0,0,0,0,0,12054,533,12044,533,12059,533,12069,533,12049,533,12127,266,12064,533,7479,1,0,0,0,0
+2544,PAYONSOLDIER2,2nd Payon Soldier,2nd Payon Soldier,101,21099,1,1136,2703,1,697,748,66,36,20,46,25,35,64,30,10,12,1,7,20,0x3095,200,73,348,288,0,0,0,0,0,0,0,12071,400,12076,400,12091,400,12081,400,12096,400,12086,400,12128,133,7480,1,0,0,0,0
+2545,GUARDDOG,1st Guard Dog,1st Guard Dog,101,20099,1,944,2658,1,546,598,66,36,20,46,25,35,64,30,10,12,1,2,22,0x3091,150,73,348,288,0,0,0,0,0,0,0,12043,600,12068,600,7477,1,12048,600,12053,600,12058,600,12063,600,12125,333,0,0,0,0
+2546,GUARDDOG2,2nd Guard Dog,2nd Guard Dog,101,21099,1,1014,2673,1,573,229,66,36,20,46,25,35,64,30,10,12,1,2,23,0x3095,120,73,348,288,0,0,0,0,0,0,0,12045,466,7478,1,12050,466,12055,466,12060,466,12065,466,12070,466,12126,200,0,0,0,0
 //2547,MER_GARM_BABY
 //2548,MER_HILLSRION
 //2549,GEFFEN_MAGE_1
@@ -2645,9 +2645,9 @@
 //3488,IMMORTAL_CORPS2
 //3489,IMMORTAL_CORPS3
 //3490,IMMORTAL_CO_CMDER
-//
+//3491,COELACANTH_TW
 //3492,E_WILD_MOBSTER
-//
+//3493,SYS_MSG_J
 //3494,IFN_POIRING
 //3495,DR_EGGRING
 //3496,DR_LUNATIC
@@ -2683,9 +2683,97 @@
 //3526,POPE_MD_H_KTULLANUX
 //3527,POPE_MD_MERC_NORMAL
 //3528,POPE_MD_MERC_CASUAL
-//
+//3529,JP_E_MONSTER_1
+//3530,JP_E_MONSTER_2
+//3531,JP_E_MONSTER_3
+//3532,JP_E_MONSTER_4
+//3533,JP_E_MONSTER_5
+//3534,JP_E_MONSTER_6
+//3535,JP_E_MONSTER_7
+//3536,JP_E_MONSTER_8
+//3537,JP_E_MONSTER_9
+//3538,JP_E_MONSTER_10
+//3539,JP_E_MONSTER_11
+//3540,JP_E_MONSTER_12
+//3541,JP_E_MONSTER_13
+//3542,JP_E_MONSTER_14
+//3543,JP_E_MONSTER_15
+//3544,JP_E_MONSTER_16
+//3545,JP_E_MONSTER_17
+//3546,JP_E_MONSTER_18
+//3547,JP_E_MONSTER_19
+//3548,JP_E_MONSTER_20
+//3549,JP_E_MONSTER_21
+//3550,JP_E_MONSTER_22
+//3551,JP_E_MONSTER_23
+//3552,JP_E_MONSTER_24
+//3553,JP_E_MONSTER_25
+//3554,JP_E_MONSTER_26
+//3555,JP_E_MONSTER_27
+//3556,JP_E_MONSTER_28
+//3557,JP_E_MONSTER_29
+//3558,JP_E_MONSTER_30
+//3559,JP_E_MONSTER_31
+//3560,JP_E_MONSTER_32
+//3561,JP_E_MONSTER_33
+//3562,JP_E_MONSTER_34
+//3563,JP_E_MONSTER_35
+//3564,JP_E_MONSTER_36
+//3565,JP_E_MONSTER_37
+//3566,JP_E_MONSTER_38
+//3567,JP_E_MONSTER_39
+//3568,JP_E_MONSTER_40
 //3569,POPE_MD_H_MERC_NORMAL
 //3570,POPE_MD_H_MERC_CASUAL
+//3571,E_MONSTER_41
+//3572,E_MONSTER_42
+//3573,E_MONSTER_43
+//3574,E_MONSTER_44
+//3575,E_MONSTER_45
+//3576,E_MONSTER_46
+//3577,E_MONSTER_47
+//3578,E_MONSTER_48
+//3579,E_MONSTER_49
+//3580,E_MONSTER_50
+//3581,E_MONSTER_51
+//3582,E_MONSTER_52
+//3583,AB_ELVIRA
+//3584,AB_GIOIA
+//3585,AB_GIOIA_G
+//3586,AB_GIOIA_B
+//3587,AB_SOHEON
+//3588,AB_DAEHYON
+//3589,AB_DAEHYON_G
+//3590,AB_DAEHYON_B
+//3591,AB_RUDO
+//3592,AB_KADES
+//3593,AB_KADES_G
+//3594,AB_KADESB
+//3595,AB_LORA
+//3596,AB_PYURIEL
+//3597,AB_PYURIEL_G
+//3598,AB_PYURIELB
+//3599,AB_ARTHUR
+//3600,G_RANDEL_
+//3601,G_FLAMEL_
+//3602,G_CELIA_
+//3603,G_CHEN_
+//3604,G_GERTIE_
+//3605,G_ALPHOCCIO_
+//3606,G_TRENTINI_
+//3607,V_G_SEYREN_
+//3608,V_G_EREMES_
+//3609,V_G_HARWORD_
+//3610,V_G_MAGALETA_
+//3611,V_G_SHECIL_
+//3612,V_G_KATRINN_
+//3613,V_G_RANDEL_
+//3614,V_G_FLAMEL_
+//3615,V_G_CELIA_
+//3616,V_G_CHEN_
+//3617,V_G_GERTIE_
+//3618,V_G_ALPHOCCIO_
+//3619,V_G_TRENTINI_
 //
 //3621,EP16_2_MM_CUTIE
 //3622,EP16_2_MM_S_GUARDS
@@ -2701,3 +2789,28 @@
 //3632,EP16_2_MATTER_KIMERA
 //3633,EP16_2_VENOM_KIMERA
 //3634,MYSTCASE_GIANT
+//3635,EVENT_KOBOLD
+//3636,LITTLE_ISIS
+//3637,MD_SKELETON_60
+//3638,MD_SKELETON_80
+//3639,MD_SKELETON_100
+//3640,MD_SKELETON_120
+//3641,MD_SKELETON_140
+//3642,MD_SKELETON_160
+//3643,MD_FARMILIAR_60
+//3644,MD_FARMILIAR_80
+//3645,MD_FARMILIAR_100
+//3646,MD_FARMILIAR_120
+//3647,MD_FARMILIAR_140
+//3648,MD_FARMILIAR_160
+//3649,MD_ZOMBIE_60
+//3650,MD_ZOMBIE_80
+//3651,MD_ZOMBIE_100
+//3652,MD_ZOMBIE_120
+//3653,MD_ZOMBIE_140
+//3654,MD_ZOMBIE_160
+//
+//3656,B_THE_PAPER
+//3657,B_THE_PAPER2
+//
+//3668,B_KIEL_

+ 15 - 11
db/re/mob_race2_db.txt

@@ -1,26 +1,30 @@
 // Monster Racial Groups Database
 //
 // Structure of Database:
-// Race2ID,MobID1,MobID2,MobID3,...,MobID50
+// Race2ID,MobID1,MobID2,MobID3,...,MobID100
 
 // Goblins
-1,1122,1123,1124,1125,1126,1258,1299
+RC2_GOBLIN,1122,1123,1124,1125,1126,1258,1299
 // Kobolds
-2,1133,1134,1135,1282,1296
+RC2_KOBOLD,1133,1134,1135,1282,1296
 // Orcs
-3,1023,1152,1153,1189,1213,1273
+RC2_ORC,1023,1152,1153,1189,1213,1273
 // Golems
-4,1040,1278,1366,1497,2024
+RC2_GOLEM,1040,1278,1366,1497,2024
 // Guardians
-5,1285,1286,1287,2081
+RC2_GUARDIAN,1285,1286,1287,2081
 // Ninja Classes (Pirate's_Pride)
-6,1315,1364,1401,1560
+RC2_NINJA,1315,1364,1401,1560
 // GvG
-7,1143,1905,1906,1907
+RC2_GVG,1143,1905,1906,1907
 // Battlefield
-8,1906,1909,1914,1915
+RC2_BATTLEFIELD,1906,1909,1914,1915
 // Treasure Chests
-9,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1938,1939,1940,1941,1942,1943,1944,1945,1946
+RC2_TREASURE,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1938,1939,1940,1941,1942,1943,1944,1945,1946
 // Bio Labs
 // TODO : Monsters in lhz_dun_n not implemented yet. [secretdataz]
-10,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241
+RC2_BIOLAB,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241
+// Manuk
+RC2_MANUK,1986,1987,1988,1989,1990,1997,1998,1999
+// Splendide
+RC2_SPLENDIDE,1991,1992,1993,1994,1995

+ 6 - 0
db/re/mob_skill_db.txt

@@ -8388,6 +8388,12 @@
 //2485,Chimera (Nightmare)@WZ_HEAVENDRIVE,attack,91,5,500,1200,5000,yes,target,always,,,,,,,6,
 //2485,Chimera (Nightmare)@WZ_HEAVENDRIVE,chase,91,5,500,1200,5000,yes,target,always,,,,,,,6,
 
+// Heroes' Trail Part 1 - Sara's Memory
+// Not Yet Implemented skill
+//2542,Irene Elder@NPC_MILLENNIUMSHIELD,idle,707,1,5000,1000,30000,no,self,always,0,,,,,,,
+//2542,Irene Elder@NPC_MILLENNIUMSHIELD,attack,707,1,5000,1000,30000,no,self,always,0,,,,,,,
+//2542,Irene Elder@NPC_MILLENNIUMSHIELD,chase,707,1,5000,1000,30000,no,self,always,0,,,,,,,
+
 // Champion Monsters
 2603,Swift Zombie Slaughter@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2603,Swift Zombie Slaughter@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,

+ 18 - 3
db/re/quest_db.txt

@@ -2518,9 +2518,20 @@
 12314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"About skills"
 
 // Old Glast Heim
-12317,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Fake Keyblade"
-12318,0,2475,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Upper Cats: annoying guy"
-12319,0,2476,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Upper Cats: annoying guy"
+12316,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Meeting Hugin"
+12317,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Trace of Time Travel"
+12318,0,2475,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Corrupted Soul Hunt"
+12319,0,2476,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Amdarais Hunt"
+12320,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Time Traveler"
+12321,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Time Conqueror"
+12322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Space Distortion"
+
+12334,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Trace of Time Travel"
+12335,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Space Distortion"
+//12336,0,3151,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Corrupted Soul Hunt"
+//12337,0,3150,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Amdarais Soul Hunt"
+12338,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Time Traveler"
+12339,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Time Conqueror"
 
 12363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"?????? ?? ??"
 
@@ -2781,6 +2792,10 @@
 15000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Experiencing abnormal statuses"
 15001,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Hold your breath"
 
+// Heroes' Trail Part 1 - Sara's Memory
+15002,72000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial dungeon: Sara's Memory"
+15003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Adventurer leon"
+
 //15025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
 //15026,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
 //15027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""

+ 1 - 1
db/re/skill_cast_db.txt

@@ -1550,7 +1550,7 @@
 //-- SO_STRIKING
 2451,1000,1000,0,60000,0,2000,-1
 //-- SO_WARMER
-2452,2200:2400:2600:2800:3000,1000,0,40000:45000:50000:55000:60000,30000,35000:40000:45000:50000:55000,1800:1600:1400:1200:1000
+2452,2200:2400:2600:2800:3000,1000,0,40000:45000:50000:55000:60000,0,35000:40000:45000:50000:55000,1800:1600:1400:1200:1000
 //-- SO_VACUUM_EXTREME
 2453,1000:1500:2000:2500:3000,1000,0,4000:6000:8000:10000:12000,2000,5000,-1
 //-- SO_VARETYR_SPEAR

+ 8 - 8
db/re/skill_db.txt

@@ -49,7 +49,7 @@
 // 15 Blowcount (amount of tiles skill knockbacks)
 // 16 inf3 (skill information 3):
 //    0x00001 - skill ignores land protector
-//    0x00002 - skill that doesn't end camouflage
+//    0x00002 - free
 //    0x00004 - usable skills while hiding
 //    0x00008 - skill that can be use while in dancing state
 //    0x00010 - skill that could hit emperium
@@ -224,8 +224,8 @@
 119,3,6,2,0,0x3,2,5,1,no,0,0x80,0,misc,0,0x3000,	HT_SANDMAN,Sandman
 120,3,6,2,0,0x3,1,5,1,no,0,0x80,0,misc,0,0x3000,	HT_FLASHER,Flasher
 121,3,6,2,1,0x42,1,5,1,no,0,0x80,0,weapon,0,0x3800,	HT_FREEZINGTRAP,Freezing Trap
-122,3,6,2,4,0xC2,1,5,1,no,0,0x80,0,misc,0,0x3800,	HT_BLASTMINE,Blast Mine
-123,3,6,2,3,0xC2,2,5,1,no,0,0x40080,0,misc,0,0x3800,	HT_CLAYMORETRAP,Claymore Trap
+122,3,6,2,4,0xF2,1,5,1,no,0,0x80,0,misc,0,0x3800,	HT_BLASTMINE,Blast Mine
+123,3,6,2,3,0xF2,2,5,1,no,0,0x40080,0,misc,0,0x3800,	HT_CLAYMORETRAP,Claymore Trap
 124,2,6,32,0,0x1,0,1,1,no,0,0x40000,0,misc,0,0x0,		HT_REMOVETRAP,Remove Trap
 125,3,6,2,0,0x1,0,1,1,no,0,0x80,0,misc,0,0x2000,		HT_TALKIEBOX,Talkie Box
 126,0,0,0,0,0,0,10,0,no,0,0,0,weapon,0,0x0,		HT_BEASTBANE,Beast Bane
@@ -778,7 +778,7 @@
 
 //****
 // Additional NPC Skills (Episode 11.3)
-653,0,8,4,0,0x26,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x40002,0,magic,0,0x1,	NPC_EARTHQUAKE,Earthquake
+653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x40002,0,magic,0,0x0,	NPC_EARTHQUAKE,Earthquake
 654,6,6,1,3,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_FIREBREATH,Fire Breath
 655,6,6,1,1,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_ICEBREATH,Ice Breath
 656,6,6,1,4,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_THUNDERBREATH,Thunder Breath
@@ -876,7 +876,7 @@
 1006,0,6,4,3,0,1,1,1,yes,0,0x40001,0,magic,3,0x0,	WZ_SIGHTBLASTER,Sight Blaster
 1007,0,6,4,0,0x1,0,1,0,no,0,0x1,0,none,0,0x0,	SA_CREATECON,Create Elemental Converter
 1008,9,6,1,1,0x1,0,1,1,yes,0,0x1,0,magic,0,0x0,	SA_ELEMENTWATER,Elemental Change Water
-1009,-9,6,1,0,0,0,1,1,no,0,0x1,0,weapon,3,0x0,	HT_PHANTASMIC,Phantasmic Arrow
+1009,-9,6,1,-1,0,0,1,1,no,0,0x1,0,weapon,3,0x0,	HT_PHANTASMIC,Phantasmic Arrow
 1010,9,6,1,0,0x1,0,1,0,no,0,0x1,0,misc,0,0x0,	BA_PANGVOICE,Pang Voice
 1011,9,6,1,0,0x1,0,1,0,no,0,0x1,0,misc,0,0x0,	DC_WINKCHARM,Wink of Charm
 1012,0,0,0,0,0,0,1,0,no,0,0x1,0,weapon,0,0x4000,	BS_UNFAIRLYTRICK,Unfair Trick
@@ -909,7 +909,7 @@
 2017,0,6,4,-1,0x2,3,1,1,no,0,0x40000,0,weapon,7,0x0,	RK_STORMBLAST,Storm Blast
 2018,0,6,4,0,0x3,-1,1,1,yes,0,0,0,none,0,0x0,	RK_FIGHTINGSPIRIT,Fighting Spirit //CHECK Is this splash needed?
 2019,9,6,4,6,0x1,0,1,1,yes,0,0,0,none,0,0x0,	RK_ABUNDANCE,Abundance
-2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RK_PHANTOMTHRUST,Phantom Thrust
+2020,5:6:7:8:9,6,1,-1,0,0,5,1,no,0,0x400,0,weapon,0,0x0,	RK_PHANTOMTHRUST,Phantom Thrust
 
 //****
 // WL Warlock
@@ -983,7 +983,7 @@
 2049,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AB_EUCHARISTICA,Eucharistica
 2050,11,6,16,6,0x1,0,1,1,yes,0,0,0,magic,0,0x0,	AB_RENOVATIO,Renovatio
 2051,11,6,16,6,0x21,0,5,1,yes,0,0,0,magic,0,0x0,	AB_HIGHNESSHEAL,Highness Heal //CHECK Info shows this has magic attack.
-2052,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x10020,	AB_CLEARANCE,Clearance //CHECK Also shows this as a magic attack. Why?
+2052,11,6,1,0,0x1,0,5,1,yes,0,0x400,0,magic,0,0x10020,	AB_CLEARANCE,Clearance
 2053,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	AB_EXPIATIO,Expiatio //CHECK Does this also give the buff to party members?
 2054,0,6,4,6,0x1,0,10,1,yes,0,0,0,none,0,0x0,	AB_DUPLELIGHT,Duple Light //CHECK Had issues adding a skill level check to make the % go higher with the skills level. Will do later.
 2055,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,	AB_DUPLELIGHT_MELEE,Duple Light Melee
@@ -1008,7 +1008,7 @@
 2244,9,6,1,0,0x98,0,5,1,no,0,0,0,weapon,0,0x40080,	RA_WUGBITE,Warg Bite
 2245,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		RA_TOOTHOFWUG,Tooth of Warg
 2246,0,6,4,0,0x2,3:4:5:6:7,5,1,no,0,0x40000,0,weapon,0,0x0,	RA_SENSITIVEKEEN,Sensitive Keen
-2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x80042,		RA_CAMOUFLAGE,Camouflage
+2247,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x80040,		RA_CAMOUFLAGE,Camouflage
 2248,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0x0,		RA_RESEARCHTRAP,Research Trap
 2249,3,6,2,3,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000,	RA_MAGENTATRAP,Magenta Trap
 2250,3,6,2,1,0x43,2,1,1,no,0,0x80,1,misc,0,0x2000,	RA_COBALTTRAP,Cobalt Trap

+ 1 - 1
db/re/skill_require_db.txt

@@ -1071,7 +1071,7 @@
 8232,0,0,4:5:6:7:8:9:10:11:12:13,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0		//MER_PROVOKE
 8233,0,0,5,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//MER_AUTOBERSERK
 8234,0,0,15:17:19:21:23:25:27:29:31:33,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MER_DECAGI
-8235,0,0,10,100,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//MER_SCAPEGOAT
+8235,0,0,5,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//MER_SCAPEGOAT
 8236,0,0,20:20:20:20:20:18:16:14:12:10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MER_LEXDIVINA
 8237,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//MER_ESTIMATION
 8238,0,0,20:20:20:25:25:25:30:30:30:35,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//MER_KYRIE

+ 29 - 29
db/re/skill_tree.txt

@@ -1,4 +1,4 @@
-//JobNo,Skill-ID,MaxLV{,JobLV},Prerequisite Skill-ID-1,Prerequisite Skill-ID-1-Lv,PrereqSkill-ID-2,PrereqSkill-ID-2-Lv,PrereqSkill-ID-3,PrereqSkill-ID-3-Lv,PrereqSkill-ID-4,PrereqSkill-ID-4-Lv,PrereqSkill-ID-5,PrereqSkill-ID-5-Lv//CLASS_SKILLNAME#Skill Name#
+//JobNo,Skill-ID,MaxLv{,BaseLvReq,JobLvReq},Prerequisite Skill-ID-1,Prerequisite Skill-ID-1-Lv,PrereqSkill-ID-2,PrereqSkill-ID-2-Lv,PrereqSkill-ID-3,PrereqSkill-ID-3-Lv,PrereqSkill-ID-4,PrereqSkill-ID-4-Lv,PrereqSkill-ID-5,PrereqSkill-ID-5-Lv//CLASS_SKILLNAME#Skill Name#
 //Novice
 0,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 0,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -80,7 +80,7 @@
 5,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
 5,155,1,0,0,0,0,0,0,0,0,0,0 //MC_LOUD#Crazy Uproar#
 5,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
-5,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+5,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 5,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Thief
 6,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -231,7 +231,7 @@
 10,1013,1,0,0,0,0,0,0,0,0,0,0 //BS_GREED#Greed#
 10,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 10,459,1,111,5,0,0,0,0,0,0,0,0	//BS_ADRENALINE2#Full Adrenaline Rush#
-10,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+10,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 10,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Hunter
 11,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -496,7 +496,7 @@
 18,496,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT1#Twilight Alchemy 1#
 18,497,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT2#Twilight Alchemy 2#
 18,498,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT3#Twilight Alchemy 3#
-18,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+18,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 18,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Bard
 19,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -594,8 +594,8 @@
 //WeddingClass
 22,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 22,334,1,0,0,0,0,0,0,0,0,0,0 //WE_MALE#I Will Protect You#
-22,335,5,0,0,0,0,0,0,0,0,0,0 //WE_FEMALE#I Look up to You#
-22,336,5,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARTNER#I miss You#
+22,335,1,0,0,0,0,0,0,0,0,0,0 //WE_FEMALE#I Look up to You#
+22,336,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARTNER#I miss You#
 22,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 //SuperNovice
 23,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -650,7 +650,7 @@
 23,52,10,0,0,0,0,0,0,0,0,0,0 //TF_POISON#Envenom#
 23,53,1,52,3,0,0,0,0,0,0,0,0 //TF_DETOXIFY#Detoxify#
 23,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
-23,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+23,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 23,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Gunslinger
 24,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -786,7 +786,7 @@
 4006,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
 4006,155,1,0,0,0,0,0,0,0,0,0,0 //MC_LOUD#Crazy Uproar#
 4006,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
-4006,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4006,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4006,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //ThiefHigh
 4007,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -962,7 +962,7 @@
 4011,486,5,113,5,0,0,0,0,0,0,0,0 //WS_OVERTHRUSTMAX#Maximum Power Thrust#
 4011,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 4011,459,1,111,5,0,0,0,0,0,0,0,0	//BS_ADRENALINE2#Full Adrenaline Rush#
-4011,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4011,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4011,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Sniper
 4012,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -1270,7 +1270,7 @@
 4019,496,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT1#Twilight Alchemy 1#
 4019,497,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT2#Twilight Alchemy 2#
 4019,498,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT3#Twilight Alchemy 3#
-4019,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4019,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4019,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Clown
 4020,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -1302,7 +1302,7 @@
 4020,313,5,321,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4020,1010,1,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#Pang Voice#
 4020,394,10,47,5,316,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow#
-4020,395,5,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
+4020,395,1,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
 4020,396,1,45,5,315,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control#
 4020,487,5,315,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom#
 4020,488,5,45,10,315,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod#
@@ -1338,7 +1338,7 @@
 4021,313,5,329,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4021,1011,1,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#Wink of Charm#
 4021,394,10,47,5,324,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow#
-4021,395,5,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
+4021,395,1,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
 4021,396,1,45,5,323,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control#
 4021,487,5,323,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom#
 4021,488,5,45,10,323,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod#
@@ -1468,7 +1468,7 @@
 4028,155,1,0,0,0,0,0,0,0,0,0,0 //MC_LOUD#Crazy Uproar#
 4028,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4028,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
-4028,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4028,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4028,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Thief
 4029,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -1623,7 +1623,7 @@
 4033,1012,1,0,0,0,0,0,0,0,0,0,0 //BS_UNFAIRLYTRICK#Unfair Trick#
 4033,1013,1,0,0,0,0,0,0,0,0,0,0 //BS_GREED#Greed#
 4033,459,1,111,5,0,0,0,0,0,0,0,0	//BS_ADRENALINE2#Full Adrenaline Rush#
-4033,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4033,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4033,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Hunter
 4034,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -1896,7 +1896,7 @@
 4041,496,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT1#Twilight Alchemy 1#
 4041,497,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT2#Twilight Alchemy 2#
 4041,498,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT3#Twilight Alchemy 3#
-4041,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4041,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4041,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Bard
 4042,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -2048,7 +2048,7 @@
 4045,53,1,52,3,0,0,0,0,0,0,0,0 //TF_DETOXIFY#Detoxify#
 4045,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4045,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
-4045,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4045,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4045,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Taekwon
 4046,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -2656,7 +2656,7 @@
 4058,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4058,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4058,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4058,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4058,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4058,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Guillotine Cross (Regular)
 4059,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -3008,7 +3008,7 @@
 4064,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4064,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4064,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4064,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4064,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4064,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Guillotine Cross (Trans)
 4065,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -3412,7 +3412,7 @@
 4071,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
 4071,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
 4071,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4071,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4071,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4071,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Shadow Chaser (Regular)
 4072,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -3639,7 +3639,7 @@
 4075,313,5,321,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4075,1010,1,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#Pang Voice#
 4075,394,10,47,5,316,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow#
-4075,395,5,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
+4075,395,1,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
 4075,396,1,45,5,315,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control#
 4075,487,5,315,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom#
 4075,488,5,45,10,315,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod#
@@ -3701,7 +3701,7 @@
 4076,313,5,329,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4076,1011,1,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#Wink of Charm#
 4076,394,10,47,5,324,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow#
-4076,395,5,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
+4076,395,1,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss#
 4076,396,1,45,5,323,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control#
 4076,487,5,323,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom#
 4076,488,5,45,10,323,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod#
@@ -3856,7 +3856,7 @@
 4078,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
 4078,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
 4078,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4078,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4078,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4078,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Shadow Chaser (Trans)
 4079,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -4299,7 +4299,7 @@
 4086,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4086,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4086,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4086,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4086,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4086,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Mechanic (Mado) (Trans)
 4087,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -4375,7 +4375,7 @@
 4087,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4087,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4087,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4087,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4087,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4087,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Rune Knight
 4096,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -4660,7 +4660,7 @@
 4100,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4100,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4100,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4100,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4100,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4100,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Guillotine Cross
 4101,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -5066,7 +5066,7 @@
 4107,2497,10,0,0,0,0,0,0,0,0,0,0 //GN_S_PHARMACY#Special Pharmacy#
 4107,5003,5,2497,1,0,0,0,0,0,0,0,0 //GN_ILLUSIONDOOPING#Hallucination Drug#
 4107,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4107,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4107,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4107,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Baby Shadow Chaser
 4108,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -5347,7 +5347,7 @@
 4112,2283,1,2281,1,0,0,0,0,0,0,0,0 //NC_DISJOINT#FAW Removal#
 4112,5006,5,0,0,0,0,0,0,0,0,0,0 //NC_MAGMA_ERUPTION#Magma Eruption#
 4112,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
-4112,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4112,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4112,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Super Novice (Expanded)
 4190,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -5431,7 +5431,7 @@
 4190,261,5,259,2,0,0,0,0,0,0,0,0 //MO_CALLSPIRITS#Summon Spirit Sphere#
 4190,262,1,261,5,0,0,0,0,0,0,0,0 //MO_ABSORBSPIRITS#Absorb Spirit Sphere#
 4190,365,1,9,1,0,0,0,0,0,0,0,0 //HW_MAGICCRASHER#Stave Crasher#
-4190,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4190,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4190,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Super Baby (Expanded)
 4191,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
@@ -5516,7 +5516,7 @@
 4191,261,5,259,2,0,0,0,0,0,0,0,0 //MO_CALLSPIRITS#Summon Spirit Sphere#
 4191,262,1,261,5,0,0,0,0,0,0,0,0 //MO_ABSORBSPIRITS#Absorb Spirit Sphere#
 4191,365,1,9,1,0,0,0,0,0,0,0,0 //HW_MAGICCRASHER#Stave Crasher#
-4191,2535,2,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
+4191,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4191,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
 //Kagerou
 4211,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#

+ 2 - 3
db/re/skill_unit_db.txt

@@ -106,7 +106,6 @@
 538,0xbb,    ,  1:1:1:2:2:2:3:3:3:4,0,-1,all,0x8010	//NJ_SUITON
 539,0x86,    ,  3, 0,1000,enemy, 0x010	//NJ_HYOUSYOURAKU
 541,0x86,    ,  1:1:2:2:3, 0,1000,enemy, 0x010	//NJ_RAIGEKISAI
-653,0xc6,    ,  0, 5:7:9:11:13:5:7:9:11:13, 300,enemy, 0x010	//NPC_EARTHQUAKE
 670,0xc7,    ,  1, 5:5:5:5:5:5:5:5:5:13,1000,all,0x008	//NPC_EVILLAND
 
 //706,0xfd,    ,  0, 0,1000,all, 0x000	//NPC_VENOMFOG
@@ -149,8 +148,8 @@
 2446,0x86,    ,  0, 3:3:3:4:4,1000,enemy, 0x018	//SO_EARTHGRAVE
 2447,0x86,    ,  0, 3:3:3:4:4,1000,enemy, 0x018	//SO_DIAMONDDUST
 2449,0xdf,    ,  0, 3:3:4:4:5,500,enemy,  0x018	//SO_PSYCHIC_WAVE
-2450,0xe0,    ,  0, 3, 500,enemy, 0x8010	//SO_CLOUD_KILL
-2452,0xe4,    ,  0, 3,3000,all,   0x8010	//SO_WARMER
+2450,0xe0,    ,  3, 0,  -1,enemy, 0xA010	//SO_CLOUD_KILL
+2452,0xe4,    ,  3, 0,  -1,all,   0xA010	//SO_WARMER
 2453,0xeb,    ,  0, 1:1:2:2:3,500,enemy,0x8010	//SO_VACUUM_EXTREME
 2465,0xf1,    ,  0, 1,1000,all,   0x010	//SO_FIRE_INSIGNIA
 2466,0xf2,    ,  0, 1,1000,all,   0x010	//SO_WATER_INSIGNIA

+ 7 - 3
doc/item_bonus.txt

@@ -158,8 +158,8 @@ bonus2 bSPLossRate,n,t; 		Lose n SP every t milliseconds
 bonus bNoRegen,x;       		Stops HP or SP regeneration (x: 1=HP, 2=SP)
 
 bonus bUseSPrate,n;         		SP consumption + n%
-bonus2 bSkillUseSP,sk,n;    		Reduces SP consumption of skill sk by n
-bonus2 bSkillUseSPrate,sk,n;		Reduces SP consumption of skill sk by n%
+bonus2 bSkillUseSP,sk,n;    		Decreases SP consumption of skill sk by n
+bonus2 bSkillUseSPrate,sk,n;		Decreases SP consumption of skill sk by n%
 
 Atk/Def
 -------
@@ -411,6 +411,9 @@ bonus bBreakArmorRate,n; 		Adds a n/100% chance to break enemy's armor while att
 
 Monster drops
 -------------
+bonus2 bDropAddRace,r,x;	Adds x% to player's drop rate when killing a monster with race r.
+bonus2 bDropAddClass,c,x;	Adds x% to player's drop rate when killing a monster with race c.
+
 bonus3 bAddMonsterIdDropItem,iid,mid,n;	Adds a n/100% chance of dropping item iid when killing monster mid
 
 bonus2 bAddMonsterDropItem,iid,n;    	Adds a n/100% chance for item iid to be dropped when killing a monster
@@ -436,10 +439,11 @@ bonus bSplashAddRange,n;  		Splash attack radius + n
                           		NOTE: n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc.
 bonus2 bAddSkillBlow,sk,n;		Knock back the target by n cells when using skill sk
 bonus bNoKnockback,n;     		Character is no longer knocked back by enemy skills with such effect (n is meaningless)
-bonus bNoGemStone,n;      		Skills requiring Gemstones do no require them (n is meaningless)
+bonus bNoGemStone,n;      		Skills requiring Gemstones do not require them (n is meaningless)
                           		NOTE: Hocus Pocus still requires 1 Yellow Gemstone, Ganbantein requirements not reduced
 bonus bIntravision,n;     		Always see Hiding and Cloaking players/mobs (n is meaningless)
 bonus bPerfectHide,n;     		Hidden/cloaked character is no longer detected by monsters with 'detector' mode (n is meaningless)
 bonus bRestartFullRecover,n;	When reviving, HP and SP are fully healed (n is meaningless)
 bonus bClassChange,n;     		Gives a n/100% chance to change the attacked monster's class with normal attack
 bonus bAddStealRate,n;    		Increases success rate of Steal skill by n/100%
+bonus bNoMadoFuel,n;			Nullify Magic Gear Fuel requirement for skills. (n is meaningless)

+ 101 - 22
doc/script_commands.txt

@@ -517,7 +517,7 @@ forever, and no trace remains of it even if it was stored with character or
 account data.
 
 Some variables are special, that is, they are already defined for you by the 
-scripting engine. You can see the full list somewhere in 'db/const.txt', which 
+scripting engine. You can see the full list in 'src/map/script_constants.h', which 
 is a file you should read, since it also allows you to replace lots of numbered 
 arguments for many commands with easier to read text. The special variables most 
 commonly used are all permanent character-based variables:
@@ -2290,7 +2290,7 @@ Also useful when passing arrays to functions or accessing another npc's arrays:
 
 This function will return the specified stat of the invoking character, or, if a
 character name is specified, of that player. The stat can either be a number or
-parameter name, defined in 'db/const.txt'.
+parameter name, defined in 'src/map/script_constants.h'.
 
 Some example parameters:
 
@@ -2736,7 +2736,8 @@ recreate these items perfectly if they are destroyed. Here's what you get:
 
 @inventorylist_id[]        - array of item ids.
 @inventorylist_amount[]    - their corresponding item amounts.
-@inventorylist_equip[]     - whether the item is equipped or not.
+@inventorylist_equip[]     - on which position the item is equipped (see EQP_* constants)
+                             It will contain 0 if the item is not equipped.
 @inventorylist_refine[]    - for how much it is refined.
 @inventorylist_identify[]  - whether it is identified.
 @inventorylist_attribute[] - whether it is broken.
@@ -2746,7 +2747,7 @@ recreate these items perfectly if they are destroyed. Here's what you get:
 @inventorylist_card4[]       if the character owns an item made by a specific 
                              craftsman.
 @inventorylist_expire[]    - expire time (Unix time stamp). 0 means never expires.
-@inventorylist_bound[]     - whether it is bound to the character
+@inventorylist_bound[]     - the bound type of the items (see BOUND_* constants)
 @inventorylist_count       - the number of items in these lists.
 
 This could be handy to save/restore a character's inventory, since no other 
@@ -2849,7 +2850,7 @@ See the sample in 'doc/sample/getiteminfo.txt'.
 
 Returns value from equipped item slot in the indicated slot (0, 1, 2, or 3).
 
-This function returns CARD ID, 255,254,-255 (for card 0, if the item is produced).
+This function returns CARD ID, CARD0_FORGE, CARD0_CREATE, or CARD0_PET (for card 0, if the item is produced).
 It's useful for when you want to check whether an item contains cards or if it's signed.
 
 ---------------------------------------
@@ -4055,7 +4056,7 @@ This command will change the job class of the invoking character.
 
 This command does work with numbers, but you can also use job names. The full 
 list of job names and the numbers they correspond to can be found in 
-'db/const.txt'.
+'src/map/script_constants.h'.
 
     // This would change your player into a Swordman
     jobchange Job_Swordman;
@@ -4275,7 +4276,7 @@ you can look at: 'npc/custom/stylist.txt'
 
 This command will push the currently attached player to given direction by given
 amount of square cells. Direction is the same as used when declaring NPCs, and
-can be specified by using one of the DIR_* constants (db/const.txt).
+can be specified by using one of the DIR_* constants (src/map/script_constants.h).
 
 The knock-back is not restricted by items or map flags, only obstacles are taken
 into account. If there is not enough space to perform the push (e.g. due to a
@@ -4287,6 +4288,31 @@ wall), the character is pushed only up to the obstacle.
 
 ---------------------------------------
 
+*recalculatestat;
+
+This command will force a stat recalculation for the attached player.
+
+---------------------------------------
+
+*needed_status_point(<type>,<val>{,<char id>});
+
+Returns the number of stat points needed to change the specified stat <type> by <val>.
+If <val> is negative, returns the number of stat points that would be needed to
+raise the specified stat from (current value - <val>) to current value.
+
+---------------------------------------
+
+*jobcanentermap("<mapname>"{,<JobID>});
+
+Return true if player (decided by job) can enter the map, false otherwise.
+
+For optional 'JobID', see constant of Job_*, or use player's Class, BaseJob,
+and BaseClass. If no player is attached, this param must have a value.
+
+See also db/[pre-]re/job_noenter_map.txt
+
+---------------------------------------
+
 *get_revision()
 
 This command will return the SVN revision number that the server is currently
@@ -5167,7 +5193,7 @@ Used in reset NPC's (duh!)
 These commands will bestow a status effect on a character.
 
 The <effect type> determines which status is invoked. This can be either a number
-or constant, with the common statuses (mostly negative) found in 'db/const.txt'
+or constant, with the common statuses (mostly negative) found in 'src/map/script_constants.h'
 with the 'SC_' prefix. A full list is located in 'src/map/status.h', though
 they are not currently documented.
 
@@ -5182,10 +5208,11 @@ This is used primarily in item scripts. When used in an NPC script, a flag MUST
 be defined for the rate to work.
 
 Optional value <flag> is how the status change start will be handled (a bitmask).
- 1: Status change cannot be avoided.
- 2: Tick cannot be reduced by stats (default).
- 4: sc_data loaded, so no value will be altered.
- 8: Rate cannot be reduced.
+ SCSTART_NOAVOID   : Status change cannot be avoided.
+ SCSTART_NOTICKDEF : Tick cannot be reduced by stats (default).
+ SCSTART_LOADED    : sc_data loaded, so no value will be altered.
+ SCSTART_NORATEDEF : Rate cannot be reduced.
+ SCSTART_NOICON    : Status icon won't be sent to client
 
 If a <GID> is given, the status change will be invoked on the specified character
 instead of the one attached to the script. This can only be defined after setting
@@ -5436,7 +5463,7 @@ Types:
 	1: Buff
 	2: Debuff
 
-Status_icon: See "Status Icon" section in 'db/const.txt'. Default is SI_BLANK (-1).
+Status_icon: See "Status Icon" section in 'src/map/script_constants.h'. Default is SI_BLANK (-1).
 
 Example:
 	// Apple gives you +5 Str bonus for 1 minute when it's consumed.
@@ -5988,11 +6015,13 @@ It is an approximation of official server script language's 'cmdothernpc'.
 
 ---------------------------------------
 
-*npctalk "<message>";
+*npctalk "<message>"{,"<NPC name>"};
 
 This command will display a message to the surrounding area as if the NPC object 
 running it was a player talking - that is, above their head and in the chat 
 window. The display name of the NPC won't get appended in front of the message.
+If the <NPC name> option is given, then that NPC will display the message, else
+the attached NPC will display the message.
 
     // This will make everyone in the area see the NPC greet the character
     // who just invoked it.
@@ -6212,7 +6241,7 @@ This command will broadcast a message to all or most players, similar to
 The region the broadcast is heard in (target), source of the broadcast
 and the color the message will come up as is determined by the flags.
 
-The flag values are coded as constants in 'db/const.txt' to make them easier to use.
+The flag values are coded as constants in 'src/map/script_constants.h' to make them easier to use.
 
 Target flags:
 - bc_all: Broadcast message is sent server-wide (default).
@@ -6548,7 +6577,7 @@ specified.
 *setmapflag "<map name>",<flag>{,<zone>{,<type>}};
 
 This command marks a specified map with the given map flag, which will alter the 
-behavior of the map. A full list of mapflags is located in 'db/const.txt' with
+behavior of the map. A full list of mapflags is located in 'src/map/script_constants.h' with
 the 'mf_' prefix, and documentation can be found in 'doc/mapflags.txt'.
 
 The map flags alter the behavior of the map regarding teleporting (mf_nomemo, 
@@ -6914,8 +6943,8 @@ must be used.
 
 This command makes an object display an emotion sprite above their own as 
 if they were doing that emotion. For a full list of emotion numbers, 
-see 'db/const.txt' under 'e_'. The not so obvious ones are 'e_what' (a question mark) 
-and 'e_gasp' (the exclamation mark).
+see 'src/map/script_constants.h' under 'e_'. The not so obvious ones are 'e_what'
+(a question mark) and 'e_gasp' (the exclamation mark).
 
 The optional target parameter specifies who will get the emotion on top of
 their head. If 0 (the default if omitted), the NPC in current use will show
@@ -7156,7 +7185,7 @@ This command will make a <GID> say a message. The display name of the <GID> won'
 *unitemote <GID>,<emotion number>;
 
 This command will make a <GID> display an emotion sprite.
-For a full list of emotion numbers, see 'db/const.txt' under 'e_'.
+For a full list of emotion numbers, see 'src/map/script_constants.h' under 'e_'.
 
 ---------------------------------------
 
@@ -8058,7 +8087,7 @@ Each of these can be 'on' or 'off'. Together they define a cell's behavior.
 
 This command lets you alter these flags for all map cells in the specified
 (x1,y1)-(x2,y2) rectangle. The 'flag' can be 0 or 1 (0:clear flag, 1:set flag).
-The 'type' defines which flag to modify. Possible options see 'db/const.txt'.
+The 'type' defines which flag to modify. Possible options see 'src/map/script_constants.h'.
 
 Example:
 
@@ -8092,7 +8121,7 @@ remove a nonwalkable row of cells after the barricade mobs.
 
 This command will return 1 or 0, depending on whether the specified cell has
 the 'type' flag set or not. There are various types to check, all mimicking
-the server's cell_chk enumeration. The types can be found in 'db/const.txt'.
+the server's cell_chk enumeration. The types can be found in 'src/map/script_constants.h'.
 
 The meaning of the individual types can be confusing, so here's an overview:
   - cell_chkwall/water/cliff
@@ -8701,7 +8730,7 @@ NOTE: Currently ONLY supported for bonuses that used by 'bonus' script.
 This command will make the pet cure a specified status condition. The curing 
 actions will occur once every Delay seconds. For a full list of status 
 conditions that can be cured, see the list of 'SC_' status condition constants 
-in 'db/const.txt'.
+in 'src/map/script_constants.h'.
 
 ---------------------------------------
 
@@ -9175,5 +9204,55 @@ solution rather than sending the map and the monster_id.
 
 ---------------------------------------
 
+*hateffect(<Hat Effect ID>,<State>);
+
+This will set a Hat Effect onto the player. The state field allows you to
+enable (true) or disable (false) the effect on the player.
+The Hat Effect constants can be found in db/const.txt starting with HAT_EF_*.
+
+Requires client 2015-05-13aRagEXE or newer. 
+
+---------------------------------------
+
+*getrandomoptinfo(<type>);
+
+Returns value of an attribute of current random option.
+
+Valid attributes are:
+ROA_ID - ID of current option
+ROA_VALUE - Value field of current option
+ROA_PARAM - Param field of current option
+
+This script command is intended for using in random option scripts.
+
+---------------------------------------
+
+*getequiprandomoption(<equipment index>,<index>,<type>{,<char id>});
+
+Returns value of an attribute of a random option on an equipped item.
+
+See 'getequipid' for a full list of valid equipment slots.
+
+index parameter can be 0 to MAX_ITEM_RDM_OPT-1 (default 0-4).
+
+For valid attribute types, see `getrandomoptinfo` command reference.
+
+---------------------------------------
+
+*setrandomoption(<equipment slot>,<index>,<id>,<value>,<param>{,<char id>});
+
+Sets <index+1>th random option for equipment equipped at <equipment slot>
+to <id>, <value> and <param>.
+
+See 'getequipid' for a full list of valid equipment slots.
+
+index parameter can be 0 to MAX_ITEM_RDM_OPT-1 (default 0-4).
+
+ID - ID of random option. See db/const.txt for constants.
+Value - Value of random option
+Param - Parameter of random option
+
+---------------------------------------
+
 Whew.
 That's about all of them.

+ 4 - 4
npc/battleground/flavius/flavius_enter.txt

@@ -29,7 +29,7 @@ bat_room,133,178,5	script	Flavius Officer#01a	418,{
 	next;
 	switch(select("I want to join your army!:End Conversation")) {
 	case 1:
-		if ((Class == Job_Novice) || (BaseClass == Job_Supernovice)) {
+		if ((Class == Job_Novice) || (BaseClass == Job_Super_Novice)) {
 			mes "[Guillaume Army Officer]";
 			mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield.";
 		}
@@ -96,7 +96,7 @@ bat_room,133,121,1	script	Flavius Officer#01b	414,{
 	next;
 	switch(select("I want to join your army!:End Conversation")) {
 	case 1:
-		if ((Class == Job_Novice) || (BaseClass == Job_Supernovice)) {
+		if ((Class == Job_Novice) || (BaseClass == Job_Super_Novice)) {
 			mes "[Croix Army Officer]";
 			mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield.";
 		}
@@ -253,7 +253,7 @@ bat_room,148,178,5	script	Flavius Officer#02a	418,{
 	next;
 	switch(select("I want to join your army!:End Conversation")) {
 	case 1:
-		if ((Class == Job_Novice) || (BaseClass == Job_Supernovice)) {
+		if ((Class == Job_Novice) || (BaseClass == Job_Super_Novice)) {
 			mes "[Guillaume Army Officer]";
 			mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield.";
 		}
@@ -320,7 +320,7 @@ bat_room,148,121,1	script	Flavius Officer#02b	414,{
 	next;
 	switch(select("I want to join your army!:End Conversation")) {
 	case 1:
-		if ((Class == Job_Novice) || (BaseClass == Job_Supernovice)) {
+		if ((Class == Job_Novice) || (BaseClass == Job_Super_Novice)) {
 			mes "[Croix Army Officer]";
 			mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield.";
 		}

+ 4 - 4
npc/battleground/tierra/tierra_enter.txt

@@ -30,7 +30,7 @@ bat_room,124,178,5	script	Tierra Gorge Officer#01a	418,{
 	next;
 	switch(select("I want to join your army!:End Conversation")) {
 	case 1:
-		if ((Class == Job_Novice) || (BaseClass == Job_Supernovice)) {
+		if ((Class == Job_Novice) || (BaseClass == Job_Super_Novice)) {
 			mes "[Guillaume Army Officer]";
 			mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield.";
 		}
@@ -97,7 +97,7 @@ bat_room,140,178,5	script	Tierra Gorge Officer#02a	418,{
 	next;
 	switch(select("I want to join your army!:End Conversation")) {
 	case 1:
-		if ((Class == Job_Novice) || (BaseClass == Job_Supernovice)) {
+		if ((Class == Job_Novice) || (BaseClass == Job_Super_Novice)) {
 			mes "[Guillaume Army Officer]";
 			mes "I'm very pleased that you want to join us and fight the Croix Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield.";
 		}
@@ -262,7 +262,7 @@ bat_room,125,121,1	script	Tierra Gorge Officer#01b	414,{
 	next;
 	switch(select("I want to join your army!:End Conversation")) {
 	case 1:
-		if ((Class == Job_Novice) || (BaseClass == Job_Supernovice)) {
+		if ((Class == Job_Novice) || (BaseClass == Job_Super_Novice)) {
 			mes "[Croix Army Officer]";
 			mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield.";
 		}
@@ -329,7 +329,7 @@ bat_room,140,121,1	script	Tierra Gorge Officer#02b	414,{
 	next;
 	switch(select("I want to join your army!:End Conversation")) {
 	case 1:
-		if ((Class == Job_Novice) || (BaseClass == Job_Supernovice)) {
+		if ((Class == Job_Novice) || (BaseClass == Job_Super_Novice)) {
 			mes "[Croix Army Officer]";
 			mes "I'm very pleased that you want to join us and fight the Guillaume Army, but I'm sorry: I can't send a rookie like you to die on the cruel battlefield.";
 		}

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

@@ -144,7 +144,6 @@ bat_room,159,178,5	script	Guillaume Knight#1	417,{
 	next;
 	mes "[Guillaume Knight]";
 	mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours.";
-	mes "";
 	mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage.";
 	next;
 	mes "[Guillaume Knight]";
@@ -214,7 +213,6 @@ bat_room,159,121,1	script	Croix Knight#1	413,{
 	next;
 	mes "[Croix Knight]";
 	mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours.";
-	mes "";
 	mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage.";
 	next;
 	mes "[Croix Knight]";
@@ -284,7 +282,6 @@ bat_room,167,178,5	script	Guillaume Knight#2	417,{
 	next;
 	mes "[Guillaume Knight]";
 	mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours.";
-	mes "";
 	mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage.";
 	next;
 	mes "[Guillaume Knight]";
@@ -354,7 +351,6 @@ bat_room,167,121,1	script	Croix Knight#2	413,{
 	next;
 	mes "[Croix Knight]";
 	mes "The battle starts at your army's ship, and the goal is to advance and destroy your enemy's rations depot faster than they can destroy yours.";
-	mes "";
 	mes "The army that captures the neutral flag in the center of the battlefield will be rewarded with extra regeneration points, meaning their soldiers will resurrect more than the other side, giving them an advantage.";
 	next;
 	mes "[Croix Knight]";

+ 2 - 2
npc/custom/battleground/unofficial/bg_flavius_01.txt

@@ -337,7 +337,7 @@ bat_b01,390,13,5	script	Therapist in battle#fl12	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 
@@ -345,7 +345,7 @@ bat_b01,10,293,5	script	Therapist in battle#fl11	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 

+ 2 - 2
npc/custom/battleground/unofficial/bg_flavius_02.txt

@@ -337,7 +337,7 @@ bat_b02,390,13,5	script	Therapist in battle#fl22	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 
@@ -345,7 +345,7 @@ bat_b02,10,293,5	script	Therapist in battle#fl21	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 

+ 2 - 2
npc/custom/battleground/unofficial/bg_kvm01.txt

@@ -286,7 +286,7 @@ bat_c01,51,130,5	script	Therapist in battle::TherapistKvM01a	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 
@@ -294,7 +294,7 @@ bat_c01,148,53,1	script	Therapist in battle::TherapistKvM01b	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 

+ 2 - 2
npc/custom/battleground/unofficial/bg_kvm02.txt

@@ -286,7 +286,7 @@ bat_c02,51,130,5	script	Therapist in battle::TherapistKvM02a	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 
@@ -294,7 +294,7 @@ bat_c02,148,53,1	script	Therapist in battle::TherapistKvM02b	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 

+ 2 - 2
npc/custom/battleground/unofficial/bg_kvm03.txt

@@ -286,7 +286,7 @@ bat_c03,51,130,5	script	Therapist in battle::TherapistKvM03a	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 
@@ -294,7 +294,7 @@ bat_c03,148,53,1	script	Therapist in battle::TherapistKvM03b	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 

+ 3 - 3
npc/custom/battleground/unofficial/bg_tierra_01.txt

@@ -385,7 +385,7 @@ bat_a01,53,377,3	script	Guillaume Vintenar#tv1	419,{
 bat_a01,60,216,3	script	Ghost#tv13	950,{
 	mes "[Ghost in valley]";
 	mes "Boo...Boo...";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 
@@ -393,7 +393,7 @@ bat_a01,53,377,3	script	Therapist in battle#tv12	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 
@@ -401,7 +401,7 @@ bat_a01,45,18,3	script	Therapist in battle#tv11	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 

+ 3 - 3
npc/custom/battleground/unofficial/bg_tierra_02.txt

@@ -385,7 +385,7 @@ bat_a02,53,377,3	script	Guillaume Vintenar#tv2	419,{
 bat_a02,60,216,3	script	Ghost#tv23	950,{
 	mes "[Ghost in valley]";
 	mes "Boo...Boo...";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 
@@ -393,7 +393,7 @@ bat_a02,53,377,3	script	Therapist in battle#tv22	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 
@@ -401,7 +401,7 @@ bat_a02,45,18,3	script	Therapist in battle#tv21	95,{
 	mes "[Therapist in battle]";
 	mes "Just close your eyes, and take a deep breathe.";
 	mes "You can be free from pain.";
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close;
 }
 

+ 1 - 1
npc/custom/breeder.txt

@@ -27,7 +27,7 @@ prontera,124,201,1	script	Universal Rental NPC	726,{
 	} else if (!checkcart() && getskilllv("MC_PUSHCART")) setcart;
 	else if (!checkfalcon() && getskilllv("HT_FALCON") && !checkwug()) setfalcon;
 	else if (!checkriding() && !checkdragon() && getskilllv("KN_RIDING")) {
-		if (eaclass()&EAJ_THIRDMASK==EAJ_RUNE_KNIGHT) setdragon;
+		if ((eaclass()&EAJ_THIRDMASK)==EAJ_RUNE_KNIGHT) setdragon;
 		else setriding;
 	} else if (!checkmadogear() && getskilllv("NC_MADOLICENCE")) setmadogear;
 	else {

+ 1 - 1
npc/custom/events/holiday/hallow06.txt

@@ -20,7 +20,7 @@ prontera,151,190,5	script	Hallows' Eve Event	807,{
 		emotion e_swt,1;
 		close;
 	}
-	if(EVENT_HALWN06&1 && EVENT_HALWN06&2){
+	if((EVENT_HALWN06&1) && (EVENT_HALWN06&2)){
 		mes "I am sorry but you have already completed the event.";
 		emotion e_sry;
 		close;

+ 4 - 4
npc/custom/jobmaster.txt

@@ -89,7 +89,7 @@ function Job_Menu;
 		close;
 	}
 	if (.@eac&EAJL_2)
-		if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) {
+		if ((.@eac&(EAJL_UPPER|EAJL_BABY)) || roclass(.@eac|EAJL_UPPER) == -1) {
 			mes "No more jobs are available.";
 			close;
 		}
@@ -110,7 +110,7 @@ function Job_Menu;
 					Job_Acolyte,
 					Job_Merchant,
 					Job_Thief,
-					Job_SuperNovice,
+					Job_Super_Novice,
 					Job_Taekwon,
 					Job_Gunslinger,
 					Job_Ninja,
@@ -169,7 +169,7 @@ function Job_Menu {
 			.@i = getarg(select(.@menu$) - 1, 0);
 			if (!.@i)
 				close;
-			if ((.@i == Job_SuperNovice || .@i == Job_Super_Baby) && BaseLevel < .SNovice) {
+			if ((.@i == Job_Super_Novice || .@i == Job_Super_Baby) && BaseLevel < .SNovice) {
 				mes "[Job Master]";
 				mes "A base level of " + .SNovice + " is required to turn into a " + jobname(.@i) + ".";
 				close;
@@ -209,7 +209,7 @@ Get_Platinum:
 	skill "NV_FIRSTAID",1,SKILL_PERM;
 	switch (BaseClass) {
 	case Job_Novice:
-		if (Class != Job_SuperNovice)
+		if (Class != Job_Super_Novice)
 			skill "NV_TRICKDEAD",1,SKILL_PERM;
 		break;
 	case Job_Swordman:

+ 1 - 1
npc/custom/platinum_skills.txt

@@ -33,7 +33,7 @@ prontera,128,200,6	script	Platinum Skill NPC	94,{
 	skill "NV_FIRSTAID",1,SKILL_PERM;
 	switch (BaseClass) {
 	case Job_Novice:
-		if (Class != Job_SuperNovice)
+		if (Class != Job_Super_Novice)
 			skill "NV_TRICKDEAD",1,SKILL_PERM;
 		break;
 	case Job_Swordman:

+ 6 - 4
npc/custom/quests/hunting_missions.txt

@@ -293,10 +293,12 @@ OnNPCKillEvent:
 					getmapxy(.@map2$,.@x2,.@y2,UNITTYPE_PC);
 					if ((.@map1$ == .@map2$ || .Party == 1) && (distance(.@x1,.@y1,.@x2,.@y2) <= 30 || .Party < 3)) {
 						for (.@j = 0; .@j < .Quests; .@j++) {
-							if (strmobinfo(1,.@mob) == strmobinfo(1,getvar(getd("Mission"+.@j), $@partymembercid[.@i]))) {
-								if (getvar(getd("Mission"+.@j+"_"), $@partymembercid[.@i]) < .@Mission_Count) {
-									dispbottom "[Hunting Mission] Killed " + (set(getvar(getd("Mission" + .@j + "_"), $@partymembercid[.@i]), getvar(getd("Mission" + .@j + "_") + 1, $@partymembercid[.@i]))) +
-									           " of " + .@Mission_Count + " " + strmobinfo(1,.@mob) + ".";
+							.@my_mob_id = getvar( getd("Mission"+.@j),$@partymembercid[.@i] );
+							.@my_count = getvar( getd("Mission"+.@j+"_"), $@partymembercid[.@i] );
+							if (strmobinfo(1,.@mob) == strmobinfo(1,.@my_mob_id)) {
+								if (.@my_count < .@Mission_Count) {
+									setd "Mission"+.@j+"_", (.@my_count+1), $@partymembercid[.@i];
+									dispbottom "[Hunting Mission] Killed " + (.@my_count+1) + " of " + .@Mission_Count + " " + strmobinfo(1,.@mob) + ".", 0x777777, $@partymembercid[.@i];
 									break;
 								}
 							}

+ 1 - 1
npc/custom/quests/quest_shop.txt

@@ -127,7 +127,7 @@ OnBuyItem:
 		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
 	next;
 	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
-	if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
+	if (@qe[2] > 0 && ((@qe[1] & EQP_HEAD_LOW) || (@qe[1] & EQP_HEAD_TOP) || (@qe[1] & EQP_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_TOP) || (@qe[1] & EQP_COSTUME_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_LOW) || (@qe[1] & EQP_GARMENT) || (@qe[1] & EQP_COSTUME_GARMENT)))
 		set .@preview,1;
 	addtimer 1000, strnpcinfo(0)+"::OnEnd";
 	while(1) {

+ 77 - 15
npc/custom/quests/valhallen.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Avaji
 //===== Current Version: ===================================== 
-//= 1.1
+//= 2.0
 //===== Compatible With: ===================================== 
 //= rAthena Project
 //===== Description: ========================================= 
@@ -11,6 +11,11 @@
 //= Custom quest, ingredients based on official RO FAQ
 //===== Additional Comments: ================================= 
 //= 1.1 Optimized. [Euphy]
+//= 2.0 Adds SE and TE Godlikes. Fixed Mixing Itemlist. [Jey]
+//= Sources for the mixing lists 2016-08-15:
+//= http://irowiki.org/wiki/God_Items_Quest
+//= http://irowiki.org/wiki/God_Items_Quest_2
+//= http://irowiki.org/wiki/God_Items_Quest_3
 //============================================================ 
 
 prontera,147,171,5	script	Lenneth	811,{
@@ -19,21 +24,21 @@ prontera,147,171,5	script	Lenneth	811,{
 	mes "I can transmute for you many of the Valhallen items,";
 	mes "although they require many rare elements to make.";
 	next;
-	switch(select("Mjolnir:Sleipnir:Brisingamen:Gleipnir:Megingjard")) {
+	switch(select("Mjolnir:Sleipnir:Brisingamen:Gleipnir:Megingjard:Asprika:Brynhild:Hervor:Jormungand:Muspellium:Essence Of Rune:Close")) {
 		case 1:
 			mes "[Lenneth]";
 			mes "^3355FFMjolnir^000000 is the mighty Hammer of Thor.";
-			setarray .@Items[0],1530,1531,2,984,20,985,5,969,40,7074,2,7075,4,7078,5,7087,5,7089,5;
+			setarray .@Items[0],1530,1522,2,984,20,985,5,969,40,7074,2,7075,4,7078,5,7091,5,7089,5;
 			break;
 		case 2:
 			mes "[Lenneth]";
 			mes "^3355FFSleipnir^000000 are boots made after Odin's War Horse.";
-			setarray .@Items[0],2410,2406,2,984,1,969,20,985,10,7076,3,7079,5,7083,3,7086,3;
+			setarray .@Items[0],2410,2406,2,969,20,985,10,7076,3,7079,5,7083,3,7086,4,7087,3;
 			break;
 		case 3:
 			mes "[Lenneth]";
 			mes "^3355FFBrisingammen^000000 is the magical Necklace of Freyja, goddess of Beauty.";
-			setarray .@Items[0],2630,2603,1,726,2,722,3,727,10,723,5,969,20,7073,4,7077,4,7088,3,7090,3,7092,3;
+			setarray .@Items[0],2630,2603,1,726,2,722,3,727,10,724,5,969,20,7073,4,7077,4,7088,3,7090,3,7092,3;
 			break;
 		case 4:
 			mes "[Lenneth]";
@@ -43,26 +48,83 @@ prontera,147,171,5	script	Lenneth	811,{
 		case 5:
 			mes "[Lenneth]";
 			mes "The ^3355FFMegingjard^000000 is the powerful Belt of Thor.";
-			setarray .@Items[0],2629,7058,1,2627,1,969,10,726,10,984,5;
-			break; }
+			setarray .@Items[0],2629,7058,1,2627,1,969,20,726,10,984,10;
+			break;
+		case 6:
+			mes "[Lenneth]";
+			mes "The ^3355FFAsprika^000000 is the light of gods.";
+			setarray .@Items[0],2541,7835,1,7836,1,7837,1,7838,1,2513,1,7063,100,7291,10,7293,10,985,20;
+			break;
+		case 7:
+			mes "[Lenneth]";
+			mes "The ^3355FFBrynhild^000000 is the warrior's armor.";
+			setarray .@Items[0],2383,7830,1,7831,1,7832,1,7833,1,7834,1,7510,100,2357,1,969,10,985,20;
+			break;
+		case 8:
+			mes "[Lenneth]";
+			mes "The ^3355FFHervor^000000 is named after the valkyrie who ensures victory for her warriors.";
+			setarray .@Items[0],2181,6595,2,6596,1,6594,4,6597,3,6602,1,6604,1,6605,1,2115,1;
+			break;
+		case 9:
+			mes "[Lenneth]";
+			mes "The ^3355FFJormungand^000000 is famous for its ability to poison the enemy.";
+			setarray .@Items[0],2020,6603,4,6599,1,6598,1,6601,4,6600,1,6604,1,6605,1,1473,1;
+			break;
+		case 10:
+			mes "[Lenneth]";
+			mes "The ^3355FFMuspellium^000000 is required to make ^3355FFJormungand^000000 and ^3355FFHervor^000000.";
+			setarray .@Items[0],6605,984,50,985,50;
+			break;
+		case 11:
+			mes "[Lenneth]";
+			mes "The ^3355FFEssence Of Rune^000000 is required to make ^3355FFJormungand^000000 and ^3355FFHervor^000000.";
+			setarray .@Items[0],6604,12735,200,12736,100;
+			break;
+		default:
+			close;
+	}
+	
 	mes "^FF0000The items I need are as follows:^000000";
-	for(set .@i,1; .@i<getarraysize(.@Items[0]); set .@i,.@i+2) {
-		mes " ~ "+.@Items[.@i+1]+"x ^3355FF"+getitemname(.@Items[.@i])+"^000000";
-		if (countitem(.@Items[.@i]) < .@Items[.@i+1]) set .@nr,1; }
-	if (.@nr) close;
+	set .@itemmissing,0;
+	for(set .@i,1; .@i<getarraysize(.@Items); set .@i,.@i+2) {
+		set .@amount,.@Items[.@i+1];
+		set .@id,.@Items[.@i];
+		mes " ~ "+.@amount+"x "+((countitem(.@id)<.@amount)?("^dd3355"):("^33dd55"))+getitemname(.@id)+((getitemslots(.@id)>0)?" ["+getitemslots(.@id)+"]":"")+"^000000";
+		if (countitem(.@id) < .@amount) 
+			set .@itemmissing,1;
+	}
+	if (.@itemmissing) {
+		next;
+		mes "[Lenneth]";
+		mes "Go on and find all these items.";
+		mes "I will wait here to aid you.";
+		close;
+	}
 	next;
 	mes "[Lenneth]";
 	mes "Do you desire ^3355FF"+getitemname(.@Items[0])+"^000000?";
 	next;
-	if(select("Yes:No")==2) {
+	if(select("No","Yes")==1) {
 		mes "[Lenneth]";
 		mes "Please return if you change your mind.";
-		close; }
+		close;
+	}
 	mes "[Lenneth]";
 	mes "Here is your ^3355FF"+getitemname(.@Items[0])+"^000000.";
 	mes "May it serve you well.";
-	for(set .@i,1; .@i<getarraysize(.@Items); set .@i,.@i+2)
-		delitem .@Items[.@i], .@Items[.@i+1];
+	//second check if the player tries to bypass the first
+	for(set .@i,1; .@i<getarraysize(.@Items); set .@i,.@i+2) {
+		set .@amount,.@Items[.@i+1];
+		set .@id,.@Items[.@i];
+		if (countitem(.@id) < .@amount) 
+			close;
+	}
+	// Delete the items _after_ the second check
+	for(set .@i,1; .@i<getarraysize(.@Items); set .@i,.@i+2) {
+		set .@amount,.@Items[.@i+1];
+		set .@id,.@Items[.@i];
+		delitem .@id, .@amount;
+	}
 	getitem .@Items[0],1;
 	close;
 }

+ 2 - 2
npc/custom/woe_controller.txt

@@ -113,7 +113,7 @@ OnMinute00:
 					if (.Active[0]&(1<<.@j)) Disp_Owner(.Castles$[.@j],1);
 					if (.ExitWarp) maprespawnguildid .Castles$[.@j],0,3;
 				}
-				if (.Options&1 && .Active[0] && .ForceEnd != 2) callsub OnReward, .Active[0];
+				if ((.Options&1) && .Active[0] && .ForceEnd != 2) callsub OnReward, .Active[0];
 				deletearray .Active[0],2;
 				if (.ForceEnd) { set .ForceEnd,0; end; }
 				break;
@@ -169,7 +169,7 @@ OnReward:
 			if (!.@gid) continue;
 			set .@size, query_sql("SELECT account_id,char_id FROM `guild_member` WHERE guild_id = '"+.@gid+"' AND "+.@sql$,.@aid,.@cid);
 			for(set .@j,0; .@j<.@size; set .@j,.@j+1) {
-				if (.Options&8 && !(.Options&4)) {
+				if ((.Options&8) && !(.Options&4)) {
 					set .@ip$, replacestr(getcharip(.@aid[.@j]),".","a");
 					if (getd(".@ip_"+.@i+"_"+.@ip$)) continue;
 					setd ".@ip_"+.@i+"_"+.@ip$,1;

+ 0 - 1
npc/events/MemorialDay_2008.txt

@@ -49,7 +49,6 @@ prontera,182,214,4	script	Lauds#Memorial	58,{
 			mes "Fine, be unprepared!";
 			next;
 			mes "[Mad Sago Lauds]";
-			mes "";
 			mes "^FF0000YOU WILL RUE THE DAY!^000000";
 			close;
 		}

+ 0 - 18
npc/events/christmas_2005.txt

@@ -43,14 +43,12 @@ xmas_in,89,92,5	script	Louise Kim#designer	714,{
 	mes "Guess who made it?";
 	mes "As you know, Antonio is hard to catch,";
 	mes "that's because I blowed some power in the hat. ";
-	mes "";
 	next;
 	mes "[Designer Louise Kim]";
 	mes "If you don't like your hat,";
 	mes "bring it to me.";
 	mes "I'll change it to brand new one.";
 	mes "Stylish Louise's hat.";
-	mes "";
 	emotion e_lv;
 	next;
 	if (countitem(2236) > 0) {
@@ -184,7 +182,6 @@ xmas_in,89,92,5	script	Louise Kim#designer	714,{
 		mes "think about it carefully.";
 		mes "You can get the better designed hat,";
 		mes "and I can show off my talent.";
-		mes "";
 		emotion e_heh;
 		close;
 	}
@@ -269,7 +266,6 @@ prontera,155,285,3	script	Enjoy#enjoy	753,{
 			mes "[Enjoy]";
 			mes "If you are not with me, get away~!!";
 			mes "Get out of my sight!!!!";
-			mes "";
 			close;
 		case 3:
 			mes "[Enjoy]";
@@ -357,11 +353,9 @@ prontera,155,285,3	script	Enjoy#enjoy	753,{
 			mes "or who had to turn his/her back from kissing couples!!";
 			mes "What are you waiting for!!";
 			mes "Why do we have to be the victim!!";
-			mes "";
 			next;
 			mes "[Enjoy]";
 			mes "It's christmas season again!!";
-			mes "";
 			next;
 			mes "[Enjoy]";
 			mes "Are we the soldiers";
@@ -375,7 +369,6 @@ prontera,155,285,3	script	Enjoy#enjoy	753,{
 			mes "No need to envy!!";
 			mes "This christmas is for singles!! ";
 			mes "Yahoo~";
-			mes "";
 			next;
 			mes "[All]";
 			mes "Christmas for singles!!!";
@@ -459,7 +452,6 @@ prontera,155,285,3	script	Enjoy#enjoy	753,{
 		mes "Let's go for it!!!";
 		mes "Cheer up everybody!!!";
 		mes "Let's rock till you get happy~!";
-		mes "";
 		set christ_solo05,0;
 		close;
 	}
@@ -618,7 +610,6 @@ prontera,188,177,4	script	Happymerry#happymerry	869,{
 		mes "He help me last christmas,";
 		mes "when I failed refining my equips.";
 		mes "Oh, holy Enjoy~";
-		mes "";
 		next;
 		mes "[Happymerry]";
 		mes "Alright!I've been waiting for a year!!";
@@ -630,7 +621,6 @@ prontera,188,177,4	script	Happymerry#happymerry	869,{
 		mes "He's waiting for you!";
 		mes "Go ahead~";
 		mes "I'll follow you after contacting others.";
-		mes "";
 		next;
 		mes "[Happymerry]";
 		mes "Alright!";
@@ -676,7 +666,6 @@ prontera,62,339,3	script	Christ#christ	875,{
 		mes "Why do need to organize a party with priest?!";
 		mes "I don't need all that.";
 		mes "Only thing I need is this chubby Pecopeco~!";
-		mes "";
 		next;
 		mes "["+ strcharinfo(0) +"]";
 		mes "Um...";
@@ -737,7 +726,6 @@ prontera,62,339,3	script	Christ#christ	875,{
 		mes "Why do need to organize a party with priest?!";
 		mes "I don't need all that.";
 		mes "Only thing I need is this chubby Pecopeco~!";
-		mes "";
 		next;
 		mes "[Christ]";
 		mes "Who are you!";
@@ -857,10 +845,8 @@ prontera,35,209,5	script	Event#event	881,{
 		mes "It's ok, Tinybee. I'm not lonely at all.";
 		mes "I have Ms.Bathory and Ms.Orclady with me.";
 		mes "Hahahaha~~~";
-		mes "";
 		next;
 		mes "-He laughed talking to his right hand.-";
-		mes "";
 		//Emotion "Event#event" ET_KIK
 		emotion e_kis;
 		next;
@@ -879,11 +865,9 @@ prontera,35,209,5	script	Event#event	881,{
 		mes "Don't be so lonely~.";
 		mes "I'll make your christmas unforgettably fantastic.";
 		mes "Let's go Tinybee.";
-		mes "";
 		next;
 		mes "-He kept talking to his right hand-";
 		mes "-and packed his stuff and bowed to Kafra.-";
-		mes "";
 		next;
 		mes "["+ strcharinfo(0) +"]";
 		mes "Finally!!! Done telling everyone!!";
@@ -925,10 +909,8 @@ prontera,35,209,5	script	Event#event	881,{
 		mes "It's ok Tinybee.I'm not lonely at all.";
 		mes "I have Ms.Bathory and Ms.Orclady with me.";
 		mes "Hahahaha~~~";
-		mes "";
 		next;
 		mes "-He laughed talking to his right hand.-";
-		mes "";
 		emotion e_kis;
 		close;
 	}

+ 0 - 1
npc/events/halloween_2006.txt

@@ -293,7 +293,6 @@ geffen,145,132,3	script	Hoirin#06_hw	729,{
 			mes "^4d4dff 1 Pumpkin Mojo";
 			mes "2 Pumpkin";
 			mes "2 Egg^000000";
-			mes "";
 			next;
 			mes "[Hoirin]";
 			mes "Just Bring Pumpkin Mojo, Pumpkin, and a Egg.";

+ 32 - 29
npc/instances/EndlessTower.txt

@@ -214,7 +214,8 @@ e_tower,81,105,0	script	Tower Protection Stone	406,{
 		mes "Make or join a party with more than 1 member and try again.";
 		close;
 	}
-	if (.@etower_timer == -1) {
+	switch(.@etower_timer) {
+	case -1:
 		if (getcharid(0) == getpartyleader(.@party_id,2)) {
 			mes "Confirmed the party has been made. Would you like to reserve entrance to the Endless Tower?";
 			next;
@@ -251,38 +252,39 @@ e_tower,81,105,0	script	Tower Protection Stone	406,{
 		case 3:
 			end;
 		}
-	} else if ((.@etower_timer >= 0) && (.@etower_timer2 < 2)) {
-		mes "If you have the dungeon generated already, you can enter it. ";
-		next;
-		switch(select("Enter the "+.@md_name$+":Return to Alberta:Cancel")) {
-		case 1:
-			callsub L_Enter,0,0;
-		case 2:
-			mes "I will move you to Alberta.";
+	case 0:
+	case 1:
+		if (.@etower_timer2 < 2 && getcharid(1) == etower_partyid) {
+			mes "If you have the dungeon generated already, you can enter it. ";
+			next;
+			switch(select("Enter the "+.@md_name$+":Return to Alberta:Cancel")) {
+			case 1:
+				callsub L_Enter,0,0;
+			case 2:
+				mes "I will move you to Alberta.";
+				close2;
+				warp "alberta",223,36;
+				end;
+			case 3:
+				close;
+			}
+		} else {
+			set .@dun_lim_time,etower_timer+604800; // 1 week
+			// set .@dun_lim_time2,etower_timer+14400; // 4 hours
+			set .@dun_cur_time,gettimetick(2);
+			set .@dun_ent_t,(.@dun_lim_time - .@dun_cur_time);
+			set .@dun_h,(.@dun_ent_t / 3600);
+			set .@dun_m,(.@dun_ent_t - (.@dun_h * 3600)) / 60;
+			set .@dun_s,.@dun_ent_t - ((.@dun_h * 3600) + (.@dun_m * 60));
+
+			mes "Due to the tower's aftereffects, you cannot enter the dungeon right now, " + .@dun_h + "hours " + .@dun_m + "minutes " + .@dun_s + "seconds left to enter the next dungeon.";
+			next;
+			mes "It is dangerous here. Let me move you to Alberta.";
 			close2;
 			warp "alberta",223,36;
 			end;
-		case 3:
-			break;
 		}
-		close;
-	} else if ((.@etower_timer >= 0) && (.@etower_timer < 2) && (.@etower_timer2 == 2)) {
-
-		set .@dun_lim_time,etower_timer+604800; // 1 week
-		set .@dun_lim_time2,etower_timer+14400; // 4 hours
-		set .@dun_cur_time,gettimetick(2);
-		set .@dun_ent_t,(.@dun_lim_time - .@dun_cur_time);
-		set .@dun_h,(.@dun_ent_t / 3600);
-		set .@dun_m,(.@dun_ent_t - (.@dun_h * 3600)) / 60;
-		set .@dun_s,.@dun_ent_t - ((.@dun_h * 3600) + (.@dun_m * 60));
-
-		mes "Due to the tower's aftereffects, you cannot enter the dungeon right now, " + .@dun_h + "hours " + .@dun_m + "minutes " + .@dun_s + "seconds left to enter the next dungeon.";
-		next;
-		mes "It is dangerous here. Let me move you to Alberta.";
-		close2;
-		warp "alberta",223,36;
-		end;
-	} else {
+	case 2:
 		set etower_timer,0;
 		erasequest 60200;
 		erasequest 60201;
@@ -306,6 +308,7 @@ L_Enter:
 		mapannounce "e_tower", strcharinfo(0) +" of the party, "+ getpartyname( getcharid(1) ) +", is entering the dungeon, Endless Tower.",bc_map,"0x00ff99",FW_NORMAL,12;
 		if (getarg(1)) {
 			set etower_timer,gettimetick(2);
+			set etower_partyid, getcharid(1);
 			setquest 60200;
 			setquest 60201;
 		}

+ 12 - 3
npc/instances/SealedShrine.txt

@@ -339,7 +339,10 @@ prt_monk,261,91,3	script	Rust Blackhand#edq	826,{
 				next;
 				mes "[Rust Blackhand]";
 				mes "You'll never know how great this hat is until you get one. If you understood, go and get the ingredients.";
-				changequest 3042,3043;
+				if (isbegin_quest(3042))
+					changequest 3042,3043;
+				else
+					setquest 3043;
 				close;
 			case 2:
 				mes "[Rust Blackhand]";
@@ -395,7 +398,12 @@ prt_monk,261,91,3	script	Rust Blackhand#edq	826,{
 				mes "[Rust Blackhand]";
 				mes "You'll never know how great this hat is until you get one. If you understood, go and get the ingredients.";
 				//recall_completequest 3043
-				changequest 3042,3043;
+				if (isbegin_quest(3042))
+					changequest 3042,3043;
+				else {
+					erasequest 3043;
+					setquest 3043;
+				}
 				close;
 			case 2:
 				mes "[Rust Blackhand]";
@@ -1229,7 +1237,8 @@ OnMyMobDead:
 	set .@map$, instance_mapname("2@cata");
 	if (mobcount(.@map$,instance_npcname("control_baphomet")+"::OnMyMobDead") < 1) {
 		set 'ins_baphomet,7;
-		erasequest 3041;
+		if (isbegin_quest(3041))
+			erasequest 3041;
 		mapannounce .@map$, "Baphomet : No! Nonono! How dare these weaklings defeat me!... No!!...",bc_map,"0xdb7093";
 		enablenpc instance_npcname("Ancient Hero's Soul#2F");
 		disablenpc instance_npcname("slave_down");

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

@@ -1587,6 +1587,7 @@ OnDisable:
 }
 
 in_moc_16,87,48,2	script	Barcardi#ASN	725,2,2,{
+	end;
 OnTouch:
 	donpcevent "timestopper#1::OnDisable";
 	donpcevent "Thomas#ASNTEST::OnDisable";
@@ -1638,6 +1639,7 @@ OnCast:
 }
 
 in_moc_16,149,80,4	script	Guildmaster#ASN2	106,1,1,{
+	end;
 OnTouch:
 	savepoint "morocc",100,100;
 	if (ASSIN_Q == 7 && BaseJob == Job_Thief) {

+ 47 - 46
npc/jobs/2-2a/Creator.txt

@@ -13,10 +13,56 @@
 //= 1.1 Made all into functions, additional checks, etc. [Lupus]
 //= 1.2 Made numbers into constants. [Vicious]
 //= 1.3 Now saves/restores all the quest skills [Lupus]
+//= 1.4 Creators did not get their homunculus skills [Lemongrass]
 //============================================================ 
 
 valkyrie,53,50,3	script	Biochemist#Valkyrie	122,{
-	if (ADVJOB == 0 || Upper != 1) {
+	if (Class == Job_Creator && bioeth == 13 && getskilllv("AM_BIOETHICS") == 0) {
+		mes "[Biochemist]";
+		mes "Ah, have you come to";
+		mes "retrieve the memories";
+		mes "lost to you? Yes, you";
+		mes "must be here for the";
+		mes "secrets of life that";
+		mes "were once yours...";
+		next;
+		if (select("Yes:No") == 1) {
+			mes "[Biochemist]";
+			mes "Close your eyes and";
+			mes "put your mind at rest.";
+			mes "We will return to your";
+			mes "past to recollect the";
+			mes "fragments of your lost";
+			mes "memories.";
+			next;
+			mes "[Biochemist]";
+			mes "When you open your eyes,";
+			mes "you will clearly remember";
+			mes "the secret of life. You will";
+			mes "also remember the weight of";
+			mes "responsibility in using these";
+			mes "secrets for the right ends...";
+			next;
+			skill "AM_BIOETHICS",1,SKILL_PERM;
+			mes "[Biochemist]";
+			mes "Open your eyes...";
+			mes "Now that you have";
+			mes "remembered how to";
+			mes "create artificial life, I only";
+			mes "ask that you treat all of your";
+			mes "creations with respect.";
+			close;
+		}
+		mes "[Biochemist]";
+		mes "If you wish to";
+		mes "retrieve your lost";
+		mes "memories, please";
+		mes "come back to me.";
+		mes "The secret to creating";
+		mes "life is no trifling thing...";
+		close;
+	}
+	else if (ADVJOB == 0 || Upper != 1) {
 		set .@karma_d,rand(1,10);
 		if (.@karma_d > 4) {
 			mes "[Biochemist]";
@@ -75,51 +121,6 @@ valkyrie,53,50,3	script	Biochemist#Valkyrie	122,{
 		close;
 	}
 	else {
-		if (Class == Job_Creator && bioeth == 13 && getskilllv("AM_BIOETHICS") == 0) {
-			mes "[Biochemist]";
-			mes "Ah, have you come to";
-			mes "retrieve the memories";
-			mes "lost to you? Yes, you";
-			mes "must be here for the";
-			mes "secrets of life that";
-			mes "were once yours...";
-			next;
-			if (select("Yes:No") == 1) {
-				mes "[Biochemist]";
-				mes "Close your eyes and";
-				mes "put your mind at rest.";
-				mes "We will return to your";
-				mes "past to recollect the";
-				mes "fragments of your lost";
-				mes "memories.";
-				next;
-				mes "[Biochemist]";
-				mes "When you open your eyes,";
-				mes "you will clearly remember";
-				mes "the secret of life. You will";
-				mes "also remember the weight of";
-				mes "responsibility in using these";
-				mes "secrets for the right ends...";
-				next;
-				skill "AM_BIOETHICS",1,SKILL_PERM;
-				mes "[Biochemist]";
-				mes "Open your eyes...";
-				mes "Now that you have";
-				mes "remembered how to";
-				mes "create artificial life, I only";
-				mes "ask that you treat all of your";
-				mes "creations with respect.";
-				close;
-			}
-			mes "[Biochemist]";
-			mes "If you wish to";
-			mes "retrieve your lost";
-			mes "memories, please";
-			mes "come back to me.";
-			mes "The secret to creating";
-			mes "life is no trifling thing...";
-			close;
-		}
 		mes "[Biochemist]";
 		mes "Welcome";
 		mes "to Valhalla,";

+ 5 - 5
npc/jobs/novice/supernovice.txt

@@ -21,7 +21,7 @@
 //============================================================ 
 
 aldeba_in,223,167,3	script	Tzerero#sn	709,{
-	if (BaseJob == Job_SuperNovice) {
+	if (BaseJob == Job_Super_Novice) {
 		mes "[Tzerero]";
 		mes "I trust that you are enjoying";
 		mes "life as a Super Novice? Ah,";
@@ -59,7 +59,7 @@ aldeba_in,223,167,3	script	Tzerero#sn	709,{
 		completequest 6010;
 		callfunc "F_ClearJobVar";
 		getitem 2339,1; //G_Strings
-		if (Upper==0) jobchange Job_SuperNovice;
+		if (Upper==0) jobchange Job_Super_Novice;
 		if (Upper==2) jobchange Job_Super_Baby;
 		mes "[Tzerero]";
 		mes "Bwaha! I got you!";
@@ -275,7 +275,7 @@ aldeba_in,223,167,3	script	Tzerero#sn	709,{
 		}
 	}
 	else {
-		if (BaseJob == Job_SuperNovice) {
+		if (BaseJob == Job_Super_Novice) {
 			mes "[Tzerero]";
 			mes "How do you like living";
 			mes "life simply as a Super";
@@ -335,7 +335,7 @@ aldeba_in,216,169,5	script	Esseray#sn	86,{
 		mes "I knew you could pass the test~";
 		close;
 	}
-	if (BaseJob == Job_SuperNovice) {
+	if (BaseJob == Job_Super_Novice) {
 		if (checkre(0))
 			callfunc "Esseray_Ex";
 		mes "[Esseray]";
@@ -385,7 +385,7 @@ aldeba_in,216,169,5	script	Esseray#sn	86,{
 }
 
 aldebaran,54,238,5	script	Kafra Employee#sn	117,{
-	if (BaseJob == Job_SuperNovice) {
+	if (BaseJob == Job_Super_Novice) {
 		mes "[Kafra Employee]";
 		if (Sex )
 			mes "Hello, Mister Super Novice~";

+ 3 - 2
npc/merchants/ammo_boxes.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 2.0
+//= 2.1
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Description: =========================================
@@ -17,11 +17,12 @@
 //= 1.4 Updated to match AEGIS script again. [Masao]
 //= 1.5 Moved Izlude duplicate to pre-re/re paths. [Euphy]
 //= 2.0 Clean-up. [Capuche]
+//= 2.1 Fixes Issue #1482, where Rebellion jobs cannot use this npc. [Limestone]
 //============================================================
 
 alberta,118,157,3	script	Magazine Dealer Kenny::mdk	4_M_01,{
 	mes "[Kenny]";
-	if (BaseJob == Job_Gunslinger) {
+	if (BaseClass == Job_Gunslinger) {
 		mes "Welcome to my Magazine Shop.";
 		mes "As you may know, large numbers";
 		mes "of bullets can be carried more";

+ 3 - 2
npc/merchants/ammo_dealer.txt

@@ -3,7 +3,7 @@
 //===== By ===================================================
 //= Playtester, Paradox924X
 //===== Version ==============================================
-//= 2.0
+//= 2.1
 //===== Compatible With ======================================
 //= rAthena Project
 //===== Description ==========================================
@@ -18,11 +18,12 @@
 //= 1.5 Updated to match AEGIS script again. [Masao]
 //= 1.6 Moved Izlude duplicate to pre-re/re paths. [Euphy]
 //= 2.0 Clean-up. [Capuche]
+//= 2.1 Fixes Issue #1482, where Rebellion jobs cannot use this npc. [Limestone]
 //============================================================
 
 alberta,118,160,3	script	Bullet Dealer Tony#alb::bdt	4_M_04,{
 	mes "[Tony]";
-	if (BaseJob == Job_Gunslinger) {
+	if (BaseClass == Job_Gunslinger) {
 		mes "I'm Tony, the Bullet Dealer.";
 		mes "Come to me whenever you're";
 		mes "short on ammo. Just bring me";

+ 1 - 1
npc/merchants/clothes_dyer.txt

@@ -105,7 +105,7 @@ function Dyes;
 			case Job_Assassin:
 			case Job_Rogue:
 				if (Sex) Dyes(6,1); else Dyes(4,1,8,2,7,3);
-			case Job_SuperNovice:
+			case Job_Super_Novice:
 				if (Sex) Dyes(2,1,6,2,5,3,4,4); else Dyes(6,1,3,2,5,3,4,4);
 			default: 
 				mes "Wow, I've never seen clothes like that before! I'm sorry, but I don't think I can paint it.";

+ 1 - 1
npc/merchants/socket_enchant.txt

@@ -259,7 +259,7 @@ function	script	Func_Socket	{
 	mes "Ah, and don't forget to bring that "+ getitemname(.@item_id) +"!";
 	next;
 	mes "[Seiyablem]";
-	if (getiteminfo(.@item_id,5) == 2) // EQP_HAND_R = 2, it's a weapon
+	if (getiteminfo(.@item_id,5) & EQP_HAND_R) // weapon
 	{
 		mes "I can try to add a slot now if you have the required items and zeny.";
 		mes "However, you should know that there's a chance that I might fail.";

+ 2 - 2
npc/merchants/socket_enchant2.txt

@@ -411,8 +411,8 @@ function	script	Func_Socket2	{
 	mes "[Leablem]";
 	mes "Did you already bring all of them?";
 	mes "For your information, if you fail to create a slot,";
-	mes "you will lose all the item requirement as well as the target "+ (getiteminfo(.@item_id,5) == 2 ? "weapon" : "armor") +".";// EQP_HAND_R = 2, it's a weapon, otherwise armor
-	mes "Also remember, if the "+ (getiteminfo(.@item_id,5) == 2 ? "weapon" : "armor") +" has been upgraded, and has been inserted with a card,";
+	mes "you will lose all the item requirement as well as the target "+ ((getiteminfo(.@item_id,5)&EQP_HAND_R) ? "weapon" : "armor") +".";
+	mes "Also remember, if the "+ ((getiteminfo(.@item_id,5)&EQP_HAND_R) ? "weapon" : "armor") +" has been upgraded, and has been inserted with a card,";
 	mes "you will lose them even if you succeed in creating a slot.";
 	next;
 	switch(select("Ask for slot creation.:Try next time."))

+ 25 - 0
npc/other/CashShop_Functions.txt

@@ -304,3 +304,28 @@ function	script	F_Snowball	{
 	}
 	end;
 }
+
+// Status reduction potion
+//============================================================
+// - Permanently reduces base stat <type> by <val>.
+// - Returns status points equals to points needed to raise
+//   that stat to original value.
+// - Doesn't work if base status <type> would become lower than 1 after reduction.
+// * callfunc("F_CashReduceStat",<type>{,<val>,<itemid>});
+function	script	F_CashReduceStat	{
+	.@type = getarg(0);
+	.@amount = getarg(1, -1);
+	.@itemid = getarg(2, 0);
+	
+	if((readparam(.@type) + .@amount) < 1) return;
+	
+	if(.@itemid) {
+		if(countitem(.@itemid))
+			delitem .@itemid,1;
+		else
+			return;
+	}
+	StatusPoint += needed_status_point(.@type, .@amount);
+	statusup2 .@type,.@amount;
+	return;
+}

+ 44 - 25
npc/other/Global_Functions.txt

@@ -292,32 +292,51 @@ function	script	F_GetWeaponType	{
 }
 function	script	F_GetArmorType	{
 	switch(getiteminfo(getarg(0),5)) {
-		case 001: return "Lower Headgear"; break;
-		case 2: return callfunc("F_GetWeaponType",getarg(0)); break;
-		case 4: return "Garment"; break;
-		case 8: return "Accessory"; break;
-		case 16: return "Armor"; break;
-		case 32: return "Shield"; break;
-		case 64: return "Shoes"; break;
-		case 128: return "Accessory"; break;
-		case 136: return "Accessory"; break; //8+128
-		case 256: return "Upper Headgear"; break;
-		case 512: return "Middle Headgear"; break;
-		case 1024: return "Costume Upper Headgear"; break;
-		case 2048: return "Costume Midle Headgear"; break;
-		case 4096: return "Costume Lower Headgear"; break;
-		case 8192: return "Costume Garment"; break;
-		case 32768: return "Ammo"; break;
-		case 65536: return "Shadow Armor"; break;
-		case 131072: return "Shadow Weapon"; break;
-		case 262144: return "Shadow Shield"; break;
-		case 524288: return "Shadow Shoes"; break;
-		case 1048576: return "Shadow Accessory"; break;
-		case 2097152: return "Shadow Accessory"; break;
-		case 3145728: return "Shadow Accessory"; break; //1048576+2097152
-		default: return "Unknown Equip"; break;
+		case EQP_HEAD_LOW:
+			return "Lower Headgear";
+		case EQP_HAND_R:
+			return callfunc("F_GetWeaponType",getarg(0));
+		case EQP_GARMENT:
+			return "Garment";
+		case EQP_ACC_L:
+		case EQP_ACC_R:
+		case EQP_ACC_RL:
+			return "Accessory";
+		case EQP_ARMOR:
+			return "Armor";
+		case EQP_HAND_L:
+			return "Shield";
+		case EQP_SHOES:
+			return "Shoes";
+		case EQP_HEAD_TOP:
+			return "Upper Headgear";
+		case EQP_HEAD_MID:
+			return "Middle Headgear";
+		case EQP_COSTUME_HEAD_TOP:
+			return "Costume Upper Headgear";
+		case EQP_COSTUME_HEAD_MID:
+			return "Costume Midle Headgear";
+		case EQP_COSTUME_HEAD_LOW:
+			return "Costume Lower Headgear";
+		case EQP_COSTUME_GARMENT:
+			return "Costume Garment";
+		case EQP_AMMO:
+			return "Ammo";
+		case EQP_SHADOW_ARMOR:
+			return "Shadow Armor";
+		case EQP_SHADOW_WEAPON:
+			return "Shadow Weapon";
+		case EQP_SHADOW_SHIELD:
+			return "Shadow Shield";
+		case EQP_SHADOW_SHOES:
+			return "Shadow Shoes";
+		case EQP_SHADOW_ACC_R:
+		case EQP_SHADOW_ACC_L:
+		case EQP_SHADOW_ACC_RL:
+			return "Shadow Accessory";
+		default:
+			return "Unknown Equip";
 	}
-	end;
 }
 
 

+ 1 - 1
npc/other/arena/arena_aco.txt

@@ -1086,7 +1086,7 @@ prt_are_in,25,31,3	script	Staff#aco-2	67,{
 	set .@hour_endaco, .@end_timeaco / 10000;
 	set .@min_endaco, ((.@end_timeaco % 10000) / 100);
 	set .@sec_endaco, .@end_timeaco % 100;
-	if ((.@hour_startaco == 23) & (.@hour_endaco == 0)) {
+	if ((.@hour_startaco == 23) && (.@hour_endaco == 0)) {
 		set .@hour_endaco,24;
 	}
 	set .@st_to_secaco, ((.@hour_startaco * 3600) + (.@min_startaco * 60) + (.@sec_startaco));

+ 26 - 5
npc/pre-re/jobs/novice/novice.txt

@@ -33,6 +33,11 @@ new_1-1,66,114,4	script	Bulletin Board#nv	111,{
 	close;
 }
 
+new_2-1,66,114,4	duplicate(Bulletin Board#nv)	Bulletin Board#nv2	111
+new_3-1,66,114,4	duplicate(Bulletin Board#nv)	Bulletin Board#nv3	111
+new_4-1,66,114,4	duplicate(Bulletin Board#nv)	Bulletin Board#nv4	111
+new_5-1,66,114,4	duplicate(Bulletin Board#nv)	Bulletin Board#nv5	111
+
 new_1-1,144,116,2	script	Guard#nv1	105,{
 	mes "[Training Grounds Guard]";
 	mes "Welcome to the Training Grounds.";
@@ -40,6 +45,11 @@ new_1-1,144,116,2	script	Guard#nv1	105,{
 	close;
 }
 
+new_2-1,144,116,2	duplicate(Guard#nv1)	Guard#nv2-1	105
+new_3-1,144,116,2	duplicate(Guard#nv1)	Guard#nv3-1	105
+new_4-1,144,116,2	duplicate(Guard#nv1)	Guard#nv4-1	105
+new_5-1,144,116,2	duplicate(Guard#nv1)	Guard#nv5-1	105
+
 new_1-1,144,107,2	script	Guard#nv2	105,{
 	mes "[Training Grounds Guard]";
 	if(rand(2)) {
@@ -61,6 +71,12 @@ new_1-1,144,107,2	script	Guard#nv2	105,{
 	close;
 }
 
+new_2-1,144,107,2	duplicate(Guard#nv2)	Guard#nv2-2	105
+new_3-1,144,107,2	duplicate(Guard#nv2)	Guard#nv3-2	105
+new_4-1,144,107,2	duplicate(Guard#nv2)	Guard#nv4-2	105
+new_5-1,144,107,2	duplicate(Guard#nv2)	Guard#nv5-2	105
+
+
 // Receptionist
 new_1-2,100,29,4	script	Receptionist#nv1	86,{
 	mes "[Training Grounds Receptionist]";
@@ -178,6 +194,10 @@ new_1-2,100,29,4	script	Receptionist#nv1	86,{
 		}
 	}
 }	
+new_2-2,100,29,4	duplicate(Receptionist#nv1)	Receptionist#nv2	86
+new_3-2,100,29,4	duplicate(Receptionist#nv1)	Receptionist#nv3	86
+new_4-2,100,29,4	duplicate(Receptionist#nv1)	Receptionist#nv4	86
+new_5-2,100,29,4	duplicate(Receptionist#nv1)	Receptionist#nv5	86
 
 new_1-1,53,114,4	script	Shion#nv1	727,{
 	if (nov_get_item04 > 9 || nov_get_item05 > 9) {
@@ -350,6 +370,12 @@ new_1-1,53,114,4	script	Shion#nv1	727,{
 	}
 }
 
+new_2-1,53,114,4	duplicate(Shion#nv1)	Shion#nv2	727
+new_3-1,53,114,4	duplicate(Shion#nv1)	Shion#nv3	727
+new_4-1,53,114,4	duplicate(Shion#nv1)	Shion#nv4	727
+new_5-1,53,114,4	duplicate(Shion#nv1)	Shion#nv5	727
+
+
 // Interfaces Tutor
 new_1-2,99,105,3	script	Interfaces Tutor#nv1	751,{
 	if (nov_get_item02 > 9 && nov_get_item03 > 9 && nov_get_item04 > 9) {
@@ -1537,7 +1563,6 @@ new_1-2,161,182,5	script	Instructor#nv	92,{
 	mes "Welcome to my class.";
 	mes "Choose the subject you";
 	mes "wish to learn more about.";
-	mes "";
 	next;
 	while(1) {
 		switch(select("Basic Info Window:Party Window:Item Window:Option Window:Equipment Window:Cancel")) {
@@ -3001,7 +3026,6 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 			mes "Fill in the blank:";
 			mes "You ^3355FF_____^000000";
 			mes "competing with other people...";
-			mes "";
 			next;
 			switch(select("don't mind...:don't like...:don't care about...")) {
 			case 1:
@@ -3406,7 +3430,6 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 					next;
 					mes "[Hanson]";
 					mes "The town you will arrive is named 'Geffen'.";
-					mes "";
 					mes "The mage academy is located in the Northwest part in town. Please remember this.";
 					next;
 					mes "[Hanson]";
@@ -4071,7 +4094,6 @@ new_1-4,91,22,4	script	Bruce#nv	57,{
 					next;
 					mes "[Bruce]";
 					mes "When advancing to the Second Job Class, Acolytes can change their jobs to ^8E2323Priests^000000 or ^8E2323Monks^000000.";
-					mes "";
 					set nov_3_swordman,20;
 					next;
 					break;
@@ -4229,7 +4251,6 @@ new_1-4,91,22,4	script	Bruce#nv	57,{
 					next;
 					mes "[Bruce]";
 					mes "When advancing to the Second Job Class, Acolytes can change their jobs to ^8E2323Priests^000000 or ^8E2323Monks^000000.";
-					mes "";
 					set nov_3_swordman,20;
 					next;
 					break;

+ 4 - 4
npc/quests/dandelion_request.txt

@@ -26,7 +26,7 @@ izlude,103,106,3	script	Guildsman#1	48,3,3,{
 		mes "to store some of your items.^000000";
 		close;
 	}
-	if(!(BaseLevel > 59) || !(BaseJob == Job_Novice || BaseJob == Job_SuperNovice || BaseClass == Job_Swordman))
+	if(!(BaseLevel > 59) || !(BaseJob == Job_Novice || BaseJob == Job_Super_Novice || BaseClass == Job_Swordman))
 	{
 		mes "[Guildsman]";
 		mes "There are rumors";
@@ -45,7 +45,7 @@ izlude,103,106,3	script	Guildsman#1	48,3,3,{
 	}
 	if(!mao_request)
 	{
-		if ((BaseJob == Job_Novice) || (BaseJob == Job_SuperNovice))
+		if ((BaseJob == Job_Novice) || (BaseJob == Job_Super_Novice))
 		{
 			mes "[Guildsman]";
 			mes "Excuse me? "+strcharinfo(0)+"?";
@@ -195,7 +195,7 @@ izlude,103,106,3	script	Guildsman#1	48,3,3,{
 	}
 	else if(mao_request == 1)
 	{
-		if ((BaseJob == Job_Novice) || (BaseJob == Job_SuperNovice))
+		if ((BaseJob == Job_Novice) || (BaseJob == Job_Super_Novice))
 		{
 			mes "[Guildsman]";
 			mes "Ah, I forgot to tell you";
@@ -293,7 +293,7 @@ OnTouch:
 	{
 		if(!mao_request)
 		{
-			if ((BaseJob == Job_Novice) || (BaseJob == Job_SuperNovice))
+			if ((BaseJob == Job_Novice) || (BaseJob == Job_Super_Novice))
 			{
 				mes "[Guildsman]";
 				mes "Excuse me? "+strcharinfo(0)+"?";

+ 5 - 5
npc/quests/doomed_swords.txt

@@ -25,7 +25,7 @@
 
 prt_in,162,11,2	script	Ghatu#magum	86,{
 	if (event_magum == 0) {
-		if (dmdswrd_Q2 & 1 || dmdswrd_Q2 & 2 || dmdswrd_Q2 & 4 || dmdswrd_Q2 & 8 || dmdswrd_Q2 & 16 || dmdswrd_Q2 & 32) {
+		if ((dmdswrd_Q2 & 1) || (dmdswrd_Q2 & 2) || (dmdswrd_Q2 & 4) || (dmdswrd_Q2 & 8) || (dmdswrd_Q2 & 16) || (dmdswrd_Q2 & 32)) {
 			mes "[Ghatu]";
 			mes "I've heard of a strange";
 			mes "blacksmith who lives in";
@@ -266,7 +266,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 		close;
 	}
 	if (event_magum == 0) {
-		if (dmdswrd_Q2 & 1 || dmdswrd_Q2 & 2 || dmdswrd_Q2 & 4 || dmdswrd_Q2 & 8 || dmdswrd_Q2 & 16 || dmdswrd_Q2 & 32) {
+		if ((dmdswrd_Q2 & 1) || (dmdswrd_Q2 & 2) || (dmdswrd_Q2 & 4) || (dmdswrd_Q2 & 8) || (dmdswrd_Q2 & 16) || (dmdswrd_Q2 & 32)) {
 			mes "[Mysterious Man]";
 			mes "Well...?";
 			mes "What the hell";
@@ -619,7 +619,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 			next;
 			switch(select("Mysteltainn.:Grimtooth.:Executioner.:Wait! I just remembered!")) {
 			case 1:
-				if (dmdswrd_Q2 & 1 || dmdswrd_Q2 & 8) {
+				if ((dmdswrd_Q2 & 1) || (dmdswrd_Q2 & 8)) {
 					mes "[Mysterious Blacksmith]";
 					mes "^0099FF1 Young Twig^000000,";
 					mes "^0099FF1 Emperium^000000,";
@@ -637,7 +637,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 				mes "sword did you ask me to create?";
 				close;
 			case 2:
-				if (dmdswrd_Q2 & 2 || dmdswrd_Q2 & 16) {
+				if ((dmdswrd_Q2 & 2) || (dmdswrd_Q2 & 16)) {
 					mes "[Mysterious Blacksmith]";
 					mes "I will need...";
 					mes "^0099FF1 Emperium^000000,";
@@ -655,7 +655,7 @@ pay_fild08,218,283,2	script	Mysterious Man#magum	89,{
 				mes "really want to possess it...";
 				close;
 			case 3:
-				if (dmdswrd_Q2 & 4 || dmdswrd_Q2 & 32) {
+				if ((dmdswrd_Q2 & 4) || (dmdswrd_Q2 & 32)) {
 					mes "[Mysterious Blacksmith]";
 					mes "Just bring me...";
 					mes "^0099FF50 Amulets^000000,";

+ 15 - 15
npc/quests/first_class/tu_ma_th01.txt

@@ -22,7 +22,7 @@
 moc_fild12,166,369,0	script	Trace of Battle#1	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThere are signs that show";
 		mes "that some violent scuffle";
 		mes "might have occurred here,";
@@ -84,7 +84,7 @@ moc_fild12,166,369,0	script	Trace of Battle#1	CLEAR_NPC,{
 moc_fild12,173,215,0	script	Trace of Battle#2	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThere are signs that show";
 		mes "that some violent scuffle";
 		mes "might have occurred here,";
@@ -116,7 +116,7 @@ moc_fild12,173,215,0	script	Trace of Battle#2	CLEAR_NPC,{
 moc_fild12,276,165,0	script	Trace of Battle#3	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -149,7 +149,7 @@ moc_fild12,276,165,0	script	Trace of Battle#3	CLEAR_NPC,{
 moc_fild11,39,163,0	script	Trace of Battle#4	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThere are signs that show";
 		mes "that some violent scuffle";
 		mes "might have occurred here,";
@@ -186,7 +186,7 @@ moc_fild11,39,163,0	script	Trace of Battle#4	CLEAR_NPC,{
 moc_fild11,205,52,0	script	Trace of Battle#5	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -267,7 +267,7 @@ moc_fild11,205,52,0	script	Trace of Battle#5	CLEAR_NPC,{
 moc_fild11,226,235,0	script	Trace of Battle#6	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -293,7 +293,7 @@ moc_fild11,226,235,0	script	Trace of Battle#6	CLEAR_NPC,{
 moc_fild11,184,342,0	script	Trace of Battle#7	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -318,7 +318,7 @@ moc_fild11,184,342,0	script	Trace of Battle#7	CLEAR_NPC,{
 moc_fild17,213,358,0	script	Trace of Battle#8	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -355,7 +355,7 @@ moc_fild17,213,358,0	script	Trace of Battle#8	CLEAR_NPC,{
 moc_fild17,228,274,0	script	Trace of Battle#9	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -409,7 +409,7 @@ moc_fild17,228,274,0	script	Trace of Battle#9	CLEAR_NPC,{
 moc_fild17,34,292,0	script	Trace of Battle#10	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -477,7 +477,7 @@ moc_fild18,346,296,0	script	Trace of Battle#11	CLEAR_NPC,{
 moc_fild18,309,257,0	script	Trace of Battle#12	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -510,7 +510,7 @@ moc_fild18,309,257,0	script	Trace of Battle#12	CLEAR_NPC,{
 moc_fild18,177,333,0	script	Trace of Battle#13	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -547,7 +547,7 @@ moc_fild18,177,333,0	script	Trace of Battle#13	CLEAR_NPC,{
 moc_fild18,111,303,0	script	Trace of Battle#14	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -580,7 +580,7 @@ moc_fild18,111,303,0	script	Trace of Battle#14	CLEAR_NPC,{
 moc_fild18,109,197,0	script	Trace of Battle#15	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";
@@ -752,7 +752,7 @@ moc_fild18,109,197,0	script	Trace of Battle#15	CLEAR_NPC,{
 moc_fild18,156,96,0	script	Trace of Battle#16	CLEAR_NPC,{
 	.@class_thief = ( BaseClass == Job_Thief );
 	.@class_mage = ( BaseClass == Job_Mage );
-	if (.@class_thief == 0 && .@class_mage == 0 || eaclass()&EAJL_BABY) {
+	if (.@class_thief == 0 && .@class_mage == 0 || (eaclass()&EAJL_BABY)) {
 		mes "^3355FFThese look like";
 		mes "traces of some kind";
 		mes "of pursuit or battle, but";

+ 1 - 1
npc/quests/first_class/tu_magician01.txt

@@ -37,7 +37,7 @@ geffen,67,180,4	script	New Mage Manager#M	8_F,{
 		mes "a Mage first. Alright, dear?";
 		close;
 	}
-	if(BaseClass != Job_Mage || eaclass()&EAJL_BABY){
+	if(BaseClass != Job_Mage || (eaclass()&EAJL_BABY)){
 		mes "You know, sometimes";
 		mes "other jobs might look a";
 		mes "little better in some battle";

+ 2 - 2
npc/quests/first_class/tu_sword.txt

@@ -43,7 +43,7 @@ izlude_in,82,163,3	script	Shurank	733,{
 		mes "come back to me...";
 		close;
 	}
-	if(BaseClass == Job_Swordman && eaclass()&(EAJL_2|EAJL_UPPER|EAJL_THIRD)){
+	if(BaseClass == Job_Swordman && (eaclass()&(EAJL_2|EAJL_UPPER|EAJL_THIRD))){
 		mes "From your raiment,";
 		mes "I see that you are";
 		if(Sex)
@@ -1018,7 +1018,7 @@ geffen,154,143,3	script	Dequ'ee	734,{
 		mes "I don't know how you want to live your life, but you should give the Swordman job some serious thought...";
 		close;
 	}
-	if(BaseClass == Job_Swordman && eaclass()&(EAJL_2|EAJL_UPPER)){
+	if(BaseClass == Job_Swordman && (eaclass()&(EAJL_2|EAJL_UPPER))){
 		mes "[Dequ'ee]";
 		mes "Ah...";
 		mes "A fellow sword wielder!";

+ 2 - 5
npc/quests/juice_maker.txt

@@ -19,7 +19,7 @@
 //============================================================
 
 prt_in,49,172,3	script	Marianne#juice	53,{
-	if (MISC_QUEST&1 || morison_meat == 15) {
+	if ((MISC_QUEST&1) || morison_meat == 15) {
 		mes "[Housewife Marianne]";
 		mes "Whew...!";
 		mes "Still, he won't eat anything unless it's Meat. But maybe he will eat fruit if it was cut so that it was easy to eat. Like, if it was blended into juice...";
@@ -80,7 +80,7 @@ prt_in,49,172,3	script	Marianne#juice	53,{
 }
 
 prt_in,47,173,3	script	Morrison#juice	97,{
-	if (MISC_QUEST&1 || morison_meat == 15) {
+	if ((MISC_QUEST&1) || morison_meat == 15) {
 		mes "[Little Morrison]";
 		mes "Bleh... Forget it.";
 		mes "I'm just going to shrivel to death just eating fruits. Don't bother worrying about me .";
@@ -294,13 +294,10 @@ payon_in03,188,146,5	script	Marx Hansen#juice	86,{
 			mes "# Fruit Juice Information #";
 			mes "^CC4E5C- Apple Juice -^000000";
 			mes "Apple x 1 ea, Empty Bottle x 1 ea, 3 zeny.";
-			mes "";
 			mes "^E3CF57- Banana Juice -^000000";
 			mes "Banana x 1 ea, Empty Bottle x 1 ea, 3 zeny.";
-			mes "";
 			mes "^ED9121- Carrot Juice -^000000";
 			mes "Carrot x 1 ea, Empty Bottle x 1 ea, 3 zeny.";
-			mes "";
 			mes "^CC00FF- Grape Juice -^000000";
 			mes "Grape x 1 ea, Empty Bottle x 1 ea, 3 zeny.";
 			close;

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

@@ -1381,7 +1381,7 @@ geffen,83,189,5	script	Seth#1	716,{
 			mes "I'm done!";
 			mes "I did a good job, didn't I?";
 			next;
-			if (BaseJob == Job_Novice || BaseJob == Job_SuperNovice) {
+			if (BaseJob == Job_Novice || BaseJob == Job_Super_Novice) {
 				mes "[Seth]";
 				mes "Oh, here's the leftovers. Mommy says that we should always save things. Heh heh~";
 				getitem 935,1; //Shell

+ 0 - 1
npc/quests/obb_quest.txt

@@ -800,7 +800,6 @@ moc_ruins,105,62,4	script	Jacob#thai	50,{
 						next;
 						mes "[Jacob]";
 						mes "....You.";
-						mes "";
 						next;
 						mes "[Jacob]";
 						mes "I don't want to see your ugly face";

+ 6 - 4
npc/quests/quests_13_1.txt

@@ -1731,7 +1731,8 @@ moc_fild22b,230,197,5	script	Munkenro#2	967,{
 			mes "Ok, just have a good adventure.";
 			next;
 			set ep13_ryu,22;
-			changequest 10077,10078; 
+			if (isbegin_quest(10077) == 1)
+				changequest 10077,10078; 
 			donpcevent "Head of the Alliance#moo::OnEnable"; 
 			mes "[Munkenro]";
 			mes "If you are too late,";
@@ -9651,8 +9652,10 @@ mid_campin,94,118,3	script	Staff Officer Abidal	755,{
 				delitem 11016,1; //Expedition_Report_Vol4
 				getitem 11012,1; //Expedition_Report
 				set ep13_1_edq,8;
-				erasequest 3090;
-				erasequest 3091;
+				if (isbegin_quest(3090) > 0)
+					erasequest 3090;
+				if (isbegin_quest(3091) > 0)
+					erasequest 3091;
 				setquest 3092;
 				mes "[Staff Officer Abidal]";
 				mes "I'm glad that we were able to make this again. Please bring this report to the commander.";
@@ -10105,7 +10108,6 @@ man_fild01,315,95,3	script	Expedition Scout#1	707,{
 				}
 				if (.@playtime == -1) {
 					changequest 3090,3091;
-					erasequest 3090;
 				} else
 					erasequest 3091;
 				setquest 3091;

+ 9 - 2
npc/quests/quests_13_2.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= L0ne_W0lf
 //===== Current Version: =====================================
-//= 2.8
+//= 2.9
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Description: =========================================
@@ -49,6 +49,7 @@
 //= 2.7 Updated RE/Pre-RE EXP. [Euphy]
 //= 2.7a Added Izlude RE coordinates. [Euphy]
 //= 2.8 Added GM management function. [Euphy]
+//= 2.9 Added custom weight check. Fixes issue #910. [Jeybla]
 //============================================================ 
 
 // Cat Hand Addition :: cat_enhance
@@ -2771,7 +2772,7 @@ manuk,252,116,3	script	Manuk Galtun#ep13_2day	450,{
 		else if (ep13_2_days01 == 1) {
 			set .@qst_cpl01,checkquest(7074,HUNTING);
 			set .@qst_cpl02,checkquest(7075,HUNTING);
-			if ((.@qst_cpl01 == 2) & (.@qst_cpl02 == 2)) {
+			if ((.@qst_cpl01 == 2) && (.@qst_cpl02 == 2)) {
 				mes "[Strom]";
 				mes "Sure enough... I, the Sapha Galtun, Strom, apologize to you. I should not have been so quick to despise you.";
 				mes "I admit that you are a brave soldier, please feel free to visit Manuk.";
@@ -3519,6 +3520,12 @@ OnTimer300000:
 // Otherworld language :: ep13_2_rhea
 //============================================================ 
 mid_camp,197,237,3	script	Schwartzvalt Mechanic#1	869,{
+	if( !checkweight(2782,1)) { // Custom weight check.
+		mes "[Mechanic Engineer Dorance]";
+		mes "It looks like you're carrying too many things.";
+		mes "Why not put some of your items in storage and come back?";
+		close;
+	}
 	if (ep13_1_edq > 2 || ep13_start == 100) {
 		if (ep13_2_rhea < 1) {
 			mes "[Mechanic Engineer Dorance]";

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