Browse Source

Base

Starting point..!
Image 10 months ago
parent
commit
548007ea96
100 changed files with 47355 additions and 0 deletions
  1. 641 0
      DB/currentlsdb.sql
  2. BIN
      DB/world_db.zip
  3. 36 0
      EQ2/configs/LoginServer.ini
  4. 347 0
      EQ2/configs/log_config.xml
  5. 11 0
      EQ2/configs/world_db.ini
  6. 3106 0
      EQ2/devtools/PacketParser/Parser DB.sql
  7. 2061 0
      EQ2/devtools/PacketParser/ParserStructs/ItemStructs.xml
  8. 1258 0
      EQ2/devtools/PacketParser/ParserStructs/SpawnStructs.xml
  9. 5405 0
      EQ2/devtools/PacketParser/ParserStructs/WorldStructs.xml
  10. 183 0
      EQ2/devtools/PacketParser/Readme.txt
  11. 1717 0
      EQ2/devtools/PacketParser/old_files/ItemStructs.xml
  12. 2208 0
      EQ2/devtools/PacketParser/old_files/ItemStructs_Parser.xml
  13. 571 0
      EQ2/devtools/PacketParser/old_files/MerchantItemStructs.xml
  14. 3434 0
      EQ2/devtools/PacketParser/old_files/ParserStructs.xml
  15. 8 0
      EQ2/devtools/PacketParser/old_files/WS_Updates.xml
  16. 3546 0
      EQ2/devtools/PacketParser/old_files/WorldStructs.xml
  17. 4073 0
      EQ2/devtools/PacketParser/old_files/WorldStructsDev.xml
  18. 10 0
      EQ2/devtools/PacketParser/parse all.bat
  19. 5 0
      EQ2/devtools/PacketParser/parser_db.ini
  20. 20 0
      EQ2/devtools/PacketParser/sql_updates/AchievementUpdates SQL.txt
  21. 1 0
      EQ2/devtools/PacketParser/sql_updates/Conversation Fix.sql
  22. 69 0
      EQ2/devtools/PacketParser/sql_updates/EQ2ParserDB SQL Updates_v0.1.1.txt
  23. 11 0
      EQ2/devtools/PacketParser/sql_updates/Item Updates.sql
  24. 24 0
      EQ2/devtools/PacketParser/sql_updates/MerchantItems.sql
  25. 39 0
      EQ2/devtools/PacketParser/sql_updates/Misc item unknown updates.sql
  26. 49 0
      EQ2/devtools/PacketParser/sql_updates/New Insert Queries.txt
  27. 85 0
      EQ2/devtools/PacketParser/sql_updates/Parser DB Updates.sql
  28. 102 0
      EQ2/devtools/PacketParser/sql_updates/Parser Item and Quest DB Changes.sql
  29. 28 0
      EQ2/devtools/PacketParser/sql_updates/Pattern Item Type update.sql
  30. 2 0
      EQ2/devtools/PacketParser/sql_updates/Quest Updates 2009-May-07.sql
  31. 29 0
      EQ2/devtools/PacketParser/sql_updates/RawDialogs.sql
  32. 32 0
      EQ2/devtools/PacketParser/sql_updates/Skill and Bauble Items update.sql
  33. 2 0
      EQ2/devtools/PacketParser/sql_updates/SpawnFix.sql
  34. 24 0
      EQ2/devtools/PacketParser/sql_updates/TSO Parser Queries.sql
  35. 40 0
      EQ2/devtools/PacketParser/sql_updates/eq2_achievements.sql
  36. 38 0
      EQ2/devtools/PacketParser/sql_updates/eq2_books.sql
  37. 82 0
      EQ2/devtools/PacketParser/sql_updates/eq2_rawdata_aa_tables.sql
  38. 94 0
      EQ2/devtools/PacketParser/sql_updates/parser_db_20070725.sql
  39. 28 0
      EQ2/devtools/PacketParser/sql_updates/parser_db_20130102.sql
  40. 56 0
      EQ2/devtools/PacketParser/sql_updates/parser_db_20130110.sql
  41. 5 0
      EQ2/devtools/PacketParser/sql_updates/parser_db_changes.sql
  42. 64 0
      EQ2/devtools/PacketParser/sql_updates/parser_stats.sql
  43. 8 0
      EQ2/devtools/PacketParser/sql_updates/raw db updates.sql
  44. 39 0
      EQ2/devtools/PacketParser/sql_updates/raw_achievements_fixes.sql
  45. 1 0
      EQ2/devtools/PacketParser/sql_updates/raw_achievements_versions.sql
  46. 44 0
      EQ2/devtools/PacketParser/sql_updates/raw_adventure_list.sql
  47. 80 0
      EQ2/devtools/PacketParser/sql_updates/raw_arenas.sql
  48. 49 0
      EQ2/devtools/PacketParser/sql_updates/raw_collections.sql
  49. 23 0
      EQ2/devtools/PacketParser/sql_updates/raw_collections1.sql
  50. 14 0
      EQ2/devtools/PacketParser/sql_updates/raw_commands.sql
  51. 23 0
      EQ2/devtools/PacketParser/sql_updates/raw_factions.sql
  52. 15 0
      EQ2/devtools/PacketParser/sql_updates/raw_factions1.sql
  53. 3 0
      EQ2/devtools/PacketParser/sql_updates/raw_item_appearances.sql
  54. 16 0
      EQ2/devtools/PacketParser/sql_updates/raw_item_details_armorset.sql
  55. 39 0
      EQ2/devtools/PacketParser/sql_updates/raw_item_details_book.sql
  56. 12 0
      EQ2/devtools/PacketParser/sql_updates/raw_item_details_house_update.sql
  57. 16 0
      EQ2/devtools/PacketParser/sql_updates/raw_item_details_itemset.sql
  58. 16 0
      EQ2/devtools/PacketParser/sql_updates/raw_item_details_pattern.sql
  59. 1 0
      EQ2/devtools/PacketParser/sql_updates/raw_item_effects-fix.sql
  60. 56 0
      EQ2/devtools/PacketParser/sql_updates/raw_item_itemsets.sql
  61. 3 0
      EQ2/devtools/PacketParser/sql_updates/raw_items-fix.sql
  62. 22 0
      EQ2/devtools/PacketParser/sql_updates/raw_map_data.sql
  63. 58 0
      EQ2/devtools/PacketParser/sql_updates/raw_merchants.sql
  64. 21 0
      EQ2/devtools/PacketParser/sql_updates/raw_mercs_pets.sql
  65. 11 0
      EQ2/devtools/PacketParser/sql_updates/raw_poi_locations.sql
  66. 2 0
      EQ2/devtools/PacketParser/sql_updates/raw_spawn_appearance_equip.sql
  67. 1 0
      EQ2/devtools/PacketParser/sql_updates/raw_spawn_info_popID.sql
  68. 6 0
      EQ2/devtools/PacketParser/sql_updates/raw_spawn_info_updates.sql
  69. 1 0
      EQ2/devtools/PacketParser/sql_updates/raw_spawns_20090726.sql
  70. 15 0
      EQ2/devtools/PacketParser/sql_updates/raw_spell_visuals.sql
  71. 4 0
      EQ2/devtools/PacketParser/sql_updates/raw_spell_visuals_fix.sql
  72. 60 0
      EQ2/devtools/PacketParser/sql_updates/raw_spells, raw_items and raw_collections update.sql
  73. 71 0
      EQ2/devtools/PacketParser/sql_updates/raw_spells.sql
  74. 5 0
      EQ2/devtools/PacketParser/sql_updates/raw_spells2.sql
  75. 5 0
      EQ2/devtools/PacketParser/sql_updates/raw_spells3.sql
  76. 4 0
      EQ2/devtools/PacketParser/sql_updates/raw_spells4.sql
  77. 40 0
      EQ2/devtools/PacketParser/sql_updates/raw_spells5.sql
  78. 18 0
      EQ2/devtools/PacketParser/sql_updates/raw_spells_aa.sql
  79. 10 0
      EQ2/devtools/PacketParser/sql_updates/raw_titles.sql
  80. 1 0
      EQ2/devtools/PacketParser/sql_updates/raw_traditions.sql
  81. 114 0
      EQ2/distrib/DISTRIB.bat
  82. 4 0
      EQ2/distrib/readme.txt
  83. 674 0
      EQ2/docs/COPYING.txt
  84. 1862 0
      EQ2/docs/ChangeLog.txt
  85. BIN
      EQ2/docs/Client_Versions.xlsx
  86. 14 0
      EQ2/docs/Notes about World.sln.txt
  87. 474 0
      EQ2/docs/Opcodes_List_2005.txt
  88. 18 0
      EQ2/docs/ToDo.txt
  89. 89 0
      EQ2/docs/bonus table.html
  90. 73 0
      EQ2/docs/charactersheet_struct.txt
  91. 10792 0
      EQ2/docs/opcodes.sql
  92. 175 0
      EQ2/docs/pull type chance.html
  93. 174 0
      EQ2/source/LUA/include/lauxlib.h
  94. 388 0
      EQ2/source/LUA/include/lua.h
  95. 9 0
      EQ2/source/LUA/include/lua.hpp
  96. 763 0
      EQ2/source/LUA/include/luaconf.h
  97. 53 0
      EQ2/source/LUA/include/lualib.h
  98. 1298 0
      EQ2/source/LUA/lapi.c
  99. 24 0
      EQ2/source/LUA/lapi.h
  100. 0 0
      EQ2/source/LUA/lauxlib.c

File diff suppressed because it is too large
+ 641 - 0
DB/currentlsdb.sql


BIN
DB/world_db.zip


+ 36 - 0
EQ2/configs/LoginServer.ini

@@ -0,0 +1,36 @@
+### --- This file tells world.exe what loginserver to connect to.
+### --- Change the account and password fields to the information you used when you created your SERVER account.
+
+### --- NOTE: the word "Server" is added to each server automaticly.
+
+# READ README.MD
+
+[LoginServer]
+loginserver=eq2emulator.net
+loginport=9100
+worldname=WORLD_NAME_HERE
+worldaddress=EXTERNAL_IP_HERE
+#internalworldaddress=INTERNAL_IP_HERE (If used, otherwise blank)
+worldport=9000
+locked=false
+account=
+password=
+#autotableupdates retrieves the latest table updates and applies them to your database
+#autotableupdates valid options=always, ask, and never
+autotableupdates=always
+#autotableverbose displays detailed information about the updates; options=true or false
+autotableverbose=false
+#autotabledata retrieves the latest data for tables like the opcodes table; options=true or false
+autotabledata=true
+
+[WorldServer]
+Defaultstatus=
+Unavailzone=
+
+[UpdateServer]
+updateserveraddress=updates.eq2emulator.net
+updateserverport=9104
+
+[LoginConfig]
+ServerMode=StandAlone
+ServerPort=9100

+ 347 - 0
EQ2/configs/log_config.xml

@@ -0,0 +1,347 @@
+<EQ2EmuLogConfigs>
+	<Help Text="Details on Log Config here: http://eq2emulator.net/wiki/index.php/Admins:LogSystem" />
+	<!-- SYSTEM Loggers -->
+	<LogConfig Category="WORLD">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="LOGIN">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="PATCHER">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="PARSER">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="INIT">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="LOGIN_INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="LOGIN_WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="LOGIN_ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="LOGIN_DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PATCHER_INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="PATCHER_WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="PATCHER_ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="PATCHER_DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+	</LogConfig>
+	<LogConfig Category="DATABASE">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="QUERY" Level="0" Color="Cyan" Enabled="False" Logs="1" />
+		<ConfigType Type="RESULT" Level="0" Color="CyanBold" Enabled="False" Logs="1" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="MUTEX">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="MISC">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+		<ConfigType Type="TODO" Level="0" Color="YellowBold" Enabled="False" Logs="3" />
+	</LogConfig>
+	<!-- NETWORK Loggers -->
+	<LogConfig Category="CCLIENT">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="NET">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="OPCODE">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="MagentaBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="PACKET">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<!-- PLAYER Loggers -->
+	<LogConfig Category="PLAYER">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<!-- SUBSYSTEM Loggers -->
+	<LogConfig Category="ACHIEVEMENT">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="CHAT">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="COLLECTION">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="COMBAT">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="COMMAND">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="FACTION">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="GUILD">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="ITEM">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="LOOT">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="LUA">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="MERCHANT">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="NPC">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="COMBAT" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="SPELLS" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="AI" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="DAMAGE" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="NPC_AI">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="PET">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="COMBAT" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="SPELLS" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="AI" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="DAMAGE" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="QUEST">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="REWARD" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="STEP" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="RULESYS">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="SKILL">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="SPELL">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="TRADESKILL">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="TRANSPORT">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<!-- SPAWN Loggers -->
+	<LogConfig Category="SPAWN">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="OBJECT">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="SIGN">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="WIDGET">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="GROUNDSPAWN">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<!-- ZONE Loggers -->
+	<LogConfig Category="ZONE">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+	<LogConfig Category="INSTANCE">
+		<ConfigType Type="INFO" Level="0" Color="WhiteBold" Enabled="True" Logs="3" />
+		<ConfigType Type="WARNING" Level="0" Color="YellowBold" Enabled="True" Logs="3" />
+		<ConfigType Type="ERROR" Level="0" Color="RedBold" Enabled="True" Logs="3" />
+		<ConfigType Type="DEBUG" Level="0" Color="GreenBold" Enabled="False" Logs="3" />
+		<ConfigType Type="PACKET" Level="0" Color="Yellow" Enabled="False" Logs="3" />
+		<ConfigType Type="TRACE" Level="0" Color="Yellow" Enabled="False" Logs="1" />
+	</LogConfig>
+</EQ2EmuLogConfigs>

+ 11 - 0
EQ2/configs/world_db.ini

@@ -0,0 +1,11 @@
+# READ README.MD!
+
+[Database]
+host=127.0.0.1
+user=root
+password=pass
+database=eq2emu
+
+
+### --- This file tells world.exe what computer mySQL is on. Host should
+### --- be left "localhost" unless mysql is on a differant computer than world.exe.

File diff suppressed because it is too large
+ 3106 - 0
EQ2/devtools/PacketParser/Parser DB.sql


File diff suppressed because it is too large
+ 2061 - 0
EQ2/devtools/PacketParser/ParserStructs/ItemStructs.xml


File diff suppressed because it is too large
+ 1258 - 0
EQ2/devtools/PacketParser/ParserStructs/SpawnStructs.xml


File diff suppressed because it is too large
+ 5405 - 0
EQ2/devtools/PacketParser/ParserStructs/WorldStructs.xml


+ 183 - 0
EQ2/devtools/PacketParser/Readme.txt

@@ -0,0 +1,183 @@
+################################
+# EQ2Emulator PacketParser.exe #
+################################
+
+Contents
+--------
+
+1. Legal and Disclaimers
+2. What is PacketParser.exe?
+3. Before you begin
+4. Parsing your logs
+5. Populating your EQ2Emulator database
+6. Conclusion
+
+
+
+1. Legal and Disclaimers
+=======================================
+There is nothing "Legal" or "Illegal" about using this tool as it is licensed under GPL, so
+don't hack it, reverse-engineer it, and re-release it calling it your own great tool. The 
+only thing I want to really emphasize here is, if you use this tool to parse logs and populate
+your database, YOU ARE 100% RESPONSIBLE FOR THE OUTCOME.
+
+In no way, shape, or form is EQ2Emulator.net, developers, or database designers responsible
+for you losing data, or encountering an inability to parse and populate properly. This tool,
+like every other aspect of EQ2Emulator, is in a constant state of change and update, and at 
+times will cease to function. However, it is not a high priority for the EQ2Emulator team to
+get it working again. 
+
+In other words, be patient, report problems in a mature, friendly, 
+respectful manner, and the problems will be resolved and a new parser package released.
+
+
+
+2. What is PacketParser.exe?
+=======================================
+PacketParser.exe is the small utility that analyzes your collected packets from EQ2 Live game 
+and turns them into "raw" data for use in building your world. This tool is only needed if you 
+choose to build worlds based on the EQ2 Live experience. You can use this tool to parse Spawns, 
+Items, Merchant lists, Factions, Spell and Collection data, and Quest/Conversation from the live 
+game, with additional support added during the EQ2Emulator Alpha development cycle.
+
+In order to use PacketParser.exe, you of course need to have collected a log from the live game.
+You can collect the game data yourself using EQ2PacketCollector.exe - a separate tool (and thus 
+documented separately). EQ2PacketCollector.exe is no longer available freely to the public, but 
+you may PM John Adams or LethalEncounter on the EQ2Emulator.net forums to receive a copy of the
+program.
+
+
+
+3. Before You Begin
+=======================================
+Before you can parse a packet collect, you should have a local instance of MySQL 5.x installed.
+You can have MySQL on your Windows XP workstation, or somewhere on your network - it does not have
+to be on the same machine... but your database should not be located via a WAN or over the internet.
+It would be far too slow!
+
+Create a folder, example C:\eq2parser, and put the following files into that folder:
+
+Required:
+- PacketParser.exe
+- zlib.dll (downloadable package - search for it on the internet)
+- WorldStructs.xml
+- SpawnStructs.xml
+- ItemStructs.xml
+- parser_db.ini
+- Parser DB.sql (not needed except to source in raw DB structures)
+
+Optional (if you wanted to script some mysql actions)
+- parse-all.bat
+- mysql.exe
+- mysqldump.exe
+
+
+MySQL Database setup:
+Assuming you use SQLYog or some other MySQL GUI Tools (google them, they are your friend), you must
+connect to your MySQL instance and create a blank database. Refer to MySQL documentation on creating
+a database. Example database name for the parser: eq2_rawdata.
+
+"Source" in the included Parser_DB.sql file - by this we mean open this Query and execute it so it
+will build the database structure required by PacketParser.exe - without this, you are going nowhere.
+If you encounter errors, you need to explore how to get around them as this is not a lesson in becoming
+a Database Administrator. :)
+
+Once your database is created and you see tables like "raw_spawns", "raw_items", "raw_spells" etc, you 
+are almost ready to go. 
+
+NOTE: Since PacketParser.exe is now a "controlled release", updates to both the EXE and Parser DB.sql 
+will usually be posted in In-House Tools, under PacketParser.
+
+parser_db.ini:
+Edit parser_db.ini to reflect your database settings. Here is an example:
+
+[Database]
+host=localhost
+user=root
+password=sekr3t
+database=eq2_rawdata
+
+host: the IP or FQDN (fully qualified domain name) of your MySQL server. If it is on the same machine,
+use "localhost"
+
+user/password: This is a MySQL account that has SELECT, INSERT, UPDATE, and DELETE rights to your 
+eq2_rawdata database.
+
+database: The name of your raw database - in my example, eq2_rawdata.
+
+
+
+4. Parsing Your Logs
+=======================================
+Included in your PacketParser package is a sample BATCH file that is designed to identify *.log files
+in the current directory and execute the PacketParser.exe (with parameters) on each file individually.
+Once the parser is done with the file, it will move it off to a "Done" folder. This is to prevent the
+same log from being re-parsed should you have to stop and restart the job.
+
+Move your log(s) into your C:\eq2parser directory with your other parser files, and simply run the 
+included "parse-all.bat" file. This batch files is executing the following command:
+
+- PacketParser.exe -spawns -items -spells -quests -factions -collections {log_file}
+
+You can run the command-line version of the PacketParser.exe yourself - you do not need to use the
+batch file. Run PacketParser.exe and hit ENTER to see a list of command-line options.
+
+Example, if you just want to parse Spell information from your logs, run:
+
+- PacketParser.exe -spells {log_file}
+
+* Replace {log_file} with the name of your collected log (ie., EQ2PacketLog.log)
+
+
+You can stack the command-line options as many or as few as you like. There has to be at least one,
+and for PARSING logs, -populate is not valid (see next chapter).
+
+NOTE: The parse-all.bat file is setup to output parser data to a parser_log.txt file. This is the 
+troubleshooting information we would need to see if you are having problems. Simply post your problem
+and attach that text file. If it is larger than 10kb, you probably should ZIP/RAR it first.
+
+
+
+5. Populating your EQ2Emulator Database
+=======================================
+During the 0.7.0 development cycle of EQ2Emulator, some critical changes have been made to the database
+structures regarding Items, Spawns, Spells and Quests. Take note of these as you continue populating 
+your worlds using our tools. Recently, major changes to the Spawns structure broke the -populate
+functionality, but a new parser was released to resolve this issue.
+
+To populate your EQ2Emulator World database, simply run the following command:
+
+PacketParser.exe -populate {eq2world_db} 
+
+* Replace {eq2world_db} with the name of your database that EQ2World.exe uses
+
+The -populate command will move all raw Spawn data from parser DB to World DB for use in your world.
+
+There are a few other commands currently available:
+	-loaditems 	- this will populate the Items tables in your World DB from Raw data
+	-loadfactions 	- this will populate the Factions tables in your World DB from Raw data
+
+
+
+6. Conclusion
+=======================================
+There is literally tons of RAW data coming from packet logs, some we do not even utilize yet in the -populate
+commands of Parser. Examples of some of this data is:
+
+  raw_dialogs		: These are the conversations you have with NPCs in game, with the clickable option buttons
+  raw_conversations	: These are the casual shouts NPCs give as you pass by or Hail them - no interaction
+  raw_map_data		: You should update your map_data table in your World DB with newly parsed raw_map_data as needed
+  raw_merchant_items	: As you parse Items, if they came from a merchant window, this table shows you what spawn_id had what item_id
+  raw_quests		: This data is what we use to build LUA scripts for quests - currently no automation available
+  raw_sounds		: These are your door squeaks and other sound effects in game, mapped to their raw_spawn ID
+  raw_spells		: This data is used to build our Spells lists, or update existing information with new captured data
+  raw_zone_points	: This is an attempt for the collector/parser to locate any known zone-in-points when you zone while collecting (not always accurate)
+
+There is so much more we can gleen from our logs we hvae yet to discover. If you feel like helping identify
+some of this data, feel free to join in on the conversations in Development and offer your help.
+
+
+Happy World Building!
+
+
+-John Adams

File diff suppressed because it is too large
+ 1717 - 0
EQ2/devtools/PacketParser/old_files/ItemStructs.xml


File diff suppressed because it is too large
+ 2208 - 0
EQ2/devtools/PacketParser/old_files/ItemStructs_Parser.xml


+ 571 - 0
EQ2/devtools/PacketParser/old_files/MerchantItemStructs.xml

@@ -0,0 +1,571 @@
+<EQ2Emulator>
+<Struct Name="Substruct_BaseMerchantItemDescription" ClientVersion="1" >
+<Data ElementName="creator_flag" Type="int8" Size="1" />
+<Data ElementName="creator" Type="EQ2_8Bit_String" Size="1" />
+<Data ElementName="adornment" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="unknown3" Type="int32" Size="1" />
+<Data ElementName="first_desc" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="unique_id" Type="int32" Size="1" />
+<Data ElementName="item_id" Type="sint32" Size="1" />
+<Data ElementName="icon" Type="int16" Size="1" />
+<Data ElementName="tier" Type="int8" Size="1" />
+<Data ElementName="flags" Type="int16" Size="1" />
+<Data ElementName="unknown8" Type="int8" Size="19" />
+<Data ElementName="stat_count" Type="int8" />
+<Data ElementName="stat_array" Type="Array" ArraySizeVariable="stat_count">
+	<Data ElementName="stat_type" Type="int8" Size="1" />
+	<Data ElementName="stat_subtype" Type="int8" Size="1" />
+	<Data ElementName="stat_resist_oversized" Type="int8" Size="1" />
+	<Data ElementName="value" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+</Data>
+<Data ElementName="stat_string_count" Type="int8" />
+<Data ElementName="stat_string_array" Type="Array" ArraySizeVariable="stat_string_count">
+	<Data ElementName="stat_string" Type="EQ2_8Bit_String" Size="1" />
+	<Data ElementName="adornment_flag" Type="int8" Size="1" />
+	<Data ElementName="adornment_array" Type="Array" ArraySizeVariable="adornment_flag">
+		<Data ElementName="adornment_unknown" Type="int8" Size="1" />
+	</Data>	
+	<Data ElementName="stat_description" Type="EQ2_16Bit_String" Size="1" />
+</Data>
+<Data ElementName="condition" Type="int8" Size="1" />
+<Data ElementName="weight" Type="int32" Size="1" />
+<Data ElementName="skill_req1" Type="int32" Size="1" />
+<Data ElementName="skill_req2" Type="int32" Size="1" />
+<Data ElementName="unknown10" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="class_count" Type="int8" />
+<Data ElementName="class_array" Type="Array" ArraySizeVariable="class_count">
+	<Data ElementName="adventure_class" Type="int8" Size="1" />
+	<Data ElementName="tradeskill_class" Type="int8" Size="1" />
+	<Data ElementName="level" Type="int16" Size="1" />
+</Data>
+<Data ElementName="slot_count" Type="int8" />
+<Data ElementName="slot_array" Type="Array" ArraySizeVariable="slot_count">
+	<Data ElementName="slot" Type="int8" Size="1" />
+</Data>
+<Data ElementName="footer_type" Type="int32" Size="1" />
+<Data ElementName="item_type" Type="int8" Size="1" />
+</Struct>
+<Struct Name="Substruct_BaseMerchantItemDescription" ClientVersion="860" >
+<Data ElementName="creator_flag" Type="int8" Size="1" />
+<Data ElementName="creator" Type="EQ2_8Bit_String" Size="1" />
+<Data ElementName="adornment" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="unknown3" Type="int32" Size="2" />
+<Data ElementName="adornment_desc" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="unknown_desc" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="first_desc" Type="EQ2_16Bit_String" Size="1" />
+<Data ElementName="unique_id" Type="int32" Size="1" />
+<Data ElementName="item_id" Type="sint32" Size="1" />
+<Data ElementName="icon" Type="int16" Size="1" />
+<Data ElementName="tier" Type="int8" Size="1" />
+<Data ElementName="flags" Type="int16" Size="1" />
+<Data ElementName="unknown8" Type="int8" Size="19" />
+<Data ElementName="stat_count" Type="int8" />
+<Data ElementName="stat_array" Type="Array" ArraySizeVariable="stat_count">
+	<Data ElementName="stat_type" Type="int8" Size="1" />
+	<Data ElementName="stat_subtype" Type="int8" Size="1" />
+	<Data ElementName="value" Type="int16" OversizedValue="127" OversizedByte="127" />
+	<Data ElementName="stat_name" Type="EQ2_8Bit_String" Size="1" />
+</Data>
+<Data ElementName="stat_string_count" Type="int8" />
+<Data ElementName="stat_string_array" Type="Array" ArraySizeVariable="stat_string_count">
+	<Data ElementName="stat_string" Type="EQ2_8Bit_String" Size="1" />
+	<Data ElementName="adornment_flag" Type="int8" Size="1" />
+	<Data ElementName="adornment_array" Type="Array" ArraySizeVariable="adornment_flag">
+		<Data ElementName="adornment_unknown" Type="int8" Size="1" />
+	</Data>	
+	<Data ElementName="stat_description" Type="EQ2_16Bit_String" Size="1" />
+</Data>
+<Data ElementName="condition" Type="int8" Size="1" />
+<Data ElementName="weight" Type="int32" Size="1" />
+<Data ElementName="skill_req1" Type="int32" Size="1" />
+<Data ElementName="skill_req2" Type="int32" Size="1" />
+<Data ElementName="unknown10" Type="int16" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="class_count" Type="int8" />
+<Data ElementName="class_array" Type="Array" ArraySizeVariable="class_count">
+	<Data ElementName="adventure_class" Type="int8" Size="1" />
+	<Data ElementName="tradeskill_class" Type="int8" Size="1" />
+	<Data ElementName="level" Type="int16" Size="1" />
+</Data>
+<Data ElementName="slot_count" Type="int8" />
+<Data ElementName="slot_array" Type="Array" ArraySizeVariable="slot_count">
+	<Data ElementName="slot" Type="int8" Size="1" />
+</Data>
+<Data ElementName="footer_type" Type="int32" Size="1" />
+<Data ElementName="item_type" Type="int8" Size="1" />
+</Struct>
+<Struct Name="Substruct_MerchantItemDescription" ClientVersion="1" >
+<Data ElementName="info_header" Substruct="WS_ExamineInfoHeader" Size="1" />
+<Data ElementName="info" Substruct="Substruct_BaseMerchantItemDescription" Size="1" />
+</Struct>
+<Struct Name="Substruct_MerchantItemDescription" ClientVersion="860" >
+<Data ElementName="info_header" Substruct="WS_ExamineInfoHeader" Size="1" />
+<Data ElementName="info" Substruct="Substruct_BaseMerchantItemDescription" Size="1" />
+</Struct>
+<Struct Name="Substruct_MerchantItemDescription" ClientVersion="893" >
+<Data ElementName="info_header" Substruct="WS_ExamineInfoHeader" Size="1" />
+<Data ElementName="info" Substruct="Substruct_BaseMerchantItemDescription" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemGeneric" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemRange" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="damage_low1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="delay" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="range_low" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="range_high" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_type" Type="int8" Size="1" />
+<Data ElementName="rating" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemThrown" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="unknown12" Type="sint32" Size="1" />
+<Data ElementName="unknown13" Type="int16" Size="1" />
+<Data ElementName="unknown14" Type="int16" Size="1" />
+<Data ElementName="unknown15" Type="float" Size="1" />
+<Data ElementName="unknown16" Type="int32" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemWeapon" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="wield_type" Type="int8" Size="1" />
+<Data ElementName="damage_low1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="delay" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_type" Type="int8" Size="1" />
+<Data ElementName="rating" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemArmor" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="mitigation_low" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="mitigation_high" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemShield" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="mitigation_low" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="mitigation_high" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemBag" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="num_slots" Type="int8" Size="1" />
+<Data ElementName="num_empty" Type="int8" Size="1" />
+<Data ElementName="weight_reduction" Type="int16" Size="1" />
+<Data ElementName="num_names" Type="int8" Size="1" />
+<Data ElementName="name_array" Type="Array" ArraySizeVariable="num_names">
+	<Data ElementName="item_name" Type="EQ2_8Bit_String" Size="1" />
+</Data>
+<Data ElementName="unknown12" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemFood" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="food_type" Type="int8" Size="1" />
+<Data ElementName="level" Type="int8" Size="1" />
+<Data ElementName="duration" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemBauble" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="cast" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="charges" Type="int8" Size="1" />
+<Data ElementName="duration" Type="int32" Size="1" />
+<Data ElementName="recast" Type="float" Size="1" />
+<Data ElementName="unknown12" Type="int8" Size="11" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemSkill" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="spell_info" Substruct="WS_SpellInfo" Size="1" />
+<Data ElementName="scribed" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemHouse" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="rent_reduction" Type="int32" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemHouseContainer" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="disallowed_types" Type="int16" Size="1" />
+<Data ElementName="allowed_types" Type="int16" Size="1" />
+<Data ElementName="unknown12" Type="int32" Size="1" />
+<Data ElementName="num_slots" Type="int8" Size="1" />
+<Data ElementName="unknown13" Type="int16" Size="1" />
+<Data ElementName="unknown14" Type="int16" Size="1" />
+<Data ElementName="unknown15" Type="int16" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemRecipeBook" ClientVersion="1" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="num_recipes" Type="int16" Size="1" OversizedValue="127" />
+<Data ElementName="recipe_array" Type="Array" ArraySizeVariable="num_recipes">
+	<Data ElementName="recipe_name" Type="EQ2_8Bit_String" Size="1" />
+</Data>
+<Data ElementName="unknown12" Type="int8" Size="1" />
+<Data ElementName="unknown13" Type="int8" Size="1" />
+<Data ElementName="unknown14" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemGeneric" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemThrown" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="unknown12" Type="sint32" Size="1" />
+<Data ElementName="unknown13" Type="int16" Size="1" />
+<Data ElementName="unknown14" Type="int16" Size="1" />
+<Data ElementName="unknown15" Type="float" Size="1" />
+<Data ElementName="unknown16" Type="int32" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemRange" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="damage_low1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="delay" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="range_low" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="range_high" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_type" Type="int8" Size="1" />
+<Data ElementName="rating" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemWeapon" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="wield_type" Type="int8" Size="1" />
+<Data ElementName="damage_low1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="delay" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_type" Type="int8" Size="1" />
+<Data ElementName="rating" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemArmor" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="mitigation_low" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="mitigation_high" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemShield" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="mitigation_low" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="mitigation_high" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemBag" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="num_slots" Type="int8" Size="1" />
+<Data ElementName="num_empty" Type="int8" Size="1" />
+<Data ElementName="weight_reduction" Type="int16" Size="1" />
+<Data ElementName="num_names" Type="int8" Size="1" />
+<Data ElementName="name_array" Type="Array" ArraySizeVariable="num_names">
+	<Data ElementName="item_name" Type="EQ2_8Bit_String" Size="1" />
+</Data>
+<Data ElementName="unknown12" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemFood" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="food_type" Type="int8" Size="1" />
+<Data ElementName="level" Type="int8" Size="1" />
+<Data ElementName="duration" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemBauble" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="cast" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="charges" Type="int8" Size="1" />
+<Data ElementName="duration" Type="int32" Size="1" />
+<Data ElementName="recast" Type="float" Size="1" />
+<Data ElementName="unknown12" Type="int8" Size="11" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemSkill" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="spell_info" Substruct="WS_SpellInfo" Size="1" />
+<Data ElementName="scribed" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemHouse" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="rent_reduction" Type="int32" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemHouseContainer" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="disallowed_types" Type="int16" Size="1" />
+<Data ElementName="allowed_types" Type="int16" Size="1" />
+<Data ElementName="unknown12" Type="int32" Size="1" />
+<Data ElementName="num_slots" Type="int8" Size="1" />
+<Data ElementName="unknown13" Type="int16" Size="1" />
+<Data ElementName="unknown14" Type="int16" Size="1" />
+<Data ElementName="unknown15" Type="int16" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemRecipeBook" ClientVersion="860" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="num_recipes" Type="int16" Size="1" OversizedValue="127" />
+<Data ElementName="recipe_array" Type="Array" ArraySizeVariable="num_recipes">
+	<Data ElementName="recipe_name" Type="EQ2_8Bit_String" Size="1" />
+</Data>
+<Data ElementName="unknown12" Type="int8" Size="1" />
+<Data ElementName="unknown13" Type="int8" Size="1" />
+<Data ElementName="unknown14" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemGeneric" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemThrown" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="unknown12" Type="sint32" Size="1" />
+<Data ElementName="unknown13" Type="int16" Size="1" />
+<Data ElementName="unknown14" Type="int16" Size="1" />
+<Data ElementName="unknown15" Type="float" Size="1" />
+<Data ElementName="unknown16" Type="int32" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemRange" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="damage_low1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="delay" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="range_low" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="range_high" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_type" Type="int8" Size="1" />
+<Data ElementName="rating" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemWeapon" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="wield_type" Type="int8" Size="1" />
+<Data ElementName="damage_low1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="delay" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_type" Type="int8" Size="1" />
+<Data ElementName="rating" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemArmor" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="mitigation_low" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="mitigation_high" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemShield" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="mitigation_low" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="mitigation_high" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemBag" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="num_slots" Type="int8" Size="1" />
+<Data ElementName="num_empty" Type="int8" Size="1" />
+<Data ElementName="weight_reduction" Type="int16" Size="1" />
+<Data ElementName="num_names" Type="int8" Size="1" />
+<Data ElementName="name_array" Type="Array" ArraySizeVariable="num_names">
+	<Data ElementName="item_name" Type="EQ2_8Bit_String" Size="1" />
+</Data>
+<Data ElementName="unknown12" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemFood" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="food_type" Type="int8" Size="1" />
+<Data ElementName="level" Type="int8" Size="1" />
+<Data ElementName="duration" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemBauble" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="cast" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="charges" Type="int8" Size="1" />
+<Data ElementName="duration" Type="int32" Size="1" />
+<Data ElementName="recast" Type="float" Size="1" />
+<Data ElementName="unknown12" Type="int8" Size="11" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemSkill" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="spell_info" Substruct="WS_SpellInfo" Size="1" />
+<Data ElementName="scribed" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemHouse" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="rent_reduction" Type="int32" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemHouseContainer" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="disallowed_types" Type="int16" Size="1" />
+<Data ElementName="allowed_types" Type="int16" Size="1" />
+<Data ElementName="unknown12" Type="int32" Size="1" />
+<Data ElementName="num_slots" Type="int8" Size="1" />
+<Data ElementName="unknown13" Type="int16" Size="1" />
+<Data ElementName="unknown14" Type="int16" Size="1" />
+<Data ElementName="unknown15" Type="int16" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemRecipeBook" ClientVersion="893" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="num_recipes" Type="int16" Size="1" OversizedValue="127" />
+<Data ElementName="recipe_array" Type="Array" ArraySizeVariable="num_recipes">
+	<Data ElementName="recipe_name" Type="EQ2_8Bit_String" Size="1" />
+</Data>
+<Data ElementName="unknown12" Type="int8" Size="1" />
+<Data ElementName="unknown13" Type="int8" Size="1" />
+<Data ElementName="unknown14" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemGeneric" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemThrown" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="unknown12" Type="sint32" Size="1" />
+<Data ElementName="unknown13" Type="int16" Size="1" />
+<Data ElementName="unknown14" Type="int16" Size="1" />
+<Data ElementName="unknown15" Type="float" Size="1" />
+<Data ElementName="unknown16" Type="int32" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemRange" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="damage_low1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="delay" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="range_low" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="range_high" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_type" Type="int8" Size="1" />
+<Data ElementName="rating" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemWeapon" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="wield_type" Type="int8" Size="1" />
+<Data ElementName="damage_low1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high1" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high2" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_low3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_high3" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="delay" Type="int16" OversizedValue="127" OversizedByte="127" Size="1" />
+<Data ElementName="damage_type" Type="int8" Size="1" />
+<Data ElementName="rating" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemArmor" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="mitigation_low" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="mitigation_high" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemShield" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="mitigation_low" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="mitigation_high" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemBag" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="num_slots" Type="int8" Size="1" />
+<Data ElementName="num_empty" Type="int8" Size="1" />
+<Data ElementName="weight_reduction" Type="int16" Size="1" />
+<Data ElementName="num_names" Type="int8" Size="1" />
+<Data ElementName="name_array" Type="Array" ArraySizeVariable="num_names">
+	<Data ElementName="item_name" Type="EQ2_8Bit_String" Size="1" />
+</Data>
+<Data ElementName="unknown12" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemFood" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="food_type" Type="int8" Size="1" />
+<Data ElementName="level" Type="int8" Size="1" />
+<Data ElementName="duration" Type="float" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemBauble" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="cast" Type="int16" Size="1" OversizedValue="127" OversizedByte="127" />
+<Data ElementName="charges" Type="int8" Size="1" />
+<Data ElementName="duration" Type="int32" Size="1" />
+<Data ElementName="recast" Type="float" Size="1" />
+<Data ElementName="unknown12" Type="int8" Size="12" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemSkill" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="spell_info" Substruct="WS_SpellInfo" Size="1" />
+<Data ElementName="scribed" Type="int8" Size="1" />
+<Data ElementName="skill_unknown" Type="int8" Size="1" IfVariableSet="scribed" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemHouse" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="rent_reduction" Type="int32" Size="1" />
+<Data ElementName="house_unknown1" Type="int32" Size="1" />
+<Data ElementName="house_unknown2" Type="int8" Size="2" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemHouseContainer" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="disallowed_types" Type="int16" Size="1" />
+<Data ElementName="allowed_types" Type="int16" Size="1" />
+<Data ElementName="unknown12" Type="int32" Size="1" />
+<Data ElementName="num_slots" Type="int8" Size="1" />
+<Data ElementName="unknown13" Type="int16" Size="1" />
+<Data ElementName="unknown14" Type="int16" Size="1" />
+<Data ElementName="unknown15" Type="int16" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+<Struct Name="WS_MerchantItemRecipeBook" ClientVersion="927" OpcodeName="OP_ClientCmdMsg" OpcodeType="OP_EqExamineInfoCmd">
+<Data ElementName="header" Substruct="Substruct_MerchantItemDescription" Size="1" />
+<Data ElementName="num_recipes" Type="int16" Size="1" OversizedValue="127" />
+<Data ElementName="recipe_array" Type="Array" ArraySizeVariable="num_recipes">
+	<Data ElementName="recipe_name" Type="EQ2_8Bit_String" Size="1" />
+</Data>
+<Data ElementName="unknown12" Type="int8" Size="1" />
+<Data ElementName="unknown13" Type="int8" Size="1" />
+<Data ElementName="unknown14" Type="int8" Size="1" />
+<Data ElementName="footer" Substruct="Substruct_ItemFooter" Size="1" />
+</Struct>
+</EQ2Emulator>

File diff suppressed because it is too large
+ 3434 - 0
EQ2/devtools/PacketParser/old_files/ParserStructs.xml


+ 8 - 0
EQ2/devtools/PacketParser/old_files/WS_Updates.xml

@@ -0,0 +1,8 @@
+<Struct Name="WS_TitleUpdate" ClientVersion="996" OpcodeName="OP_TitleUpdateMsg">
+<Data ElementName="num_titles" Type="int16" />
+<Data ElementName="titles_array" Type="Array" ArraySizeVariable="num_titles">
+  <Data ElementName="title" Type="EQ2_16Bit_String" />
+  <Data ElementName="prefix" Type="int8" Size="1" />
+</Data>
+<Data ElementName="unknown" Type="int32" Size="1" />
+</Struct>

File diff suppressed because it is too large
+ 3546 - 0
EQ2/devtools/PacketParser/old_files/WorldStructs.xml


File diff suppressed because it is too large
+ 4073 - 0
EQ2/devtools/PacketParser/old_files/WorldStructsDev.xml


+ 10 - 0
EQ2/devtools/PacketParser/parse all.bat

@@ -0,0 +1,10 @@
+@echo off
+for /f "delims=^" %%a in ('dir /b *.log') do call :process "%%a"
+PacketParser.exe -populate eq2_test
+PAUSE
+goto :eof
+
+:process
+PacketParser.exe -spawns -spells -items %1%2
+move %1 Parsed
+

+ 5 - 0
EQ2/devtools/PacketParser/parser_db.ini

@@ -0,0 +1,5 @@
+[Database]
+host=HOST
+user=USER
+password=PASSWORD
+database=DATABASE

+ 20 - 0
EQ2/devtools/PacketParser/sql_updates/AchievementUpdates SQL.txt

@@ -0,0 +1,20 @@
+CREATE TABLE `raw_achievement_updates` (
+	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+	`achievement_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+	`completed_date` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+	`num_items` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+	PRIMARY KEY (`id`),
+	UNIQUE INDEX `achievement_id` (`achievement_id`)
+)
+COLLATE='latin1_swedish_ci'
+ENGINE=MyISAM;
+
+CREATE TABLE `raw_achievement_update_items` (
+	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+	`achievement_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+	`item_update` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+	PRIMARY KEY (`id`)
+)
+COLLATE='latin1_swedish_ci'
+ENGINE=MyISAM;
+

+ 1 - 0
EQ2/devtools/PacketParser/sql_updates/Conversation Fix.sql

@@ -0,0 +1 @@
+ALTER TABLE `raw_conversations` DROP INDEX `NewIndex`, ADD UNIQUE `NewIndex` (spawn_name, `sound_file`, `chat_text`(200));

+ 69 - 0
EQ2/devtools/PacketParser/sql_updates/EQ2ParserDB SQL Updates_v0.1.1.txt

@@ -0,0 +1,69 @@
+ALTER TABLE raw_item_effects CHANGE column `name` `effect` VARCHAR(512) NOT NULL DEFAULT 'Unknown' AFTER `item_id`;
+ALTER TABLE raw_item_effects DROP COLUMN `description`;
+ALTER TABLE parser_stats ADD COLUMN `total_skills` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `new_books`;
+ALTER TABLE parser_stats ADD COLUMN `unique_skills` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `total_skills`;
+ALTER TABLE parser_stats ADD COLUMN `new_skills` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `unique_skills`;
+
+CREATE TABLE IF NOT EXISTS `raw_traits` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `level` tinyint(3) unsigned NOT NULL default '0',
+  `selection` tinyint(3) unsigned NOT NULL default '0',
+  `icon_0` smallint(5) unsigned NOT NULL default '0',
+  `icon2_0` smallint(5) unsigned NOT NULL default '0',
+  `trait_id_0` int(10) unsigned NOT NULL default '0',
+  `unknown_0` int(10) unsigned NOT NULL default '0',
+  `name_0` varchar(250) collate latin1_general_ci default NULL,
+  `icon_1` smallint(5) unsigned NOT NULL default '0',
+  `icon2_1` smallint(5) unsigned NOT NULL default '0',
+  `trait_id_1` int(10) unsigned NOT NULL default '0',
+  `unknown_1` int(10) unsigned NOT NULL default '0',
+  `name_1` varchar(250) collate latin1_general_ci default '',
+  `icon_2` smallint(5) unsigned NOT NULL default '0',
+  `icon2_2` smallint(5) unsigned NOT NULL default '0',
+  `trait_id_2` int(10) unsigned NOT NULL default '0',
+  `unknown_2` int(10) unsigned NOT NULL default '0',
+  `name_2` varchar(250) collate latin1_general_ci default '',
+  `icon_3` smallint(5) unsigned NOT NULL default '0',
+  `icon2_3` smallint(5) unsigned NOT NULL default '0',
+  `trait_id_3` int(10) unsigned NOT NULL default '0',
+  `unknown_3` int(10) unsigned NOT NULL default '0',
+  `name_3` varchar(250) collate latin1_general_ci default '',
+  `icon_4` smallint(5) unsigned NOT NULL default '0',
+  `icon2_4` smallint(5) unsigned NOT NULL default '0',
+  `trait_id_4` int(10) unsigned NOT NULL default '0',
+  `unknown_4` int(10) unsigned NOT NULL default '0',
+  `name_4` varchar(250) collate latin1_general_ci default '',
+  `data_version` smallint(5) unsigned NOT NULL,
+  `language_type` tinyint(3) unsigned NOT NULL default '0',
+  `log_file` varchar(250) collate latin1_general_ci default '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `NewIndex1` (`trait_id_0`,`trait_id_1`,`trait_id_2`,`trait_id_3`,`trait_id_4`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ROW_FORMAT=DYNAMIC;
+
+CREATE TABLE IF NOT EXISTS `raw_skills` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `skill_id` int(10) unsigned NOT NULL default '0',
+  `short_name` varchar(32) default 'Unknown',
+  `name` varchar(255) default 'Unknown',
+  `description` varchar(255) default 'Unknown',
+  `data_version` smallint(5) NOT NULL default '0',
+  `log_file` varchar(250) NOT NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `raw_skills_current` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `skill_id` int(10) unsigned NOT NULL default '0',
+  `type` smallint(5) unsigned NOT NULL default '0',
+  `current_val` mediumint(7) unsigned NOT NULL default '0',
+  `base_val` mediumint(7) unsigned NOT NULL default '0',
+  `max_val` mediumint(7) unsigned NOT NULL default '0',
+  `skill_delta` mediumint(7) NOT NULL default '0',
+  `skill_delta2` mediumint(7) NOT NULL default '0',
+  `display_min` tinyint(3) unsigned NOT NULL default '0',
+  `display_max` tinyint(3) unsigned NOT NULL default '0',
+  `unknown` tinyint(3) unsigned NOT NULL default '0',
+  `data_version` smallint(5) unsigned NOT NULL default '0',
+  `log_file` varchar(250) NOT NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;

+ 11 - 0
EQ2/devtools/PacketParser/sql_updates/Item Updates.sql

@@ -0,0 +1,11 @@
+ALTER TABLE `raw_items` ADD `offers_quest` VARCHAR(64) DEFAULT ' ' NOT NULL AFTER `set_name`;
+ALTER TABLE `raw_items` ADD `part_of_quest` VARCHAR(64) DEFAULT ' ' NOT NULL AFTER `offers_quest`;
+ALTER TABLE `raw_items` ADD `quest_unknown` tinyint unsigned DEFAULT '0' NOT NULL AFTER `part_of_quest`;
+ALTER TABLE `raw_items` ADD `total_charges` smallint unsigned DEFAULT '0' NOT NULL AFTER `quest_unknown`;
+ALTER TABLE `raw_items` ADD `recommended_level` smallint unsigned DEFAULT '0' NOT NULL AFTER `total_charges`;
+ALTER TABLE `raw_items` ADD `required_level` smallint unsigned DEFAULT '0' NOT NULL AFTER `recommended_level`;
+ALTER TABLE `raw_items` ADD `stack_size` smallint unsigned DEFAULT '0' NOT NULL AFTER `required_level`;
+ALTER TABLE `raw_items` ADD `collectable` tinyint unsigned DEFAULT '0' NOT NULL AFTER `stack_size`;
+ALTER TABLE `raw_items` ADD `adornment_description` VARCHAR(64) DEFAULT ' ' NOT NULL AFTER `collectable`;
+ALTER TABLE `raw_items` CHANGE `item_type` `item_type` ENUM('Normal','Armor','Food','Bag','Weapon','Ranged','Shield','Spell','Recipe','Book','House','Thrown','Bauble','House Container','Adornment') DEFAULT 'Normal' NOT NULL;
+ALTER TABLE `raw_items` ADD `adornment_description` VARCHAR(255) DEFAULT ' ' NOT NULL AFTER `collectable`;

+ 24 - 0
EQ2/devtools/PacketParser/sql_updates/MerchantItems.sql

@@ -0,0 +1,24 @@
+CREATE TABLE `raw_merchant_items` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `spawn_id` int(10) unsigned NOT NULL default '0',
+  `item_id` int(10) unsigned NOT NULL,
+  `item_name` varchar(128) NOT NULL default ' ',
+  `unknown` tinyint(3) unsigned NOT NULL default '0',
+  `price` int(10) unsigned NOT NULL default '0',
+  `unknown2` int(10) unsigned NOT NULL default '0',
+  `stack_size` smallint(5) unsigned NOT NULL default '0',
+  `icon` smallint(5) unsigned NOT NULL default '0',
+  `unknown3` tinyint(3) unsigned NOT NULL default '0',
+  `level` tinyint(3) unsigned NOT NULL default '0',
+  `unknown4` tinyint(3) unsigned NOT NULL default '0',
+  `unknown5` smallint(5) unsigned NOT NULL default '0',
+  `tier` tinyint(3) unsigned NOT NULL default '0',
+  `unknown6` int(10) unsigned NOT NULL default '0',
+  `item_id2` int(10) unsigned NOT NULL default '0',
+  `stack_size2` smallint(5) unsigned NOT NULL default '0',
+  `description` varchar(512) NOT NULL default ' ',
+  `log_file` varchar(128) NOT NULL default ' ',
+  `language_type` tinyint(3) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `SpawnItemNDX` (`item_id`,`spawn_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;

+ 39 - 0
EQ2/devtools/PacketParser/sql_updates/Misc item unknown updates.sql

@@ -0,0 +1,39 @@
+DROP TABLE IF EXISTS `raw_item_details_thrown`;
+
+CREATE TABLE `raw_item_details_thrown` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `item_id` int(11) NOT NULL default '0',
+  `range` int(11) NOT NULL default '0',
+  `damage_modifier` int(11) NOT NULL default '0',
+  `hit_bonus` float NOT NULL default '0',
+  `damage_type` int(10) unsigned NOT NULL default '0',
+  `language_type` tinyint(3) unsigned NOT NULL default '1',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `NewIndex` (`item_id`,`language_type`)
+) ENGINE=MyISAM AUTO_INCREMENT=41 DEFAULT CHARSET=latin1;
+
+ALTER TABLE `raw_item_details_house` CHANGE `status_rent_reduction` `status_rent_reduction` INT DEFAULT '0' NOT NULL;
+
+ALTER TABLE `raw_item_details_house_container` DROP `disallowed_types`;
+
+ALTER TABLE `raw_item_details_house_container` CHANGE `allowed_types` `allowed_types` INT UNSIGNED DEFAULT '0' NOT NULL;
+
+ALTER TABLE `raw_item_details_house_container` CHANGE `unknown13` `unknown13` TINYINT UNSIGNED DEFAULT '0' NOT NULL;
+
+ALTER TABLE `raw_item_details_house_container` CHANGE `unknown14` `broker_commission` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL;
+
+ALTER TABLE `raw_item_details_house_container` CHANGE `unknown15` `fence_commission` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL;
+
+ALTER TABLE `raw_item_details_recipe` CHANGE `unknown12` `uses` SMALLINT(5) UNSIGNED DEFAULT '1' NOT NULL;
+
+ALTER TABLE `raw_item_details_recipe` DROP `unknown13`, DROP `unknown14`;
+
+ALTER TABLE `raw_item_details_book` CHANGE `unknown1` `language` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL;
+
+ALTER TABLE `raw_item_details_book` DROP `unknown2`;
+
+ALTER TABLE `raw_item_details_book` ADD `author` VARCHAR(255) NOT NULL AFTER `language`;
+
+ALTER TABLE `raw_item_details_book` ADD `title` VARCHAR(255) NOT NULL AFTER `author`;
+
+ALTER TABLE `raw_spawn_unknowns` CHANGE `value` `value` VARCHAR(50) NOT NULL;

+ 49 - 0
EQ2/devtools/PacketParser/sql_updates/New Insert Queries.txt

@@ -0,0 +1,49 @@
+INSERT INTO `eq2_test`.`npcs` (`id`, `name`, `min_level`, `max_level`, `enc_level`, `race`, `race_type`, `class_`, `gender`, `hair_type_id`,
+   `facial_hair_type_id`, `wing_type_id`, `chest_type_id`, `legs_type_id`, `soga_hair_type_id`, `soga_facial_hair_type_id`, `show_name`, `attackable`,
+   `show_level`, `targetable`, `show_command_icon`, `display_hand_icon`, visual_state, action_state, mood_state, initial_state, activity_status, collision_radius, command_primary, size)
+select `id`, `name`, `level`, `level`, `difficulty`, `race`, `race_type`, `class_`, `gender`, `hair_type_id`, `facial_hair_type_id`, `wing_type_id`,
+    `chest_type_id`, `legs_type_id`, `soga_hair_type_id`, `soga_facial_hair_type_id`,  (vis_flags & 16) >0 as 'show_name', attackable_status = 0 as 'attackable',
+      (vis_flags & 64 || vis_flags & 32) >0 as 'show_level', (vis_flags & 4) >0 as 'targetable', (vis_flags & 2) >0 as 'show_command_icon', hand_flag, 
+			visual_state, action_state, mood_state, pos_state, activity_status, pos_collision_radius, 0, pos_size
+   from `eq2_rawdata`.`raw_spawn_info`;
+
+insert into `eq2_test`.`npc_appearance`
+   select
+      `id`,
+      `spawn_id` as npc_id,
+      `signed_value`,
+      `type`,
+      `red`,
+      `green`,
+      `blue`
+   from `eq2_rawdata`.`raw_spawn_appearance`; 
+
+insert into `eq2_test`.`npc_appearance_equip`
+   select
+      `id`,
+      `spawn_id` as npc_id,
+      `slot_id`,
+      `equip_type`,
+      `red`,
+      `green`,
+      `blue`,
+      `highlight_red`,
+      `highlight_green`,
+      `highlight_blue`
+   from `eq2_rawdata`.`raw_spawn_appearance_equip`; 
+
+insert into eq2_test.spawngroup select id, 'Tutorial Island Good Spawns' from eq2_rawdata.raw_spawns where eq2_rawdata.raw_spawns.spawn_packet_type = 'Normal';
+
+insert into eq2_test.spawnentry (npcid, spawngroupid, spawnpercentage) select eq2_test.npcs.id, eq2_rawdata.raw_spawns.id, 100 from eq2_test.npcs, eq2_rawdata.raw_spawn_info, eq2_rawdata.raw_spawns where eq2_test.npcs.id = eq2_rawdata.raw_spawn_info.id and eq2_rawdata.raw_spawn_info.id = eq2_rawdata.raw_spawns.spawn_id and  eq2_rawdata.raw_spawns.spawn_packet_type = 'Normal';
+
+insert into eq2_test.spawns (spawngroup_id, zone_id, x, y, z, heading, respawn, location_id) select eq2_rawdata.raw_spawns.id, 9999, eq2_rawdata.raw_spawns.x,
+	eq2_rawdata.raw_spawns.y, eq2_rawdata.raw_spawns.z, eq2_rawdata.raw_spawns.heading, 3600, eq2_rawdata.raw_spawns.grid_id 
+	from eq2_rawdata.raw_spawn_info, eq2_rawdata.raw_spawns
+	where eq2_rawdata.raw_spawn_info.id = eq2_rawdata.raw_spawns.spawn_id and eq2_rawdata.raw_spawns.spawn_packet_type = 'Normal';
+
+update eq2_test.spawns, eq2_test.zones, eq2_rawdata.raw_spawns, eq2_rawdata.raw_zones set eq2_test.spawns.zone_id=eq2_test.zones.id 
+where eq2_test.spawns.zone_id= 9999 and eq2_rawdata.raw_spawns.id = eq2_test.spawns.spawngroup_id and eq2_rawdata.raw_zones.id = eq2_rawdata.raw_spawns.zone_id and eq2_rawdata.raw_zones.zone_file = eq2_test.zones.file;
+
+
+update eq2_test.npcs, eq2_rawdata.raw_spawn_info, eq2_test.entity_commands set eq2_test.npcs.command_primary = eq2_test.entity_commands.command_list_id
+where eq2_rawdata.raw_spawn_info.default_command = eq2_test.entity_commands.command_text and eq2_test.npcs.id = eq2_rawdata.raw_spawn_info.id;

+ 85 - 0
EQ2/devtools/PacketParser/sql_updates/Parser DB Updates.sql

@@ -0,0 +1,85 @@
+
+DROP TABLE IF EXISTS `raw_abilities`;
+CREATE TABLE `raw_abilities` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `ability_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `icon` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name` VARCHAR(250) DEFAULT '',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL,
+  `language_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) DEFAULT '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY  (`ability_id`)
+) ENGINE=MYISAM;
+
+
+DROP TABLE IF EXISTS `raw_locations`;
+CREATE TABLE `raw_locations` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `poi_id` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `soe_zone_id` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `poi_name` VARCHAR(250) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
+  `language_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `LocationIDX` (`poi_id`,`soe_zone_id`)
+) ENGINE=MYISAM;
+
+
+DROP TABLE IF EXISTS `raw_traditions`;
+CREATE TABLE `raw_traditions` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `tradition_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `selection` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `icon` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name` VARCHAR(250) DEFAULT '',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL,
+  `language_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) DEFAULT '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY  (`tradition_id`)
+) ENGINE=MYISAM;
+
+
+DROP TABLE IF EXISTS `raw_trainings`;
+CREATE TABLE `raw_trainings` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `level` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `spell_line` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `icon_0` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2_0` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `training_id_0` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown_0` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name_0` VARCHAR(250) DEFAULT NULL,
+  `icon_1` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2_1` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `training_id_1` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown_1` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name_1` VARCHAR(250) DEFAULT '',
+  `icon_2` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2_2` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `training_id_2` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown_2` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name_2` VARCHAR(250) DEFAULT '',
+  `icon_3` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2_3` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `training_id_3` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown_3` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name_3` VARCHAR(250) DEFAULT '',
+  `icon_4` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2_4` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `training_id_4` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown_4` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name_4` VARCHAR(250) DEFAULT '',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL,
+  `language_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) DEFAULT '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `TrainingIDX` (`training_id_0`, `training_id_1`, `training_id_2`, `training_id_3`, `training_id_4`)
+) ENGINE=MYISAM;

+ 102 - 0
EQ2/devtools/PacketParser/sql_updates/Parser Item and Quest DB Changes.sql

@@ -0,0 +1,102 @@
+ALTER TABLE `raw_item_stats` CHANGE `text` `text` VARCHAR(250) DEFAULT ' ' NOT NULL;
+ALTER TABLE `raw_item_details_weapon` CHANGE `damage_low1` `damage_low1` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_weapon` CHANGE `damage_low2` `damage_low2` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_weapon` CHANGE `damage_low3` `damage_low3` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_weapon` CHANGE `damage_high1` `damage_high1` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_weapon` CHANGE `damage_high2` `damage_high2` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_weapon` CHANGE `damage_high3` `damage_high3` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_weapon` CHANGE `delay` `delay` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `damage_low1` `damage_low1` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `damage_low2` `damage_low2` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `damage_low3` `damage_low3` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `damage_high1` `damage_high1` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `damage_high2` `damage_high2` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `damage_high3` `damage_high3` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `delay` `delay` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `range_low` `range_low` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `range_high` `range_high` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_shield` CHANGE `mitigation_high` `mitigation_high` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_shield` CHANGE `mitigation_low` `mitigation_low` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_armor` CHANGE `mitigation_high` `mitigation_high` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_armor` CHANGE `mitigation_low` `mitigation_low` SMALLINT UNSIGNED DEFAULT '0' NOT NULL;
+
+ALTER TABLE `raw_spell_levels` CHANGE `class_id` `adventure_class_id` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_spell_levels` ADD `tradeskill_class_id` TINYINT UNSIGNED DEFAULT '0' NOT NULL AFTER `adventure_class_id`;
+ALTER TABLE `raw_spell_levels` DROP PRIMARY KEY, ADD PRIMARY KEY (`spell_id`, `tier`, `adventure_class_id`, `tradeskill_class_id`);
+
+ALTER TABLE `raw_item_skill_classes` CHANGE `class_id` `adventure_class_id` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_skill_classes` ADD `tradeskill_class_id` TINYINT UNSIGNED DEFAULT '0' NOT NULL AFTER `adventure_class_id`;
+ALTER TABLE `raw_item_skill_classes` DROP INDEX `NewIndex`, ADD UNIQUE `NewIndex` (`item_id`, `adventure_class_id`, `language_type`, `tradeskill_class_id`);
+
+ALTER TABLE `raw_item_classes` ADD `tradeskill_class_id` TINYINT UNSIGNED DEFAULT '0' NOT NULL AFTER `class_id`;
+ALTER TABLE `raw_item_classes` CHANGE `class_id` `adventure_class_id` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_classes` DROP INDEX `NewIndex`, ADD UNIQUE `NewIndex` (`adventure_class_id`, `item_id`, `language_type`, `tradeskill_class_id`);
+
+ALTER TABLE `raw_item_details_range` CHANGE `unknown12` `damage_type` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_items` CHANGE `description` `description` VARCHAR(1024) NOT NULL;
+
+CREATE TABLE `raw_quest_reward_factions` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `quest_id` int(10) unsigned NOT NULL default '0',
+  `faction_name` varchar(64) NOT NULL,
+  `amount` int(10) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `FactionQuestIDX` (`quest_id`,`faction_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+
+CREATE TABLE `raw_quest_reward_items` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `quest_id` int(10) unsigned NOT NULL default '0',
+  `item_id` int(10) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `ItemQuestIDX` (`item_id`,`quest_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+
+CREATE TABLE `raw_quest_taskgroup_tasks` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `taskgroup_id` int(10) unsigned NOT NULL default '0',
+  `task` text NOT NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `TaskGroupTaskIDX` (`task`(200),`taskgroup_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1;
+
+CREATE TABLE `raw_quest_taskgroup_taskupdates` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `taskgroup_id` int(10) unsigned NOT NULL default '0',
+  `icon` smallint(5) unsigned NOT NULL default '0',
+  `update_target_name` varchar(64) NOT NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `TaskGroupUpdateIDX` (`taskgroup_id`,`update_target_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
+
+CREATE TABLE `raw_quest_taskgroups` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `quest_id` int(10) unsigned NOT NULL default '0',
+  `task_group` text NOT NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `QuestTaskIDX` (`quest_id`,`task_group`(200))
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
+
+CREATE TABLE `raw_quests` (
+  `id` int(11) unsigned NOT NULL default '0',
+  `name` varchar(255) NOT NULL,
+  `description` text NOT NULL,
+  `type` varchar(255) NOT NULL,
+  `zone` varchar(255) NOT NULL,
+  `unknown1` tinyint(3) unsigned NOT NULL default '0',
+  `repeatable` tinyint(3) unsigned NOT NULL default '0',
+  `unknown2` tinyint(3) unsigned NOT NULL default '0',
+  `day` tinyint(3) unsigned NOT NULL default '0',
+  `month` tinyint(3) unsigned NOT NULL default '0',
+  `year` tinyint(3) unsigned NOT NULL default '0',
+  `level` tinyint(3) unsigned NOT NULL default '0',
+  `encounter_level` tinyint(3) unsigned NOT NULL default '0',
+  `difficulty` tinyint(3) unsigned NOT NULL default '0',
+  `visible` tinyint(3) unsigned NOT NULL default '0',
+  `max_coin` int(10) unsigned NOT NULL default '0',
+  `min_coin` int(10) unsigned NOT NULL default '0',
+  `status_points` int(10) unsigned NOT NULL default '0',
+  `text` varchar(50) NOT NULL,
+  `exp_bonus` int(10) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;

+ 28 - 0
EQ2/devtools/PacketParser/sql_updates/Pattern Item Type update.sql

@@ -0,0 +1,28 @@
+ALTER TABLE `raw_items` CHANGE `item_type` `item_type` ENUM('Normal','Armor','Food','Bag','Weapon','Ranged','Shield','Spell','Recipe','Book','House','Thrown','Bauble','House Container','Adornment','Pattern','Armor Set') DEFAULT 'Normal' NOT NULL;
+
+
+
+CREATE TABLE `raw_item_details_armorset` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `armorset_item_id` int(11) NOT NULL default '0',
+  `item_id` int(11) NOT NULL default '0',
+  `item_crc` int(11) NOT NULL default '0',
+  `item_name` varchar(255) NOT NULL default 'N/A',
+  `item_icon` smallint(5) unsigned NOT NULL default '0',
+  `unknown_piece` int(10) unsigned NOT NULL default '0',
+  `language_type` tinyint(3) unsigned NOT NULL default '1',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `UnqArmorSetIdx` (`item_id`,`armorset_item_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=latin1;
+
+CREATE TABLE `raw_item_details_pattern` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `pattern_item_id` int(11) NOT NULL default '0',
+  `item_id` int(11) NOT NULL default '0',
+  `item_crc` int(11) NOT NULL default '0',
+  `item_name` varchar(255) NOT NULL default 'N/A',
+  `item_icon` smallint(5) unsigned NOT NULL default '0',
+  `language_type` tinyint(3) unsigned NOT NULL default '1',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `UnqPatternIDX` (`pattern_item_id`,`item_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=135 DEFAULT CHARSET=latin1;

+ 2 - 0
EQ2/devtools/PacketParser/sql_updates/Quest Updates 2009-May-07.sql

@@ -0,0 +1,2 @@
+ALTER TABLE `raw_quest_reward_items` ADD `selectable` TINYINT UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_quest_reward_items` DROP INDEX `ItemQuestIDX`, ADD UNIQUE `ItemQuestIDX` (`item_id`, `quest_id`, `selectable`);

+ 29 - 0
EQ2/devtools/PacketParser/sql_updates/RawDialogs.sql

@@ -0,0 +1,29 @@
+drop table if exists raw_dialogs;
+CREATE TABLE `raw_dialogs` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `spawn_id` int(10) unsigned NOT NULL default '0',
+  `conversation_id` int(10) unsigned NOT NULL default '0',
+  `npc_text` text NOT NULL,
+  `voice_file` varchar(255) NOT NULL,
+  `key1` int(10) unsigned NOT NULL default '0',
+  `key2` int(10) unsigned NOT NULL default '0',
+  `unknown` smallint(5) unsigned NOT NULL default '0',
+  `unknown2` tinyint(3) unsigned NOT NULL default '0',
+  `unknown3` tinyint(3) unsigned NOT NULL default '0',
+  `sequence` smallint(5) unsigned NOT NULL default '0',
+  `index` smallint(5) NOT NULL default '0',
+  `language_type` tinyint(3) unsigned NOT NULL default '0',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `NewIndex` (`conversation_id`,`spawn_id`,`sequence`,`index`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
+
+drop table if exists raw_dialog_choices;
+CREATE TABLE `raw_dialog_choices` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `dialog_conversation_id` int(10) unsigned NOT NULL default '0',
+  `index` smallint(3) unsigned NOT NULL default '0',
+  `choice` text NOT NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+
+

+ 32 - 0
EQ2/devtools/PacketParser/sql_updates/Skill and Bauble Items update.sql

@@ -0,0 +1,32 @@
+DROP TABLE IF EXISTS `raw_item_details_skills`;
+
+DROP TABLE IF EXISTS `raw_item_details_skill`;
+
+CREATE TABLE `raw_item_details_skill` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `item_id` INT(11) NOT NULL DEFAULT '0',
+  `spell_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `tier` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `language_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `ItemSpellTierIdx` (`item_id`,`spell_id`,`tier`,`language_type`)
+) ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
+
+
+CREATE TABLE `raw_item_details_bauble` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `item_id` INT(10) NOT NULL DEFAULT '0',
+  `cast` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '100',
+  `recovery` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `duration` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `recast` FLOAT UNSIGNED NOT NULL DEFAULT '1',
+  `display_cast_time` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `display_bauble_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `effect_radius` FLOAT NOT NULL DEFAULT '0',
+  `max_aoe_targets` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `display_until_cancelled` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `language_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `NewIndex` (`item_id`,`language_type`)
+) ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
+

+ 2 - 0
EQ2/devtools/PacketParser/sql_updates/SpawnFix.sql

@@ -0,0 +1,2 @@
+ALTER TABLE `raw_spawn_info` ADD `title` VARCHAR(255) DEFAULT ' ' NOT NULL AFTER `widget_id`;
+ALTER TABLE `raw_spawn_info` DROP INDEX `NewIndex`, ADD UNIQUE `NewIndex` (`name`, `class_`, `race_type`, `race`, `level`, `gender`, `difficulty`, `language_type`, `widget_id`, `title`);

+ 24 - 0
EQ2/devtools/PacketParser/sql_updates/TSO Parser Queries.sql

@@ -0,0 +1,24 @@
+ALTER TABLE `raw_item_appearances` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_classes` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_descriptions` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_armor` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_bag` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_bauble` CHANGE `item_id` `item_id` INT UNSIGNED DEFAULT '0' NULL;
+ALTER TABLE `raw_item_details_food` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_house` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_house_container` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_range` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_recipe` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_recipe_items` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_shield` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_skills` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_thrown` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_details_weapon` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_effects` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_skill_classes` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_item_stats` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_items` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT;
+ALTER TABLE `raw_merchant_items` CHANGE `item_id` `item_id` INT NOT NULL;
+ALTER TABLE `raw_quest_reward_items` CHANGE `item_id` `item_id` INT DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_spawn_info` CHANGE `race_type` `model_type` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL;
+ALTER TABLE `raw_spawn_info` CHANGE `soga_race_type` `soga_model_type` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL;

+ 40 - 0
EQ2/devtools/PacketParser/sql_updates/eq2_achievements.sql

@@ -0,0 +1,40 @@
+DROP TABLE IF EXISTS `raw_achievements`;
+CREATE TABLE `raw_achievements` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `unknown_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name` VARCHAR(50) NOT NULL,
+  `uncompleted_text` VARCHAR(255) DEFAULT NULL,
+  `completed_text` VARCHAR(255) DEFAULT NULL,
+  `category` VARCHAR(50) DEFAULT NULL,
+  `expansion` VARCHAR(50) DEFAULT NULL,
+  `icon` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `point_value` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `qty_req` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) NOT NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `id` (`unknown_id`,`name`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1;
+
+
+
+DROP TABLE IF EXISTS `raw_achievements_items`;
+CREATE TABLE /*!32312 IF NOT EXISTS*/ `raw_achievements_items` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `unknown_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name` VARCHAR(250) DEFAULT NULL,
+  `qty_req` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `NewIndex` (`name`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1;
+
+
+
+DROP TABLE IF EXISTS `raw_achievements_rewards`;
+CREATE TABLE /*!32312 IF NOT EXISTS*/ `raw_achievements_rewards` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `unknown_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `reward` VARCHAR(250) DEFAULT '"',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `id` (`unknown_id`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1;

+ 38 - 0
EQ2/devtools/PacketParser/sql_updates/eq2_books.sql

@@ -0,0 +1,38 @@
+DROP TABLE IF EXISTS `raw_books`;
+CREATE TABLE `raw_books` (
+  `id` TINYINT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `spawn_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `book_title` VARCHAR(100) NOT NULL,
+  `unknown` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `book_type` VARCHAR(100) NOT NULL,
+  `unknown2` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown3` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown4` INT(10) NOT NULL DEFAULT '0',
+  `unknown5` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(255) DEFAULT NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `NewIndex` (`spawn_id`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1;
+
+
+DROP TABLE IF EXISTS `raw_book_images`;
+CREATE TABLE `raw_book_images` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `spawn_id` INT(10) UNSIGNED NOT NULL,
+  `image_file` VARCHAR(255) DEFAULT NULL,
+  `image_id` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown6` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY  (`id`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1;
+
+
+DROP TABLE IF EXISTS `raw_book_pages`;
+CREATE TABLE `raw_book_pages` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `spawn_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `page_text` VARCHAR(1024) DEFAULT NULL,
+  `page_text_valign` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `page_text_halign` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY  (`id`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1;

+ 82 - 0
EQ2/devtools/PacketParser/sql_updates/eq2_rawdata_aa_tables.sql

@@ -0,0 +1,82 @@
+CREATE TABLE `raw_aa_class` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `unknown6` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown7` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `spell_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown10` SMALLINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `name` VARCHAR(250) DEFAULT NULL,
+  `description` VARCHAR(250) DEFAULT NULL,
+  `icon` MEDIUMINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2` MEDIUMINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `current_rank` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `max_rank` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `rank_cost` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown11` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `class_name` VARCHAR(50) DEFAULT NULL,
+  `points_req` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `subclass_name` VARCHAR(50) DEFAULT NULL,
+  `icon_col` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `icon_row` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `line_title` VARCHAR(50) DEFAULT NULL,
+  `unknown20` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) NOT NULL DEFAULT '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `SpellIDX` (`spell_id`)
+) ENGINE=MYISAM;
+
+
+CREATE TABLE `raw_aa_subclass` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `unknown6` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown7` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `spell_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown10` SMALLINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `name` VARCHAR(250) DEFAULT NULL,
+  `description` VARCHAR(250) DEFAULT NULL,
+  `icon` MEDIUMINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2` MEDIUMINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `current_rank` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `max_rank` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `rank_cost` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown11` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `class_name` VARCHAR(50) DEFAULT NULL,
+  `points_req` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `subclass_name` VARCHAR(50) DEFAULT NULL,
+  `icon_col` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `icon_row` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `line_title` VARCHAR(50) DEFAULT NULL,
+  `unknown20` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) NOT NULL DEFAULT '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `SpellIDX` (`spell_id`)
+) ENGINE=MYISAM;
+
+
+CREATE TABLE `raw_aa_tso` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `unknown6` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown7` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `spell_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown10` SMALLINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `name` VARCHAR(250) DEFAULT NULL,
+  `description` VARCHAR(250) DEFAULT NULL,
+  `icon` MEDIUMINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2` MEDIUMINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `current_rank` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `max_rank` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `rank_cost` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown11` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `class_name` VARCHAR(50) DEFAULT NULL,
+  `points_req` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `subclass_name` VARCHAR(50) DEFAULT NULL,
+  `icon_col` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `icon_row` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `line_title` VARCHAR(50) DEFAULT NULL,
+  `unknown20` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) NOT NULL DEFAULT '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `SpellIDX` (`spell_id`)
+) ENGINE=MYISAM;

+ 94 - 0
EQ2/devtools/PacketParser/sql_updates/parser_db_20070725.sql

@@ -0,0 +1,94 @@
+DROP TABLE IF EXISTS `raw_item_classes`;
+DROP TABLE IF EXISTS `raw_item_skill_classes`;
+
+ALTER TABLE `raw_items` 
+	ADD COLUMN `adventure_classes` BIGINT(20) UNSIGNED DEFAULT '0' NOT NULL AFTER `adventure_default_level`, 
+	ADD COLUMN `tradeskill_classes` BIGINT(20) UNSIGNED DEFAULT '0' NOT NULL AFTER `adventure_classes`,
+	CHANGE `required_level` `adventure_default_level` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL,
+	ADD COLUMN `tradeskill_default_level` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL AFTER `adventure_default_level`;
+
+ALTER TABLE `raw_item_details_skills` 
+	ADD COLUMN `adventure_classes` BIGINT(20) UNSIGNED DEFAULT '0' NOT NULL AFTER `unknown26`, 
+	ADD COLUMN `tradeskill_classes` BIGINT(20) UNSIGNED DEFAULT '0' NOT NULL AFTER `adventure_classes`, 
+	ADD COLUMN `adventure_default_level` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL AFTER `tradeskill_classes`, 
+	ADD COLUMN `tradeskill_default_level` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL AFTER `adventure_default_level`;
+
+DROP TABLE IF EXISTS `raw_item_details_skill`;
+CREATE TABLE `raw_item_details_skill` (
+	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+	`item_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+	`spell_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+	`spell_tier` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',
+	`language_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+	PRIMARY KEY  (`id`),
+	UNIQUE KEY `NewIndex1` (`item_id`,`language_type`,`spell_id`,`spell_tier`)
+) ENGINE=MYISAM;
+
+ALTER TABLE `raw_spawn_info` DROP COLUMN `populate_spawn_id`, DROP COLUMN `processed`;
+ALTER TABLE `raw_spawns` ADD COLUMN `populate_spawn_id` INT(10) UNSIGNED DEFAULT '0' NOT NULL AFTER `language_type`;
+
+
+ALTER TABLE `opcodes` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_collections` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_conversations` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_dialog_choices` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_dialogs` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_entity_commands` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_factions` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_appearances` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_descriptions` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_armor` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_armorset` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_bag` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_bauble` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_book` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_food` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_house` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_house_container` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_pattern` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_range` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_recipe` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_recipe_items` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_shield` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_skill` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_skills` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_thrown` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_details_weapon` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_effects` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_sets` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_sets_effects` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_sets_stats` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_item_stats` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_items` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_map_data` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_merchant_items` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_quest_reward_factions` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_quest_reward_items` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_quest_taskgroup_tasks` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_quest_taskgroup_taskupdates` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_quest_taskgroups` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_quests` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_sounds` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spawn_appearance` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spawn_appearance_equip` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spawn_groups` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spawn_info` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spawn_signs` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spawn_unknowns` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spawn_widgets` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spawns` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spell_details` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spell_effects` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spell_levels` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_spells` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_zone_points` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+ALTER TABLE `raw_zones` ENGINE=MYISAM CHECKSUM=1 AUTO_INCREMENT=1 COMMENT='' DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC CHARSET=latin1 COLLATE=latin1_swedish_ci;
+
+ALTER TABLE `raw_spell_details` ADD COLUMN `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT FIRST,CHANGE `spell_id` `spell_id` INT(10) UNSIGNED DEFAULT '0' NOT NULL, CHANGE `tier` `tier` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL, DROP PRIMARY KEY,  ADD PRIMARY KEY(`id`);
+ALTER TABLE `raw_spell_details` ADD UNIQUE `NewIndex1` (`spell_id`, `tier`);
+
+ALTER TABLE `raw_spell_effects` ADD COLUMN `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT FIRST,CHANGE `spell_id` `spell_id` INT(10) UNSIGNED DEFAULT '0' NOT NULL, CHANGE `tier` `tier` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL, CHANGE `index` `index` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL, DROP PRIMARY KEY,  ADD PRIMARY KEY(`id`);
+ALTER TABLE `raw_spell_effects` ADD UNIQUE `NewIndex1` (`spell_id`, `tier`, `index`);
+
+ALTER TABLE `raw_spell_levels` ADD COLUMN `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT FIRST,CHANGE `spell_id` `spell_id` INT(10) UNSIGNED NOT NULL, CHANGE `tier` `tier` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL, CHANGE `adventure_class_id` `adventure_class_id` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL, CHANGE `tradeskill_class_id` `tradeskill_class_id` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL, DROP PRIMARY KEY,  ADD PRIMARY KEY(`id`);
+ALTER TABLE `raw_spell_levels` ADD UNIQUE `NewIndex1` (`spell_id`, `tier`, `adventure_class_id`, `tradeskill_class_id`);

+ 28 - 0
EQ2/devtools/PacketParser/sql_updates/parser_db_20130102.sql

@@ -0,0 +1,28 @@
+ALTER TABLE `raw_item_descriptions` DROP KEY `NewIndex`, ADD UNIQUE `NewIndex` (`language_type`, `item_id`);
+ALTER TABLE `raw_item_descriptions` ADD COLUMN `item_crc` INT(10) DEFAULT '0' NOT NULL AFTER `item_id`, CHANGE `item_id` `item_id` INT(10) DEFAULT '0' NOT NULL; 
+-- adding item type 20, 21, and 22
+ALTER TABLE `raw_items` CHANGE `item_type` `item_type` ENUM('Normal','Armor','Food','Bag','Weapon','Ranged','Shield','Spell Scroll','Recipe','Book','House','Thrown','Bauble','House Container','Adornment','Pattern Set','Armor Set','Item Set','Decoration','Marketplace','Dungeon Maker') CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT 'Normal' NOT NULL; 
+ALTER TABLE `raw_item_appearances` CHANGE `item_crc` `item_crc` INT(10) DEFAULT '0' NOT NULL; 
+
+
+CREATE TABLE `raw_item_details_marketplace_rewards` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `item_id` INT(10) NOT NULL DEFAULT '0',
+  `reward_item_id` INT(10) NOT NULL DEFAULT '0',
+  `reward_item_crc` INT(10) NOT NULL DEFAULT '0',
+  `reward_item_icon` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `reward_item_name` VARCHAR(250) COLLATE latin1_general_ci DEFAULT '',
+  `language_type` TINYINT(3) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `NewIndex1` (`item_id`,`reward_item_id`,`language_type`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+
+
+CREATE TABLE `raw_item_details_decorations` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `item_id` INT(11) NOT NULL DEFAULT '0',
+  `decoration_name` VARCHAR(64) COLLATE latin1_general_ci NOT NULL DEFAULT '',
+  `language_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `NewIndex` (`item_id`,`language_type`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

+ 56 - 0
EQ2/devtools/PacketParser/sql_updates/parser_db_20130110.sql

@@ -0,0 +1,56 @@
+DROP TABLE IF EXISTS `raw_item_details_marketplace`;
+CREATE TABLE `raw_item_details_marketplace` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `marketplace_item_id` INT(10) NOT NULL DEFAULT '0',
+  `item_id` INT(10) NOT NULL DEFAULT '0',
+  `item_icon` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `language_type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `NewIndex1` (`marketplace_item_id`,`item_id`,`language_type`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+
+ALTER TABLE `raw_item_descriptions` 
+  CHANGE `flags1` `flags1` SMALLINT (5) UNSIGNED DEFAULT '0' NOT NULL,
+  CHANGE `flags2` `flags2` SMALLINT (5) UNSIGNED DEFAULT '0' NOT NULL,
+  CHANGE `item_type` `item_type` TINYINT (3) UNSIGNED DEFAULT '0' NOT NULL ;
+
+DROP TABLE `raw_item_details_armorset`; 
+DROP TABLE `raw_item_sets`; 
+DROP TABLE `raw_item_sets_effects`; 
+DROP TABLE `raw_item_sets_stats`; 
+DROP TABLE `raw_item_set_effects`; 
+DROP TABLE `raw_item_set_items`; 
+DROP TABLE `raw_item_set_stats`; 
+
+
+ALTER TABLE `raw_items` 
+  ADD COLUMN `attuned` TINYINT (3) UNSIGNED DEFAULT '0' NOT NULL AFTER `show_name`,
+  ADD COLUMN `stacklore` TINYINT (3) UNSIGNED DEFAULT '0' NOT NULL AFTER `evil_only`,
+  ADD COLUMN `flags_16384` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL AFTER `lore_equip`,
+  ADD COLUMN `flags_32768` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL AFTER `flags_16384`,
+  ADD COLUMN `unlocked` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL AFTER `appearance_only`,
+  ADD COLUMN `norepair` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL AFTER `unlocked`,
+  ADD COLUMN `flags2_64` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL AFTER `norepair`,
+  ADD COLUMN `flags2_256` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL AFTER `flags2_64`,
+  ADD COLUMN `item_crc` INT(10) NOT NULL DEFAULT '0' AFTER `item_id`, 
+  CHANGE `item_id` `item_id` INT(10) DEFAULT '0' NOT NULL;
+
+ALTER TABLE `raw_item_itemset_items` ADD COLUMN `item_order` TINYINT(3) UNSIGNED DEFAULT '0' NOT NULL AFTER `item_name`, ADD COLUMN `master_item_id` INT(10) DEFAULT '0' NOT NULL AFTER `item_name`; 
+ALTER TABLE `raw_item_itemset_items` DROP KEY `SetItemIDX`, ADD UNIQUE `SetItemIDX` (`set_id`, `master_item_id`, `item_name`, `item_order`, `language_type`); 
+
+ALTER TABLE `raw_item_itemset_bonus_stats` ADD COLUMN `master_item_id` INT(10) DEFAULT '0' NOT NULL AFTER `set_id`; 
+ALTER TABLE `raw_item_itemset_bonus_stats` DROP KEY `SetStatsIDX`, ADD UNIQUE `SetStatsIDX` (`set_id`, `master_item_id`, `items_needed`, `type`, `subtype`, `value`, `value2`, `stats_order`, `language_type`, `name`); 
+
+ALTER TABLE `raw_item_itemset_bonus_effects` ADD COLUMN `master_item_id` INT(10) DEFAULT '0' NOT NULL AFTER `set_id`; 
+ALTER TABLE `raw_item_itemset_bonus_effects` DROP KEY `SetEffectsIDX`, ADD UNIQUE `SetEffectsIDX` (`set_id`, `master_item_id`, `items_needed`, `subbulletflag`, `description`, `language_type`); 
+
+ALTER TABLE `raw_item_stats` DROP COLUMN `value2`, CHANGE `value` `value` FLOAT DEFAULT '0' NOT NULL; 
+ALTER TABLE `raw_item_itemset_bonus_stats` DROP COLUMN `value2`, CHANGE `value` `value` FLOAT DEFAULT '0' NOT NULL; 
+
+ALTER TABLE `raw_items` 
+  ADD COLUMN `adornment_slot1` TINYINT (3) UNSIGNED DEFAULT '255' NOT NULL AFTER `collectable`,
+  ADD COLUMN `adornment_slot2` TINYINT (3) UNSIGNED DEFAULT '255' NOT NULL AFTER `adornment_slot1`,
+  ADD COLUMN `adornment_slot3` TINYINT (3) UNSIGNED DEFAULT '255' NOT NULL AFTER `adornment_slot2`,
+  ADD COLUMN `adornment_slot4` TINYINT (3) UNSIGNED DEFAULT '255' NOT NULL AFTER `adornment_slot3`,
+  ADD COLUMN `adornment_slot5` TINYINT (3) UNSIGNED DEFAULT '255' NOT NULL AFTER `adornment_slot4`,
+  ADD COLUMN `adornment_slot6` TINYINT (3) UNSIGNED DEFAULT '255' NOT NULL AFTER `adornment_slot5`;

+ 5 - 0
EQ2/devtools/PacketParser/sql_updates/parser_db_changes.sql

@@ -0,0 +1,5 @@
+-- raw_spawn_info.populate_spawn_id is new field, replacing processed
+alter table `raw_spawn_info` change `processed` `populate_spawn_id` int(10) UNSIGNED default '0' NOT NULL;
+
+-- raw_item_effects.name truncates
+alter table `raw_item_effects` change `name` `name` varchar(255) character set latin1 collate latin1_swedish_ci default 'Unknown' NOT NULL;

+ 64 - 0
EQ2/devtools/PacketParser/sql_updates/parser_stats.sql

@@ -0,0 +1,64 @@
+DROP TABLE IF EXISTS `parser_stats`;
+CREATE TABLE `parser_stats` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) NOT NULL DEFAULT '',
+  `total_items` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_items` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_items` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_spawns` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_spawns` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_spawns` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_spells` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_spells` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_spells` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_specials` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_specials` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_specials` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_achievements` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_achievements` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_achievements` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_advancements` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_advancements` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_advancements` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_abilities` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_abilities` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_abilities` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_traditions` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_traditions` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_traditions` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_trainings` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_trainings` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_trainings` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_poi` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_poi` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_poi` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_locations` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_locations` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_locations` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_quests` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_quests` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_quests` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_factions` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_factions` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_factions` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_collections` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_collections` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_collections` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_aa_class` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_aa_class` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_aa_class` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_aa_subclass` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_aa_subclass` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_aa_subclass` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_aa_tso` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_aa_tso` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_aa_tso` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_titles` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_titles` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_titles` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `total_books` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `unique_books` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `new_books` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`)
+) ENGINE=MYISAM;

+ 8 - 0
EQ2/devtools/PacketParser/sql_updates/raw db updates.sql

@@ -0,0 +1,8 @@
+ALTER TABLE `raw_items`  CHANGE COLUMN `item_type` `item_type` ENUM('Normal','Armor','Food','Bag','Weapon','Ranged','Shield','Spell Scroll','Recipe','Book','House','Thrown','Bauble','House Container','Adornment','Pattern','Armor Set') NOT NULL DEFAULT 'Normal' AFTER `name`;
+ALTER TABLE `raw_items` ADD `lore_equip` tinyint(3) unsigned DEFAULT '0' NOT NULL AFTER `evil_only`;
+ALTER TABLE `raw_items` ADD `ornate` tinyint(3) unsigned DEFAULT '0' NOT NULL AFTER `lore_equip`;
+ALTER TABLE `raw_items` ADD `heirloom` tinyint(3) unsigned DEFAULT '0' NOT NULL AFTER `ornate`;
+ALTER TABLE `raw_items` ADD `appearance_only` tinyint(3) unsigned DEFAULT '0' NOT NULL AFTER `heirloom`;
+ALTER TABLE `raw_item_descriptions`  DROP COLUMN `flags`;
+ALTER TABLE `raw_item_descriptions` ADD `flags1` tinyint(3) unsigned DEFAULT '0' NOT NULL AFTER `tier`;
+ALTER TABLE `raw_item_descriptions` ADD `flags2` tinyint(3) unsigned DEFAULT '0' NOT NULL AFTER `flags1`;

+ 39 - 0
EQ2/devtools/PacketParser/sql_updates/raw_achievements_fixes.sql

@@ -0,0 +1,39 @@
+DROP TABLE IF EXISTS `raw_achievements`;
+CREATE TABLE `raw_achievements` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `achievement_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `title` VARCHAR(50) COLLATE latin1_general_ci NOT NULL,
+  `uncompleted_text` VARCHAR(255) COLLATE latin1_general_ci DEFAULT NULL,
+  `completed_text` VARCHAR(255) COLLATE latin1_general_ci DEFAULT NULL,
+  `category` VARCHAR(50) COLLATE latin1_general_ci DEFAULT NULL,
+  `expansion` VARCHAR(50) COLLATE latin1_general_ci DEFAULT NULL,
+  `icon` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `point_value` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `qty_req` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `hide_achievement` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown3a` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown3b` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) COLLATE latin1_general_ci NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `id` (`achievement_id`,`title`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+
+DROP TABLE IF EXISTS `raw_achievements_requirements`;
+CREATE TABLE `raw_achievements_requirements` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `achievement_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name` VARCHAR(250) COLLATE latin1_general_ci DEFAULT NULL,
+  `qty_req` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `NewIndex` (`name`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+
+DROP TABLE IF EXISTS `raw_achievements_rewards`;
+CREATE TABLE `raw_achievements_rewards` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `achievement_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `reward` VARCHAR(250) COLLATE latin1_general_ci DEFAULT '"',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `id` (`achievement_id`,`reward`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

+ 1 - 0
EQ2/devtools/PacketParser/sql_updates/raw_achievements_versions.sql

@@ -0,0 +1 @@
+ALTER TABLE `raw_achievements` DROP KEY `id`, ADD UNIQUE `id` (`achievement_id`, `title`, `data_version`); 

+ 44 - 0
EQ2/devtools/PacketParser/sql_updates/raw_adventure_list.sql

@@ -0,0 +1,44 @@
+ALTER TABLE `parser_stats` 
+  DROP COLUMN `total_aa_subclass`,
+  DROP COLUMN `new_aa_tso`,
+  DROP COLUMN `unique_aa_tso`,
+  DROP COLUMN `total_aa_tso`,
+  DROP COLUMN `new_aa_subclass`,
+  DROP COLUMN `unique_aa_subclass`,
+  CHANGE `total_aa_class` `total_aa` SMALLINT (5) UNSIGNED DEFAULT '0' NOT NULL,
+  CHANGE `unique_aa_class` `unique_aa` SMALLINT (5) UNSIGNED DEFAULT '0' NOT NULL,
+  CHANGE `new_aa_class` `new_aa` SMALLINT (5) UNSIGNED DEFAULT '0' NOT NULL ;
+
+DROP TABLE IF EXISTS `raw_aa_class`; 
+DROP TABLE IF EXISTS `raw_aa_subclass`; 
+DROP TABLE IF EXISTS `raw_aa_tso`; 
+
+CREATE TABLE `raw_adventure_list` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `unknown6` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown7` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `spell_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown10` SMALLINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `name` VARCHAR(250) COLLATE latin1_general_ci DEFAULT NULL,
+  `description` VARCHAR(250) COLLATE latin1_general_ci DEFAULT NULL,
+  `icon` MEDIUMINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `icon2` MEDIUMINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `current_rank` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `max_rank` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `rank_cost` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown11` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `class_name` VARCHAR(50) COLLATE latin1_general_ci DEFAULT NULL,
+  `points_req` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `subclass_name` VARCHAR(50) COLLATE latin1_general_ci DEFAULT NULL,
+  `icon_col` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `icon_row` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `line_title` VARCHAR(50) COLLATE latin1_general_ci DEFAULT NULL,
+  `unknown20` INT(10) UNSIGNED NOT NULL DEFAULT '0',
+  `global_req` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `aa_type` VARCHAR(32) COLLATE latin1_general_ci DEFAULT NULL,
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(250) COLLATE latin1_general_ci NOT NULL DEFAULT '',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `AdventureListIDX` (`spell_id`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+

+ 80 - 0
EQ2/devtools/PacketParser/sql_updates/raw_arenas.sql

@@ -0,0 +1,80 @@
+DROP TABLE IF EXISTS  `raw_arena_levels`;
+CREATE TABLE `raw_arena_levels` (
+  `id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `level_name` VARCHAR (32) NOT NULL DEFAULT '',
+  `level_value` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT (5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR (250) NOT NULL DEFAULT '',
+  UNIQUE `ArenaLevelIDX` (`level_name`, `level_value`),
+  PRIMARY KEY (`id`)
+) ENGINE = 'Default' COMMENT = '' ROW_FORMAT = DEFAULT ;
+
+DROP TABLE IF EXISTS  `raw_arena_timers`;
+CREATE TABLE `raw_arena_timers` (
+  `id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `time_type` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `time_name` VARCHAR (32) NOT NULL DEFAULT '',
+  `time_value` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT (5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR (250) NOT NULL DEFAULT '',
+  UNIQUE `ArenaTimerIDX` (`time_type`, `time_name`, `time_value`),
+  PRIMARY KEY (`id`)
+) ENGINE = 'Default' COMMENT = '' ROW_FORMAT = DEFAULT ;
+
+DROP TABLE IF EXISTS  `raw_arena_types`;
+CREATE TABLE `raw_arena_types` (
+  `id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `unknown2a` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown2b` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown2c` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `type_name` VARCHAR (32) NOT NULL DEFAULT '',
+  `unknown3a` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown3b` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT (5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR (250) NOT NULL DEFAULT '',
+  UNIQUE `ArenaTypesIDX` (`type_name`),
+  PRIMARY KEY (`id`)
+) ENGINE = 'Default' COMMENT = '' ROW_FORMAT = DEFAULT ;
+
+DROP TABLE IF EXISTS  `raw_arena_challenges`;
+CREATE TABLE `raw_arena_challenges` (
+  `id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `challenge_name` VARCHAR (32) NOT NULL DEFAULT '',
+  `challenge_value` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT (5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR (250) NOT NULL DEFAULT '',
+  UNIQUE `ArenaChallengeIDX` (`challenge_name`, `challenge_value`),
+  PRIMARY KEY (`id`)
+) ENGINE = 'Default' COMMENT = '' ROW_FORMAT = DEFAULT ;
+
+DROP TABLE IF EXISTS  `raw_arena_zones`;
+CREATE TABLE `raw_arena_zones` (
+  `id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `type1` VARCHAR (32) NOT NULL DEFAULT '',
+  `unknown4a` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown4b` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `file` VARCHAR (64) NOT NULL DEFAULT '',
+  `type2` VARCHAR (32) NOT NULL DEFAULT '',
+  `name` VARCHAR (32) NOT NULL DEFAULT '',
+  `description` TEXT,
+  `data_version` SMALLINT (5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR (250) NOT NULL DEFAULT '',
+  UNIQUE `ArenaZonesIDX` (`type1`, `file`, `name`),
+  PRIMARY KEY (`id`)
+) ENGINE = 'Default' COMMENT = '' ROW_FORMAT = DEFAULT ;
+
+DROP TABLE IF EXISTS  `raw_arena_images`;
+CREATE TABLE `raw_arena_images` (
+  `id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `arena_zone_id` TINYINT(3) NOT NULL DEFAULT '0',
+  `image_path` VARCHAR (250) NOT NULL DEFAULT '',
+  `x` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `y` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `x2` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `y2` TINYINT (3) UNSIGNED NOT NULL DEFAULT '0',
+  `data_version` SMALLINT (5) UNSIGNED NOT NULL DEFAULT '0',
+  `log_file` VARCHAR (250) NOT NULL DEFAULT '',
+  UNIQUE `ArenaImagesIDX` (`arena_zone_id`, `image_path`),
+  PRIMARY KEY (`id`)
+) ENGINE = 'Default' COMMENT = '' ROW_FORMAT = DEFAULT ;
+

+ 49 - 0
EQ2/devtools/PacketParser/sql_updates/raw_collections.sql

@@ -0,0 +1,49 @@
+# HeidiSQL Dump 
+#
+# --------------------------------------------------------
+# Host:                 127.0.0.1
+# Database:             parser
+# Server version:       5.1.31-community
+# Server OS:            Win32
+# Target-Compatibility: MySQL 5.0
+# max_allowed_packet:   1048576
+# HeidiSQL version:     3.2 Revision: 1129
+# --------------------------------------------------------
+
+/*!40100 SET CHARACTER SET latin1*/;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0*/;
+
+
+#
+# Table structure for table 'raw_collections'
+#
+
+CREATE TABLE /*!32312 IF NOT EXISTS*/ `raw_collections` (
+  `unknown` tinyint(3) unsigned NOT NULL,
+  `collection_name` varchar(512) NOT NULL,
+  `collection_category` varchar(512) NOT NULL,
+  `unknown2` tinyint(3) unsigned NOT NULL,
+  `unknown6` tinyint(3) unsigned NOT NULL,
+  `unknown7` tinyint(3) unsigned NOT NULL,
+  `unknown8` tinyint(3) unsigned NOT NULL,
+  `unknown9` tinyint(3) unsigned NOT NULL,
+  `unknown10` tinyint(3) unsigned NOT NULL,
+  `level` tinyint(3) unsigned NOT NULL,
+  `num_items` tinyint(3) unsigned NOT NULL,
+  `item_icon` smallint(5) unsigned NOT NULL,
+  `item_name` varchar(512) DEFAULT NULL,
+  `unknown4` tinyint(3) unsigned DEFAULT NULL,
+  `item_id` int(11) DEFAULT NULL,
+  `item_crc` int(11) DEFAULT NULL,
+  `log_file` varchar(255) DEFAULT ''
+) ENGINE=InnoDB /*!40100 DEFAULT CHARSET=latin1*/;
+
+
+
+#
+# Dumping data for table 'raw_collections'
+#
+
+# (No data found.)
+
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS*/;

+ 23 - 0
EQ2/devtools/PacketParser/sql_updates/raw_collections1.sql

@@ -0,0 +1,23 @@
+DROP TABLE IF EXISTS `raw_collections`;
+CREATE TABLE `raw_collections` (
+  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `unknown` TINYINT(3) UNSIGNED NOT NULL,
+  `collection_name` VARCHAR(512) NOT NULL,
+  `collection_category` VARCHAR(512) NOT NULL,
+  `unknown2` TINYINT(3) UNSIGNED NOT NULL,
+  `unknown6` TINYINT(3) UNSIGNED NOT NULL,
+  `unknown7` TINYINT(3) UNSIGNED NOT NULL,
+  `unknown8` TINYINT(3) UNSIGNED NOT NULL,
+  `unknown9` TINYINT(3) UNSIGNED NOT NULL,
+  `unknown10` TINYINT(3) UNSIGNED NOT NULL,
+  `level` TINYINT(3) UNSIGNED NOT NULL,
+  `num_items` TINYINT(3) UNSIGNED NOT NULL,
+  `item_icon` SMALLINT(5) UNSIGNED NOT NULL,
+  `item_name` VARCHAR(512) DEFAULT NULL,
+  `unknown4` TINYINT(3) UNSIGNED DEFAULT NULL,
+  `item_id` INT(11) DEFAULT NULL,
+  `item_crc` INT(11) DEFAULT NULL,
+  `log_file` VARCHAR(255) DEFAULT '',
+  `data_version` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY  (`id`)
+) ENGINE=MYISAM DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

+ 14 - 0
EQ2/devtools/PacketParser/sql_updates/raw_commands.sql

@@ -0,0 +1,14 @@
+CREATE TABLE `raw_commands` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `type` tinyint(3) unsigned default '1',
+  `command` varchar(64) collate latin1_general_ci NOT NULL,
+  `subcommand` varchar(64) collate latin1_general_ci NOT NULL,
+  `handler` int(10) unsigned NOT NULL default '0',
+  `required_status` smallint(5) NOT NULL default '0',
+  `data_version` smallint(5) unsigned NOT NULL default '0',
+  `log_file` varchar(250) collate latin1_general_ci NOT NULL default '',
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `CommandIDX` (`command`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
+
+ALTER TABLE `parser_stats` ADD COLUMN `total_commands` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL AFTER `new_recipes_list`, ADD COLUMN `unique_commands` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL AFTER `total_commands`, ADD COLUMN `new_commands` SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL AFTER `unique_commands`;

+ 23 - 0
EQ2/devtools/PacketParser/sql_updates/raw_factions.sql

@@ -0,0 +1,23 @@
+# HeidiSQL Dump 
+#
+# --------------------------------------------------------
+# Host:                 192.168.0.2
+# Database:             parser
+# Server version:       5.0.60-log
+# Server OS:            pc-linux-gnu
+# Target-Compatibility: Same as source server (MySQL 5.0.60-log)
+# max_allowed_packet:   16777216
+# HeidiSQL version:     3.1 RC1 Revision: 1064
+# --------------------------------------------------------
+
+/*!40100 SET CHARACTER SET latin1*/;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0*/;
+
+
+#
+# Dumping data for table 'raw_factions'
+#
+
+# (No data found.)
+
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS*/;

+ 15 - 0
EQ2/devtools/PacketParser/sql_updates/raw_factions1.sql

@@ -0,0 +1,15 @@
+DROP TABLE IF EXISTS `raw_factions`;
+CREATE TABLE `raw_factions` (
+  `faction_id` INT(11) NOT NULL AUTO_INCREMENT,
+  `name` VARCHAR(512) DEFAULT NULL,
+  `category` VARCHAR(512) DEFAULT NULL,
+  `description` VARCHAR(512) DEFAULT NULL,
+  `unknown` VARCHAR(512) DEFAULT NULL,
+  `con` TINYINT(3) NOT NULL DEFAULT '0',
+  `percentage` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `unknown2` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  `value` MEDIUMINT(5) NOT NULL DEFAULT '0',
+  `log_file` VARCHAR(255) DEFAULT '',